# Codesys

Codesys (Eigenschreibweise CODESYS, früher CoDeSys) ist eine Integrierte Entwicklungsumgebung für speicherprogrammierbare Steuerungen (SPS) nach dem IEC 61131-3 Standard für die Applikationsentwicklung in der Industrieautomation.

## Einführung

Codesys wird von der Codesys Group mit dem Hauptsitz in Kempten entwickelt und vermarktet. Das Softwareunternehmen wurde 1994 als 3S-Smart Software Solutions GmbH gegründet und 2018 bzw. 2020 zur Codesys Group bzw. Codesys GmbH umfirmiert.
Die Bezeichnung Codesys ist ein Akronym und steht für Controller Development System. Die Version 1.0 wurde im Jahr 1994 ausgeliefert. Das Programmiersystem ist lizenzfrei zu verteilen und zu benutzen, es kann ohne Kopierschutz ganz legal auf weiteren Arbeitsplätzen installiert werden. Die Kosten für den Einsatz der Runtime-Lizenzen sind dann jedoch vergleichsweise hoch, abhängig von der Leistungsfähigkeit der Zielplattform sowie der Anzahl der abgenommenen Lizenzen. Im Embedded-Bereich sind für einzelne Lizenzabnahmen z. B. zweistellige Eurobeträge fällig. Seit August 2023 ist ein applikationsabhängiges Lizenzmodell für Anwender von SoftSPSen verfügbar, das unabhängig von der Geräteplattform einen kostengünstigen Einstieg ermöglicht.

## Integrierte Anwendungsbereiche

Das Software-Tool deckt unterschiedliche Aspekte der industriellen Automatisierungstechnik in einer Oberfläche ab:

### Engineering

Alle fünf der von der IEC 61131-3 (International Electrotechnical Commission) spezifizierten Sprachen stehen im Codesys Development System zur Verfügung:
* IL (Instruction List), im deutschen Sprachgebrauch Anweisungsliste (AWL). Textuelle Sprache angelehnt an klassische Assembler, wird von der IEC 61131-3-Nutzerorganisation PLCopen allerdings als „deprecated“ (veraltet) bezeichnet und sollte nicht mehr für neue Projekte verwendet werden.
* ST (Structured Text), im deutschen Sprachgebrauch Strukturierter Text (ST), angelehnt an Pascal zur strukturierten Programmierung.
* LD (Ladder Diagram), im deutschen Sprachgebrauch Kontaktplan (KOP). Diese Sprache bildet klassische Verdrahtungen von Relais grafisch ab.
* FBD (Function Block Diagram), im deutschen Sprachgebrauch Funktionsbausteinsprache (FBS, Bezeichnung in Codesys FUP für Funktionsplan-Diagram). Grafische Sprache mit Bausteinen (Kästen/Boxen), deren Funktion vom System, durch eigene Programmierung oder Bibliotheken bereitgestellt wird.
* SFC (Sequential Function Chart), im deutschen Sprachgebrauch Ablaufsprache (AS). Grafische Sprache bestehend aus Schritten, Transitionen und Abzweigungen, ideal für die Programmierung von logischen Abläufen und Prozessen.
Zusätzlich zu den Sprachen im IEC-Standard gibt es in Codesys:
* CFC (Continuous Function Chart) ist ein FUP-Editor mit einem frei-grafischen Layout: während FUP-Editoren netzwerkorientiert arbeiten und die Bausteine automatisch anordnen, ist es im CFC möglich, alle Bausteine frei zu platzieren und somit auch Rückkopplungen ohne Zwischenvariablen zu realisieren.
Der mit Codesys erzeugte Applikationscode wird zum Download auf die Steuerung von integrierten Compilern in nativen Maschinencode (Binärcode) übersetzt. Unterstützt werden die wichtigsten 32- und 64-Bit CPU-Familien wie z. B. TriCore, 80x86/iX, ARM/Cortex, Power-Architektur, SH, MIPS, Blackfin und weitere.
Im Online-Betrieb mit der Steuerung bietet Codesys umfangreiche Debugging-Funktionen, von Variablen-Monitoring/Schreiben/Zwangssetzen über Breakpoints/Einzelschritt-Ausführung bis hin zur Online-Aufzeichnung von Variablen-Werten auf der Steuerung in einem Ringpuffer (Sampling Trace) sowie das Speichern des Speicherabbilds bei z. B. bei Exceptions („CoreDump“).
Codesys in der Version V3.x basiert auf der sogenannten Codesys Automation Platform, einem Automatisierungsframework, das von Geräte-Herstellern um eigene Plug-In-Module erweitert werden kann.
Im Rahmen der Codesys Professional Developer Edition kann das Tool optional um kostenpflichtige Zusatzkomponenten erweitert werden, z. B. eine integrierte UML-Unterstützung, eine Anbindung an die Versionsverwaltungssysteme Apache Subversion sowie Git, einer Laufzeitmessung („Profiling“) direkt auf der Steuerung oder eine statische Code-Analyse des Applikationscodes.
Mit dem Codesys Application Composer können Anwender im Rahmen des IEC 61131-3 Tools komplette Automatisierungsapplikationen erzeugen lassen. Dazu können sie ihre Maschine oder Anlage auf Basis von Modulen konfigurieren, die z. B. den mechatronischen Aufbau oder die zum Einsatz kommende Software-Funktion einschließlich der gesamten Funktionalität definieren. Aus dieser Konfiguration erzeugt ein integrierter Konfigurator einsehbaren IEC 61131-3 Code.

