Procurar

[Tutorial de início rápido] Criar um segundo processo através da interface de programação da gateway de borda da série EG

Requirements Overview

Este capítulo implementa principalmente um processo: O EG8200 recolhe dados do Siemens S7-200 Smart, reúne-os no formato JSON e comunica-os à plataforma de aplicação através de MQTT; ao mesmo tempo, pode receber comandos de controlo emitidos pela plataforma de aplicação para realizar a comutação remota. Para implementar este processo, é necessário preparar antecipadamente os seguintes materiais:

 

  1. A porta IP e a tabela de pontos do PLC a recolher, por exemplo:

PLC

S7-200 Smart

IP

192.168.0.24/102

Tabela de pontos (DB1)

endereço

tipo de dados

Atributos

nome

V0.0

Booleano

somente leitura

Estado de arranque e paragem do motor n.º 1

V0.1

Booleano

somente leitura

Estado de arranque e paragem do motor n.º 2

V0.2

Booleano

somente leitura

Estado de arranque e paragem do motor n.º 3

V0.3

Booleano

somente leitura

Estado de arranque e paragem do motor n.º 4

V0.4

Booleano

Ler e escrever

Controlo de arranque e paragem do motor n.º 1

V0.5

Booleano

Ler e escrever

Controlo de arranque e paragem do motor n.º 2

V0.6

Booleano

Ler e escrever

Controlo de arranque e paragem do motor n.º 3

V0.7

Booleano

Ler e escrever

Controlo de arranque e paragem do motor n.º 4

VD100

Sem sinal16

somente leitura

Tensão (V)

VD200

Sem sinal16

somente leitura

Corrente (A)

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

Ao efetuar um processo, a lógica básica é para efetuar o processo com base na tendência dos dados. Após análise, pode concluir-se que esta procura se divide principalmente em duas partes: ligação ascendente de dados e ligação descendente de dados. Entre elas, as principais tarefas da ligação ascendente de dados incluem:

    1. Ler os dados do PLC através do protocolo S7, e os dados obtidos são armazenados na memória ( S7 Node)
    2. Formatar dados de acordo com o formato JSON ( Function Node)
    3. Estabelecer uma ligação MQTT e publicar no tópico especificado ( MQTT Publish Node)

As principais tarefas da ligação descendente de dados incluem:

    1. Subscrever tópicos MQTT e receber dados enviados pela plataforma ( MQTT Subscribe Node)
    2. Analisar os dados JSON recebidos e armazená-los na memória ( Function Node)
    3. Escrever no PLC no formato requerido por S7 ( S7 Node)

análise da procura

Requirements Realization

1. Recolher dados PLC

    1. Arrastar um S7 Read Node e um Debug Node da biblioteca de nós. Debug Node é utilizado para visualizar os dados PLC lidos para facilitar a localização do problema.

Recolher dados PLC

    1. Fazer duplo clique S7 Read Nodee preencher os parâmetros de configuração correspondentes de acordo com a síntese dos requisitos, como mostra a figura seguinte:
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, 

Se as definições estiverem corretas, será impresso um registo na janela de depuração, mostrando o conteúdo dos dados lidos.

Ler o conteúdo dos dados

    1. Por vezes, existem muitos pontos de dados PLC, e é complicado introduzi-los manualmente um a um. Os nós suportam a importação e exportação de pontos de dados:

Importação e exportação de nós

2. Formatação de dados

De acordo com a orientação no passo 2, pode ver os dados PLC lidos na janela de depuração da seguinte forma:

Formatação de dados

Porque a plataforma de aplicação estipulou que os dados devem ser comunicados em formato JSON. Em seguida, utilize 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 })/*duas casas decimais*/jsonArray.push({ "flag": "current", " value": msg.payload.current / 100 })/*duas casas decimais*/let data = {}data.sensorDatas = jsonArraymsg.payload = JSON.stringify(data)return msg 

Copie o código acima e cole-o no nó da função. Pode ver o efeito após a implementação:

Formatação de dados

Pode ver-se que os dados PLC lidos foram convertidos no formato JSON final de acordo com os requisitos e que os dados foram calculados até um certo ponto (duas casas decimais). 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.

Ler o conteúdo dos dados

3. Comunicar dados através de MQTT

Arrastar para um 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. Pode ver-se que, depois de os dados serem comunicados com êxito, a plataforma da aplicação apresenta um ecrã verde para indicar que o dispositivo está online e que os dados estão normais:

Comunicar dados via MQTT

Neste ponto, a comunicação de dados foi concluída e pode ser realizada em alguns passos simples: recolher dados PLC e comunicá-los num formato JSON personalizado.

4. Receber dados via MQTT

Arrastar para um MQTT Subscribe Node. Nota: MQTT Publish Node e MQTT Subscribe Nodepodem partilhar uma ligação MQTT. Se for utilizada a mesma ligação mas um tópico diferente, arraste o nó e selecione a ligação configurada. If you choose to add a new MQTT-broker node, it means creating a new MQTT connection.

Receber dados via MQTT

Selecionar um nó de depuração e clicar no botão de controlo na plataforma. Pode ver as instruções emitidas na janela de depuração:

Nó de depuração

5. Data analysis

De acordo com o documento de ajuda do 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:

análise de dados

Por conseguinte, ao analisar os dados, os dados enviados pela plataforma de aplicação têm de ser convertidos em a message carrying two variables carga útil e variável passed to S7 Write Node. O código do nó de função é o seguinte:

  let cmdDate = msg.payloadmsg.variable = cmdDate.sensorDatas[0].flagmsg.payload = cmdDate.sensorDatas[0].switcher == 1 ? true : falsereturn msg 

Copie o código acima, cole-o no nó de função e defina o nó de depuração para emitir a mensagem original. Pode ver o conteúdo impresso da seguinte forma:

S7 escrever nó de dados

Pode ver-se que os dados foram convertidos para o formato requerido pelo nó de dados de escrita S7.

DTU/Edge Gateway/Plataforma IoT/Módulo Gateway

6. Write to PLC

Arrastar umS7 Write Node, connect Function Compute Node, operate the switch on the application platform, and see the demonstration effect:

Escrever no PLC

Resumir

Este capítulo introduz um processo relativamente complexo, com o objetivo de descrever as capacidades do gateway. Por conseguinte, não optimiza a segurança, a estabilidade, a flexibilidade, etc. do programa. Ao compreender este processo, creio que já está familiarizado com a programação visual da porta de entrada. De seguida, aprenda em profundidade a utilização das funções de cada nó. Ao dominá-las, terá mais opções e possibilidades para criar processos mais complexos!

Código fonte

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": "Data Formatting", "func": "let jsonArray = []nnjsonArray.push({"flag"": ""em1Status""