Animação de pairar

[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

Resumo dos requisitos

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. Parâmetros relacionados com a comunicação MQTT e requisitos de formato de dados JSON, tais como:

  url:1883.dtuip.com:1883clientID:820000003058164Fusername:19381903226password:ZHZK19381903226Subscribe:820000003058164F/ Publish:820000003058164FJSON 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 } ]}

análise da procura

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节点)

    2. Formatar dados de acordo com o formato JSON ( 函数节点)

    3. Estabelecer uma ligação MQTT e publicar no tópico especificado ( MQTT发布节点)

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

    1. Subscrever tópicos MQTT e receber dados enviados pela plataforma ( MQTT订阅节点)

    2. Analisar os dados JSON recebidos e armazená-los na memória ( 函数节点)

    3. Escrever no PLC no formato requerido por S7 ( S7节点)

análise da procura

Realização de requisitos

1. Recolher dados PLC

    1. Arrastar um S7读数据节点e um 调试节点da biblioteca de nós . 调试节点é utilizado para visualizar os dados PLC lidos para facilitar a localização do problema.

Recolher dados PLC

    1. Fazer duplo clique S7读数据节点e preencher os parâmetros de configuração correspondentes de acordo com a síntese dos requisitos, como mostra a figura seguinte:

 IP: Porta IP do PLC: 102 (porta padrão de comunicação do protocolo S7 102) Modo: TASP (S7-200 Smart seleciona TASP, outros modelos selecionam Rack/Slot) TSAP local: 1002 (valor fixo) TSAP remoto: 0301 (valor fixo) ) Período de recolha: 1000ms (predefinição 1000ms, personalizável) Período de timeout: 2000ms (predefinição 2000ms, personalizável) Configuração do ponto de dados (a relação correspondente pode ser encontrada de acordo com o documento de ajuda) 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 函数节点Código Javascript para formatar os dados. O código é o seguinte:

  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).Esta é apenas a ponta do icebergue dos nós de função. Como suporta a programação em linguagem Javascript, quase todas as funções que possa imaginar podem ser implementadas aqui.

Ler o conteúdo dos dados

3. Comunicar dados através de MQTT

Arrastar para um MQTT发布节点Configure-o de acordo com os prompts, preencha as informações relacionadas com a ligação MQTT e o tópico de publicação MQTT (consulte a síntese de requisitos para obter detalhes) e pode implementar o relatório de dados. 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订阅节点. Nota: MQTT发布节点e MQTT订阅节点podem 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.Se optar por adicionar um novo nó mqtt-broker, isso significa criar uma nova ligação MQTT.

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.Dados análise

De acordo com o documento de ajuda do S7写数据Para escrever dados no PLC, os dados que precisam de ser passados têm dois parâmetros, como se segue:

análise de dados

Por conseguinte, ao analisar os dados, os dados enviados pela plataforma de aplicação têm de ser convertidos em uma mensagem com duas variáveis, carga útil e variável , e passou para S7写数据节点. 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:

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.Escrever para PLC

Arrastar um S7写数据nó, ligar 函数计算nó, acionar o interrutor na plataforma de aplicação e ver o efeito de demonstração:

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

Todos os processos suportam a importação e exportação em formato json, facilitando a partilha de processos concluídos com outros.O ficheiro json do processo deste capítulo é o seguinte. Depois de copiar, selecione importar e colar no canto superior direito da barra de menus. O mesmo se aplica à exportação.

  [{"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""

Artigos recentes

Contactar-nos