Оглавление
ToggleRequirements Overview
В этой главе в основном реализуется процесс: EG8200 собирает данные с Siemens S7-200 Smart, собирает их в формат JSON и передает платформе приложений через MQTT; в то же время он может принимать команды управления, выданные платформой приложений, для осуществления удаленного переключения. Чтобы осуществить этот процесс, необходимо заранее подготовить следующие материалы:
-
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) |
- 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
При создании процесса основная логика такова чтобы процесс был основан на тенденции изменения данных. После анализа можно сделать вывод, что этот спрос в основном делится на две части: восходящие и нисходящие каналы передачи данных. Среди них основные задачи восходящей линии передачи данных:
-
- Считывание данных ПЛК по протоколу S7, полученные данные сохраняются в памяти (
S7 Node) - Форматируйте данные в соответствии с форматом JSON (
Function Node) - Установите MQTT-соединение и опубликуйте в указанной теме (
MQTT Publish Node)
- Считывание данных ПЛК по протоколу S7, полученные данные сохраняются в памяти (
Основные задачи нисходящей передачи данных включают:
-
- Подпишитесь на темы MQTT и получайте данные, отправляемые платформой (
MQTT Subscribe Node) - Разберите полученные данные JSON и сохраните их в памяти (
Function Node) - Запись в ПЛК в формате, требуемом S7 (
S7 Node)
- Подпишитесь на темы MQTT и получайте данные, отправляемые платформой (

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

-
- Дважды щелкните .
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,
Если настройки верны, в окне отладки будет выведен журнал, показывающий содержание считанных данных.

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

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

На этом этапе составление отчета о данных завершено и может быть выполнено в несколько простых шагов: сбор данных ПЛК и составление отчета в пользовательском формате 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.

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

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.

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