[Schnellstart-Tutorial] Erstellen eines zweiten Prozesses über die Programmierschnittstelle des Edge Gateways der EG-Serie

Übersicht über die Anforderungen

In diesem Kapitel wird im Wesentlichen ein Prozess implementiert: Der EG8200 erfasst Daten von der Siemens S7-200 Smart, wandelt diese in das JSON-Format um und übermittelt sie über MQTT an die Anwendungsplattform; gleichzeitig kann er von der Anwendungsplattform ausgegebene Steuerbefehle empfangen, um eine Fernsteuerung zu ermöglichen. Um diesen Prozess durchzuführen, müssen die folgenden Materialien im Voraus bereitgestellt werden:

 

  1. Die IP-Port- und Punkt-Tabelle der zu erfassenden SPS, zum Beispiel:

PLC

S7-200 Smart

IP

192.168.0.24/102

Punktetabelle (DB1)

Adresse

Datentyp

Attribute

Name

V0.0

Boolesch

nur lesen

Status des Starts und Stopps von Motor Nr. 1

V0.1

Boolesch

nur lesen

Status des Starts und Stopps von Motor Nr. 2

V0.2

Boolesch

nur lesen

Status des Starts und Stopps von Motor Nr. 3

V0.3

Boolesch

nur lesen

Status des Starts und Stopps von Motor Nr. 4

V0.4

Boolesch

Lesen und Schreiben

Steuerung Nr. 1 für das Starten und Stoppen des Motors

V0.5

Boolesch

Lesen und Schreiben

Steuerung zum Starten und Stoppen von Motor Nr. 2

V0.6

Boolesch

Lesen und Schreiben

Steuerung zum Starten und Stoppen von Motor Nr. 3

V0.7

Boolesch

Lesen und Schreiben

Steuerung zum Starten und Stoppen des Motors Nr. 4

VD100

Unsigniert16

nur lesen

Spannung (V)

VD200

Unsigniert16

nur lesen

Strom (A)

  1. Parameter im Zusammenhang mit der MQTT-Kommunikation und Anforderungen an das JSON-Datenformat, wie zum Beispiel:
url:1883.dtuip.com:1883
clientID:820000003058164F
Benutzername:19381903226
Passwort:ZHZK19381903226
Abonnieren:820000003058164F/ Veröffentlichen:820000003058164F
JSON-Format:{ "sensorDatas": [ { "flag":"em1Status", "switcher":1 }, { "flag":"em2Status", "switcher":1 }, { "flag": "em3Status", "switcher": 1 }, { "flag": "em4Status", "switcher": 1 }, { "flag": "em1Control", "switcher": 0 }, { "flag": "em2Control", "switcher": 0 }, { "flag": "em3Control", "switcher": 0 }, { "flag": "em4Control", "switcher": 0 }, { "flag": "voltage", "value": 220,0 }, { "flag": "current", "value": 10,2 } ]}

Bedarfsanalyse

Bei der Erstellung eines Prozesses lautet die grundlegende Logik wie folgt: den Prozess auf der Grundlage der Datentrends zu gestalten. Nach einer Analyse lässt sich feststellen, dass sich dieser Bedarf im Wesentlichen in zwei Teile gliedert: Daten-Uplink und Daten-Downlink. Zu den wichtigsten Aufgaben des Daten-Uplinks gehören unter anderem:

    1. Die SPS-Daten werden über das S7-Protokoll ausgelesen, und die erhaltenen Daten werden im Speicher abgelegt ( S7-Knoten)
    2. Daten im JSON-Format formatieren ( Funktionsknoten)
    3. Stellen Sie eine MQTT-Verbindung her und veröffentlichen Sie Daten im angegebenen Topic ( MQTT-Publish-Knoten)

Zu den Hauptaufgaben der Datenübertragung gehören:

    1. Abonnieren Sie MQTT-Themen und empfangen Sie die von der Plattform gesendeten Daten ( MQTT-Abonnement-Knoten)
    2. Die empfangenen JSON-Daten analysieren und im Speicher ablegen ( Funktionsknoten)
    3. Schreiben Sie die Daten im von S7 geforderten Format in die SPS ( S7-Knoten)

Bedarfsanalyse

Umsetzung der Anforderungen

1. PLC-Daten erfassen

    1. Ziehe ein S7-Lese-Knoten und ein Debug-Knoten aus der Knotenbibliothek. Debug-Knoten dient zur Anzeige der ausgelesenen SPS-Daten, um die Fehlersuche zu erleichtern.

PLC-Daten erfassen

    1. Doppelklick S7-Lese-Knotenund geben Sie die entsprechenden Einstellungsparameter gemäß der Anforderungsübersicht ein, wie in der folgenden Abbildung dargestellt:
IP: SPS 
IP-Port: 102 (Standardport 102 für die Kommunikation über das S7-Protokoll) 
Modus: TASP (S7-200 Smart wählt TASP aus, andere Modelle wählen „Rack/Slot“) 
Lokales TSAP: 1002 (Festwert) 
Remote-TSAP: 0301 (fester Wert) 
Erfassungszeitraum: 1000 ms (Standardwert 1000 ms, anpassbar) 
Timeout-Dauer: 2000 ms (Standardwert 2000 ms, anpassbar) 

Konfiguration der Datenpunkte (die entsprechende Zuordnung finden Sie im Hilfedokument) 
V0.0-->DB1,X0.0V0.1 -->DB1, X0,1 V0,2 --> DB1, X0,2 V0,3 --> DB1, X0,3 V0,4 --> DB1, X0,4 V0,5 --> DB1, X0,5 V0,6 -->DB1, X0,6V0,7-->DB1, 

Wenn die Einstellungen korrekt sind, wird im Debugging-Fenster ein Protokollausgabe angezeigt, das den Inhalt der gelesenen Daten enthält.

Dateninhalt lesen

    1. Manchmal gibt es sehr viele SPS-Datenpunkte, und es ist mühsam, diese einzeln von Hand einzugeben. Knoten unterstützen den Import und Export von Datenpunkten:

Import und Export von Knoten

2. Datenformatierung

Gemäß der Anleitung in Schritt 2 können Sie die ausgelesenen SPS-Daten wie folgt im Debugging-Fenster einsehen:

Datenformatierung

Da die Anwendungsplattform vorschreibt, dass Daten im JSON-Format übermittelt werden müssen. Verwenden Sie als Nächstes FunktionsknotenJavaScript-Code zur Formatierung der Daten. Der Code lautet wie folgt:

  let jsonArray = []jsonArray.push({ "flag": "em1Status", "switcher": msg.payload.em1Status == true ? 1 : 0 })jsonArray.push({ "flag": "em2Status", " switcher": msg.payload.em2Status == true ? 1 : 0 })jsonArray.push({ "flag": "em3Status", "switcher": msg.payload.em3Status == true ? 1 : 0 })jsonArray. push({ "flag": "em4Status", "switcher": msg.payload.em4Status == true ? 1 : 0 })jsonArray.push({ "flag": "em1Control", "switcher": msg.payload. em1Control == true ? 1 : 0 })jsonArray.push({ "flag": "em2Control", "switcher": msg.payload.em2Control == true ? 1 : 0 })jsonArray.push({ "flag": "em3Control", "switcher": msg.payload.em3Control == true ? 1 : 0 })jsonArray.push({ "flag": "em4Control", "switcher": msg.payload.em4Control == true ? 1 : 0 })jsonArray.push({ "flag": "voltage", "value": msg.payload.voltage / 100 })/*zwei Dezimalstellen*/jsonArray.push({ "flag": "current", " value": msg.payload.current / 100 })/*zwei Dezimalstellen*/let data = {}data.sensorDatas = jsonArraymsg.payload = JSON.stringify(data)return msg 

Kopieren Sie den obigen Code und fügen Sie ihn in den Funktionsknoten ein. Nach der Bereitstellung können Sie das Ergebnis sehen:

Datenformatierung

Es ist ersichtlich, dass die ausgelesenen SPS-Daten gemäß den Anforderungen in das endgültige JSON-Format konvertiert und bis zu einem bestimmten Grad (zwei Dezimalstellen) berechnet wurden. Das ist nur die Spitze des Eisbergs, was Funktionsknoten angeht. Da JavaScript-Programmierung unterstützt wird, lässt sich hier nahezu jede erdenkliche Funktion umsetzen.

Dateninhalt lesen

3. Daten über MQTT melden

Ziehen Sie ein MQTT-Publish-Knoten , konfigurieren Sie es gemäß den Anweisungen, geben Sie die Informationen zur MQTT-Verbindung sowie das MQTT-Veröffentlichungsthema ein (Einzelheiten finden Sie in der Übersicht über die Anforderungen), und schon können Sie die Datenübermittlung einrichten. Es ist zu erkennen, dass die Anwendungsplattform nach der erfolgreichen Übermittlung der Daten grün angezeigt wird, um anzuzeigen, dass das Gerät online ist und die Daten in Ordnung sind:

Daten über MQTT melden

Zu diesem Zeitpunkt ist die Datenübermittlung abgeschlossen und lässt sich in wenigen einfachen Schritten durchführen: Sammeln Sie die SPS-Daten und übermitteln Sie diese in einem benutzerdefinierten JSON-Format.

4. Daten über MQTT empfangen

