Общение через Modbus TCP с Node-RED и хранение данных в InfluxDB


Введение

В предыдущей статье мы узнали, как установить связь Modbus с помощью Python и хранить данные в InfluxDB.
Это последняя статья из трех частей цикла, в которой мы рассмотрим, как установить связь Modbus с помощью Node-RED и хранить данные в InfluxDB. Поскольку Node-RED содержит редактор на основе потока, он позволяет с помощью визуального программирования легко подключать и настраивать различные узлы для установления связи Modbus.

Позиционирование системы

На следующем рисунке показана настройка, необходимая для установления Modbus-соединения с e-RT3 Plus.

Поток включает в себя 2 события:

  1. Сбор данных

    Пограничное устройство собирает данные с внешнего устройства по протоколу Modbus TCP с помощью Node-RED.

  2. Хранение данных

    Пограничное устройство сохраняет собранные данные в 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.

  1. Установка Node.js и Node-RED
  2. Установка пользовательских узлов на Node-RED
  3. Настройка параметров InfluxDB
  4. Настройка сервера Modbus
  5. Создание потока сбора данных
  6. Создание потока хранения данных

Установка Node.js и Node-RED

Примечание: Если устройство Edge находится в прокси-среде, настройка параметров прокси для Linux и npm является обязательной.

Выполните следующие шаги для установки Node.js и Node-RED на Edge-устройство:

  1. Для установки Node.js выполните следующую команду.

    curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash - 
    sudo apt-get install -y nodejs
    
  2. Вы можете проверить установку Node.js с помощью следующей команды.

    node -v
    

    Если Node.js установлен успешно, то будет показана версия Node, как показано ниже.

    v14.17.1
    
  3. Выполните следующую команду и установите 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:

  1. Выполните следующую команду в устройстве Edge и запустите Node-RED.

    node-red
    
  2. После запуска Node-RED в адресной строке интернет-браузера укажите следующий URL, <IP_ADDRESS_OF_EDGE_DEVICE>:1880 и откройте Node-RED.

  3. В правом верхнем углу экрана нажмите на значок Меню и выберите Управление палитрой.

    Появится диалоговое окно Настройки пользователя.

  4. На вкладке Установка в поле поиска введите node-red-contrib-influxdb.

    Появятся результаты поиска.

  5. Нажмите Установить, чтобы установить соответствующий узел.

    Примечание: Выполните шаги 4-5 для установки узла node-red-contrib-modbus.

Настройка параметров InfluxDB

Для установки InfluxDB вы можете выполнить шаги, описанные в этой статье. (Установка пакета Python не требуется.) Затем выполните шаги, описанные в этом разделе, чтобы создать базу данных с именем noderedDB.

Настройка Modbus-сервера

В этой статье мы запустим Modbus-сервер на компьютере, чтобы смоделировать устройство, например, датчик, который отправляет данные на устройство Edge. Для этого запустите программу, описанную в этой ссылке.

Создание потока сбора данных

Давайте создадим поток для сбора данных с сервера Modbus каждые 5 секунд. В этом примере мы собираем два значения данных временного ряда, хранящихся в регистре удержания сервера.

Выполните следующие шаги для создания потока сбора данных:

  1. Из левого меню перетащите узел Modbus-Read и дважды щелкните его, чтобы настроить его свойства.
  2. Настройте свойства узла следующим образом.

    Имя настройки Значение настройки
    Имя читать_регистр_удержания
    FC FC 3: Чтение регистров удержания
    Адрес 2
    Количество 2
    Скорость опроса 5 секунд
  3. Рядом с полем Сервер нажмите значок Редактировать.

  4. Настройте свойства сервера Modbus следующим образом, а затем нажмите Добавить.

    Имя настройки Значение настройки
    Имя serverPC
    Тип TCP
    Хост IP-адрес компьютера, на котором запущен сервер Modbus
    Порт 5020
  5. После настройки параметров нажмите кнопку Готово.

  6. Чтобы проверить успешность сбора данных, выполните следующие действия:

    1. Перетащите отладочный узел.
    2. Подключите узел отладки к верхнему соединению read_holding_register, а затем нажмите Развернуть.
    3. Если собранные данные отображаются, как показано на рисунке ниже, значит, процесс прошел успешно.

Создание потока хранения данных

Теперь, когда мы можем собирать данные через сервер Modbus, мы переходим к настройке потока хранения данных для хранения собранных данных в InfluxDB.

Выполните следующие шаги для создания потока хранения данных:

  1. Из левого меню перетащите узел функции и дважды щелкните его, чтобы настроить его свойства.
  2. Выберите вкладку On Message и напишите следующую программу для обработки массива собранных данных в стандартный формат JSON.

    const data = msg.payload
    payload = {
    "holding_register_2": data[0],
    "holding_register_3": data[1]
    }
    msg["payload"] = payload
    return msg;
    
  3. Нажмите кнопку Готово.

  4. Перетащите узел influxdb out для хранения данных в InfluxDB и дважды щелкните его, чтобы настроить его параметры.

  5. Настройте свойства узла следующим образом.

    Имя настройки Значение настройки
    Имя To_noderedDB
    Измерение nodered_measurement
  6. Рядом с полем Сервер нажмите значок Редактировать.

  7. Настройте свойства сервера InfluxDB следующим образом, а затем нажмите Добавить.

    Имя настройки Значение настройки
    Имя noderedDB
    Хост localhost
    Порт 8086
    База данных noderedDB
  8. После настройки параметров и нажмите кнопку Done.

  9. Подключите узлы, как показано ниже, и нажмите Развернуть.

  10. Подождав некоторое время, выполните следующие команды на устройстве Edge и проверьте содержимое базы данных:

    1. Запустите InfluxDB.

      influx 
      

      При успешном запуске InfluxDB отобразится следующий результат.

      Connected to http://localhost:8086 version 1.8.10
      InfluxDB shell version: 1.8.10
      
    2. Выполните следующую команду для выбора базы данных noderedDB.

      > USE noderedDB
      

      При успешном выборе базы данных отобразится следующий результат.

      Using database noderedDB
      
    3. Выполните следующую команду для просмотра сохраненных данных.

      > 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}
Войти в полноэкранный режим Выйти из полноэкранного режима

Ссылки

  1. Платформа искусственного интеллекта для промышленности | Yokogawa Electric Corporation
  2. distributions/README.md на master — nodesource/distributions — GitHub
  3. Запуск Node-RED локально

Оцените статью
devanswers.ru
Добавить комментарий