Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial Internet of Things >> Internet of Things-technologie

Naadloze Modbus-sensorintegratie met EdgeX Foundry op Raspberry Pi

Naadloze Modbus-sensorintegratie met EdgeX Foundry op Raspberry Pi

Industrial Internet of Things (IIoT) implementaties vertrouwen steeds meer op edge-gateways om Modbus-geïnstalleerde randapparaten met cloud-analyse te verbinden. Het bouwen van een eigen gateway kan duur en traag zijn. Deze casestudy demonstreert hoe een open-source framework—EdgeX Foundry—op een Raspberry Pi kan worden geïmplementeerd om een Modbus temperatuur-vochtigheidssensor te koppelen, data naar de cloud te streamen en realtime actuaties te triggeren met minimale inspanning.

Waarom Modbus en EdgeX?

Modbus is een open, lichtgewicht protocol dat draait over goedkope RS-485 verbindingen. Het gebruikt eenvoudige registers (16-bit unsigned integers) voor analoge waarden en coils voor binaire statussen, wat het ideaal maakt voor industriële apparaten. EdgeX Foundry, een open-source edge-middleware, fungeert als brug tussen fysieke sensoren en IT-systemen, en biedt apparaatbeheer, datatransformatie en cloud-connectiviteit out-of-the-box.

Hardwarestack

  • Raspberry Pi 4 (edge gateway)
  • Modbus RTU sensor: SHT20 (temperatuur & vochtigheid)
  • RS-485 naar USB converter
  • LED's voor visuele status (GPIO-12 & GPIO-14)
  • USB voeding

Afbeelding 1: Naadloze Modbus-sensorintegratie met EdgeX Foundry op Raspberry Pi Afbeelding 1. EdgeX Foundry – open-source edge middleware

Afbeelding 2: Naadloze Modbus-sensorintegratie met EdgeX Foundry op Raspberry Pi Afbeelding 2. Hoog-niveau blokdiagram van de EdgeX implementatie

Stap-voor-stap integratie

  1. Raspberry Pi instellen
    • Installeer Ubuntu 20.04 LTS met Docker en docker-compose.
    • Kloon de EdgeX Foundry repository en start de stack via docker-compose.
  2. Simuleer het Modbus-apparaat
    • Gebruik ModbusPal (GPL) om tot 247 Modbus-slaves te emuleren.
    • Configureer een slave met holding registers voor temperatuur (adres 2) en vochtigheid (adres 3). Elk register wijst op een 16-bit integer die geschaald wordt naar °C en %RH.
    • Start ModbusPal via TCP of serieel (USB-RS485) om communicatie te verifiëren.
  3. Apparaatprofiel uploaden

    Stuur een POST verzoek naar https://localhost:48081/api/v1/deviceprofile/uploadfile met het YAML-bestand met het profiel (zie hieronder). Het antwoord retourneert een uniek profiel-ID.

  4. Registreer het apparaat

    Post de volgende JSON naar https://localhost:48081/api/v1/device om de sensorinvoer te creëren. De protocols.modbus-rtu sectie wijst naar /dev/ttyUSB0 op 9600 baud.

    { "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. Dataflow verifiëren
    • EdgeX's device service haalt data elke 5 seconden op en schrijft naar de core service, die het opslaat in Redis.
    • Applicatieservices sturen de data door naar de IBM Cloud (of elke cloud naar keuze).
    • Voorbeeld logboekitems tonen de Modbus request/response pakketten.
  6. LED's actueren met Kuiper rules engine
    • Definieer regels: als temperatuur > 30 °C rood LED aan; als < 30 °C uit; analoog voor blauwe LED bij 28 °C.
    • Kuiper stuurt commando's naar EdgeX core-command, wat vervolgens de GPIO device service bijwerkt.
    • GPIO-uitgangen worden geverifieerd via /sys/class/gpio/gpio12/value en /sys/class/gpio/gpio14/value.

Belangrijke configuratiefragmenten

Apparaatprofiel (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 configuratie (fragment)

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

Resultaten

De end-to-end flow toont realtime temperatuur- en vochtigheidsdata die aankomt in de IBM Cloud, regels-gebaseerde LED-statuswijzigingen triggeren, en de volledige mogelijkheden van EdgeX op een goedkope Raspberry Pi demonstreren.

Conclusie

EdgeX Foundry stelt snelle implementatie van Modbus-gebaseerde IIoT-oplossingen in met minimale ontwikkelingsoverhead. Door apparaatbeheer, dataopslag en cloud-connectiviteit te abstraheren, stelt het ingenieurs vrij om zich te richten op domeinlogica en analyses.

Afkortingen

AfkortingUitwerking
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
M2MMan 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

Internet of Things-technologie

  1. Edge AI Inferencing meesteren: Een praktische gids voor actionable insights
  2. Een beginnersgids voor open-source terminologie
  3. Cisco onthult Catalyst 5G Industriële Routers voor naadloze verbinding van enterprise en edge-netwerken
  4. AT&T & Tech Mahindra lanceren Acumos: een open-source AI-platform voor snelle implementatie
  5. Productie-excellentie Verhogen met Industry 4.0: De Opkomst van Quality 4.0
  6. Open-Source Software in IoT Beveiligen: Software Risico's Mitigeren
  7. Industrie 4.0 verhogen: Edge-analytics benutten voor slimmere, snellere productie
  8. IIC en OpenFog fusioneren om edge computing-innovatie te drijven
  9. Open-Source vs. Vendor-ondersteunde IoT-ontwikkeltools: De Juiste Stack Kiezen voor Je Onderneming
  10. Waarom Open Source Innovatie Aan De Edge Drijft – Essentiële eBook
  11. Open Source drijft de opkomst van IoT en Edge Computing