Vereistenoverzicht
In dit hoofdstuk wordt voornamelijk een proces geïmplementeerd: EG8200 verzamelt gegevens van Siemens S7-200 Smart, stelt ze samen in JSON-formaat en rapporteert ze via MQTT aan het applicatieplatform; tegelijkertijd kan het besturingscommando's ontvangen die door het applicatieplatform worden uitgegeven om schakelen op afstand te realiseren. Om dit proces te implementeren, moeten de volgende materialen van tevoren worden voorbereid:
-
Bijvoorbeeld de IP-poort en puntentabel van de PLC die moet worden opgehaald:
|
PLC |
S7-200 Smart |
||
|
IP |
192.168.0.24/102 |
||
|
Puntentabel (DB1) |
|||
|
adres |
soort gegevens |
Attributen |
naam |
|
V0.0 |
Booleaans |
alleen lezen |
Start- en stopstatus van nr. 1 motor |
|
V0.1 |
Booleaans |
alleen lezen |
Nr. 2 motor start en stop status |
|
V0.2 |
Booleaans |
alleen lezen |
Nr. 3 motor start en stop status |
|
V0.3 |
Booleaans |
alleen lezen |
Nr. 4 motor start en stop status |
|
V0.4 |
Booleaans |
Lezen en schrijven |
Nr. 1 motor start- en stopregeling |
|
V0.5 |
Booleaans |
Lezen en schrijven |
Nr. 2 motor start- en stopregeling |
|
V0.6 |
Booleaans |
Lezen en schrijven |
Nr. 3 motor start- en stopregeling |
|
V0.7 |
Booleaans |
Lezen en schrijven |
Nr. 4 motor start- en stopregeling |
|
VD100 |
Unsigned16 |
alleen lezen |
Spanning (V) |
|
VD200 |
Unsigned16 |
alleen lezen |
Stroom (A) |
-
MQTT-communicatiegerelateerde parameters en vereisten voor JSON-gegevensindeling, zoals:
url:1883.dtuip.com:1883clientID:820000003058164Fusername:19381903226password:ZHZK19381903226Subscribe:820000003058164F/ Publish:820000003058164FJSON format:{ "sensorDatas": [ {"vlag":"em1Status", "switcher":1 }, {"vlag":"em2Status", "switcher":1 }, {"vlag":"em3Status", "switcher":1 }, {"vlag":"em4Status", "switcher":1 }, {"vlag":,"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 } ]}
vraaganalyse
Bij het maken van een proces is de basislogica om het proces te baseren op de gegevenstrend . Na analyse kan worden geconcludeerd dat deze vraag voornamelijk is verdeeld in twee delen: data uplink en data downlink. De belangrijkste taken van data uplink zijn onder andere:
-
PLC-gegevens lezen via het S7-protocol en de verkregen gegevens worden opgeslagen in het geheugen (
S7节点) -
Formatteer gegevens volgens JSON-indeling (
函数节点) -
Maak een MQTT-verbinding en publiceer naar het opgegeven onderwerp (
MQTT发布节点)
De belangrijkste taken van gegevensdownlink omvatten:
-
Abonneer je op MQTT-onderwerpen en ontvang gegevens die door het platform worden verzonden (
MQTT订阅节点) -
Parseer de ontvangen JSON-gegevens en sla ze op in het geheugen (
函数节点) -
Schrijf naar de PLC in de indeling die wordt vereist door S7 (
S7节点)

Eisen realisatie
1. PLC-gegevens verzamelen
-
Sleep een
S7读数据节点en een调试节点uit de knooppuntenbibliotheek .调试节点wordt gebruikt om de uitgelezen PLC-gegevens te bekijken, zodat u gemakkelijker problemen kunt lokaliseren.

-
Dubbelklik op
S7读数据节点en vul de overeenkomstige instellingsparameters in volgens het vereistenoverzicht, zoals weergegeven in de volgende afbeelding:
IP: PLC IP-poort: 102 (S7-protocolcommunicatie standaardpoort 102) Modus: TASP (S7-200 Smart selecteert TASP, andere modellen selecteren Rack/Slot) Lokaal TSAP: 1002 (vaste waarde) Remote TSAP: 0301 (vaste waarde) ) Verzamelperiode: 1000ms (standaard 1000ms, aanpasbaar) Time-outperiode: 2000ms (standaard 2000ms, aanpasbaar) Datapuntconfiguratie (de overeenkomstige relatie kan worden gevonden volgens het helpdocument) V0.0-->DB1,X0.0V0.1 -->DB1,X0.1V0.2-->DB1,X0.2V0.3-->DB1,X0.3V0.4-->DB1,X0.4V0.5-->DB1,X0.5V0.6 -->DB1, X0.6V0.7-->DB1,
Als de instellingen correct zijn, wordt er een log afgedrukt in het foutopsporingsvenster, met de inhoud van de gelezen gegevens.

-
Soms zijn er veel PLC-gegevenspunten en is het lastig om deze één voor één handmatig in te voeren. Knooppunten ondersteunen het importeren en exporteren van gegevenspunten:

2. Opmaak van gegevens
Volgens de aanwijzingen in stap 2 ziet u de gelezen PLC-gegevens als volgt in het foutopsporingsvenster:

Omdat het applicatieplatform heeft bepaald dat gegevens in JSON-formaat moeten worden gerapporteerd. Gebruik vervolgens 函数节点Javascript code om de gegevens te formatteren. De code is als volgt:
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 })/*twee decimalen*/jsonArray.push({"flag": "current", " value": msg.payload.current / 100 })/*twee decimalen*/let data = {}data.sensorDatas = jsonArraymsg.payload = JSON.stringify(data)return msg
Kopieer de bovenstaande code en plak deze in het functieknooppunt. Je kunt het effect zien na de implementatie:

Het is te zien dat de gelezen PLC-gegevens zijn geconverteerd naar de uiteindelijke JSON-indeling volgens de vereisten en dat de gegevens tot op zekere hoogte zijn berekend (twee cijfers achter de komma).Dit is slechts het topje van de ijsberg van functieknooppunten. Omdat Javascript programmering ondersteunt, kan bijna elke functie die je kunt bedenken hier worden geïmplementeerd.

3. Gegevens rapporteren via MQTT
Sleep een MQTT发布节点, configureer het volgens de aanwijzingen, vul de MQTT verbindingsgerelateerde informatie en het MQTT publicatieonderwerp in (zie het vereistenoverzicht voor details) en je kunt gegevensrapportage implementeren. Het is te zien dat nadat de gegevens succesvol zijn gerapporteerd, het applicatieplatform groen weergeeft om aan te geven dat het apparaat online is en dat de gegevens normaal zijn:

Op dit punt is de gegevensrapportage voltooid en kan deze in een paar eenvoudige stappen worden gerealiseerd: verzamel PLC-gegevens en rapporteer deze in een aangepaste JSON-indeling.
4. Gegevens ontvangen via MQTT
Sleep een MQTT订阅节点. Opmerking: MQTT发布节点en MQTT订阅节点kunnen een MQTT-verbinding delen. Als dezelfde verbinding wordt gebruikt maar een ander onderwerp, sleep dan het knooppunt en selecteer de geconfigureerde verbinding.Als je ervoor kiest om een nieuw mqtt-broker knooppunt toe te voegen, betekent dit dat je een nieuwe MQTT verbinding aanmaakt.

Selecteer een foutopsporingsknooppunt en klik op de besturingsknop op het platform. Je kunt de uitgegeven instructies zien in het foutopsporingsvenster:

5.Gegevens analyse
Volgens het helpdocument van de S7写数据knooppunt, kunt u weten dat om gegevens naar de PLC te schrijven, de gegevens die moeten worden doorgegeven twee parameters hebben, als volgt:

Daarom moeten bij het parsen van gegevens de gegevens die door het applicatieplatform worden verzonden, worden geconverteerd naar een bericht met twee variabelen, nuttige lading en variabele en doorgegeven aan S7写数据节点. De code van het functieknooppunt is als volgt:
laat cmdDate = msg.payloadmsg.variable = cmdDate.sensorDatas[0].flagmsg.payload = cmdDate.sensorDatas[0].switcher == 1 ? true : falserreturn msg
Kopieer de bovenstaande code, plak deze in het functie-knooppunt en stel het debug-knooppunt in om het oorspronkelijke bericht uit te voeren. Je kunt de afgedrukte inhoud als volgt zien:

Je kunt zien dat de gegevens zijn geconverteerd naar het formaat dat wordt vereist door het S7 Write Data Node.

6.Schrijven naar PLC
Sleep een S7写数据knooppunt, verbinden 函数计算knooppunt, bedien de schakelaar op het applicatieplatform en bekijk het demonstratie-effect:

Samenvatten
Dit hoofdstuk introduceert een relatief complex proces, met als doel de mogelijkheden van de gateway te beschrijven. Daarom worden de veiligheid, stabiliteit, flexibiliteit, enz. van het programma niet geoptimaliseerd. Door dit proces te begrijpen, denk ik dat je al bekend bent met de visuele programmering van de gateway. Leer vervolgens het functiegebruik van elke node. Als je deze onder de knie hebt, heb je meer keuzes en mogelijkheden om complexere processen te maken!
Broncode
Alle processen ondersteunen import en export in json-formaat, waardoor het eenvoudig is om voltooide processen met anderen te delen.Het proces json bestand van dit hoofdstuk ziet er als volgt uit. Na het kopiëren, selecteer je importeren en plakken in de rechterbovenhoek van de menubalk. Hetzelfde geldt voor exporteren.
[{"id":"c8d138cd30e452fc","type":"s7 in","z":"2ff624305b8cb30b","endpoint":"374f5d9e3d2741c0","mode":"all","variable":"", "diff":false,"name":"Read PLC data","x":180,"y":180,"wires":[["03f0b9014af25c1d"]]},{"id":"4abb25e7e75b3447", "type":"mqtt out","z":"2ff624305b8cb30b","name":"Release data","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":"Subscription data","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":"functie","z":"2ff624305b8cb30b","naam":"Gegevensopmaak","func":"let jsonArray = []nnjsonArray.push({"flag": ""em1Status""


