CODESYS. Codesys (spelled “CODESYS” by the manufacturer, previously “CoDeSys”) is an   integrated development environment for programming controller applications according to the international industrial standard IEC 61131-3.

CODESYS is developed and marketed by the CODESYS Group that is headquartered in Kempten. The company was founded in 1994 under the name 3S-Smart Software Solutions. It was renamed in 2018 and 2020 to Codesys Group / Codesys GmbH. Version 1.0 of CODESYS was released in 1994. Licenses of the CODESYS Development System are free of charge and can be installed legally without copy protection on further workstations.

Integrated use cases 
The tool covers different aspects of industrial automation in one surface:

Engineering
The five programming languages for application programming defined in the IEC 61131-3 are available in the CODESYS development environment.

 IL (instruction list) is an assembler-like programming language. The IEC 61131-3 user organization PLCopen has declared this language as “deprecated”, which means it shall not be used for new projects anymore.
 ST (structured text) is similar to programming in Pascal or C
 LD (ladder diagram) enables programmers to virtually combine relay contacts and coils
 FBD (function block diagram) enables users to rapidly program both Boolean and analog expressions
 SFC (sequential function chart) is convenient for programming sequential processes and flows

Additional graphical editor available in CODESYS:

 CFC (Continuous Function Chart) is a sort of freehand FBD editor. While the FBD editor works in a network-oriented way and arranges the function blocks automatically, in CFC it is possible to place all function blocks freely and thus also to realize feedback without intermediate variables. Therefore, this language is also particularly suitable for the overview representation of an application.

Integrated compilers transform the application code created by CODESYS into native machine code (binary code) which is then downloaded onto the controller. The most important 32- and 64-bit CPU families are supported, such as TriCore, 80x86/iX, ARM/Cortex, PowerPC, SH or BlackFin.

Once CODESYS is connected with the controller, it offers an extensive debugging functionality such as variable monitoring/writing/forcing by setting breakpoints/performing single steps or recording variable values online on the controller in a ring buffer (Sampling Trace) as well as core dumps during exceptions.

CODESYS V3.x is based on the so-called  CODESYS Automation Platform, an automation framework device manufacturers can extend by their own plug-in modules.

The  CODESYS Professional Developer Edition offers the option to add components to the tool which are subject to licensing, e.g. integrated UML support, a connection to the version control systems Apache Subversion and Git, online runtime performance analysis ("Profiler"), static code analysis of the application code or script-based automated test execution.

With the CODESYS Application Composer, which partly can be used free of charge, users can have complete automation applications generated as part of the IEC 61131-3 tool. To do this, they can configure their machine or system on the basis of modules that define, for example, the mechatronic structure or the software function to be used, including the entire functionality. From this configuration, an integrated configurator generates viewable IEC 61131-3 code.

Runtime
After implementing the CODESYS Control Runtime System, intelligent devices can be programmed with CODESYS. A fee-based toolkit provides this runtime system as source and object code. It can be ported to different platforms.

Since the beginning of 2014, a runtime version has also existed for all the Raspberry Pi versions. However, this does not guarantee hard real-time characteristics. The Raspberry Pi interfaces, such as I²C, SPI and 1-Wire are supported in addition to the Ethernet-based field buses.

Furthermore, SoftPLC systems under Windows and Linux are available, which turn industrial PCs and other standard device platforms from different manufacturers such as Janztec, WAGO, Siemens or Phoenix Contact into CODESYS-compatible controllers. These SoftPLC systems can also be operated as virtual PLCs in virtualization platforms, such as software containers and hypervisors in real-time.

Fieldbus technology
Different field buses can be used directly in the programming system CODESYS. For this purpose, the tool integrates configurators for the most common systems such as PROFIBUS, CANopen, EtherCAT, PROFINET and EtherNet/IP. For most of the systems mentioned, protocol stacks are available in the form of CODESYS libraries which can be loaded subsequently onto the supported devices.

In addition, the platform provides optional support for application-specific communication protocols, such as BACnet or KNX for building automation.

