Verbinden des TIAPortals mit der SPS

Bevor wir mit NodeRed arbeiten, müssen wir zunächst ein Projekt im TIAPortal erstellen, mit dem wir die SPS konfigurieren und eine Beobachtungstabelle einrichten, um die gesendeten Daten auslesen zu können.

Dies hat den Hintergrund, dass zunächst die IP-Adresse der SPS bekannt sein muss, um über NodeRed dieser die Daten zu schicken. Wichtig ist im Folgenden, das Zwischenspeichern nicht zu vergessen!

Zum Einrichten öffnen wir das Programm TIA Portal, erstellen ein neues Projekt mit dem Namen “NodeRed” und fügen unter “Neues Gerät hinzufügen” die CPU ein. In der Liste ist dann unter der Kategorie "Controller" je nach verwendetem Modell die entsprechende CPU auszuwählen. Die CPU-Bezeichnung ist auf die SPS aufgedruckt und lautet in unserem Fall “SIMATIC S7-1200 > CPU > CPU 1214C DC/DC/DC > 6ES7 214-1AG40-0XB0”. Dies ist je nach verwendeter SPS unterschiedlich. Es ist sehr wichtig, dass die Bezeichnung genau passt, sonst ist das Verbinden nicht möglich.

Auswahl der CPU

Bild 5.1: Auswahl der CPU

Im Reiter “Eigenschaften” (Rechtsklick auf CPU-Namen) soll nun unter “Schutz und Security > Verbindungsmechanismen” der “Zugriff über PUT/GET-Kommunikation durch entfernten Partner” durch Haken setzen erlaubt werden. Falls es diesen Reiter nicht gibt, kann dieser Punkt ausgelassen werden.

Als nächstes konfigurieren wir die Verbindung des Computers mit der SPS. Hierfür ist es nötig, dass sie sich im gleichen Netzwerk befinden, sodass sie über LAN kommunizieren können, ohne dass ein weiterer Router vermitteln muss. 

Um die IP-Adresse des Computers zu ermitteln wird mit dem Befehl “cmd” in der Suchleiste die Konsole geöffnet, dort “ipconfig” eingegeben. Das folgende Fenster taucht (mit unterschiedlichen Zahlen) auf:

"ipconfig"-Beispiel

Bild 5.2: "ipconfig"

Die IPv4-Adresse ist die, die wir zum Vergleich benötigen, hier also “172.30.50.246”. Diese wird notiert, bzw. muss sich gemerkt werden.

Wir müssen nun die Subnetzmaske und IP-Adresse der SPS so einstellen, dass sie mit dem Computer kommunizieren kann. Die Subnetzmaske teilt die IP-Adresse in einen sogenannten Netz- und einen Hostanteil auf. Alle Stellen der IP-Adresse, bei denen die Subnetzmaske eine 255 hat, gehören zum Netzanteil und sind daher von dem Netzwerk, in dem wir uns befinden, “vorgegeben”. Diesen Teil kann man auch in der IP des Routers erkennen, die bei "Standartgateway" zu finden ist. Wenn ein Gerät mit einem anderen kommunizieren soll, ohne dass ein weiterer Router zwischengeschaltet werden muss, müssen diese Stellen der IP-Adressen übereinstimmen. Der Hostanteil ist frei veränderlich. Jedes Gerät, jeder “Host” in einem Netzwerk besitzt eigene Ziffern in den dazugehörigen Stellen der IP-Adresse. Bei einer Subnetzmaske von “255.255.255.0” muss der IP-Adresse der SPS nun also ihre eigene letzte Stelle gegeben werden.

Für das weitere Vorgehen muss die IP-Adresse der SPS gefunden werden, indem man oben in der Menüleiste unter "Online" > "Erreichbare Teilnehmer" über "PN/IE" nach erreichbaren Geräten im Netzwerk sucht. Hierzu muss natürlich schon die SPS an den Strom angeschlossen sein. Unter den Suchergebnissen sollte sich die verwendete SPS mit ihrer IP-Adresse finden lassen. 

Die ermittelte IP-Adresse der SPS wird unter durch einen Rechtsklick auf den Namen der CPU > "Eigenschaften > IP-Protokoll" in das Feld zur IP-Adresse eingetragen.

