- Введение
- Позиционирование системы
- Поддерживаемые устройства
- Начало работы
- Установка Node.js и Node-RED
- Установка пользовательских узлов на Node-RED
- Настройка параметров InfluxDB
- Настройка Modbus-сервера
- Создание потока сбора данных
- Создание потока хранения данных
- Заключение
- Дополнительная информация
- Настройки прокси-сервера npm
- Ссылки
Введение
В предыдущей статье мы узнали, как установить связь Modbus с помощью Python и хранить данные в InfluxDB.
Это последняя статья из трех частей цикла, в которой мы рассмотрим, как установить связь Modbus с помощью Node-RED и хранить данные в InfluxDB. Поскольку Node-RED содержит редактор на основе потока, он позволяет с помощью визуального программирования легко подключать и настраивать различные узлы для установления связи Modbus.
Позиционирование системы
На следующем рисунке показана настройка, необходимая для установления Modbus-соединения с e-RT3 Plus.
Поток включает в себя 2 события:
-
Сбор данных
Пограничное устройство собирает данные с внешнего устройства по протоколу Modbus TCP с помощью Node-RED.
-
Хранение данных
Пограничное устройство сохраняет собранные данные в InfluxDB.
Поддерживаемые устройства
Этот пример может быть выполнен на следующих устройствах:
- e-RT3 Plus F3RP70-2L1 (Ubuntu 18.04 32-bit)
- Raspberry Pi 4 Model B (Ubuntu Server 20.04 32-bit)
На этих устройствах работает пакет архитектуры armhf
.
Начало работы
Чтобы начать работу, необходимо выполнить следующие шаги для получения и хранения данных в устройстве Edge по протоколу Modbus TCP.
- Установка Node.js и Node-RED
- Установка пользовательских узлов на Node-RED
- Настройка параметров InfluxDB
- Настройка сервера Modbus
- Создание потока сбора данных
- Создание потока хранения данных
Установка Node.js и Node-RED
Примечание: Если устройство Edge находится в прокси-среде, настройка параметров прокси для Linux и npm является обязательной.
Выполните следующие шаги для установки Node.js и Node-RED на Edge-устройство:
-
Для установки Node.js выполните следующую команду.
curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash - sudo apt-get install -y nodejs
-
Вы можете проверить установку Node.js с помощью следующей команды.
node -v
Если Node.js установлен успешно, то будет показана версия Node, как показано ниже.
v14.17.1
-
Выполните следующую команду и установите Node-RED.
sudo npm install -g --unsafe-perm node-red
Если команда выполнена успешно, будет показан следующий результат.
+ node-red@2.2.0 added 286 packages from 375 contributors in 142.031s
Установка пользовательских узлов на Node-RED
Для связи по протоколу Modbus TCP на Node-RED должны быть установлены следующие пользовательские узлы:
node-red-contrib-influxdb
node-red-contrib-modbus
Выполните следующие шаги для установки пользовательских узлов на Node-RED:
-
Выполните следующую команду в устройстве Edge и запустите Node-RED.
node-red
-
После запуска Node-RED в адресной строке интернет-браузера укажите следующий URL,
<IP_ADDRESS_OF_EDGE_DEVICE>:1880
и откройте Node-RED. -
В правом верхнем углу экрана нажмите на значок Меню и выберите Управление палитрой.
Появится диалоговое окно Настройки пользователя.
-
На вкладке Установка в поле поиска введите
node-red-contrib-influxdb
.Появятся результаты поиска.
-
Нажмите Установить, чтобы установить соответствующий узел.
Примечание: Выполните шаги 4-5 для установки узла
node-red-contrib-modbus
.
Настройка параметров InfluxDB
Для установки InfluxDB вы можете выполнить шаги, описанные в этой статье. (Установка пакета Python не требуется.) Затем выполните шаги, описанные в этом разделе, чтобы создать базу данных с именем noderedDB
.
Настройка Modbus-сервера
В этой статье мы запустим Modbus-сервер на компьютере, чтобы смоделировать устройство, например, датчик, который отправляет данные на устройство Edge. Для этого запустите программу, описанную в этой ссылке.
Создание потока сбора данных
Давайте создадим поток для сбора данных с сервера Modbus каждые 5 секунд. В этом примере мы собираем два значения данных временного ряда, хранящихся в регистре удержания сервера.
Выполните следующие шаги для создания потока сбора данных:
- Из левого меню перетащите узел Modbus-Read и дважды щелкните его, чтобы настроить его свойства.
-
Настройте свойства узла следующим образом.
Имя настройки Значение настройки Имя читать_регистр_удержания FC FC 3: Чтение регистров удержания Адрес 2 Количество 2 Скорость опроса 5 секунд -
Рядом с полем Сервер нажмите значок Редактировать.
-
Настройте свойства сервера Modbus следующим образом, а затем нажмите Добавить.
Имя настройки Значение настройки Имя serverPC Тип TCP Хост IP-адрес компьютера, на котором запущен сервер Modbus Порт 5020 -
После настройки параметров нажмите кнопку Готово.
-
Чтобы проверить успешность сбора данных, выполните следующие действия:
- Перетащите отладочный узел.
- Подключите узел отладки к верхнему соединению read_holding_register, а затем нажмите Развернуть.
- Если собранные данные отображаются, как показано на рисунке ниже, значит, процесс прошел успешно.
- Перетащите отладочный узел.
Создание потока хранения данных
Теперь, когда мы можем собирать данные через сервер Modbus, мы переходим к настройке потока хранения данных для хранения собранных данных в InfluxDB.
Выполните следующие шаги для создания потока хранения данных:
- Из левого меню перетащите узел функции и дважды щелкните его, чтобы настроить его свойства.
-
Выберите вкладку On Message и напишите следующую программу для обработки массива собранных данных в стандартный формат JSON.
const data = msg.payload payload = { "holding_register_2": data[0], "holding_register_3": data[1] } msg["payload"] = payload return msg;
-
Нажмите кнопку Готово.
-
Перетащите узел influxdb out для хранения данных в InfluxDB и дважды щелкните его, чтобы настроить его параметры.
-
Настройте свойства узла следующим образом.
Имя настройки Значение настройки Имя To_noderedDB Измерение nodered_measurement -
Рядом с полем Сервер нажмите значок Редактировать.
-
Настройте свойства сервера InfluxDB следующим образом, а затем нажмите Добавить.
Имя настройки Значение настройки Имя noderedDB Хост localhost Порт 8086 База данных noderedDB -
После настройки параметров и нажмите кнопку Done.
-
Подключите узлы, как показано ниже, и нажмите Развернуть.
-
Подождав некоторое время, выполните следующие команды на устройстве Edge и проверьте содержимое базы данных:
-
Запустите InfluxDB.
influx
При успешном запуске InfluxDB отобразится следующий результат.
Connected to http://localhost:8086 version 1.8.10 InfluxDB shell version: 1.8.10
-
Выполните следующую команду для выбора базы данных
noderedDB
.> USE noderedDB
При успешном выборе базы данных отобразится следующий результат.
Using database noderedDB
-
Выполните следующую команду для просмотра сохраненных данных.
> SELECT * FROM "nodered_measurement" LIMIT 3
Если данные сохранены так, как показано ниже, хранение проходит успешно.
name: nodered_measurement time holding_register_2 holding_register_3 ---- ------------------ ------------------ 1643782593448526154 93 24 1643782598683263519 99 22 1643782603803351763 100 20
-
Заключение
Как было показано в статье, можно создавать визуальные приложения данных с минимальным количеством программ. В сочетании с Node-RED и InfluxDB, e-RT3 Plus может собирать и хранить данные из внешних источников данных с помощью связи Modbus TCP.
Подробнее о визуализации собранных данных на Grafana вы можете узнать из нашей предыдущей статьи.
Дополнительная информация
Настройки прокси-сервера npm
Если устройство находится в среде прокси, выполните следующую команду для настройки параметров прокси npm.
sudo npm -g config set proxy http://{username}:{password}@{proxy-server-url}:{port}
sudo npm -g config set https-proxy https://{username}:{password}@{proxy-server-url}:{port}
Ссылки
- Платформа искусственного интеллекта для промышленности | Yokogawa Electric Corporation
- distributions/README.md на master — nodesource/distributions — GitHub
- Запуск Node-RED локально