SYS TEC - bLog

Node-RED Nodes für das sysWORXX CTR-700

| Themen

Nutzung von I/Os direkt aus Node-RED mit dem IoT-Edge-Controller sysWORXX CTR-700

Der Edge-Controller sysWORXX CTR-700 unterstützt neben klassischen Programmiersprachen wie C/C++, C#, Java und OpenPCS (nach IEC 61131-3) auch die grafische Programmierung in Node-RED. Durch die von SYS TEC electronic erstellten Nodes lassen sich die Ein- und Ausgänge des sysWORXX CTR-700 direkt aus Node-RED heraus ansprechen. Zudem wird der Datenaustausch mit OpenPCS, also der IEC 61131-3 Runtime, auf Variablenebene unterstützt. Das erlaubt beispielsweise, ein in Node-RED erstelltes Dashboard als GUI für das SPS-Programm zu verwenden.

Daneben stehen dem SPS-Programm aber auch alle weiteren Node-RED Funktionalitäten zur Verfügung. So lassen sich z.B. auf einfache Art Daten eines SPS-Programms per HTTP-Nodes an ein Rest-basiertes Web-Interface übertragen, OPC-UA Dienste nutzen oder unkompliziert Wetterdaten aus dem Internet abfragen.

Was ist Node-RED?

Node-RED ist eine grafische Programmierumgebung, die Nodes als Programmbausteine verwendet. Der Programmablauf erfolgt ausschließlich durch die Verarbeitung und Weitergabe von Nachrichten und wird daher auch als Flow bezeichnet. Der Programmfluss ergibt sich dabei aus der Verbindung der Nodes durch Verknüpfung des Ausgangs eines Vorgänger-Nodes mit dem Eingang eines Nachfolger-Nodes.

Den Anfang einer solchen Kette bildet immer ein Node, der auf Basis eines bestimmten Ereignisses eine Nachricht generiert. Solche Ereignisse können zum Beispiel die Änderung eines digitalen Eingangs sein, der Ablauf eines Timers aber auch der Empfang einer Nachricht eines externen Servers - wie das Eintreffen einer MQTT-Nachricht. Am Ende einer solchen Kette steht immer ein Node, der auf Basis der empfangenen Nachricht eine bestimmte Aktion auslöst. Dazu zählen das Setzen eines digitalen Ausgangs oder das Schreiben eines Wertes in eine Datenbank. Zwischen dem Anfangs- und dem End-Knoten eines Flows können beliebig viele andere Nodes liegen, die die am Eingang empfangene Nachricht verarbeiten und das Ergebnis an den Ausgang weiterleiten.

Verwendung der I/O-Nodes des sysWORXX CTR-700

Die I/O-Nodes erlauben den direkten Zugriff auf die Schnittstellen des sysWORXX CTR-700. Folgende Nodes und Funktionen sind vorhanden:

Folgendes Beispiel beschreibt detailliert die prinzipielle Verwendungsweise der I/O-Nodes. Der Konfigurationsablauf wird durch die Nummerierung in Text und Bild kenntlich gemacht.

Konfiguration der I/O-Nodes

  1. Einer der vorhandenen Kanäle muss ausgewählt werden. Zur Verfügung stehen neben den digitalen Eingängen 0 bis 15 noch die Relais 0 und
  2. Es muss eingestellt werden, auf welche Flanke hin ein Signal ausgelöst wird.
  3. Das Aktivierungsverhalten kann beliebig angepasst werden. Standardmäßig ist die Node High-Aktiv eingestellt.
  4. Abschließend kann das Topic angepasst werden, auf welches die Node reagiert.

Die Konfiguration der Node für den digitalen Ausgang erfolgt ähnlich:

  1. Es muss ein Kanal ausgewählt werden. Zur Verfügung stehen all 16 digitalen Ausgänge.
  2. Der nach Programmstart initial verwendete Zustand kann angepasst werden. Standardmäßig befindet sich dieser auf inaktiv.
  3. Das Aktivierungsverhalten, auch hier standardmäßig wieder High-Aktiv, kann angepasst werden.
  4. Das Topic, auf welches die Node reagiert, kann angepasst werden.

Ablauf des Programms:

In der folgenden Abbildung ist das Beispielprogramm zu sehen. Dort zu sehen ist, wie ein digitaler Eingang mit einem Ausgang verbunden ist.

Wenn am Eingang DI0 ein „true“-Wert anliegt, wird der Ausgang DO0 ebenfalls auf „true“ gesetzt und die dazugehörige LED des digitalen Ausgangs wird entsprechend aufleuchten.

Alle I/O-Nodes werden in entsprechender Weise konfiguriert und sind individuell anpassbar. Ebenso ist eine beliebige Erweiterung des Programms denkbar, wie die Invertierung des Eingangs, dazwischenschalten einer Logik usw.

Zugriff auf OpenPCS-Variablen mit den IPC-Nodes

