Tutorial: #TU0V1: S7-Kommunikation in Node-RED anlegen
Voraussetzung:
- mbNET/mbNET.rokey ab Firmware 6.0.6
- mbEDGE SD-Karte
- mbCONNECT24 V2 Account
Inhalt:
1. An mbCONNECT24 anmelden und Gerät anlegen
4. Anwendung erweitern (Teil 1)
5. Anwendung erweitern (Teil 2)
1. An mbCONNECT24 anmelden und Gerät anlegen
Beim Anlegen der Geräte ist darauf zu achten, dass die Firmware 6.0.6 ausgewählt wird.Des weiteren müssen folgende Einstellungen vorgenommen bzw. überprüft werden:
- IoT - Einstellungen (Bild 1)
- IoT - Services aktiviert
- Flows & Dashboard (Node-Red) aktiviert
- LAN - Einstellungen
- Die LAN IP Adresse ist 10.80.1.100
- Internet - Einstellungen
- Immer - Externer Router
- WAN - Einstellungen
- Es wird DHCP verwendet
- Benutzerverwaltung
- Das Passwort des 'admin'-Benutzers wird geändert. Ansonsten muss das Default Passwort verwendet werden
Bild 1: IoT - Einstellungen
Anschließend wird die Konfiguration via USB Stick auf das Gerät übertragen.
Der mbEDGE Service benötigt beim starten des Gerätes einige Minuten bis dieser komplett zur Verfügung steht.
Erkennbar ist dies über die LED's am Gerät, auf der Status>IoT Seite des Gerätes sowie im Portal durch die Statusmeldung und die aktiven/inaktiven web2go Links.
Bild 2: mbEDGE noch nicht bereit
Bild 3: mbEDGE betriebsbereit
2. Zugriff auf NodeRed
Mit einem Klick auf den web2go Link 'Flows' wird eine web2go Verbindung auf das Gerät und zu NodeRed aufgebaut.
2.1. Erster Eindruck
NodeRed meldet sich mit dem Standard-Login Screen.
Bild 4: NodeRed Login-Screen
Der Username und Passwort für NodeRed ist per default der Geräteadministrator. Diese Einstellung kann im Portal geändert werden. Hierzu später mehr.
Nachdem man sich an NodeRed authentifiziert hat erscheint die Flows-Konfiguration-Ansicht.
Bild 5: NodeRed Ansicht
3. Verbindungsknoten S7-1200
Für eine Verbindung zu einer S7 Steuerung gibt es bereits vorgefertigte Nodes. Wir verwenden die Node node-red-contrib-s7. Falls diese Node bei Ihnen nicht vorhanden ist, können Sie diese direkt über den NodeRED Palette Manager installieren.
In der Linken Leiste wird nun nach der Node: 's7' gesucht. Diese gibt es als Input und auch als Output. Hierbei ist zu unterscheiden:
- Input: Aus Steuerung lesen
- Output: In Steuerung schreiben
Bedeutet, dass Input/Output aus Sicht von NodeRed zu betrachten ist.
Nun fügt man die Input Node 's7' per Drag&Drop in den Flow ein. Mit einem Doppelklick auf diese Node öffnet sich die Einstellungsmaske.
Bild 6: Einstellungsmaske Node 's7'
Hier findet man verschiedene Optionen:
- PLC = Verbindungsknoten zur Steuerung
- Mode = Wie werden die Variablen gelesen
- Variable = Wenn 'Mode' auf 'Single Variable' steht kann hier die Variable ausgewählt werden
- Name = Name für diese Node (Optional)
Erklärung Punkt 'PLC':
Sollte bereits ein Verbindungsknoten zu einer S7 Steuerung konfiguriert sein, kann diese in der DropDown-Box ausgewählt werden. Wenn noch keine Verbindung konfiguriert wurde bzw. eine vorhandene Konfiguration bearbeitet werden soll, wird mit einem Klick auf das Bearbeiten Symbol (Stift) eine neue Einstellungsmaske geöffnet.
Bild 7: S7 Verbindungsknoten Einstellungen
Auch hier findet man verschiedene Einstellungsmöglichkeiten:
- Tab: Connection
- IP-Address = IP-Adresse der Steuerung
- Port = Port der Steuerung
- Mode = Verbindungsmode zur Steuerung
- Rack / Slot = Rack und Slot Nummer der Steuerung
- Cycle Time = Zykluszeit zum lesen der Variablen
- Timeout = Timeout bei Verbindungsaufbau bzw. zum lesen/schreiben
- Debug = Debug der Node aktivieren/deaktivieren
- Name = Name für diesen Verbindungsknoten
- Tab: Variables
- Address = Adresse des zu lesenden/schreibenden Datenpunk
- Name = Name für diesen Datenpunkt
Für dieses Tutorial werden folgende Werte verwendet:
- Tab: Connection
- IP-Address: 10.80.1.7
- Port = 102
- Mode = Rack/Slot
- Rack = 0
- Slot = 1
- Cycle time = 500ms
- Timeout = 1500ms
- Debug = Default
- Name = DemoRackS7
- Tab: Variables
- Address = MW0
- Name = myFirstTag
Anschließend wird diese Verbindung mit einem Klick auf 'Add' hinzugefügt.
Nun sieht man in der DropDown-Box 'PLC' bereits die eben angelegte Verbindung 'DemoRackS7'.
Erklärung Punkt 'Mode':
Es gibt drei verschiedene Modi.
- Single variable
- Liest nur eine bestimmte Variable aus
- All variables, one per message
- Liest alle Variablen aus und sendet jeden einzelnen Wert als einzelne Nachricht
- All variables
- Liest alle Variablen aus und sendet diese als Array in einer Nachricht
Für den Anfang verwenden wir den Modus: 'Single Variable'
Erklärung Punkt 'Variable':
Wenn der 'Mode' auf 'Single Variable' steht muss hier die Variable, welche gelesen werden soll, ausgewählt werden.
Für unsere Demo wird der angelegte Datenpunkt 'myFirstTag' ausgewählt.
Erklärung Punkt 'Name':
Dieser Name wird als Text auf der Node eingefügt.
Wir vergeben den Namen 'Rack-S7-1200'
Bild 8: Einstellungen Node 's7'
Mit einem Klick auf 'DONE' werden die Einstellungen gespeichert.
3.1. Verbindung zur Steuerung testen
Um die Verbindung zu testen wird eine 'debug' Node eingefügt. Diese ist ebenfalls auf der Linken Seite zu finden.
In dieser Node muss nichts konfiguriert werden. Lediglich die Punkte zwischen der Node 's7' (Rack-S7-1200) und der 'debug' Node müssen verbunden werden.
Bild 9: Flow Verbindung zur Steuerung testen
Dieser Flow muss nun gestartet werden. Dies funktioniert durch einen Klick auf den Button 'Deploy'.
Nachdem der Flow gestartet wurde sieht man bereits unter der Node 's7' (Rack-S7-1200) den aktuellen Wert der Variable 'MW0' (myFirstTag).
Weitere Debug Informationen werden auf der rechten Seite dargestellt. Das Debug Fenster öffnet sich mit einem Klick auf den 'Debug' Button:
Bild 10: Debug Fenster
4. Anwendung erweitern (Teil 1)
Als nächstes werden zwei Digitale Eingänge der Steuerung als Datenpunkt hinzugefügt. Diese zwei Eingänge können über die Kippschalter auf dem DemoRack gesteuert werden.
Hierfür muss der Verbindungsknoten 'DemoRackS7' bearbeitet werden. Dies geschieht über einen Doppelklick auf die Node 's7' (Rack-S6-1200) und anschließend mit einem Klick auf das Bearbeitungssymbol (Stift).
Wie bereits für den angelegten Datenpunkt 'myFirstTag' wird in den Tab 'Variables' gewechselt.
Mit einem Klick auf den Button 'Add' wird eine neue Zeile zur Variablen-Liste hinzugefügt. Dort wird nun die Adresse: I0.2 und I0.3 angelegt.
- I0.2 = DIN1
- I0.3 = DIN2
Bild 11: Variablenliste
Diese Einstellungen werden mit einem Klick auf 'Update' gespeichert. In der Einstellungsmaske der Node 's7' (Rack-S7-1200) wird nun der Mode auf 'All variables, one per message' umgestellt um alle Datenpunkte zu lesen.
Wird nun der Kippschalter von DIN1 oder DIN2 verändert erscheint im Debug Fenster der Wert 'true' oder 'false'.
4.1. Auslöseverzögerung bei DIN1 High Signal
Mittels des gelesenen Wertes von DIN1 einer 'switch' Node und einer 'trigger' Node werden wir nun eine Auslöseverzögerung projektieren.
Als erstes wird der Mode der Node 's7' (Rack-S7-1200) auf 'All variables, one per message' umgestellt. Da nun bei jeder Werteänderung der eingestellten Variablen der Trigger ausgelöst werden würde, müssen wir nun noch eine 'switch' Node konfigurieren, welche nur den Wert von DIN1 weiterreicht.
Auf dem Flow wird die 'switch' Node eingefügt und folgend konfiguriert:
Bild 12: 'switch' Einstellungen DIN1
Die Konfiguration der 'trigger' Node beinhaltet folgende Einstellungen:- Send = Was wird gesendet, sobald ein Wert kommt
- then
- wait to be reset = Wartet bis ein Reset trigger kommt
- wait for = Wartet x Millisekunden
- resend it every = Sendet alle x Millisekunden
- then send = Dieser Wert wird nachdem der Trigger abgelaufen ist als Nachricht gesendet
- Reset the trigger if = Wann wird der Trigger zurück gesetzt
- Handling = wann greift dieser Trigger
- Name = Name für diese Node
Für dieses Beispiel sind folgende Einstellungen notwendig.
Bild 13: 'trigger' Einstellungen
Wenn ein Wert aus der Node 's7' (Rack-S7-1200) an den Trigger übergeben wird - wird zunächst nichts gesendet. Erst nach Ablauf der eingestellten 5 Sekunden wird der Wert '1' weitergegeben.
Zurückgesetzt wird der Trigger, wenn an ihn der Wert 'false' übergeben wird.
Bedeutet: Wenn der DIN1 den Wert 'true' oder '1' an den Trigger übergibt werden 5 Sekunden gewartet. Sollte in dieser Zeit DIN1 auf 'false' oder '0' gesetzt werden wird der Trigger zurückgesetzt.
Wenn DIN1 'true' oder '1' für 5 Sekunden hält wird der Wert '1' weitergereicht.
4.2. Prüfe Verbindung zur S7-1200
Mithilfe der 'status' Node ist es möglich, den aktuellen Status einer Node zu lesen.
Bild 14: 'status' Einstellungen
Die Option 'Report status from' wird auf 'selected nodes' gestellt. Anschließend wird die Node 'Rack-S7-1200' ausgewählt, damit ausschließlich die Status Meldungen aus dieser Node weitergeleitet werden.
Als Name wird 'Rack-S7-1200 Status' vergeben.
Da der Status der Node nicht - wie gewohnt - in der msg.payload steht sondern in der msg.status.text Nachricht, benötigen wir eine weitere Node 'change'. Mit dieser Node können Topics umgewandelt werden.
Bild 15: 'change' Einstellungen
Als erstes sollte ein Name vergeben werden (hier: Status Nachricht weiterleiten). Die eingetragene Regel setzt den Wert von msg.status.text auf das Topic msg.payload. Das Topic msg.payload kann nun weiterverwendet werden.
Im Debug Fenster ist nun zu sehen, dass der Status der Steuerung geschrieben wird.
Bild 16: Debug-Ausgabe S7 Steuerung Status
5. Anwendung erweitern (Teil 2)
5.1. Erstelle mbCONNECT24 Datenpunkte für NodeRed
Damit der Status der Steuerung an mbCONNECT24 übertragen werden kann, muss der Datenpunkt im mbCONNECT24 Portal angelegt werden.
Dies geschieht in dem Menü IoT > Grünes Plus [Create new tag].
Datenpunkt anlegen: StatusS71200
Bild 17: Datenpunkt 'StatusS71200' erstellen
Anschließend muss das Gerät synchronisiert werden.
Um Werte an das Portal mbCONNECT24 senden zu können benötigen wir die 'cloud' Node.
In dieser Node muss der 'Device point' konfiguriert werden. Dieser ist der "Zugangspunkt" zum Gerät.
In der Liste werden alle verfügbaren Datenpunkte aufgelistet. Wir benötigen den Datenpunkt 'StatusS71200'.
Bild 18: Datenpunkt-Liste 'cloud' Node
Der Datenpunkt 'StatusS71200' wird nun als Variable ausgewählt. Anschließend sollte ein Name für diese Node vergeben werden.
Bild 19: 'cloud' Node Einstellungen
Sobald der Flow mit einem Klick auf Deploy gestartet wurde ist der Status der Steuerung im Portal zu erkennen.
Bild 20: mbCONNECT24 Datenpunkt