### Runtime

Nach der Implementation des Codesys Control Laufzeitsystems können intelligente Geräte mit Codesys programmiert werden. Dieses Laufzeitsystem steht als Quell- und Objektcode im Rahmen eines kostenpflichtigen Toolkits zur Verfügung und kann auf unterschiedliche Plattformen portiert werden.
Seit Anfang 2014 existiert auch eine Runtime-Version für den Raspberry Pi. Diese garantiert allerdings ohne Anpassung des Standardbetriebssystems Raspian keine harten Echtzeiteigenschaften. Die Raspberry-Pi-Schnittstellen, wie I²C, SPI und 1-Wire werden neben den Ethernet-basierenden Feldbussen unterstützt.
Darüber hinaus sind SoftSPS-Systeme für Windows und Linux verfügbar, die aus Industrie-PCs und anderen bekannten Geräteplattformen von unterschiedlichen Herstellern wie Janztec, WAGO, Siemens oder Phoenix Contact Codesys kompatible Steuerungen machen. Diese SoftSPS-Systeme lassen sich als virtuelle SPS auch in Virtualisierungsplattformen, wie z. B. Software-Container und Hypervisor in Echtzeit betreiben. So können mehrere virtuelle Steuerungen, unterschiedlich in Performance und Featureausbau, auf einer Hardware laufen und somit zur Konsolidierung von Hardware beitragen.

### Feldbus-Technologie

Direkt im Programmiersystem Codesys können unterschiedliche Feldbusse verwendet werden. Das Tool integriert dazu Konfiguratoren für die wichtigsten Systeme, wie z. B. Profibus, CANopen, EtherCAT, Profinet, EtherNet/IP. Für die meisten dieser Systeme sind Protokollstacks in Form von nachladbaren Codesys-Bibliotheken verfügbar.
Darüber hinaus unterstützt die Plattform optional applikationsspezifische Kommunikationsprotokolle, wie z. B. BACnet oder KNX für die Gebäudeautomation und DNP3 für die Fernwirktechnik.

### Kommunikation