Es gibt zwei Möglichkeiten, die jetzt auftreten können. Entweder der Netzwerkteil von der IP-Adresse der SPS stimmt bereits mit der des Computers überein (Bspw. 172.30.50.16 von der SPS und 172.30.50.246 vom PC), oder sie unterscheiden sich. Sollte es zu Abweichungen kommen, muss die IP-Adresse der SPS manuell geändert werden, was im folgenden Abschnitt als Fall 1 behandelt wird. Andernfalls wird Fall 2 bearbeitet, bei dem die IP-Adresse nicht geändert werden muss.

In beiden Fällen wird zunächst die ermittelte IP-Adresse der SPS durch Rechtsklick auf den Namen der CPU > "Eigenschaften > PROFINET-Schnittstelle > Ethernet-Adresse > IP-Protokoll" in das Feld zur IP-Adresse eingetragen.


Fall 1: IP-Adresse der SPS ändern und Verbindung herstellen

Um die IP-Adresse jedoch zu ändern, ist eine LAN-Verbindung zwischen dem Computer und der SPS nötig. Hierzu werden beide Geräte vom Netzwerk getrennt und direkt miteinander verbunden.

Im nächsten Schritt muss die konfigurierte Software in das Gerät geladen werden. Hierfür klicken wir auf das zugehörige Symbol in der oberen Leiste des TIAPortals (siehe Bild), verwenden den Button "Laden" in dem sich öffnenden Feld und wählen unter "suchen" die CPU aus.

Anschließend folgt "fertig stellen", um das Laden der Software abzuschließen. Falls Fehlermeldungen zur Synchronisierung auftreten sollten, kann "ohne Synchronisierung fortfahren" und "Alle stoppen" gewählt werden, um den laufenden CPU-Prozess zu beenden und die neue Software in das Gerät laden zu können.

Bevor die IP-Adresse geändert werden kann, muss außerdem eine aktive Verbindung zur SPS unter "Online verbinden" in der oberen Leiste hergestellt werden.

Zur Änderung muss die SPS auf die Werkseinstellungen zurückgesetzt werden. Dies erfolgt auf der linken Seite der Oberfläche unter "Online-Zugänge > (die verwendete Verbindungsart) > Erreichbare Teilnehmer aktualisieren". Nachdem die SPS gefunden wurde, wird nach Doppelklick auf ihren Namen "Online & Diagnose" ausgewählt. In dem darauf folgenden Menü muss unter "Funktion" bei "Rücksetzen auf Werkseinstellungen" die SPS zurückgesetzt werden, wobei die IP-Adresse gelöscht werden soll. Anschließend wird eine neue IP-Adresse zugewiesen, indem man nach einer Aktualisierung der erreichbaren Teilnehmer im gleichen Menü unter "Online & Diagnose > IP-Adresse zuweisen" die neue IP-Adresse mit ihrer Subnetzmaske vergibt.

Wir wählen den gleichen Netzwerkteil wie den des Computers und eine Nummer zwischen 0 und 255 für den Hostteil, die noch nicht belegt ist. Die schnellste Methode, eine freie zu finden, ist es, eine beliebige Zahl für die letzte Stelle zu wählen und die daraus resultierende Adresse “anzupingen” in der Eingabeaufforderung (cmd). Hierbei schickt der Computer eine Nachricht an das Gerät, dem diese IP-Adresse zugeordnet ist. Wenn sie schon belegt ist, antwortet das Gerät und liefert Werte zur Übertragungsrate, falls nicht, wird die Nachricht “Zielhost nicht erreichbar” ausgegeben und die freie Adresse kann verwendet werden. 

Nach der IP-Zuweisung wird die Online-Verbindung oben in der Leiste wieder getrennt und beide Geräte werden wie zu Beginn einzeln per LAN an das Internet angebunden. 

Im TIA Portal wird dann unter "Eigenschaften" (Rechtsklick auf den CPU Namen) die zuvor eingestellte IP-Adresse durch die neu vergebene ersetzt.

Abschließend wird die Software erneut in das Gerät geladen und eine Online-Verbindung hergestellt. Funktioniert hierbei alles, erscheinen rechts vom CPU-Namen grüne Kreise und die Kommunikation funktioniert fehlerfrei.

Fall 2: Verbindung ohne IP-Änderung herstellen

Da in diesem Fall die IP-Adresse der SPS zur Kommunikation nicht angepasst werden muss und zuvor schon eingestellt wurde, kann die Software direkt in das Gerät geladen werden über das Ladesymbol im oberen Reiter.

Anschließend wählt man unter "suchen" die CPU aus und schließt mit "fertig stellen" den Ladeprozess ab. Falls hierbei Fehlermeldungen zur Synchronisierung rot angezeigt werden, sind diese mit "ohne Synchronisierung fortfahren" oder "Alle Stoppen" zu beheben, womit die CPU die laufenden Prozesse beendet und das Laden der neuen Software ermöglicht.

