SASE-Space / ot-openness-comparison

Comparison of openness within various OT platforms
17 stars 9 forks source link

Openness & DevOps Readiness of OT Systems

PLC/DCS Systems

System Score Plain Text Source Files [a] Open Download for IDE and Simulator [b] Extensible IDE [c] Linux Support [d] Testing Framework [e] CLI [f] Transparent Licensing [g] Open Docs [h] Hardware Agnostic [i]
Codesys V3.5 7 :x: :heavy_check_mark: :heavy_check_mark: :moneybag: :x: [2] :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: [4]
B&R Automation Studio 6 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :x: :heavy_check_mark: :heavy_check_mark: :x: :heavy_check_mark: :x:
Codesys Go 6 :heavy_check_mark: :grey_question: :heavy_check_mark: :moneybag: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :grey_question: :grey_question: :heavy_check_mark:
Beckhoff TwinCAT 3 5 :x: [3] :heavy_check_mark: :heavy_check_mark: :grey_question: :heavy_check_mark: :x:[1] :grey_question: :heavy_check_mark: :heavy_check_mark: [4]
Bosch Rexroth CtrlX 4 :grey_question: :heavy_check_mark: :heavy_check_mark: :grey_question: :heavy_check_mark: :x: :grey_question: :heavy_check_mark: :heavy_check_mark:
Arduino Pro PLC 3 :x: [6] :heavy_check_mark: :grey_question: :grey_question: :grey_question: :grey_question: [7] :heavy_check_mark: :heavy_check_mark: :x:
Siemens Simatic AX 2 :heavy_check_mark: :x: :grey_question: :grey_question: :heavy_check_mark: :heavy_check_mark: :x: :x: :x:
Siemens TIA 1 :x: :grey_question: :heavy_check_mark: :grey_question: :heavy_check_mark: :x:[1] :x: :x: :x:
ABB AC500 [5] 1 :x: :heavy_check_mark: :grey_question: :x: :grey_question: :grey_question: :x: :grey_question: :x:
Phoenix Contact PLCNext 1 :x: :grey_question: :grey_question: :grey_question: :grey_question: :grey_question: :grey_question: :grey_question: :heavy_check_mark: [4]
Schneider EAE 1 :grey_question: :grey_question: :grey_question: :grey_question: :grey_question: :grey_question: :grey_question: :grey_question: :heavy_check_mark: [4]
ABB 800xA 0 :x: :x: :x: :x: :x: :x: :x: :x: :x:
ABB Freelance 0 :x: :x: :x: :x: :x: :x: :x: :x: :x:
B&R Aprol 0 :grey_question: :x: :grey_question: :grey_question: :grey_question: :grey_question: :grey_question: :grey_question: :x:
Emerson DeltaV 0 :x: :x: :x: :x: :x: :x: :x: :x: :x:
Honeywell ControlEdge 0 :x: :x: :x: :x: :x: :x: :x: :x: :x:
Honeywell Experion PKS 0 :x: :x: :x: :x: :x: :x: :x: :x: :x:
Rockwell Studio 5000 0 :x: :x: :x: :x: :x: :x:[1] :x: :x: :x:
Rockwell PlantPAX 0 :x: :x: :x: :x: :x: :x:[1] :x: :x: :x:
Schneider Foxboro 0 :grey_question: :grey_question: :grey_question: :grey_question: :grey_question: :grey_question: :grey_question: :grey_question: :grey_question:
Schneider ProWORX 32 0 :grey_question: :grey_question: :grey_question: :grey_question: :grey_question: :grey_question: :grey_question: :grey_question: :grey_question:
Siemens PCS7 0 :x: :x: :x: :x: :x: :x: :x: :x: :x:
Siemens PCS7 NEO 0 :x: :x: :x: :x: :x: :x: :x: :x: :x:
Siemens S7 0 :x: :x: :x: :x: :x: :x: :x: :x: :x:
Yokogawa Centum VP 0 :x: :x: :x: :x: :x: :x: :x: :x: :x:

[1] Partially supported, by means of an API (application programming interface). See specific vendor notes below for more information.
[2] Only runtime on Linux
[3] TwinCAT stores files in XML format, which technically counts as plain text, but the source code is still cluttered by unnecessary tags and ids. This makes it diffcult to interact with non-proprietary tooling (source code editors, diff tools, ...)
[4] Will be able to run on Open Process Automation Compute DCN
[5] IDE based on Codesys [6] Source files are located as default setting in one plcprj file embedded in XML as Plain Text, there is a setting where source files can be saved separately in a source folder as plain text files (also embedded in XML tags) [7] There is a CLI available (see description below), but it is not clear yet if this is only used for Arduino Pro PLC; If someone is using it, please add some more information here


Criteria

Plain Text Source Files [a]

Most software IDE's store code as plain text files. This allows full access and control over the code by external tools and solutions.

One of the most important of those is proper version version control with for example git. If the automation IDE doesn't store the code as text files then it is not possible to use git. (Except maybe with a complex procedure that first exports the code.) Some automation IDE's store the code in XML format. This is still not ideal because on the one hand it is difficult to read the code. Additionally the IDE might add different id's to the XML tags while the code is essentially the same, rendering the standards diff checks useless.

Also for code generation solutions direct access to plain text files is important. As well for external package/library management.

Open Download for IDE and Simulator [b]

It is important that engineers have easy access to the IDE as well as runtime simulation environments. Not only for evaluation and training, but also to allow system independent tools to be able to develop and test properly with each system.

Extensible IDE [c]

The IDE is extensible

Linux support for runtime and build tools [d]

Linux is extensively used in server environments and is a popular choice for running Continuous Integration and Continuous Deployment pipelines. Build tools that run on Linux can seamlessly integrate into these pipelines, automating the build, test, and deployment processes. Linux applications are also typically 100% configurable through configuration files and/or cli commands, allowing to fully automate the setup and deployment of the application.

Testing framework [e]

Without testing frameworks all code needs to be tested manually. The available testing frameworks should be able to test the IEC 61131 / IEC 61499 code.

CLI Tooling [f]

CLI tooling allowing all compilation, build and deployment workflows to be automated. (If no CLI but possible to automate this through SDK/API on the IDE then add a footnote)

Transparent licensing [g]

Prices must be publicly available without login or requesting a quote. Understanding the licensing of the needed components at a granular and transparent level allows consumers to accurately compare offerings. Transparent licensing also allows to have confidence that the cost can scale alongside with the deployments.

Open Documentation [h]

Open accessible documentation not locked away behind a login helps to better understand these systems. And recently it also allows LLMs to train on these documents, which is important since LLMs are becoming more important in helping to design and manage DevOps configurations and workflows.

Hardware Agnostic Runtime [i]


Systems

ABB

B&R

www.br-automation.com

Plain Text

IDE Download

Extensible IDE

Linux Support

Testing Framework

Licensing

Open Docs

CLI Tools

Hardware Agnostic

Other B&R Tips

DevOps

Beckhoff Automation TwinCAT 3

DevOps Integration Notes

Beckhoff supports DevOps workflows via the TwinCAT 3 Automation Interface. The Automation Interface enables programmatic access to most actions that can be performed via the TwinCAT 3 IDE, however it uses the Visual Studio DTE (Development Tools Environment) which requires a full IDE installation and hampers full headless operation or usage within a containerized environment.

Other notes:

For automatic deployment and configuration of target platforms, Beckhoff's Windows based platforms support a variety of command line actions for configuration, some of which are demoed at https://github.com/Beckhoff-USA-Community/AutoDeployPCviaScript-main. In TwinCAT 4026, there will also be a chocolatey based package server. For BSD, Beckhoff provides a package server.

There are third party CI/CD tools available as products for the TwinCAT ecosystem, for example CLI-Tools for configure, make and install and also tools for documentation generation and unit testing or enhancing code quality.

