Erstellen eines Beispiel-Automatisierungsprojekts in CODESYS
Zur Verfügung gestellt von Nordamerikanische Fachredakteure von DigiKey
2025-12-03
Die Einführung einer neuen Automatisierungsplattform kann zu steilen Lernkurven führen und Bedenken hinsichtlich einer Anbieterbindung wecken. CODESYS begegnet diesen Herausforderungen mit einer hardwareunabhängigen Entwicklungsumgebung auf Basis der Norm IEC 61131-3. Es bietet einen einheitlichen Arbeitsablauf für die Programmierung, das I/O-Mapping, die Visualisierung und den Einsatz auf verschiedenen Hardwareplattformen.
Dieser Artikel zeigt, wie man ein komplettes Automatisierungsprojekt in CODESYS erstellt, von der anfänglichen Einrichtung bis zum Laufzeittest. Der Leser wird den Gerätebaum konfigurieren, I/O-Kanäle zuordnen, Logik in strukturiertem Text programmieren, Visualisierungen entwerfen, eine Verbindung zu einer Laufzeitumgebung herstellen und Debugging-Strategien zur Überprüfung des Betriebs anwenden. Neben praktischen Anleitungen werden in dem Artikel bewährte Verfahren für die Projektorganisation, die Bibliotheksverwaltung und die sichere Bereitstellung hervorgehoben.
Obwohl das Tutorial den in CODESYS integrierten Simulator für die Zugänglichkeit verwendet, gilt derselbe Arbeitsablauf für die von DigiKey erhältlichen Hardware-Plattformen, wie CODESYS-fähige SPSen, industrielle Raspberry-Pi-Controller (z. B. EdgeBox-RPI-200 von Seeed) und HMIs mit integrierter Laufzeitumgebung. Am Ende werden die Leser einen klaren Rahmen für die Erstellung einer funktionierenden Automatisierungsanwendung in CODESYS geschaffen haben, mit Einblicken in Techniken, die Skalierbarkeit und Zuverlässigkeit in industriellen Umgebungen unterstützen.
Einrichtung des Projekts
Der erste Schritt besteht darin, ein neues Projekt im CODESYS-Entwicklungssystem anzulegen. Wählen Sie in der Vorlagenliste (Templates) die Option „Standard Project“ und vergeben Sie einen beschreibenden Namen wie MotorControlDemo. Wenn Sie nach einem Gerät gefragt werden, wählen Sie CODESYS Control Win V3, das eine Windows-basierte Laufzeitumgebung für Simulationen ohne eigene Hardware bietet. So kann der gesamte Arbeitsablauf getestet werden, bevor er auf Plattformen wie SPSen oder industriellen Raspberry-Pi-Modulen eingesetzt wird.
Das Projekt wird mit einem Gerätebaum geöffnet, in dem Controller, I/O-Kanäle und Kommunikationsverbindungen organisiert sind. In diesem Beispiel enthält der Baum ein Controller-Objekt, digitale Eingänge für Start- und Stopptasten und digitale Ausgänge für einen Motor und eine Kontrollleuchte. Um diese Signale mit der Steuerlogik zu verbinden, deklarieren Sie boolesche Variablen wie StartButton, StopButton, MotorOn und LampOn in der globalen Variablenliste oder im Programmeditor. In der Simulation wird das Verhalten der Hardware durch Umschalten dieser Werte nachgeahmt. Auf der Hardware sind sie direkt an physische I/O-Punkte gebunden.
Abbildung 1: Boolesche Variablendeklarationen für Motorsteuerungs-I/O. (Bildquelle: Autor)
Eine klare, konsistente Namensgebung in dieser Phase ist eine bewährte Praxis, die den Aufwand für die Fehlersuche minimiert und die Skalierung vereinfacht, wenn neue Funktionen oder Geräte hinzugefügt werden.
Programmierlogik
Nachdem die Projektstruktur festgelegt wurde, ist der nächste Schritt die Implementierung der Steuerungslogik in Strukturiertem Text (ST), einer der von CODESYS unterstützten IEC61131-3-Sprachen. ST verwendet eine Pascal-ähnliche Syntax, die Lesbarkeit mit Ausdruckskraft verbindet und eine klare Implementierung von sequentiellen Routinen und zustandsbasierter Logik unterstützt.
Das Demonstrationsprojekt erfordert eine einfache Start/Stopp-Schaltung: Durch Drücken der Starttaste werden Motor und Lampe eingeschaltet, durch Drücken der Stopptaste werden beide ausgeschaltet. Dies wird in ST wie in Abbildung 2 dargestellt ausgedrückt.
Abbildung 2: In Strukturiertem Text implementierte Start/Stopp-Logik. (Bildquelle: Autor)
Dieses Beispiel veranschaulicht die Grundlagen von ST, einschließlich bedingter Anweisungen, boolescher Logik und Variablenzuweisung. Da die Variablen während der Projektkonfiguration definiert wurden, lassen sie sich direkt den I/O-Kanälen zuordnen, wodurch eine Brücke zwischen den Hardwaresignalen und der Programmausführung geschlagen wird.
Bei größeren Projekten ist die Organisation wichtig. Initialisierungscode kann Standardzustände setzen, während zyklische Tasks Eingänge überwachen und Ausgänge steuern. Funktionsblöcke und Bibliotheken helfen, die Logik zu kapseln, Redundanzen zu reduzieren und die Lesbarkeit zu verbessern. Derselbe ST-Code, der in der Simulation entwickelt wurde, kann später mit nur geringfügigen Modifikationen auf die von DigiKey angebotene Hardware, wie z. B. Kompakt-SPSen oder PACs, übertragen werden. Diese Portabilität unterstreicht den Wert von CODESYS als hardware-unabhängige Umgebung. Insbesondere die Trennung von Initialisierung, zyklischer Überwachung und Fehlerbehandlung ist eine bewährte Praxis, die die Lesbarkeit verbessert und eine vorhersehbare Ausführung bei wachsenden Projekten gewährleistet.
Konfigurieren von Geräten und I/O-Zuordnung
Nachdem die Projektstruktur und die Variablen festgelegt sind, besteht der nächste Schritt in der Verknüpfung der Variablen mit der Hardware - oder der simulierten I/O - durch I/O-Zuordnung. In CODESYS wird dies auf der Registerkarte „I/O Mapping“ des Geräteeditors gehandhabt, wo jeder Kanal mit einer Projektvariablen gepaart ist.
Fügen Sie zunächst einen Controller und ihre I/O-Module in den Gerätebaum ein. Zum Beispiel kann ein Modul mit zwei digitalen Eingängen und zwei digitalen Ausgängen hinzugefügt werden. Sobald ein Gerät mit I/O-Fähigkeit vorhanden ist, wird die Registerkarte „I/O Mapping“ aktiviert, die eine Tabelle der Ein- und Ausgangskanäle mit Spalten für Variablennamen, Adressen und Datentypen anzeigt. Die Gerätebeschreibungen enthalten in der Regel Standardnamen und -adressen, die jedoch geändert werden können, um sie an die Systemverdrahtung oder die Namenskonventionen anzupassen.
Auf der Registerkarte „I/O Mapping“ können Variablen auf drei Arten den Kanälen zugeordnet werden: Verknüpfen Sie eine vorhandene Variable (z. B. StartButton, MotorOn), erzeugen Sie eine neue implizite globale Variable innerhalb der Schnittstelle, oder bearbeiten Sie die Adressen direkt, um sie an die Projektanforderungen anzupassen. Den Eingängen zugeordnete Variablen sind per Definition schreibgeschützt, und jede Variable kann nur einem Kanal zugeordnet werden.
In Produktionsumgebungen muss beim Mapping auch auf die elektrischen Schnittstellenspezifikationen geachtet werden, einschließlich Signalpegel, Modulleistungen und Erdung. Diese Faktoren gehen über den Rahmen dieses Tutorials hinaus, sind aber für den Einsatz von Hardware entscheidend.
Zu Dokumentationszwecken oder zur Massenbearbeitung können Zuordnungen als CSV-Dateien exportiert oder importiert werden. Der Export von Mapping-Daten in CSV ist eine bewährte Praxis, da sie eine Dokumentation für Audits und eine zuverlässige Referenz für die Zusammenarbeit im Team darstellt.
Visualisierung und HMI
Wenn die Logik vorhanden ist, besteht der nächste Schritt darin, eine Benutzeroberfläche zu schaffen, die das System steuert und überwacht. CODESYS bietet ein integriertes Visualisierungs-Toolset, das mehrere Bereitstellungsmodi - WebVisu, TargetVisu und CODESYS HMI - unterstützt, so dass die Visualisierung auf Webbrowsern, lokalen Displays oder dedizierten Geräten laufen kann.
Fügen Sie im Gerätebaum unter dem Knoten „Application“ ein „Visualization Manager“-Objekt und dann einen oder mehrere „Screens“ zur Visualisierung hinzu, wie z. B. MainVisu. Ziehen Sie auf jeden Screen Benutzeroberflächenelemente wie Schaltflächen, Lampen/Anzeigen, Kurvenanzeigen oder Trendgrafiken. Diese Elemente sind über den Eigenschaftsdialog des Elements mit Programmvariablen (z. B. StartButton, LampOn) verknüpft.
Um z. B. den Motorstatus anzuzeigen, platzieren Sie ein Lampenelement und setzen seine variable Verknüpfung auf LampOn. Wenn die Variable TRUE ist, leuchtet die Lampe, wenn die Variable FALSE ist, bleibt sie dunkel. Diese direkte Bindung zwischen Variablen und Elementen ermöglicht eine intuitive Interaktion während der Laufzeit.
Optionen für den Bereitstellungsmodus
Sobald die Schnittstelle entworfen ist, muss entschieden werden, wie die Visualisierung für Bediener oder externe Systeme bereitgestellt werden soll. CODESYS unterstützt mehrere Bereitstellungsmodi, die jeweils auf unterschiedliche Leistungs- und Netzwerkanforderungen ausgerichtet sind:
- WebVisu: Läuft als HTML5 in einem Webbrowser, wobei das Gerät als Webserver über HTTP/HTTPS fungiert. Es ermöglicht den Fernzugriff ohne ein eigenes Display.
- TargetVisu: Läuft auf einem Display, das direkt an den Controller oder das Gerät angeschlossen ist. Effizient für eingebettete Systeme, die Steuerung und HMI in einer Einheit vereinen.
- CODESYS HMI: Eine separate Laufzeitinstanz für die Visualisierung, die mit mehreren Steuerungen verbunden werden kann.
Bei der Wahl des Bereitstellungsmodus sollten Sie die Performance, die Anzeigeanforderungen und die Netzwerktopologie berücksichtigen. Obwohl WebVisu flexibel ist, müssen die Controller möglicherweise den HTTP-Server und zusätzliche Lasten unterstützen. TargetVisu reduziert die Netzwerklatenz, erfordert jedoch die Unterstützung lokaler Anzeigen, während der HMI-Modus für Systeme mit mehreren Steuerungen skalierbar ist.
Hardware-Beispiel aus der Praxis
Als Hardware-Referenz dient das 7"-HMI cMT3072XHT von Maple Systems, das bei DigiKey erhältlich ist und über eine integrierte CODESYS-Laufzeit und -Anzeige verfügt, so dass die im Projekt erstellten Screens zur Visualisierung direkt gehostet werden können.
Zu den bewährten Verfahren für das Visualisierungsdesign gehört die Verwendung von Screens und Parameterschnittstellen in Bibliotheken zur Erstellung wiederverwendbarer Vorlagen. Der Entwickler sollte außerdem die Alarm- und Trace-Anzeigen so konfigurieren, dass nur kritische Variablen angezeigt werden, um die Belastung der Steuerung zu minimieren. Dies ermöglicht die Unterstützung von mehreren Sprachen und Einheitenumrechnungen mit Textlisten und variabler Skalierung. Darüber hinaus können Sie die Positionen von Elementen mit Ausrichtungslinien oder Containern fixieren, um ein konsistentes Layout für verschiedene Screen-Größen zu gewährleisten.
Mit der verbundenen Visualisierung ist die Anwendung nun vollständig interaktiv. Der Benutzer kann den Motor starten und stoppen, die Anzeigen überwachen und den Live-Status über die HMI anzeigen. Damit ist die Visualisierungsphase abgeschlossen und das Projekt wird für die Laufzeittests vorbereitet.
Bereitstellung und Laufzeittests
Sobald die Programmierung und Visualisierung abgeschlossen sind, muss das Projekt in einer Laufzeitumgebung bereitgestellt werden. CODESYS unterstützt mehrere Optionen, vom integrierten Simulator Control Win SL bis hin zu lizenzierten Laufzeiten auf industrieller Hardware.
Wählen Sie im Menü „Online“ des Entwicklungssystems das Zielgerät oder den Simulator aus und stellen Sie eine Verbindung her. Laden Sie das kompilierte Projekt auf die Laufzeitumgebung herunter, wobei die IDE den Übertragungsstatus anzeigt und eventuelle Konfigurationsabweichungen hervorhebt. Nach dem Laden schalten Sie die Steuerung in den RUN-Modus, um mit der Ausführung zu beginnen.
Die integrierte Windows-Laufzeitumgebung ermöglicht eine schnelle Verifikation ohne Hardware, während CODESYS-Laufzeitumgebungen auch auf eingebetteten Linux-Plattformen wie dem Revolution Pi (RevPi) Connect 4 von KUNBUS, erhältlich bei DigiKey, ausgeführt werden können. Dieses quelloffene industrielle Raspberry-Pi-Modul zeigt, wie dasselbe Projekt nahtlos von der Simulation bis zum Einsatz im Feld skaliert werden kann.
Fehlersuche und bewährte Methoden
Über die Live-Überwachung hinaus bietet CODESYS eine integrierte Debugging-Umgebung zur Verfeinerung und Pflege von Projekten. Haltepunkte, Einzelschrittabarbeitung der Logik und Analyse von Ausführungsabläufen können manuell gesetzt und durchgeführt werden. Das Trace-Tool erweitert die Diagnose durch die Aufzeichnung von Variablenverläufen für die spätere Analyse, die häufig bei der Nachbereitung von Ereignissen verwendet wird.
Zur Fehlersuche kann CODESYS Force-Variablen (Abbildung 3) erzeugen, die gemappte Signale vorübergehend außer Kraft setzen.
Abbildung 3: Syntax der Benennungskonvention von Force-Variablen in CODESYS. (Bildquelle: Autor)
Diese sind besonders nützlich für die Inbetriebnahme oder die Simulation von Zuständen wie z. B. Tastenbetätigungen. Wenn ein Forcesignal aktiv ist, ersetzt CODESYS das gemappte Signal durch den erzwungenen Wert. Da das Erzwingen von Werten die Echtzeitausführung stören kann, sollte es mit Vorsicht und nur auf bereits zugeordnete Kanäle angewendet werden.
Langfristige Zuverlässigkeit hängt von einem strukturierten Projektmanagement ab. Der „Library Manager“ unterstützt den modularen Aufbau und die zentrale Versionskontrolle, während definierte Platzhalter konsistente Builds für verschiedene Hardware-Ziele sicherstellen. Die Beibehaltung stabiler Bibliotheksversionen verringert die Kompatibilitätsrisiken bei der Bereitstellung oder Aktualisierung.
Neben diesen strukturellen Sicherheitsvorkehrungen sind bewährte Praktiken für den Alltag ebenso wichtig. Dazu gehören die Validierung von Projekten im Simulator, bevor sie auf die Hardware übertragen werden, sowie die Verwendung von Haltepunkten oder die vorsichtige Verwendung von Force-Variablen in der Produktion, um Unterbrechungen der Echtzeitzyklen zu vermeiden. Es ist auch eine gute Praxis, bekannt gute Builds und Bibliotheks-Sets für ein schnelles Rollback zu archivieren und gleichzeitig Variablen-Zuordnungen zu dokumentieren und Visualisierungs-Links bereitzustellen, um eine reibungslose Teamübergabe zu unterstützen.
Fazit
CODESYS beschleunigt die Entwicklung bis zur Bereitstellung durch die Vereinheitlichung von Projekt-Setup, I/O-Mapping, Logikprogrammierung, Visualisierung und Debugging in einer Umgebung. Der Workflow erstreckt sich über alle DigiKey-Plattformen, einschließlich CODESYS-fähiger SPSen, industrieller Raspberry-Pi-Controller und HMIs, und bietet einen praktischen Rahmen für den Übergang vom Konzept zur skalierbaren Automatisierung.
Haftungsausschluss: Die Meinungen, Überzeugungen und Standpunkte der verschiedenen Autoren und/oder Forumsteilnehmer dieser Website spiegeln nicht notwendigerweise die Meinungen, Überzeugungen und Standpunkte der DigiKey oder offiziellen Politik der DigiKey wider.




