Open Commissioning is an open source framework for virtual commissioning. The goal is to provide an open platform for testing and commissioning of PLC code using a virtual model.
The project is based on Unity and TwinCAT. Unity provides a modern 3D Editor with a physics engine to create an interactive 3D environment and physics simulation. TwinCAT is used as a simulation unit that is able to emulate industrial bus systems and behaviour models of actuators and sensors close to real time. These two platforms are connected to form the model for virtual commissioning
On the basis of this technology chain, it is possible to realize a Soft-/Hardware-in-the-loop simulation with a PLC, focusing on achieving no code difference between virtual and real commissioning.
Here are the reasons and goals of this project:
- Develop and use a state-of-the-art open virtual commissioning solution
- Collaborate and use knowledge-sharing culture
- Avoid vendor lock and boost your automation workflow
The Open Commissioning has three main parts:
- Unity Package: Scripts, Tools and Assets for creating virtual models and an environment within the Unity Editor.
- TwinCAT Library: Pre-built behavior models for actors, sensors and various industrial devices.
- Assistant: Application that orchestrates the parts of the model running in Unity and TwinCAT, and provides an interface for connecting the model to external industrial systems.
Note
More detailed information about those parts can be found in their repositories
The virtual commissioning project consists of the following parts:
- Unity Project: The geometry, kinematics and material flow of the machine are replicated in a unity scene and parameterised with suitable sensors and actuators in order to reproduce the behaviour of the real machine.
- TwinCAT PLC Project: All actuators, sensors and other industrial devices are listed in the TwinCAT project according to the hierarchical structure from the Unity Scene and linked to control signals. The TwinCAT Project will run on isolated cores with 1 ms cycle time and provides a stable environment for Soft-/Hardware-in-the-loop simulations.
- Assistant: The Assistant application is used as an engineering tool and features various functions such as project generation, configuration scanning, etc., which can be extended using a SDK. In addition, the Assistant handles communication between TwinCAT, Unity and third-party interfaces and serves as a bridge for data connectivity.
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
We extend our gratitude to all our numerous contributors who create plugins, assist with issues and pull requests, and respond to questions in GitHub Discussions.
Check our contribution guide.
Open Commissioning is a community-driven project, and your contributions continually improve it.
Note
Further information about contributing can be found in the corresponding repositories
-
Used in Unity Package:
- Beckhoff ADS - Beckhoff protocol to communicate with TwinCAT devices
- NaughtyAttributes - NaughtyAttributes is an extension for the Unity Inspector
- UniTask - Provides an efficient allocation free async/await integration for Unity
- ookii-dialogs-winforms - A class library for Windows Forms applications providing several common dialogs
- ShellFileDialogs - File Open, File Save and Folder Browser dialogs
-
Used in TwinCAT Library:
- Beckhoff ADS - Beckhoff protocol to communicate with TwinCAT devices
- TcUnit - TwinCAT unit testing framework
-
Used in Assistant:
- TcPnScanner - Tool written in C#/.NET, that scans for Profinet packets on a network interface
- Beckhoff ADS - Beckhoff protocol to communicate with TwinCAT devices
- TCatSysManagerLib - TwinCAT System Manager Library
Open Commissioning Project is distributed under the BSD 3-Clause License.
Note
This package contains third-party software components that are subject to the licence(s) specified in their repositories
This open source project is initiated and supported by SpiraTec AG.
SpiraTec AG is a globally active company for industrial engineering and high-tech solutions for digital transformation in the process industry, specializing in engineering, robotics, automation, and industrial IT systems. With a team across 40+ locations, we deliver end-to-end solutions, from consulting and system engineering to commissioning and optimization.
For help and support, please contact us in GitHub Discussions or by opencommissioning@spiratec.com
.