Ziel: Prozessdaten aus einer CODESYS-Steuerung auf einem RevPi in Node-RED weiterverarbeiten und visualisieren.
Der RevPi übernimmt dabei zwei Funktionen:
-
Soft-PLC mit CODESYS für die deterministische Steuerung
-
Linux-basiertes Edge-Gateway mit Node-RED für IT-Integration
Anhand eines Beispielprojekts wird demonstriert, wie über das RevPi Prozessabbild Daten bidirektional zwischen CODESYS und Node-RED ausgetauscht werden.
Folgende Schritte werden gezeigt:
-
Zugriff auf das Prozessabbild des RevPi
-
Datenaustausch zwischen SPS-Logik (CODESYS) und IT-/Applikationsebene (Node-RED)
-
Visualisierung von I/O-Daten
Dieses Prinzip kann unter anderem eingesetzt werden für:
-
Web-Dashboards und Visualisierung
-
Cloud-Anbindung
-
Edge-Computing-Anwendungen
Das Tutorial ist anwendbar mit allen RevPi Basismodulen.
Das bereits programmierte Beispielprojekt mit RevPi Connect/+/S als Basismodul steht dir in einem GitLab Repository zur Verfügung. Es kann auf alle Basismodule angepasst werden.
Voraussetzungen #
Geräte #
✓ RevPi Basismodul
Hardware-Installation #
✓ RevPi ist mit dem Netzwerk verbunden.
✓ RevPi ist an die Spannungsversorgung angeschlossen.
Software-Installation #
✓ RevPi Bookworm oder höher ist auf dem RevPi installiert.
✓ Webbrowser ist auf deinem PC verfügbar (z. B. Google Chrome oder Mozilla Firefox).
✓ Es besteht eine Netzwerkverbindung zwischen dem RevPi und deinem PC.
✓ CODESYS Development System (CODESYS) ist auf deinem PC installiert.
✓ CODESYS Runtime ist im CODESYS Development System installiert.
✓ RevPi I/O-Treiber ist im CODESYS Development System installiert.
✓ CODESYS ist mit dem RevPi verbunden.
✓ CODESYS Runtime ist auf dem RevPi installiert.
Siehe CODESYS-Dokumentation zu System einrichten.
1. Node-RED auf dem RevPi einrichten #
▷ Starte Cockpit auf dem RevPi über den Webbrowser.
▷ Füge den Service revpi-codesys zu den Firewall-Einstellungen in Cockpit hinzu.
2. Node-RED-Flow importieren #
▷ Lade aus dem GitLab Repository die Datei RevPi CODESYS Node-RED.json herunter.
▷ Passe in der Datei die Variablennamen der Ein- und Ausgänge an dein CODESYS-Projekt an, wenn es sich vom Beispielprojekt unterscheidet.
▷ Wähle in Node-RED im Menü Import.
❯ Das Fenster Import nodes öffnet sich.
▷ Wähle select a file to import und öffne die Datei RevPi CODESYS Node-RED.json.
▷ Um das Projekt als neuen Flow zu erstellen, wähle unter Import to die Option New Flow.
▷ Wähle Import.
❯ Der Flow öffnet sich in einer neuen Registerkarte.
▷ Wähle Deploy, um die Anwendung auf dem Node-RED-Server zu starten.
Funktionsweise des Flows
Der Flow liest zyklisch 32 Bytes (Eingänge) aus dem Prozessabbild des RevPi. Diese Daten stehen in Node-RED für weitere Verarbeitungsschritte zur Verfügung, z. B. Visualisierung, Protokollierung oder Weiterleitung an externe Systeme. Im Beispiel werden die Werte direkt wieder auf die zugehörigen Ausgänge geschrieben, um den bidirektionalen Datenaustausch zu demonstrieren.
Jeder der 32 parallelen Flow-Zweige ist identisch aufgebaut und funktioniert folgendermaßen:
| Node | Funktion |
|---|---|
Get Input |
Inject-Node (Timer): wird automatisch alle 0,5 Sekunden ausgelöst und sendet den Namen des jeweiligen Eingangs als |
revpi-getpin Node |
Eingang lesen: liest den aktuellen Wert aus dem Prozessabbild des RevPi. |
Pin Output |
Ausgang schreiben: schreibt den gelesenen Wert ohne weitere Verarbeitung direkt auf den zugehörigen Ausgang. |
3. CODESYS-Projekt einrichten #
▷ Lade aus dem GitLab Repository das Beispielprojekt RevPi CODESYS Node-RED herunter.
▷ Öffne das Beispielprojekt in CODESYS.
Wenn du ein anderes Basismodul als RevPi Connect/+/S wie im Beispielprojekt verwendest, passe das Projekt folgendermaßen an:
▷ Aktualisiere das RevPi Basismodul im Gerätebaum.
▷ Füge dem Gerät piBridge Virtual das Virtual I/O Device hinzu.
▷ Öffne das Gerät RevPi_Virtual.
▷ Weise im Tab Mapping die Variablen zu:
-
Eingänge: I_Virtual
-
Ausgänge: Q_Virtual.
Funktionsweise der Anwendung
|
Note
|
|
Die CODESYS-Anwendung umfasst ein Virtual I/O Device mit je 32-Byte-Ein- und -Ausgängen, die mit der Node-RED-Anwendung über den Node-RED RevPi Nodes Server interagieren. Sie simuliert eine SPS-Logik, die zyklisch Werte in den Ausgangsbereich des Virtual I/O Device schreibt. In der Praxis könnten das z. B. Sensordaten, Zustandsinformationen oder Produktionsparameter sein.
-
Datenfluss von CODESYS zu Node-RED: Die CODESYS-Anwendung schreibt die Werte [1…32] in die 32 Ausgangs-Bytes Q_Virtual des Virtual I/O Device.
-
Datenfluss von Node-RED zu CODESYS: Die Node-RED-Anwendung liest die 32 Ausgangs-Bytes aus dem Adressbereich des Virtual I/O Device und schreibt sie zurück in den Eingangsbereich des Virtual I/O Device.
4. CODESYS-Anwendung ausführen #
▷ Wähle in der Menüleiste Generate Code (F11), um das Projekt zu übersetzen.
▷ Öffne das Stammgerät.
▷ Wähle in den Communication Settings Scan Network, wähle den RevPi und stelle mit OK die Verbindung zum Gerät her.
▷ Wähle in der Menüleiste Login (Alt+F8), um dich auf dem RevPi anzumelden.
▷ Lege bei der ersten Anmeldung einen Nutzer an, indem du dem Assistenten folgst und Anmeldedaten festlegst.
▷ Melde dich im Fenster Device User Logon auf dem RevPi an.
▷ Bestätige beim ersten Mal das Herunterladen der Anwendung auf den RevPi mit Yes.
▷ Wähle in der Menüleiste ⯈ (F5), um die Anwendung zu starten.
5. Ergebnis überprüfen #
In Node-RED
▷ Gehe zu der Node-RED-Oberfläche im Browser.
❯ Neben jedem revpi-getpin Node werden angezeigt:
-
Verbindungsstatus
-
Aktuelle Werte der 32 Bytes
In CODESYS
▷ Wechsle in den Online-Modus.
▷ Öffne im Gerätebaum das Gerät RevPi_Virtual.
❯ Im Tab Revolution PI Virtual Device I/O Mapping unter I_Virtual sollten die Werte [1…32] sichtbar sein.
6. Optional: Werte im Node-RED Dashboard visualisieren #
Neben der Anzeige der aktuellen Werte direkt im Flow können die ausgetauschten Prozessdaten auch in einem Web-Dashboard visualisiert werden.
Dashboard-Paket installieren
▷ Gehe zu der Node-RED-Oberfläche im Browser.
▷ Wähle im Menü Manage palette.
❯ Das Fenster Palette öffnet sich.
▷ Wechsle in den Tab Install.
▷ Suche nach dem Paket node-red-dashboard.
▷ Wähle Install, falls das Paket noch nicht installiert ist.
❯ In der Palette stehen zusätzliche Dashboard-Nodes zur Verfügung.
Dashboard-Flow erweitern
▷ Öffne den zuvor importierten Flow.
▷ Ziehe einen Node vom Typ Gauge in den Arbeitsbereich.
▷ Verbinde den Ausgang eines revpi-getpin Nodes mit dem Gauge-Node.
❯ Der aktuelle Byte-Wert wird damit direkt an das Dashboard-Element übergeben.
Dashboard konfigurieren
▷ Öffne den Gauge-Node.
▷ Wähle neben dem Feld Group das Stiftsymbol.
❯ Das Fenster Add new ui_group öffnet sich.
▷ Lege eine neue Gruppe an, z. B.:
-
Tab: RevPi
-
Group: Prozessdaten
▷ Bestätige mit Add.
▷ Konfiguriere den Gauge-Node:
-
Label: z. B. Byte 1
-
Value format: {{value}}
-
Range: 0 bis 255 (entspricht einem Byte)
▷ Bestätige mit Done.
▷ Wähle Deploy.
Dashboard aufrufen
▷ Öffne im Browser die Adresse http://<IP-Adresse-des-RevPi>:1880/ui.
❯ Das Dashboard wird angezeigt.
Der konfigurierte Gauge visualisiert den aktuellen Wert des gewählten Bytes in Echtzeit. Da die CODESYS-Anwendung zyklisch die Werte [1…32] schreibt, ändert sich die Anzeige entsprechend der übertragenen Prozessdaten.