Communication 
For the exchange of data with other devices in control networks, CODESYS can seamlessly integrate and use communication protocols. These include proprietary protocols, standardized protocols in automation technology, such as OPC and OPC UA, standard protocols for serial and Ethernet interfaces as well as standard protocols of web technology, such as MQTT or https. The latter are also offered in the form of encapsulated libraries for simplified access to public clouds from AWS or Microsoft (Azure).

Visualization
An integrated editor helps users to create complex visualization masks directly in the programming system CODESYS and animate them based on application variables. To simplify the procedure, integrated visualization elements are available. In addition, canvas (HTML5) elements can also be integrated and animated. An optional toolkit enables users to create their own visualization elements. The masks created are, among others, used for application tests and commissioning during online operation of the programming system. With optional visualization clients, the created masks can also be used to operate the machine or plant, e.g. on controllers with integrated display (product name CODESYS TargetVisu), in an own portable runtime e.g. under Windows or Linux (product name CODESYS HMI) or in an HTML5-capable web browser (product name CODESYS WebVisu). For simplified use, a free Android app is available for Codesys WebVisu (product name CODESYS Web View).

Motion CNC Robotics
An optional modular solution for controlling complex movements with an IEC 61131-3 programmed controller is also completely integrated in the programming system CODESYS. The modular solution includes:
 Editors for motion planning, e. g. with CAMs or DIN 66025 CNC descriptions
An axis group configurater for multiple robot kinematics
 Library modules for decoder, interpolator, program execution, e. g. according to PLCopen MotionControl, for kinematical transformations and visualization templates

Safety
Pre-certified software components within CODESYS make it much easier for device manufacturers to have their controllers SIL2 or SIL3 certified according IEC 61508. Therefore, CODESYS Safety consists of components within the programming system and the runtime system, whereas the development is completely integrated in the IEC 61131-3 programming environment.

Users of control technology use the safety functions with devices that have already implemented CODESYS Safety. In addition, an add-on product is available with which the certified EtherCAT Safety Terminals from Beckhoff can be configured within the CODESYS Development System.

Automation Server 
For the administration of compatible devices, an Industry 4.0 platform is available, which allows, for example, the storage of projects in source and binary code via web browser and their download to connected devices. The platform is currently only hosted in a public cloud. Operation of the server on local, on-premise servers has been announced for 2024. The communication between the cloud and the controllers is performed through a special software Edge Gateway, whose security features have been rated A+ by SSL Labs. Therefore, this connection can be used to communicate securely with devices integrated in the Automation Server without the need for additional VPN tunnels or firewalls, e.g. for displaying web visualizations or for debugging/updating the application software on the device.

Additional sources of information and assistance 
Since 2012, the manufacturer has been operating an online forum in which users can communicate with each other. In 2020 it was transferred to the Q&A platform "CODESYS Forge", an open-source platform for the development of projects and sharing of knowledge and a section acts as a forum ("CODESYS Talk"). An Android app is available to simplify the use of the platform ("CODESYS Forge")

With the CODESYS Store, the manufacturer operates an online shop in which additional options and products are offered. A considerable part of the product offerings is free sample projects that make it easier to try out features and supported technologies. Just like an "App-Shop" platform, users have the possibility to search and install the offered products and projects directly from the CODESYS Development System without leaving the platform.

Industrial usage
According to information from the manufacturer at least 400 device manufacturers from different industrial sectors offer intelligent automation devices with a CODESYS programming interface. These include devices from global players such as Schneider Electric, Beckhoff, Eaton Corporation, WAGO or Festo, but also niche suppliers of industrial controllers. Consequently, more than 100,000 end users such as machine or plant builders around the world employ CODESYS for different automation tasks and applications.  In the CODESYS Store alone, there are far more than 310,000 verified users registered (as of 10/2023). In a study published in 2019, the independent market research institute IoT Analytics states that CODESYS is the market leader for hardware-agnostic SoftPLCs. Furthermore, numerous educational institutions (commercial schools, colleges, universities) around the world use CODESYS in the training of control and automation technology.

Membership in organisations 
 PLCopen
 OSADL
 CAN in Automation
 OPC Foundation
 Profibus
 SERCOS interface
 EtherCAT
 IO-Link
 ODVA
 The Open Group

See also
 Integrated development environment
 Process control
 Programmable logic controller (PLC)
 Software engineering

References

