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

Requirements overview

This chapter mainly implements a process: EG8200 collects data from Siemens S7-200 Smart, assembles it into JSON format, and reports it to the application platform through MQTT; at the same time, it can receive control commands issued by the application platform to realize remote switching. To implement this process, the following materials need to be prepared in advance:

  1. The IP port and point table of the PLC to be collected, for example:

PLC

S7-200 Smart

IP

192.168.0.24/102

Point table (DB1)

address

type of data

Attributes

name

V0.0

Boolean

read only

No. 1 motor start and stop status

V0.1

Boolean

read only

No. 2 motor start and stop status

V0.2

Boolean

read only

No. 3 motor start and stop status

V0.3

Boolean

read only

No. 4 motor start and stop status

V0.4

Boolean

Read and write

No. 1 motor start and stop control

V0.5

Boolean

Read and write

No. 2 motor start and stop control

V0.6

Boolean

Read and write

No. 3 motor start and stop control

V0.7

Boolean

Read and write

No. 4 motor start and stop control

VD100

Unsigned16

read only

Voltage (V)

VD200

Unsigned16

read only

Current (A)

  1. MQTT communication related parameters and JSON data format requirements, such as:

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

When making a process, the basic logic is to make the process based on the data trend . After analysis, it can be concluded that this demand is mainly divided into two parts: data uplink and data downlink. Among them, the main tasks of data uplink include:

    1. Read PLC data through the S7 protocol, and the obtained data is stored in the memory ( S7节点)

    2. Format data according to JSON format ( 函数节点)

    3. Establish an MQTT connection and publish to the specified topic ( MQTT发布节点)

The main tasks of data downlink include:

    1. Subscribe to MQTT topics and receive data sent by the platform ( MQTT订阅节点)

    2. Parse the received JSON data and store it in memory ( 函数节点)

    3. Запись в ПЛК в формате, требуемом S7 ( S7节点)

demand analysis

Реализация требований

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

    1. Перетащите S7读数据节点и 调试节点из библиотеки узлов . 调试节点используется для просмотра считанных данных ПЛК, чтобы облегчить поиск проблемы.

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

    1. Дважды щелкните . S7读数据节点и заполните соответствующие параметры настройки в соответствии с обзором требований, как показано на следующем рисунке:

 IP: IP-порт ПЛК: 102 (порт 102 по умолчанию для связи по протоколу S7) Режим: TASP (S7-200 Smart выбирает TASP, другие модели выбирают Rack/Slot) Локальный TSAP: 1002 (фиксированное значение) Удаленный TSAP: 0301 (фиксированное значение) ) Период сбора: 1000 мс (по умолчанию 1000 мс, настраивается) Период тайм-аута: 2000 мс (по умолчанию 2000 мс, настраивается) Конфигурация точки данных (соответствующие отношения можно найти в справочном документе) 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, 

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

Read data content

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

Node import and export

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

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

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

Поскольку платформа приложения предусматривает, что данные должны быть представлены в формате JSON. Далее используйте 函数节点Javascript-код для форматирования данных. Код выглядит следующим образом:

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

Read data content

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

Перетащите MQTT发布节点Настройте его в соответствии с подсказками, заполните информацию о соединении MQTT и теме публикации MQTT (подробнее см. обзор требований), и вы сможете реализовать отчетность по данным. Видно, что после успешной передачи данных платформа приложения отображается зеленым цветом, указывая на то, что устройство находится в режиме онлайн и данные поступают нормально:

Report data via MQTT

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

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

Перетащите MQTT订阅节点. Примечание: MQTT发布节点и MQTT订阅节点могут совместно использовать MQTT-соединение. Если используется одно и то же соединение, но для другой темы, перетащите узел и выберите настроенное соединение.Если вы решили добавить новый узел mqtt-broker, это означает создание нового MQTT-соединения.

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

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

Debug node

5.Данные анализ

Согласно справочный документ S7写数据Узел, вы можете знать, что для записи данных в ПЛК, данные, которые должны быть переданы, содержат два параметра, как показано ниже:

data analysis

Поэтому при разборе данных данные, отправленные платформой приложения, должны быть преобразованы в сообщение, содержащее две переменные, payload и variable , и передается в S7写数据节点. Код функционального узла выглядит следующим образом:

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

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

S7 write data node

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

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

6.Писать к ПЛК

Перетащите S7写数据узел, соединить 函数计算узел, управляйте переключателем на платформе приложения и наблюдайте демонстрационный эффект:

Write to PLC

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

В этой главе представлен относительно сложный процесс, целью которого является описание возможностей шлюза. Поэтому она не оптимизирует безопасность, стабильность, гибкость и т. д. программы. Поняв этот процесс, вы, я полагаю, уже знакомы с визуальным программированием шлюза. Next, learn the function usage of each node in depth. Mastering them will provide you with more choices and possibilities for making more complex processes!

Source code

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

Свяжитесь с нами