Ziehen Sie ein MQTT-Abonnement-Knoten. Anmerkung: MQTT-Publish-Knoten und MQTT-Abonnement-Knotenkönnen sich eine MQTT-Verbindung teilen. Wenn dieselbe Verbindung verwendet wird, aber ein anderes Thema, ziehen Sie den Knoten hinein und wählen Sie die konfigurierte Verbindung aus. Wenn Sie einen neuen MQTT-Broker-Knoten hinzufügen, bedeutet dies, dass eine neue MQTT-Verbindung hergestellt wird.

Daten über MQTT empfangen

Wählen Sie einen Debugging-Knoten aus und klicken Sie auf die Schaltfläche auf der Plattform. Die ausgegebenen Befehle werden im Debugging-Fenster angezeigt:

Debug-Knoten

5. Datenanalyse

Laut die Hilfe-Dokumentation der S7-Schreibknoten. Sie sollten wissen, dass beim Schreiben von Daten in die SPS die zu übermittelnden Daten zwei Parameter enthalten, und zwar wie folgt:

Datenanalyse

Daher müssen beim Parsen der Daten die von der Anwendungsplattform gesendeten Daten in eine Nachricht, die zwei Variablen enthält Nutzlast und Variable weitergeleitet an S7-Schreibknoten. Der Code des Funktionsknotens lautet wie folgt:

  let cmdDate = msg.payload; msg.variable = cmdDate.sensorDatas[0].flag; msg.payload = cmdDate.sensorDatas[0].switcher == 1 ? true : false; return msg 

Kopieren Sie den obigen Code, fügen Sie ihn in den Funktionsknoten ein und konfigurieren Sie den Debug-Knoten so, dass die ursprüngliche Meldung ausgegeben wird. Der ausgegebene Inhalt sieht wie folgt aus:

S7-Schreibdatenknoten

Sie können sehen, dass die Daten in das vom S7-Schreibdatenknoten geforderte Format konvertiert wurden.

DTU/Edge-Gateway/IoT-Plattform/Gateway-Modul

6. Schreiben Sie an PLC

Ziehe einS7-Schreibknoten, verbinden Funktions-Rechenknoten, betätigen Sie den Schalter auf der Anwendungsplattform und sehen Sie sich den Demonstrationseffekt an:

An PLC schreiben

Zusammenfassend

In diesem Kapitel wird ein relativ komplexer Prozess vorgestellt, der darauf abzielt, die Funktionen des Gateways zu beschreiben. Daher wird dabei nicht auf die Optimierung der Sicherheit, Stabilität, Flexibilität usw. des Programms geachtet. Da Sie diesen Vorgang verstanden haben, gehe ich davon aus, dass Sie bereits mit der visuellen Programmierung des Gateways vertraut sind. Als Nächstes lernen Sie die Funktionsweise der einzelnen Knoten im Detail kennen. Wenn Sie diese beherrschen, stehen Ihnen mehr Optionen und Möglichkeiten zur Verfügung, um komplexere Abläufe zu erstellen!

Quellcode

Alle Prozesse unterstützen den Import und Export im JSON-Format, wodurch sich abgeschlossene Prozesse problemlos mit anderen teilen lassen. Die JSON-Datei für dieses Kapitel sieht wie folgt aus. Nach dem Kopieren wählen Sie oben rechts in der Menüleiste „Importieren“ und „Einfügen“ aus. Das Gleiche gilt für den Export.

  [{"id":"c8d138cd30e452fc","type":"s7 in","z":"2ff624305b8cb30b","endpoint":"374f5d9e3d2741c0","mode":"all","variable":"", "diff":false,"name":"SPS-Daten lesen","x":180,"y":180,"wires":[["03f0b9014af25c1d"]]},{"id":"4abb25e7e75b3447", "type":"MQTT-Ausgang","z":"2ff624305b8cb30b","name":"Daten freigeben","topic":"820000003058164F","qos":"0","retain":"false", "respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"8d85be060cbc6545","x":520," y":180,"wires":[]},{"id":"63f2816a781192d5","type":"mqtt in","z":"2ff624305b8cb30b","name":"Abonnementdaten","topic ":"820000003058164F/ ","qos":"0","datatype":"auto-detect","broker":"8d85be060cbc6545","nl":false,"rap":true,"rh":0 ,"inputs":0,"x":180,"y":260,"wires":[["1b6776e208355720"]]},{"id":"03f0b9014af25c1d","type":"function"," z":"2ff624305b8cb30b","name":"Datenformatierung","func":"let jsonArray = []nnjsonArray.push({ "flag"": ""em1Status""
Über mich
e87d0ef219292bb40d6f120e7d321bcb?s=150&d=mp&r=g
Weitere Beiträge