Static Analysis, Unit Testing and Simulation

Beckhoff provides Static Analysis which can perform basic checks for free or more extensive checks of the application for a fee. Static Analysis in TwinCAT 3 is relatively new and user experience may vary. The requirement to have a license on the development system also makes integration into a CI/CD pipeline difficult since it may not be easy or even possible to attach a USB device to a VM and may not be desireable to permanently assign a license to a ephemeral build environment.

Beckhoff does not officially support any Unit Testing methods, however extensive community effort has gone into the free and open source TcUnit, developed and maintained by Jakob Sagatowski.

Beckhoff provides a variety of simulation tools, from simple methods including running the PLC locally on the developer's system without hardware to more extensive simulation of EtherCAT devices or via Simulink and other integrations.

Library package manager

There is Twinpack available as Open-Source library package manager. It provides an integrated User-Interface in TcXaeShell and also a command line tool to be able to use it easily in CI/CD systems like Jenkins.

Frameworks

With the above tools it is possible to use Frameworks like in IT-space also for Beckhoff TwinCAT on OT side.

B&R Aprol

Codesys

Disclaimer:

The following information is based on a specific hardware implementation and does not necessarily reflect the more typical Codesys experience. It illustrates that caution should be used regarding the specific hardware selection.

It is important to verify that hardware to be used with Codesys supports the current version and the feature set you desire. An example is IFM's Ecomat controllers. They only support Codesys V3.5 SP11 which does not support the Git add-on (Requires V3.5 SP19 or newer) from the Codesys Pro Developer License. Codesys uses a proprietary project file that does not support version control features without the addon. Further, this specific hardware example requires some poorly documented and unorganized setup to get the IDE to support the hardware, and upgrades to the firmware have to be done with IFM's Maintenance app separate from Codesys.

Codesys Go

Omron Sysmac Studio

Rockwell Studio 5000

In 2023, Rockwell Automation has released the Studio 5000 Logix Designer SDK, or Software Development Kit to automate UI functions of Studio 5000 Logix Designer:
https://www.rockwellautomation.com/en-us/company/news/blogs/logix-designer-sdk-sme.html
https://www.kb-controls.io/posts/how-to-automate-your-engineering-processes-with-the-studio-5000-logix-designer-sdk

This can be integrated with their controller emulation software:
https://www.rockwellautomation.com/en-us/products/software/factorytalk/designsuite/logix-echo.html

Rockwell PlantPAX

Siemens Simatic S7

Siemens Simatic AX

Siemens TIA Portal

DevOps Integration Notes

Siemens TIA Portal supports some DevOps workflows via the Openness API.

Siemens PCS7 NEO

Schneider EAE

Siemens AX

Siemens S7

Siemens TIA

Bosch Rexroth CtrlX

Bosch Rexroth is a long competitor of all previous mentioned vendors and they launched their new control platform about five years ago. This platform runs on Linux and the RealTime is enabled with Preempt-RT. It is a very powerful platform because of its open strategy on integrating different apps via snap package manager. Everyone can create snaps and integrate those as apps even for modular machine designs but also via an open app-store-like ctrlX-World platform. It is also possible to add Matlab snaps, HMI snaps, Node-Red, Codesys V3.5, CtrlX Plc and many more. Those snaps can interact via a powerful DataLayer which is similar to ADS from the TwinCAT world but more modern and with a RealTime capable fast lane. Bosch Rexroth also offers drives where the ctrlX Core can be directly integrated, which enables a machine manufacturer to build machines with a very small footprint. Their operating system CtrlX-OS is available for many different platforms.

Arduino Pro PLC

Arduino Pro is the professional platform for industrial use of Arduino components/control systems. A good introduction to Arduino pro is given by Jakob Sagatowski here There are more IDEs for the Arduino Pro platform available, for this comparison we only refer to the Arduino Pro PLC Ide (see).

HMI/SCADA Systems

...