Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial Internet of Things >> Интернет вещей

Бесшовная интеграция Modbus-сенсоров с EdgeX Foundry на Raspberry Pi

Бесшовная интеграция Modbus-сенсоров с EdgeX Foundry на Raspberry Pi

Развертывания промышленного Интернета вещей (IIoT) все чаще полагаются на пограничные шлюзы для соединения Modbus-периферии с облачной аналитикой. Создание проприетарного шлюза может быть дорого и медленно. Это исследование демонстрирует, как фреймворк с открытым исходным кодом — EdgeX Foundry — может быть развернут на Raspberry Pi для подключения Modbus-сенсора температуры и влажности, передачи данных в облако и запуска актуаторов в реальном времени с минимальными усилиями.

Почему Modbus и EdgeX?

Modbus — открытый, легковесный протокол, работающий над недорогими линиями RS-485. Он использует простые регистры (16-битные беззнаковые целые) для аналоговых значений и катушки для бинарных состояний, что делает его идеальным для промышленных устройств. EdgeX Foundry, открытое промежуточное ПО для периферии, выступает мостом между физическими сенсорами и IT-системами, предоставляя управление устройствами, преобразование данных и облачную связь «из коробки».

Аппаратный стек

Рис. 1: Бесшовная интеграция Modbus-сенсоров с EdgeX Foundry на Raspberry Pi Рис. 1. EdgeX Foundry — открытое промежуточное ПО для периферии

Рис. 2: Бесшовная интеграция Modbus-сенсоров с EdgeX Foundry на Raspberry Pi Рис. 2. Блок-схема высокого уровня развертывания EdgeX

Пошаговая интеграция

  1. Настройка Raspberry Pi
    • Установка Ubuntu 20.04 LTS с Docker и docker-compose.
    • Клонирование репозитория EdgeX Foundry и запуск стека через docker-compose.
  2. Симуляция Modbus-устройства
    • Использование ModbusPal (GPL) для эмуляции до 247 Modbus-ведомых.
    • Настройка ведомого с хранилищными регистрами для температуры (адрес 2) и влажности (адрес 3). Каждый регистр отображается в 16-битное целое, которое будет масштабировано в °C и %RH.
    • Запуск ModbusPal через TCP или последовательный порт (USB-RS485) для проверки связи.
  3. Загрузка профиля устройства

    Отправка POST запроса на https://localhost:48081/api/v1/deviceprofile/uploadfile с YAML-файлом, содержащим профиль (см. ниже). Ответ возвращает уникальный ID профиля.

  4. Регистрация устройства

    Отправка следующего JSON на https://localhost:48081/api/v1/device для создания записи сенсора. Раздел protocols.modbus-rtu указывает на /dev/ttyUSB0 на скорости 9600 бод.

    { "name": "TemperatureHumiditySensor", "description": "Industrial Grade Temperature & Humidity Transmitter SHT20", "adminState": "UNLOCKED", "operatingState": "ENABLED", "protocols": { "modbus-rtu": { "Address": "/dev/ttyUSB0", "BaudRate": "9600", "DataBits": "8", "StopBits": "1", "Parity": "N", "UnitID": "1" } }, "labels": ["TemperatureHumiditySensor","modbusRTU"], "service": {"name": "edgex-device-modbus"}, "profile": {"name": "TemperatureHumiditySensor"}, "autoEvents": [ {"frequency": "5s", "onChange": false, "resource": "TemperatureDegC"}, {"frequency": "5s", "onChange": false, "resource": "HumidityPercentRH"} ] }
  5. Проверка потока данных
    • Устройство-сервис EdgeX опрашивает данные каждые 5 сек и записывает в основной сервис, который хранит их в Redis.
    • Приложения-сервисы передают данные в IBM Cloud (или любое другое облако).
    • Примеры записей логов показывают пакеты Modbus запрос/ответ.
  6. Управление светодиодами через движок правил Kuiper
    • Определение правил: если температура > 30 °C включить красный светодиод; если < 30 °C выключить; аналогично для синего светодиода при 28 °C.
    • Kuiper отправляет команды в EdgeX core-command, который затем обновляет GPIO-устройство-сервис.
    • GPIO-выходы проверяются через /sys/class/gpio/gpio12/value и /sys/class/gpio/gpio14/value.

Ключевые фрагменты конфигурации

Профиль устройства (YAML)

name: TemperatureHumiditySensor
manufacturer: ROBOKITS
model: RKI-4879
labels:
  - SHT20
