Índice
ToggleRequirements Overview
Este capítulo implementa principalmente un proceso: EG8200 recopila datos de Siemens S7-200 Smart, los ensambla en formato JSON y los comunica a la plataforma de aplicaciones a través de MQTT; al mismo tiempo, puede recibir comandos de control emitidos por la plataforma de aplicaciones para realizar la conmutación remota. Para llevar a cabo este proceso, es necesario preparar con antelación los siguientes materiales:
-
El puerto IP y la tabla de puntos del PLC que se va a recoger, por ejemplo:
|
PLC |
S7-200 Smart |
||
|
IP |
192.168.0.24/102 |
||
|
Tabla de puntos (DB1) |
|||
|
dirección |
tipo de datos |
Atributos |
nombre |
|
V0.0 |
Booleano |
sólo lectura |
Estado de arranque y parada del motor nº 1 |
|
V0.1 |
Booleano |
sólo lectura |
Estado de arranque y parada del motor nº 2 |
|
V0.2 |
Booleano |
sólo lectura |
Nº 3 estado de arranque y parada del motor |
|
V0.3 |
Booleano |
sólo lectura |
Nº 4 estado de arranque y parada del motor |
|
V0.4 |
Booleano |
Leer y escribir |
Mando de arranque y parada del motor nº 1 |
|
V0.5 |
Booleano |
Leer y escribir |
Mando de arranque y parada del motor nº 2 |
|
V0.6 |
Booleano |
Leer y escribir |
Nº 3 control de arranque y parada del motor |
|
V0.7 |
Booleano |
Leer y escribir |
Nº 4 control de arranque y parada del motor |
|
VD100 |
Sin signo16 |
sólo lectura |
Tensión (V) |
|
VD200 |
Sin signo16 |
sólo lectura |
Corriente (A) |
- MQTT communication-related parameters and JSON data format requirements, such as:
url:1883.dtuip.com:1883
clientID:820000003058164F
username:19381903226
password:ZHZK19381903226
Subscribe:820000003058164F/ Publish:820000003058164F
JSON format:{ "sensorDatas": [ { "fla g":"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 } ]}
Demand Analysis
Al realizar un proceso, la lógica básica es para que el proceso se base en la tendencia de los datos. Tras el análisis, se puede concluir que esta demanda se divide principalmente en dos partes: enlace ascendente de datos y enlace descendente de datos. Entre ellas, las principales tareas del enlace ascendente de datos incluyen:
-
- Lee los datos del PLC a través del protocolo S7, y los datos obtenidos se almacenan en la memoria (
S7 Node) - Formatear los datos según el formato JSON (
Function Node) - Establecer una conexión MQTT y publicar en el tema especificado (
MQTT Publish Node)
- Lee los datos del PLC a través del protocolo S7, y los datos obtenidos se almacenan en la memoria (
Las principales tareas del enlace descendente de datos son:
-
- Suscribirse a temas MQTT y recibir datos enviados por la plataforma (
MQTT Subscribe Node) - Analiza los datos JSON recibidos y los almacena en memoria (
Function Node) - Escribir en el PLC en el formato requerido por S7 (
S7 Node)
- Suscribirse a temas MQTT y recibir datos enviados por la plataforma (

Requirements Realization
1. Recopilar datos del PLC
-
- Arrastre un
S7 Read Nodey unDebug Nodede la biblioteca de nodos.Debug Nodese utiliza para ver los datos PLC leídos para facilitar la localización de problemas.
- Arrastre un

-
- Haga doble clic en
S7 Read Nodey rellene los parámetros de ajuste correspondientes según el resumen de requisitos, como se muestra en la figura siguiente:
- Haga doble clic en
IP: PLC IP port: 102 (S7 protocol communication default port 102) Mode: TASP (S7-200 Smart selects TASP, other models select Rack/Slot) Local TSAP: 1002 (fixed value) Remote TSAP: 0301 (fixed value) Collection period: 1000ms (default 1000ms, customizable) Timeout period: 2000ms (default 2000ms, customizable) Data point configuration (the corresponding relationship can be found according to the help document) 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,
Si la configuración es correcta, se imprimirá un registro en la ventana de depuración, mostrando el contenido de los datos leídos.

-
- A veces hay muchos puntos de datos del PLC y resulta engorroso introducirlos manualmente uno a uno. Los nodos permiten importar y exportar puntos de datos:

2. Formato de los datos
De acuerdo con la guía del paso 2, puede ver los datos del PLC leídos en la ventana de depuración de la siguiente manera:

Porque la plataforma de aplicación ha estipulado que los datos deben comunicarse en formato JSON. A continuación, utilice Function NodeJavaScript code to format the data. The code is as follows:
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 })/*dos decimales*/jsonArray.push({"flag": "current", " value": msg.payload.current / 100 })/*dos decimales*/let data = {}data.sensorDatas = jsonArraymsg.payload = JSON.stringify(data)return msg
Copie el código anterior y péguelo en el nodo de la función. Usted puede ver el efecto después de la implementación:

Puede verse que los datos PLC leídos se han convertido al formato JSON final de acuerdo con los requisitos, y los datos se han calculado hasta cierto punto (dos decimales). This is just the tip of the iceberg of function nodes. Because it supports JavaScript programming, almost any function you can think of can be implemented here.

3. Informe de datos a través de MQTT
Arrastre un MQTT Publish Node , configure it according to the prompts, fill in the MQTT connection-related information and the MQTT publishing topic (see the requirements overview for details), and you can implement data reporting. Se puede ver que después de que los datos se reportan con éxito, la plataforma de aplicación muestra verde para indicar que el dispositivo está en línea y los datos son normales:

En este punto, el informe de datos se ha completado y se puede lograr en unos sencillos pasos: recopilar los datos del PLC e informar de ellos en un formato JSON personalizado.
4. Recibir datos a través de MQTT
Arrastre un MQTT Subscribe Node. Note: MQTT Publish Node y MQTT Subscribe Nodepueden compartir una conexión MQTT. Si se utiliza la misma conexión pero un tema diferente, arrastre el nodo y seleccione la conexión configurada. If you choose to add a new MQTT-broker node, it means creating a new MQTT connection.

Seleccione un nodo de depuración y haga clic en el botón de control de la plataforma. Puedes ver las instrucciones emitidas en la ventana de depuración:

5. Data analysis
Según el documento de ayuda del S7 Write Node. You can know that to write data to the PLC, the data that needs to be passed carries two parameters, as follows:

Por lo tanto, al analizar los datos, los datos enviados por la plataforma de aplicación deben convertirse en a message carrying two variables carga útil y variable passed to S7 Write Node. El código del nodo de función es el siguiente:
let cmdDate = msg.payloadmsg.variable = cmdDate.sensorDatas[0].flagmsg.payload = cmdDate.sensorDatas[0].switcher == 1 ? true : falsereturn msg
Copie el código anterior, péguelo en el nodo de función y configure el nodo de depuración para que imprima el mensaje original. Usted puede ver el contenido impreso de la siguiente manera:

Puede ver que los datos se han convertido al formato requerido por el nodo de datos de escritura S7.

6. Write to PLC
Arrastre unS7 Write Node, connect Function Compute Node, operate the switch on the application platform, and see the demonstration effect:

Resuma
Este capítulo presenta un proceso relativamente complejo, cuyo objetivo es describir las capacidades de la pasarela. Por lo tanto, no optimiza la seguridad, estabilidad, flexibilidad, etc. del programa. Al entender este proceso, creo que ya estás familiarizado con la programación visual de la pasarela. A continuación, aprenda en profundidad el uso de las funciones de cada nodo. ¡Dominarlas te proporcionará más opciones y posibilidades para realizar procesos más complejos!
Código fuente
All processes support import and export in JSON format, making it easy to share completed processes with others. The process JSON file of this chapter is as follows. After copying, select import and paste in the upper right corner of the menu bar. The same goes for exporting.
[{"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": "function"," z": "2ff624305b8cb30b", "name": "Formato de datos", "func": "let jsonArray = []nnjsonArray.push({"flag"": ""em1Status""