Es folgt die Herstellung einer aktiven Online-Verbindung durch "Online verbinden" im oberen Reiter. Verläuft dies fehlerfrei, erscheinen rechts vom CPU-Namen grüne Kreise und die Kommunikation funktioniert fehlerfrei.

Fortsetzung der Einrichtung

Um die Daten, die später mit NodeRed gesendet werden, abspeichern zu können, muss als nächstes ein neuer Datenbaustein vom Typ Global-DB erstellt werden unter "Programmbausteine > Neuen Baustein hinzufügen". Diese haben die Aufgabe, von uns definierbare und beschreibbare Variablen zu verwalten. Darin benötigen wir zwei Real-Variablen, “Temperatur” und “Luftfeuchtigkeit”, die jeweils in der Spalte "Name" untereinander initialisiert werden mit dazugehörigem Real-Datentyp in der nächsten Spalte, der aus der sich öffnenden Liste ausgewählt wird. 

Für das Füllen dieser mit NodeRed benötigen wir deren Adressen. Hierfür muss in den Eigenschaften des Datenbausteins (Rechtsklick auf den Datenbaustein in der Leiste links) unter “Attribute” die Option “Optimierter Bausteinzugriff” deaktiviert werden. Hier werden dadurch die Variablen fest und nicht dynamisch, d.h. veränderlich und dadurch gerade bei größeren Projekten ressourcensparend, adressiert. Da wir aber für eine funktionierende Datenübertragung mit NodeRed feste Adressen brauchen und unser kleines Projekt trotzdem nicht beeinträchtigt wird können und müssen wir ohne dynamische Adressen auskommen.

Als nächstes wird eine Beobachtungstabelle erstellt, in der die Adressen der Variablen sowie deren aktueller Wert ausgelesen werden können. Dies geschieht unter “Beobachtungs- und Forcetabellen” mit “Neue Beobachtungstabelle hinzufügen”. Mit einem Rechtsklick auf den Tabellennamen wird dieser unter “Umbenennen” der neue Name “Sensordaten” gegeben. In der Tabelle wird mit Klick auf den Button an der rechten Seite des Feldes “Name” unser Datenbaustein ausgewählt, darauf folgt eine der Variablen. Das gleiche passiert anschließend für die andere Variable eine Zeile weiter unten.

Es folgen in der Tabelle Fehlermeldungen und undefinierte Adressen:

Beobachtungstabelle

Bild 5.3: Beobachtungstabelle mit Fehlern

Dies liegt, wie das Bewegen der Maus auf das Symbol in der Spalte “Beobachtungswert” verrät, daran, dass der Baustein noch nicht übersetzt wurde. Um das zu erreichen wird nach einer Trennung der Online-Verbindung durch einen Rechtsklick auf den CPU-Namen die Option “Übersetzen > Hardware und Software (nur Änderungen)” gewählt. Danach sollten in unserer Beobachtungstabelle die Adressen, sowie das Anzeigeformat auftauchen. Wir verwenden die “Gleitpunktzahl”, sodass die Sensordaten inklusive Nachkommastellen dargestellt werden.

Damit die SPS mit den von uns vorgenommenen Einstellungen arbeitet, müssen wir diese in das Gerät laden. Das geschieht durch Klicken auf das Symbol “Laden in Gerät” in der Leiste am oberen Rand des Bildschirms, wenn man die CPU angewählt hat. Im sich öffnenden Fenster bestätigt man dies mit "Laden" und wählt "Fertig stellen" zum Beenden des Prozesses aus.

Nach dem Laden treten unter Umständen Warnungen auf. Bei Meldungen zur Synchronisierung kann ohne Synchronisierung fortgefahren werden. Im folgenden Dialog wird das Laden und damit das Einrichten der SPS fertiggestellt.

IP-Adresse des Raspberry Pi ändern

Der Raspberry Pi muss sich zur Kommunikation mit der CPU im gleichen Subnetz wie diese befinden. Dazu muss eine statische IP-Adresse vergeben werden. Um dies zu tun sollten folgende Schritte befolgt werden. Zunächst ist mit einem Rechtsklick auf das Verbindungssymbol in der Taskleiste des Raspberry Pis zu klicken.

Danach ist "Wireless&Wired Network Settings" mit einem Linksklick auszuwählen.