Bibliography 
 Kai Stüber (2023): Konzeption und Implementierung der Ansteuerung einer Bohreinrichtung mit einer speicherprogrammierbaren Steuerung und CODESYS (Projektarbeit), 2023 (E-Book). 
 Stefan Henneken (2023): Use of the SOLID principles with the IEC 61131-3 - 5 Principles for Object-Oriented Software Design in the PLC Programming, 2023 (Paperback).  / E-Book  
Gary L. Pratt (2021): The BOOK of CODESYS. self-published, 2021. 
 Peter Beater: Grundkurs der Steuerungstechnik mit CODESYS: Grundlagen und Einsatz Speicherprogrammierbarer Steuerungen, 2021, 
 Peter Beater: Aufgabensammlung zur Steuerungstechnik: 56 mit Papier und Bleistift oder CoDeSys gelöste Aufgaben, 2019, 
 Karl Schmitt: SPS-Programmierung mit ST: nach IEC 61131 mit CoDeSys und mit Hinweisen zu STEP 7 im TIA-Portal (elektrotechnik), 2019, 
 Stefan Nothdurft: Projekt Bohreinrichtung. Implementierung einer speicherprogrammierbaren Steuerung mit CoDeSys, 2018, 
 Jochen Petry und Karsten Reinholz: SPS-Programmierung mit CODESYS V2.3: Praxisorientiert - Realitätsnah - Erprobt!. Mit e. Vorw. v. Karsten Reinholz, 2014, 
 Jochen Petry: IEC 61131-3 mit CoDeSys V3: Ein Praxisbuch für SPS-Programmierer. Eigenverlag 3S-Smart Software Solutions, 2011
 Karl Schmitt: SPS-Programmierung mit ST nach IEC 61131-3 mit CoDeSys und Hinweisen zu STEP7 V11. Vogel Buchverlag, 2011

 Herbert Bernstein (2007) SPS-Workshop mit Programmierung nach IEC 61131 mit vielen praktischen Beispielen, mit 2 CD-ROM, VDE Verlag.
 Prof. Dr. Birgit Vogel-Heuser (2008) Automation & Embedded Systems, Oldenbourg Industrieverlag.
 Ulrich Kanngießer: Kleinsteuerungen in Praxis und Anwendung: Erfolgreich messen, steuern, regeln mit LOGO!, easy, Zelio und Millenium 3. Hüthig Verlag
 Matthias Seitz: Speicherprogrammierbare Steuerungen. Hanser Fachbuchverlag Leipzig
 Heinrich Lepers (2005) SPS-Programmierung nach IEC 61131-3 mit Beispielen für CoDeSys und STEP 7, Franzis Verlag
 Günter Wellenreuther/Dieter Zastrow (2007) Automatisieren mit SPS – Übersichten und Übungsaufgaben, Vieweg Verlag.
 Norbert Becker (2006) Automatisierungstechnik, Vogel Buchverlag.
 Helmut Greiner: Systematischer Entwurf sequentieller Steuerungen – Grundlagen. Schriftenreihe der Stiftung für Technologie, Innovation und Forschung Thüringen (STIFT)
 Igor Petrov: Controller Programming: The standard languages and most important development tools. Solon Press, 2007 (Russian)
 Marcos de Oliveira Fonseca et al.(2008) Aplicando a norma IEC 61131 na automação de processos, ISA América do Sul. (Portuguese)
 Dag Håkon Hanssen (2008) Programmerbare Logiske Styringer – baser på IEC 61131-3, tapir akademisk forlag. (Norwegian)
 Jürgen Kaftan: "Practical Examples with AC500 from ABB: 45 Exercises and Solution programmed with CoDeSys Software". IKH Didactic Systems 
 Tom Mejer Antonsen: "PLC Controls with Structured Text (ST): IEC 61131-3 and best practice ST programming",  (further languages available)

External links
 
 CODESYS Talk (former CODESYS user forum)
 CODESYS Forge (open source projects)
 http://www.oscat.de/ OpenSource library for version 2 and 3 of CODESYS
 "OPC UA and IEC 61131-3" ISA Intech article on the power of CODESYS IEC61131-3 and OPC-UA

 Codesys PLC

Industrial automation
Programmable logic controllers