Zum Datenaustausch mit anderen Teilnehmern in Steuerungsnetzwerken lassen sich in Codesys nahtlos integrierte Kommunikationsprotokolle einbinden und verwenden. Dazu gehören proprietäre Protokolle, standardisierte Protokolle in der Automatisierungstechnik, wie z. B. OPC und OPC UA, Standardprotokolle für serielle und Ethernet-Schnittstellen sowie Standardprotokolle der Webtechnologie, wie MQTT oder https. Letztere werden auch in Form von gekapselten Bibliotheken zum vereinfachten Zugriff auf Public Clouds von AWS oder Microsoft (Azure) angeboten.

### Visualisierung

Direkt im Programmiersystem Codesys kann der Anwender mit einem integrierten Editor komplexe Visualisierungsmasken erstellen und auf Basis der Applikationsvariablen animieren. Dafür stehen integrierte Visualisierungselemente zur Verfügung. Darüber hinaus lassen sich auch Canvas (HTML5-Elemente) einbinden und animieren. Mit einem optionalen Toolkit kann der Anwender seine eigenen Visualisierungselemente erzeugen. Die erzeugten Masken werden u. a. für Applikationstests und bei der Inbetriebnahme im Online-Betrieb des Programmiersystems eingesetzt. Mit optionalen Visualisierungsclients können die erstellten Masken auch zur Bedienung der Maschine oder Anlage dienen, z. B. auf Steuerungen mit integriertem Display (Produktname Codesys TargetVisu), in einem eigenen portablen Runtime z. B. unter Windows oder Linux (Produktname Codesys HMI) oder im HTML5-fähigen Web-Browser (Produktname Codesys WebVisu). Zur vereinfachten Nutzung steht für die Codesys WebVisu eine kostenlose Android-App zur Verfügung (Produktname Codesys Web View). Sowohl die Codesys TargetVisu und die Codesys WebVisu unterstützen in den neuesten Versionen Overlay-Funktionalität und Grafikbeschleunigung.

### Motion CNC Robotics

Ebenfalls vollständig integriert im Programmiersystem Codesys ist eine optionale Baukasten-Lösung zur Steuerung von komplexen Verfahrbewegungen mit einer IEC 61131-3 programmierten Steuerung. Im Umfang des Baukastens befinden sich
* Editoren zur Bewegungsplanung z. B. anhand von Kurvenscheiben oder CNC-Beschreibungen nach DIN 66025
* ein Achsgruppen-Konfigurator zur Parametrierung von Roboterkinematiken
* Bibliotheksbausteine für Decoder, Interpolator, zur Programmabarbeitung u. a. nach PLCopen MotionControl, für kinematische Transformationen sowie für Visualisierungstemplates.

### Safety

Damit Hersteller von Maschinen und Anlagen nach einer Risiko-Analyse die erforderliche Sicherheitsanforderungsstufe (SIL-Level) erreichen können, müssen alle im System eingesetzten Komponenten dem ermittelten SIL-Level genügen. Vorzertifizierte Software-Teile innerhalb von Codesys vereinfachen Geräteherstellern die Zertifizierung ihrer Steuerungen nach SIL2 bzw. SIL3. Zu diesem Zweck besteht Codesys Safety aus Komponenten innerhalb des Programmiersystems und des Laufzeitsystems, die Projektierung erfolgt wiederum vollständig integriert in der IEC 61131-3 Programmierumgebung.
Anwender von Steuerungstechnik nutzen die Safety-Funktionen mit Geräten, die Codesys Safety bereits implementiert haben. Darüber hinaus steht ein Zusatzprodukt zur Verfügung, mit dem die zertifizierten EtherCAT-Safetyklemmen von Beckhoff innerhalb des Codesys Development Systems projektiert werden können.
Eine virtuelle Sicherheitssteuerung ermöglicht sogar Sicherheitsanwendungen auf beliebigen Geräten ohne spezielle Hardware-Zertifizierung (derzeit x86-basierte Systeme) zu realisieren und nach IEC 61508 SIL3 zu zertifizieren. Die Zertifizierung des Produkts ist für Januar 2025 vorgesehen.

### Industrie 4.0 / Automation Server