Durch die IPC-Nodes wird der Zugriff auf die Variablen möglich, die vom OpenPCS verwendet werden:

  • openpcs_read
  • openpcs_write

Folgendes Beispiel wird erklären, wie die Nodes zu verwenden sind. Voraussetzung dafür: auf dem sysWORXX CTR-700 wird dazu das Programm „Runlight“ ausgeführt. Das entsprechende Projekt dafür ist standardmäßig im Installationsumfang von OpenPCS (SYS TEC electronic Extension) enthalten, welches über die SYS TEC electronic Website heruntergeladen werden kann.

Das Runlight-Programm schreibt eine Variablengruppe auf die digitalen Ausgänge des sysWORXX CTR-700. Drei der darin befindlichen Variablen sind immer „high“, abhängig vom Zustand des Programms. In regelmäßigen Abständen wird der Variablenverbund um eine Stelle „weiter geschoben“. So entsteht das Lauflicht.

Über das Node-RED des sysWORXX CTR-700 kann nun über die IPC-Nodes eine Variable, die im OpenPCS-Programm verwendet wird, abgerufen werden. Dazu wird die „openpcs read“-Node verwendet und dort entsprechend der Variablen-Pfad eingetragen. Dieser setzt sich aus Programmnamen und Funktionsbaustein, in dem die Variable verwendet wird zusammen. Im folgenden Beispiel ist der Name „RUNLIGHT.BLEDGROUP0“. Die Variable gibt den, sich konstant ändernden, Status der Lauflicht-LEDs wieder.

Die Variable wird nach jedem Zyklus ausgelesen. Das Topic kann beliebig festgelegt werden. Im Bild unten ist ein einfacher Flow abgebildet, der die beschriebene Funktion erfüllt. Die Debug-Node dient dabei lediglich zur Visualisierung des Datenflusses.

An einer Gegenstelle wird eine Anwendung benötigt, die diese Daten auswertet. Hier kommt dazu wieder Node-RED auf einem lokalen PC zum Einsatz - prinzipiell kann jede beliebige Software verwendet werden, welche MQTT unterstützt.

Für den nächsten Schritt wird eine MQTT-Node verwendet, welche das entsprechende Topic abonniert, das auf dem sysWORXX CTR-700 eingestellt wurde. Ein simpler Converter übersetzt die Lauflichtposition in einen Zahlenwert, hier 0 bis 7, und überträgt diesen an eine Slider-Node.

Die Slider-Node ist ein Teil des Node-RED-Pakets „node-red-dashboard“ und kann ebenso, wie bereits oben beschrieben, installiert werden.

Diese Node verhält sich in definierten Grenzen so wie das Lauflicht auf dem sysWORXX CTR-700. Im Dashboard bewegt sich der Slider-Knopf mit jedem Bewegen des Lauflichtes um eine Position weiter und fängt von vorne an, wenn das Ende erreicht ist.

Unbegrenzte Anwendungsmöglichkeiten

Unsere einfachen Beispiel-Anwendungen sollen verdeutlichen, was die Nodes für das sysWORXX CTR-700 prinzipiell ermöglichen. In einer realen Anwendung kann statt eines Lauflichtes z.B. der Füllstand eines Flüssigkeitsbehälters oder Status einer Maschinenampel eingebunden werden. Die Visualisierung kann über einen Graphen (im Dashboard verfügbar) realisiert werden. Auch das Steuern der Ein- und Ausgänge kann beliebig erweitert werden. Mit Node-RED kann somit ohne viel Aufwand eine Visualisierung – auch der SPS – generiert werden, ohne dafür auf zusätzliche Lizenzen oder Cloud-Anbindungen angewiesen zu sein. Im Wesentlichen sind die Möglichkeiten und Freiheiten bei der Umsetzung kaum Grenzen gesetzt.

Ergänzend dazu können auch viele weitere, frei verfügbare, Standard-Nodes eingebunden werden. Folgende Nodes wurden im Speziellen zusammen mit dem sysWORXX CTR-700 getestet:

Installation und Aktualisierung der Nodes

Die Bibliotheken der Nodes sind auf GitHub gehostet und können, im Falle einer Aktualisierung oder Nachinstallation, bequem direkt über den in Node-RED integrierten Paletten-Manager installiert werden:

  1. Oben rechts in der Benutzeroberfläche das Menü öffnen (drei waagerechte Streifen).
     
  2. Auswahl des Menüpunkts „Manage Palette“ und dessen Unterpunkt „Install“.
  3. In dem Suchfeld kann man nach den Node-Paketen suchen.

Folgende Bibliotheken sind speziell für das sysWORXX CTR-700 verfügbar:

  • “node-red-contrib-ctr700-io”

Ermöglicht den Zugriff auf die Ein- und Ausgänge des sysWORXX CTR-700.

  • “node-red-contrib-ctr700-ipc”

Erlaubt den Datenaustausch zwischen OpenPCS und Node-RED.