2.3 Programmierung der Schnittstelle zwischen RPI und SPS (TIA und Node-RED)
Website: | xplore-dna.net > Die DNA des digitalen Lernens! |
Kurs: | T1-Car Sensors by Lauritz, Max & Torben |
Buch: | 2.3 Programmierung der Schnittstelle zwischen RPI und SPS (TIA und Node-RED) |
Gedruckt von: | Gast |
Datum: | Dienstag, 6. Mai 2025, 12:33 |
1. Node-RED
Eine Übersicht über Node-RED und dessen Funktionsweise ist bereits in einem anderem Kurs über diesen Link sehr gut erklärt worden. Durch Weiterblättern ist dort der grundlegende Aufbau, die Programmierung mit Nodes, die Installation und das Importieren/Exportieren erklärt. Diese Dinge sind wichtig, wenn man im späteren Verlauf eigene, kreative Dinge versuchen möchte.
Die Installation wird hier noch einmal für den Raspberry Pi schnell zusammengefasst und ist unter folgendem Link des Entwicklers ausführlich nachvollziehbar. (https://nodered.org/docs/getting-started/raspberrypi)
Um das vollständige Paket zu installieren, wird zunächst folgender Befehl in das Terminal eingegeben. Die RPI spezifischen Pakete können dabei mit installiert werden.
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
Funktioniert dies nicht sofort, ist zuvor dieser Befehl auszuführen:
sudo apt install build-essential git
Anschließend wird Node-RED mit dem Befehl sudo node-red-start gestartet und mit sudo systemctl enable nodered.service in den Autostart Modus versetzt.
Erreichbar ist Node-RED nun über jeden PC im selben Netzwerk. Dazu ist die IP des Raspberry Pis mit dem Port 1880, über den Node-RED läuft, in folgender Form einzugeben IP:1880 (Bsp.: 192.168.178.10:1880).
Abbildung: Node-RED Oberfläche, Quelle BBS2 Wolfsburg
Zusätzlich kann auch noch ein Passwort für Node-RED eingerichtet werden, da sonst theoretisch jeder aus dem selben Netzwerk darauf zugreifen und Dinge verändern könnte.
Dazu ist eine Anpassung in der settings-Datei notwendig. Mit dem nächsten Befehl lässt sich diese öffnen und anpassen
sudo nano /home/pi/.node-red/settings.js
Mit "Strg+W" lässt sich nach "adminAuth" suchen, um zur richtigen Zeile zu gelangen. Der Absatz muss, wie in der Abbildung zu sehen, kopiert und entkommentiert werden. Der Benutzername lässt sich frei wählen. Das Passwort, welches als Hash hinterlegt ist, muss extra generiert werden. Dazu ist ein neues Terminal-Fenster notwendig, in welches node-red admin hash-pw eingegeben werden muss. Nun kann das Passwort (nicht sichtbar) eingetippt und bestätigt werden. Es wird ein Hash ausgegeben, welcher in die settings-Datei zu übertragen ist. Gespeichert und geschlossen wird wieder mit "Strg+O" und "Strg+X". Node-RED ist dann einmal mit sudo node-red-restart neu zu starten. Bei erneutem Aufruf von Node-RED im Browser sollte nun die Passwortabfrage auftauchen und mit dem vergebenen Benutzer bedienbar sein.
Abbildung: Node-RED Passwort, Quelle: BBS2 Wolfsburg
2. Node-RED Flows und Paletten
Die Einarbeitung in Node-RED konnte mit dem bereits vorhandenen Kurs, welcher hier nochmals verlinkt ist, durchgeführt werden.
Für die Kommunikation zwischen industrieller Steuerung (SPS) und dem Raspberry Pi wird die PUT/GET Kommunikation verwendet. Dafür bietet Node-RED auch bereits fertige Nodes, welche als Palette hinzugefügt werden können (Anleitung hier). Installiert werden muss dazu die node-red-contrib-s7 Palette.
An dieser Stelle ist es sinnvoll gleich alle anderen für dieses Projekt benötigte Paletten mit zu installieren.
- Für die Verbindung zur MySQL-Datenbank ist ebenfalls ein Paket notwendig. Dazu muss das node-red-node-mysql installiert werden.
- Um einen Zeitstempel für die Datenbank zu formatieren wird die Palette node-red-contrib-moment installiert.
- Für das Dashboard, welches später erstellt wird ist noch die node-red-dashboard, node-red-node-ui-table und node-red-contrib-ui-led notwendig.
Die Flows in der Konfiguration, wie sie für dieses Projekt genutzt wurden, werden an dieser Stelle zur Verfügung gestellt. Anpassungen müssen in jedem Fall auf die jeweiligen Umgebungsbedingungen (IP...) gemacht werden. Außerdem kann man ab dieser Stelle sehr gut kreativ werden in der eigenen Umsetzung. Dennoch stehen hier die fertigen Flows, welche nach der Anleitung in dem anderem Kurs importiert werden können, zur Verfügung. Die Beschreibung der wichtigsten Nodes zur SPS-RPI-Verbindung und MySQL-Verbindung folgt in den nächsten Kapiteln.
Download: Der Download der fertigen Flows zur Datenverarbeitung in Node-RED ist in den Dateien der Projektbeschreibung zu finden. Unter "Node-RED Flows" sind das Dashboard und die Verbindung zur SPS eingefügt.
3. PUT/GET-Kommunikation
Um die Daten mit dem Raspberry Pi abzurufen, müssen einige Einstellungen an der SPS gemacht werden und die aus Teilprojekt 1 bereitgestellten Werte in eine günstige Ausgangslage gebracht werden.
Grundlegend lässt sich zur PUT/GET-Kommunikation sagen, dass diese nach dem Server-Client-Prinzip funktioniert. Dabei fragt der RPI (Client) in gewissen Zyklen die SPS (Server) ab und erhält darauf eine Antwort. Um diese Anwendung zu ermöglichen wird automatisch der Port 102 der SPS geöffnet. Die Anwendungssprache im Hintergrund läuft über das S7-Protokoll.
Nun zur Programmierung seitens der SPS in TIA-Portal. Dazu ist das Programm aus Teilprojekt 1 notwendig. Dieses ist auch unter den bereitgestellten Dateien in der Projektbeschreibung zu finden. Alle Änderungen sind in dieser Datei bereits enthalten und werden hier nur noch einmal schrittweise beschrieben.
- Erstellen eines Datenbausteins (DB), welcher vom Raspberry Pi ausgelesen werden soll.
- Anlegen der notwendigen Variablen: id, ref, temp und status (Datentyp int).
- Ändern der Eigenschaften des Datenbausteins: Rechtsklick > Eigenschaften > Attribute > Optimierter Bausteinzugriff deaktivieren.
- Gerätekonfiguration anpassen: Allgemein > Schutz & Sicherheit > Verbindungsmechanismen > Zugriff über PUT/GET-Kommunikation erlauben
- Bewegen der Daten aus dem eingelesenen Baustein in den neu erstellten Datenbaustein mit MOVE-Befehlen im Funktionsbaustein "Daten_verarbeiten"
4. Node-RED SPS Verbindung
Nach den Einstellungen seitens der SPS ist die Programmierung und Konfiguration auf dem Raspberry Pi notwendig. Dafür steht, wie bereits erläutert, der Flow "SPS_Verbindung.json" in den Dateien zur Verfügung. Dieser muss nicht, kann aber verwendet werden.
Abbildung: Node-RED Flow SPS_Verbindung, Quelle BBS2 Wolfsburg
Zu allen Nodes lässt sich eine Beschreibung mit Anleitung unter https://flows.nodered.org/ finden. Hier werden nur die wichtigsten Punkte bei der Programmierung bzw. der Anpassung gezeigt, auf die geachtet werden muss.
- "S7 in"-Node: Senden nur bei Wertänderung; Ethernet, richtige IP der SPS, Port 102, Rack 0 Slot 1
- "MySQL"-Node: Host 127.0.0.1, Port 3306, Benutzer und PW, Database = Name der angelegten Datenbank
- die Funktionen können angeschaut und individuell verändert werden, wichtig ist, dass der mysql-Node einen korrekten SQL-Befehl im msg.topic übergeben bekommt
Bemerkung: Daten können auch testweise manuell mit einem timestamp-Node und einer einfachen Funktion, welche einen SQL-Befehl schreibt in die Datenbank übertragen werden, um die Funktion zu überprüfen.