Bei "Configure" ist nun "interface" und "eth0" um die IP-Adresse der Ethernet Schnittstelle zu konfigurieren. In diesem Beispiel ist der Raspberry Pi über Ethernet mit der CPU verbunden.

Nun kann in der beschreibbaren Fläche neben "IP Adress:" eine statische IP-Adresse vergeben werden. Hier ist darauf zu achten, eine freie IP-Adresse auszuwählen, die sich im gleichen Subnetz wie die CPU befindet. In diesem Beispiel wähle ich dafür die "192.168.0.3". das Häckchen bei "Automatically configure empty options" muss gesetzt sein. Nun muss auf "Apply" geklickt werden. Mit Close kann danach die Konfiguration geschlossen werden.


Bevor die neue IP-Adresse aktiv wird, muss der Raspberry Pi neugestartet werden. Dies kann beispielsweise geschehen, indem man in der Eingabeaufforderung "sudo reboot" eingibt und den Befehl danach ausführt.


Nachdem der Raspberry Pi neugestartet wurde kann mit dem Befehl "ifconfig" überprüft werden, dass die IP-Adresse geändert wurde. Ist dies erfolgt, so sieht die Konfiguration folgendermaßen aus:


Einrichtung von Node Red

Für die Installation des hier verwendeten Programms zum Senden der Sensordaten kann die Anleitung im Kurs "IOT _OPC UA Kommunikation - NodeRed" verwendet werden. NodeRed wird nur auf dem Raspberry Pi installiert, sodass die Installationsanleitung für Windows übersprungen werden kann.

Zum Öffnen klickt man auf dem Desktop auf das Raspberry Symbol, "Entwicklung > NodeRed". Es öffnet sich ein Editor-Fenster mit dem Text "Willkommen bei NodeRed" in der Mitte und einer IP-Adresse im oberen Bereich. Klickt man auf diese, öffnet sich die NodeRed Oberfläche im Internetbrowser und das Programm kann genutzt werden.

"Hello World!"-Beispiel

Ist alles installiert und geöffnet, können wir die Übertragung der Sensordaten an die SPS einrichten. NodeRed selbst stammt von IBM und ist auf Projekte wie unseres ausgelegt, die in Zukunft dank wachsender Bedeutung des IoT besonders in der Heimautomatisierung viel Verwendung finden könnten. NodeRed benutzt eine interaktive Oberfläche im Webbrowser mit verschiebbaren Bausteinen, “Nodes” für das Erstellen von Programmen. Alle verfügbaren Bausteine sind auf der linken Seite zu sehen, die gewünschten können einfach auf die freie Fläche daneben gezogen werden. Die Knoten werden mit der Maus verbunden. 

NodeRed Hello World

Bild 5.5: "Hello World - Programm" in NodeRed

Dieses grundlegende Beispiel zeigt ein “Hello World!”-Programm, das die Nachricht “Hello World!” in der Konsole ausgibt. Dafür wird mit der Maus die “Inject”-Node auf die freie Fläche gezogen, daneben “Debug” und beide werden mit der Maus verbunden. “Inject” ist das englische Wort für “einspeisen” und genau das ist die Aufgabe dieses Bausteins. Er gibt eine Nachricht in das System aus Knoten und Verbindungen, das in NodeRed “Flow” genannt wird. Der “Debug”-Knoten sorgt für die Konsolenausgabe. 

Mit einem Doppelklick auf den “Inject”-Knoten können dessen Einstellungen konfiguriert werden. Hier kann in der obersten Zeile die Art von Nachricht ausgewählt werden, die gesendet werden soll. Für unseren Zweck, eine “Hello World!”-Nachricht zu senden wählen wir “String” und geben den Satz in die Zeile daneben ein. Die übrigen Einstellungen ermöglichen z.B. das wiederholte Senden einer Nachricht in einem bestimmten Intervall, was später für regelmäßige Senden unserer Sensordaten relevant wird. Am Debug-Knoten muss nichts verändert werden.

Damit das Programm implementiert wird muss es übersetzt werden, ähnlich zu der gleichnamigen Funktion im TIAPortal. Dies geschieht hier mit “deploy”. Mit einem Klick auf das Feld neben das kleine “i” im rechten Fenster öffnet sich die Konsolenausgabe, um die Nachricht zu senden muss der Knopf auf der linken Seite des “Inject”-Knotens gedrückt werden.

Senden der Sensordaten an die SPS

