[Tutorial de inicio rápido] Cree un segundo proceso a través de la interfaz de programación de la puerta de enlace periférica de la serie EG

Requisitos

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:

 

  1. 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)

  1. Parámetros relacionados con la comunicación MQTT y requisitos de formato de datos JSON, como:
url:1883.dtuip.com:1883
clientID:820000003058164F
nombre de usuario:19381903226
password:ZHZK19381903226
Subscribe:820000003058164F/ Publish:820000003058164F
Formato JSON:{ "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": "corriente", "value":10.2 } ]}

Análisis de la demanda

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:

    1. Lee los datos del PLC a través del protocolo S7, y los datos obtenidos se almacenan en la memoria ( Nodo S7)
    2. Formatear los datos según el formato JSON ( Nodo de función)
    3. Establecer una conexión MQTT y publicar en el tema especificado ( Nodo de publicación MQTT)

Las principales tareas del enlace descendente de datos son:

    1. Suscribirse a temas MQTT y recibir datos enviados por la plataforma ( Nodo de suscripción MQTT)
    2. Analiza los datos JSON recibidos y los almacena en memoria ( Nodo de función)
    3. Escribir en el PLC en el formato requerido por S7 ( Nodo S7)

análisis de la demanda

Realización de requisitos

1. Recopilar datos del PLC

    1. Arrastre un Nodo de lectura S7 y un Nodo de depuración de la biblioteca de nodos. Nodo de depuración se utiliza para ver los datos PLC leídos para facilitar la localización de problemas.

Recopilar datos del PLC

    1. Haga doble clic en Nodo de lectura S7y rellene los parámetros de ajuste correspondientes según el resumen de requisitos, como se muestra en la figura siguiente:
IP: PLC 
Puerto IP: 102 (puerto 102 por defecto de comunicación del protocolo S7) 
Modo: TASP (S7-200 Smart selecciona TASP, otros modelos seleccionan Rack/Slot) 
TSAP local: 1002 (valor fijo) 
TSAP remoto: 0301 (valor fijo) 
Periodo de recogida: 1000ms (por defecto 1000ms, personalizable) 
Tiempo de espera: 2000ms (por defecto 2000ms, personalizable) 

Configuración del punto de datos (la relación correspondiente se puede encontrar según el documento de ayuda) 
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.

Leer el contenido de los datos

    1. 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:

Importación y exportación de nodos

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:

Formato de los datos

Porque la plataforma de aplicación ha estipulado que los datos deben comunicarse en formato JSON. A continuación, utilice Nodo de funciónCódigo JavaScript para formatear los datos. El código es el siguiente:

  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:

Formato de los datos

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). Esto es sólo la punta del iceberg de los nodos de función. Dado que admite programación JavaScript, aquí se puede implementar casi cualquier función que se te ocurra.

Leer el contenido de los datos

3. Informe de datos a través de MQTT

Arrastre un Nodo de publicación MQTT , Configúrelo de acuerdo con las instrucciones, rellene la información relacionada con la conexión MQTT y el tema de publicación MQTT (consulte el resumen de requisitos para obtener más información) y podrá implementar la generación de informes de datos. 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:

Informe de datos a través de MQTT

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 Nodo de suscripción MQTT. Nota: Nodo de publicación MQTT y Nodo de suscripción MQTTpueden 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. Si elige añadir un nuevo nodo MQTT-broker, significa crear una nueva conexión MQTT.

Recibir datos a través de MQTT

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:

Nodo de depuración

5. 5. Análisis de datos

Según el documento de ayuda del Nodo de escritura S7. Puede saber que para escribir datos en el PLC, los datos que hay que pasar llevan dos parámetros, como se indica a continuación:

análisis de datos

Por lo tanto, al analizar los datos, los datos enviados por la plataforma de aplicación deben convertirse en un mensaje con dos variables carga útil y variable pasado a Nodo de escritura S7. 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:

Nodo de datos de escritura S7

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

DTU/Pasarela Edge/Plataforma IoT/Módulo de pasarela

6. Escriba a PLC

Arrastre unNodo de escritura S7, Conectar Función Nodo de cálculo, Accione el interruptor en la plataforma de aplicación y compruebe el efecto de la demostración:

Escribir a PLC

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

Todos los procesos admiten la importación y exportación en formato JSON, lo que facilita compartir con otros los procesos completados. El archivo JSON de proceso de este capítulo es el siguiente. Después de copiar, seleccione importar y pegar en la esquina superior derecha de la barra de menú. Lo mismo ocurre con la exportación.

  [{"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""
About Me
e87d0ef219292bb40d6f120e7d321bcb?s=150&d=mp&r=g
More Posts