Cyber-Physical Systems (CPS) are integrations of computation and physical processes, with distributed embedded computation units, connected by network, controlling and monitoring a physical plant. The development of physical components is essentially diﬀerent from the object-oriented software of the computation units. A major challenge developing CPS, is the nonlinear interaction between the discrete domain of the computational units and the continuous domain of the physical process. Model based development of both discrete and continuous systems has signiﬁcantly beneﬁted from specialized modelling and simulation tools in each domain. However, to realize the full potential of CPS, the abstraction-level of models and simulation has to unify both computation and physical dynamics. A solution to this, is a so called co-simulation where the coupled problem is divided into sub-systems where each constituent model can be solved by its optimum tool/solver in a distributed manner. This enables domain expert to work in domain speciﬁc tools while being able to simulate the complete CPS in a holistic manner.This dissertation provides a solution for doing co-simulation of CPS with distributed embedded control. This research has been conducted in collaboration with MAN Diesel & Turbo (MD&T) using their CPS, consisting of a two-stroke low speed engine with a distributed engine control system, as case study. Adapting a distributed control system to enable co-simulation is not trivial. How the lower layers of the embedded system software has been adapted to enable a deterministic and temporally controlled simulation will be presented. This includes how multiple controllers are compiled to dynamic link libraries that can be executed in parallel by a main process. A method for controlling execution and time progression on each controller has been developed along with a scheduling and network communication solution. To enable co-simulation with tools for modelling physical dynamics, the Functional Mockup Interface (FMI) standard for co-simulation has been implemented in the control system simulation. The solutions presented are validated through a set co-simulation experiments using the MD&T engine control system and diﬀerent physical dynamic modelling tools. During the research new applications and requirements to the co-simulation environment was discovered. In large organizations like MD&T, tools, platforms and architecture used by diﬀerent departments often deviate, making co-simulation and model exchange diﬃcult. In collaboration with the EU Horizon 2020 project; Integrated Tool-chain for the model based design of Cyber-Physical Systems (INTO-CPS), a distributed co-simulation was made possible, that was able to co-simulate sub-systems of any architecture (32/64bit) and platform (Windows/Linux). Furthermore, when developing safety critical CPS that include a Human Machine Interface (HMI), the human interaction and cognitive assessment is of great importance. However, it is often diﬃcult to obtain quantitative and evidence based data on the human in the loop. With an extension to the co-simulation environment it is possible to connect the control system simulation with the HMI in a hybrid co-simulation. In the hybrid co-simulation scenarios requiring human inter action can be formulated and tracked. The collected data can be used for analyzing the system applicability and intuitiveness, insuring correct and secure operation of MD&T engines. Validation and veriﬁcation on hardware and engine test-benches is a major part of the development cost at MD&T. With the possibility of simulating the complete distributed control system, engineers are able to verify more of the component design before moving to the hardware test-bench. Furthermore, by introducing co-simulation, engineers can investigate and validate the holistic system dynamics during development before moving to the Engine test-bench and do model sharing between departments, reducing redundant modelling efforts. This research provides a solution for doing co-simulation of CPS with distributed control and proves that co-simulation can improve the development process, by reducing the amount of design and test loops during the design phase, thereby reducing the overall veriﬁcation and validation cost.