Zur Administration von kompatiblen Geräten steht eine Industrie-4.0-Plattform zur Verfügung, die per Webbrowser z. B. die Ablage von Projekten im Quell- und Binärcode ermöglicht, sowie deren Download auf angebundene Geräte. Die gesamte Plattform wird in einer Public Cloud gehostet, Nutzer registrieren sich für ein privates Konto. Ein Betrieb des Servers auf lokalen, on-premise-Servern ist für 2024 angekündigt. Die Kommunikation zwischen der Cloud und den Steuerungen erfolgt über ein spezielles Software Edge Gateway, dessen Securityeigenschaften von SSL Labs mit A+ bewertet wurde. Diese Verbindung kann somit genutzt werden, um mit eingebundenen Geräten im Automation Server ohne weitere VPN-Tunnel oder Firewalls sicher zu kommunizieren, z. B. für die Anzeige hinterlegter Web-Visualisierungen oder zum Debugging/Update der Applikationssoftware auf dem Gerät.

## Zusätzliche Informations- und Hilfequellen

Seit 2012 betreibt der Hersteller ein Online-Forum, in dem Anwender miteinander kommunizieren können. Es wurde 2020 in die Q&A-Plattform „Codesys Talk“ überführt, die gleichzeitig als offene Plattform für open-source Entwicklungsprojekte („Codesys Forge“) genutzt wird. Zur vereinfachten Nutzung der Plattform ist eine Android-App verfügbar („Codesys Forge“).
Mit dem Codesys Store betreibt der Hersteller einen Online-Development-Shop, in dem Zusatzoptionen und -produkte angeboten werden. Enthalten sind u. a. sind kostenlose Beispielprojekte, die das Ausprobieren von Funktionen und unterstützten Technologien erleichtern. Ähnlich wie in einer „App-Shop“-Plattform haben Anwender die Möglichkeit, die angebotenen Produkte und Projekte direkt aus dem Codesys Development System zu suchen und installieren, ohne die Plattform verlassen zu müssen.

## Verbreitung im Markt

Mehr als 500 Gerätehersteller in unterschiedlichen Industriebereichen haben Codesys als Programmierschnittstelle für ihre intelligenten Automatisierungskomponenten implementiert. Dazu gehören Geräte von Global Playern wie ABB, Schneider Electric, Beckhoff, Eaton Corporation, WAGO, Turck oder Festo, aber auch Nischenanbieter von Industriesteuerungen für ganz spezielle Anwendungsbereiche. Daraus ergeben sich mehrere zehntausend Anwender, die Codesys einsetzen. Allein im Codesys Store sind weit mehr als 310.000 verifizierte Benutzer registriert (Stand 10/2023). Aufgrund seines hohen Verbreitungsgrades kann Codesys als Marktstandard unter den geräteunabhängigen Programmiertools nach IEC 61131-3 bezeichnet werden. So wird in der Ausbildung der Steuerungs- und Automatisierungstechnik an zahlreichen Bildungseinrichtungen (Gewerbliche Schulen, Hochschulen, Universitäten) weltweit mit Codesys gearbeitet.
Mit Codesys werden ganz unterschiedliche Automatisierungsaufgaben realisiert. Einige Beispiele:
* Holzbearbeitungsmaschinen u. a. der Homag Group
* Bestückungsmaschinen u. a. von ASYS Automatisierungssysteme
* Bergwerksmaschinen u. a. von Gebr. Eickhoff Maschinenfabrik und Eisengießerei
* Gebäudeautomationssysteme u. a. in der Schirn Kunsthalle Frankfurt
* Automationssysteme in Yachten, u. a. von Fr. Lürssen Werft
* Windenergieanlagen u. a. von Enercon

## Mitgliedschaft in Organisationen

* PLCopen
* OSADL
* CAN in Automation
* OPC Foundation
* Profibus
* SERCOS interface
* EtherCAT
* IO-Link
* ODVA
* The Open Group
* Wind Marketplace