description: Industrial Grade Temperature & Humidity Transmitter SHT20 Sensor High Precision Monitoring Modbus RS485
deviceResources:
  - name: TemperatureDegC
    description: Room Temperature in Degrees Celsius.
    attributes: { primaryTable: INPUT_REGISTERS, startingAddress: 2, rawType: INT16 }
    properties:
      value: { type: Float32, readWrite: R, scale: 0.1, floatEncoding: eNotation }
      units: { type: String, readWrite: R, defaultValue: degrees celsius }
  - name: HumidityPercentRH
    description: Room Humidity in %RH.
    attributes: { primaryTable: INPUT_REGISTERS, startingAddress: 3, rawType: INT16 }
    properties:
      value: { type: Float32, readWrite: R, scale: 0.1, floatEncoding: eNotation }
      units: { type: String, readWrite: R, defaultValue: %RH }
deviceCommands:
  - name: TemperatureDegC
    get: [{ index: 1, operation: get, deviceResource: TemperatureDegC }]
  - name: HumidityPercentRH
    get: [{ index: 2, operation: get, deviceResource: HumidityPercentRH }]
coreCommands:
  - name: TemperatureDegC
    get:
      path: /api/v1/device/{deviceId}/TemperatureDegC
      responses:
        - code: 200
          description: Get the temperature in degrees C
          expectedValues: [TemperatureDegC]
  - name: HumidityPercentRH
    get:
      path: /api/v1/device/{deviceId}/HumidityPercentRH
      responses:
        - code: 200
          description: Get the humidity in %RH
          expectedValues: [HumidityPercentRH]

Конфигурация device-modbus TOML (фрагмент)

[DeviceList]
Name = "TemperatureHumiditySensor"
Profile = "TemperatureHumiditySensor"
Description = "Industrial Grade Temperature & Humidity Transmitter SHT20"
labels = ["TemperatureHumiditySensor","modbusRTU"]
[DeviceList.Protocols.modbus-rtu]
Address = "/dev/ttyUSB0"
BaudRate = 9600
DataBits = 8
StopBits = 1
Parity = "N"
UnitID = 1
[[DeviceList.AutoEvents]]
Frequency = "5s"
OnChange = false
Resource = "TemperatureDegC"
[[DeviceList.AutoEvents]]
Frequency = "5s"
OnChange = false
Resource = "HumidityPercentRH"

Результаты

Сквозной поток показывает данные о температуре и влажности в реальном времени, поступающие в IBM Cloud, запускающие изменения статуса светодиодов на основе правил, и демонстрирующие полные возможности EdgeX на недорогом Raspberry Pi.

Заключение

EdgeX Foundry обеспечивает быстрое развертывание Modbus-решений IIoT с минимальными затратами на разработку. Абстрагируя управление устройствами, хранение данных и облачную связь, он освобождает инженеров для фокуса на предметной логике и аналитике.

Аббревиатуры

АббревиатураРасшифровка
AOFAppend Only File
APIApplication Program Interface
AWSAmazon Web Services
BACnetBuilding Automation and Control Network
BLEBluetooth Low Energy
CURLClient Uniform Resource Locator
GPIOGeneral Purpose Input Output
HTTPHypertext Transfer Protocol
IBMInternational Business Machines
IIoTIndustrial Internet of Things
IoTInternet of Things
ITInformation Technology
LEDLight Emitting Diode
LTSLong Term Support
M2MMachine to Machine
MQTTMessage Queuing Telemetry Transport
RDBRedis Database
RedisREmote DIctionary Server
RESTRepresentational State Transfer
RS-485Recommended Standard – 485
SCADASupervisory Control and Data Acquisition
SQLStructured Query Language
TCP/IPTransmission Control Protocol/Internet Protocol

Интернет вещей

  1. Руководство новичка по терминологии Open Source
  2. Cisco представляет промышленные маршрутизаторы Catalyst 5G для бесшовного соединения корпоративных и периферийных…
  3. AT&T и Tech Mahindra запускают Acumos: открытую ИИ-платформу для быстрого развертывания
  4. Повышение производственного совершенства с Industry 4.0: подъем Quality 4.0
  5. Защита открытого ПО в IoT: смягчение программных рисков
  6. Подъем Индустрии 4.0: использование пограничной аналитики для более умного, быстрого производства
  7. IIC и OpenFog слияются для драйва инноваций в Edge Computing
  8. Open Source vs вендор-поддерживаемые инструменты разработки IoT: выбор правильного стека для предприятия
  9. Почему открытый исходный код движет инновациями на периферии — важная электронная книга
  10. Открытый исходный код питает рост IoT и периферийных вычислений