Поиск

[Краткое руководство] Создание второго процесса через интерфейс программирования пограничного шлюза серии EG

Requirements Overview

В этой главе в основном реализуется процесс: EG8200 собирает данные с Siemens S7-200 Smart, собирает их в формат JSON и передает платформе приложений через MQTT; в то же время он может принимать команды управления, выданные платформой приложений, для осуществления удаленного переключения. Чтобы осуществить этот процесс, необходимо заранее подготовить следующие материалы:

 

  1. IP-порт и таблица точек ПЛК, которые необходимо собрать, например:

ПЛК

S7-200 Smart

IP

192.168.0.24/102

Таблица точек (DB1)

адрес

тип данных

Атрибуты

имя

V0.0

Булево

только чтение

Состояние запуска и остановки двигателя № 1

V0.1

Булево

только чтение

Состояние запуска и остановки двигателя № 2

V0.2

Булево

только чтение

Состояние запуска и остановки двигателя № 3

V0.3

Булево

только чтение

Состояние запуска и остановки двигателя № 4

V0.4

Булево

Чтение и запись

Управление запуском и остановкой двигателя № 1

V0.5

Булево

Чтение и запись

Управление запуском и остановкой двигателя № 2

V0.6

Булево

Чтение и запись

Управление запуском и остановкой двигателя № 3

V0.7

Булево

Чтение и запись

Управление запуском и остановкой двигателя № 4

VD100

Беззнаковый16

только чтение

Напряжение (В)

VD200

Беззнаковый16

только чтение

Ток (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

При создании процесса основная логика такова чтобы процесс был основан на тенденции изменения данных. После анализа можно сделать вывод, что этот спрос в основном делится на две части: восходящие и нисходящие каналы передачи данных. Среди них основные задачи восходящей линии передачи данных:

    1. Считывание данных ПЛК по протоколу S7, полученные данные сохраняются в памяти ( S7 Node)
    2. Форматируйте данные в соответствии с форматом JSON ( Function Node)
    3. Установите MQTT-соединение и опубликуйте в указанной теме ( MQTT Publish Node)

Основные задачи нисходящей передачи данных включают:

    1. Подпишитесь на темы MQTT и получайте данные, отправляемые платформой ( MQTT Subscribe Node)
    2. Разберите полученные данные JSON и сохраните их в памяти ( Function Node)
    3. Запись в ПЛК в формате, требуемом S7 ( S7 Node)

анализ спроса

Requirements Realization

1. Сбор данных ПЛК

    1. Перетащите S7 Read Node и Debug Node из библиотеки узлов. Debug Node используется для просмотра считанных данных ПЛК, чтобы облегчить поиск проблемы.

Сбор данных ПЛК

    1. Дважды щелкните . S7 Read Nodeи заполните соответствующие параметры настройки в соответствии с обзором требований, как показано на следующем рисунке:
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, 

Если настройки верны, в окне отладки будет выведен журнал, показывающий содержание считанных данных.

Чтение содержимого данных

    1. Иногда имеется множество точек данных ПЛК, и вводить их вручную по одной очень обременительно. Узлы поддерживают импорт и экспорт точек данных:

Импорт и экспорт узлов

2. Форматирование данных

В соответствии с указаниями шага 2 в окне отладки можно увидеть считанные данные ПЛК следующим образом:

Форматирование данных

Поскольку платформа приложения предусматривает, что данные должны быть представлены в формате JSON. Далее используйте 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 })/*два десятичных знака*/jsonArray.push({ "flag": "current", " value": msg.payload.current / 100 })/*два десятичных знака*/let data = {}data.sensorDatas = jsonArraymsg.payload = JSON.stringify(data)return msg 

Скопируйте приведенный выше код и вставьте его в узел функции. Вы можете увидеть эффект после развертывания:

Форматирование данных

Видно, что считанные данные PLC были преобразованы в конечный формат JSON в соответствии с требованиями, и данные были вычислены с определенной степенью точности (два знака после запятой). 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. Предоставление данных через MQTT

Перетащите 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. Видно, что после успешной передачи данных платформа приложения отображается зеленым цветом, указывая на то, что устройство находится в режиме онлайн и данные поступают нормально:

Предоставление данных через MQTT

На этом этапе составление отчета о данных завершено и может быть выполнено в несколько простых шагов: сбор данных ПЛК и составление отчета в пользовательском формате JSON.

4. Получение данных через MQTT

Перетащите MQTT Subscribe Node. Примечание: MQTT Publish Node и MQTT Subscribe Nodeмогут совместно использовать MQTT-соединение. Если используется одно и то же соединение, но для другой темы, перетащите узел и выберите настроенное соединение. If you choose to add a new MQTT-broker node, it means creating a new MQTT connection.

Получение данных через MQTT

Выберите узел отладки и нажмите кнопку управления на платформе. В окне отладки можно увидеть выданные инструкции:

Узел отладки

5. Data analysis

Согласно справочный документ 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:

анализ данных

Поэтому при разборе данных данные, отправленные платформой приложения, должны быть преобразованы в a message carrying two variables полезная нагрузка и переменная passed to S7 Write Node. Код функционального узла выглядит следующим образом:

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

Скопируйте приведенный выше код, вставьте его в узел функции и установите узел отладки для вывода исходного сообщения. Вы можете увидеть выведенное содержимое следующим образом:

S7 узел записи данных

Вы видите, что данные были преобразованы в формат, требуемый узлом записи данных S7.

Шлюз DTU/Edge Gateway/IoT-платформа/шлюзовой модуль

6. Write to ПЛК

ПеретащитеS7 Write Node, connect Function Compute Node, operate the switch on the application platform, and see the demonstration effect:

Запись в ПЛК

Подведите итоги

В этой главе представлен относительно сложный процесс, целью которого является описание возможностей шлюза. Поэтому она не оптимизирует безопасность, стабильность, гибкость и т. д. программы. Поняв этот процесс, вы, я полагаю, уже знакомы с визуальным программированием шлюза. Далее подробно изучите использование функций каждого узла. Овладев ими, вы получите больше выбора и возможностей для создания более сложных процессов!

Исходный код

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": "Форматирование данных", "func": "let jsonArray = []nnjsonArray.push({"flag": ""em1Status""