Nach diesem kleinen Programm zur Einführung wird nun das Senden der Sensordaten an die SPS realisiert. Dafür muss mit dem “+” in der oberen Leiste ein neuer Flow hinzugefügt werden. Hier benötigen wir nun einen “Inject”-Baustein, an den zwei “exec”-Bausteine angefügt werden. Diese ermöglichen es, ein bestimmtes Programm auszuführen (engl. “execute”). Wir benötigen die Sensordaten, die durch die beiden Python-Projekte Main3.py für den oberen, und Main4.py für den unteren Knoten bereitgestellt werden. Main3.py gibt den Temperaturwert, Main4.py den Luftfeuchtigkeitswert aus. “Exec” gibt immer das an den nächsten Knoten weiter, was das Programm, das er ausführt “printet”, also dessen Konsolenausgabe.

Die beiden Programme können unter den folgenden Links heruntergeladen werden:

Main3.py, Main4.py (jeweils klicken , Download startet automatisch).

Bei den Einstellungen der beiden “Ausführen”-Bausteine muss der Programmpfad der Dateien angegeben werden. Der “Inject”-Knoten benötigt keine weiteren Einstellungen.

NodeRed Exec-baustein

Bild 5.6: "Exec"-Bausteine

Um die Ausgabe der Python-Programme an die SPS zu senden sind in NodeRed keine Bausteine vorinstalliert. Glücklicherweise ist es möglich, von der Community entwickelte Nodes zu beziehen und in Form von Bibl. Die Bibliothek, die die Kommunikation mit einer SPS ermöglicht, nennt sich “node-red-contrib-s7”. Der Name wird mit Klick auf die drei Striche in der oberen rechten Ecke unter “Palette verwalten > Installieren > Suchmodule” gesucht und das entsprechende Modul installiert, was, je nach Internetgeschwindigkeit, ein wenig Zeit benötigt.

Anschließend kann der für das Senden an die SPS zuständige Baustein “s7” unter “Ausgabe” gefunden werden, die an den oberen Anschluss der “Exec”-Bausteine angeschlossen werden müssen:

NodeRed S7-Bausteine

Bild 5.7: "S7-output"-Bausteine

Die S7-Ausgabe Bausteine müssen ebenfalls noch konfiguriert werden. Darin wird die IP-Adresse der SPS und die Adressen der Variablen hinterlegt. Nach Klicken auf das Stiftsymbol im Einstellungsmenü des S7-Output Knotens tut sich das folgende Fenster auf, in dem die abgebildeten Einstellungen vorgenommen werden müssen:

NodeRed Connection Konfiguration

Bild 5.8: Connection-Einstellungen des S7-Ausgabe-Bausteins

NodeRed S7 Variables Konfiguration

Bild 5.9: Variables-Einstellungen des S7-Ausgabe Bausteins

Im Reiter “Connection” werden die Verbindungsdaten der SPS hinterlegt, während bei “Variables” die Variablen eingetragen werden, in die die Sensordaten eingetragen werden sollen. Es muss beim Feld für die Adresse nicht das komplette Kürzel eingetragen werden, es reicht DB1 für unseren “Datenbaustein_1” im TIAPortal und der Variablentyp und dessen Nummer, die in der Adresse im TIAPortal ausgelesen werden kann, hinter einem Komma. Eine Tabelle, die die Adressierung der Variablen der SPS erklärt, gibt es hier. Es wird dringend empfohlen immer nach der korrekten und aktuellen Addressierung zu schauen, da diese ständig überarbeitet wird.

Nach Klicken auf “Aktualisieren” sollten die IP-Adresse inkl. Port und die Variablen im ersten Menü des Bausteins auswählbar sein.

Die von uns konfigurierte Verbindung wird bei “Neuen s7 endpoint hinzufügen ...“ bei beiden Bausteinen ausgewählt. Der obere der beiden erhält die Adresse der Temperaturvariablen, da er von Main3.py “gefüttert” wird, während an die untere die Adresse der Luftfeuchtigkeit gegeben wird.

Damit die Variablen im TIAPortal überwacht und veränderungen ersichtlich werden muss in der Beobachtungstabelle noch die Option “Alle beobachten” in der oberen Leiste durch Klicken auf das Brillensymbol aktiviert werden.

Mit “deploy” wird unserer neuer Flow übersetzt und ein Klick auf den “inject”-Button sorgt für das Senden der Sensordaten an die SPS. Wenn alles ordnungsgemäß funktioniert sollten nun die Temperatur und die Luftfeuchtigkeit nun in der Beobachtungstabelle im TIAPortal sichtbar sein.









Zuletzt geändert: Dienstag, 7. Juli 2020, 14:08