Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial Internet of Things >> Internet der Dinge-Technologie

Nahtlose Modbus-Sensor-Integration mit EdgeX Foundry auf Raspberry Pi

Nahtlose Modbus-Sensor-Integration mit EdgeX Foundry auf Raspberry Pi

Industrial Internet of Things (IIoT)-Implementierungen verlassen sich zunehmend auf Edge-Gateways, um Modbus-fähige Peripheriegeräte mit Cloud-Analysen zu verbinden. Der Bau eines proprietären Gateways kann teuer und zeitaufwendig sein. Diese Fallstudie zeigt, wie ein Open-Source-Framework – EdgeX Foundry – auf einem Raspberry Pi eingesetzt werden kann, um einen Modbus-Temperatur-Feuchtigkeitssensor anzubinden, Daten in die Cloud zu streamen und Echtzeit-Aktuierungen mit minimalem Aufwand auszulösen.

Warum Modbus und EdgeX?

Modbus ist ein offenes, leichtes Protokoll, das über kostengünstige RS‑485-Verbindungen läuft. Es verwendet einfache Register (16-Bit-unsigned-Integers) für analoge Werte und Coils für binäre Zustände, was es ideal für industrielle Geräte macht. EdgeX Foundry, eine Open-Source-Edge-Middleware, fungiert als Brücke zwischen physischen Sensoren und IT-Systemen und bietet Geräteverwaltung, Datentransformation und Cloud-Konnektivität out-of-the-box.

Hardware-Stack

Abbildung 1: Nahtlose Modbus-Sensor-Integration mit EdgeX Foundry auf Raspberry Pi Abbildung 1. EdgeX Foundry – Open-Source-Edge-Middleware

Abbildung 2: Nahtlose Modbus-Sensor-Integration mit EdgeX Foundry auf Raspberry Pi Abbildung 2. Hochwertiges Blockdiagramm der EdgeX-Implementierung

Schritt-für-Schritt-Integration

  1. Raspberry Pi einrichten
    • Ubuntu 20.04 LTS mit Docker und docker‑compose installieren.
    • EdgeX Foundry Repository klonen und den Stack via docker‑compose starten.
  2. Modbus-Gerät simulieren
    • ModbusPal (GPL) verwenden, um bis zu 247 Modbus-Slaves zu emulieren.
    • Einen Slave mit Holding-Registern für Temperatur (Adresse 2) und Feuchtigkeit (Adresse 3) konfigurieren. Jedes Register entspricht einem 16-Bit-Integer, der auf °C und %rF skaliert wird.
    • ModbusPal über TCP oder Serial (USB‑RS485) starten und Kommunikation verifizieren.
  3. Geräteprofil hochladen

    Einen POST-Request an https://localhost:48081/api/v1/deviceprofile/uploadfile senden mit der YAML-Datei, die das Profil enthält (siehe unten). Die Antwort liefert eine eindeutige Profil-ID.

  4. Gerät registrieren

    Folgendes JSON an https://localhost:48081/api/v1/device posten, um den Sensor-Eintrag zu erstellen. Der Abschnitt protocols.modbus‑rtu verweist auf /dev/ttyUSB0 mit 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. Datenfluss verifizieren
    • EdgeX Device Service ruft alle 5 s Daten ab und schreibt in den Core Service, der sie in Redis speichert.
    • Application Services leiten die Daten an die IBM Cloud (oder jede andere Cloud) weiter.
    • Beispiel-Log-Einträge zeigen Modbus Request/Response-Pakete.
  6. LEDs mit Kuiper Rules Engine ansteuern
    • Regeln definieren: Wenn Temperatur > 30 °C rote LED einschalten; wenn < 30 °C ausschalten; analog für blaue LED bei 28 °C.
    • Kuiper sendet Befehle an EdgeX Core‑Command, das dann den GPIO Device Service aktualisiert.
    • GPIO-Ausgänge über /sys/class/gpio/gpio12/value und /sys/class/gpio/gpio14/value prüfen.

Wichtige Konfigurationsausschnitte

Geräteprofil (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 Konfiguration (Auszug)

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

Ergebnisse

Fazit

EdgeX Foundry ermöglicht schnelle Bereitstellung von Modbus-basierten IIoT-Lösungen mit minimalem Entwicklungsaufwand. Durch Abstraktion von Geräteverwaltung, Datenspeicherung und Cloud-Konnektivität können sich Ingenieure auf Domänenlogik und Analysen konzentrieren.

Akronyme

AkronymBedeutung
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 der Dinge-Technologie

  1. Einsteiger-Guide zu Open-Source-Terminologie
  2. Cisco stellt Catalyst 5G Industrial Router vor: Enterprise und Edge nahtlos verbinden
  3. AT&T & Tech Mahindra starten Acumos: Open-Source-KI-Plattform für schnelles Deployment
  4. Manufacturing Excellence mit Industry 4.0 steigern: Der Aufstieg von Quality 4.0
  5. Open-Source-Software im IoT absichern: Software-Risiken mindern
  6. Industry 4.0 steigern: Edge Analytics für smartere, schnellere Fertigung nutzen
  7. IIC und OpenFog fusionieren zur Treibkraft für Edge-Computing-Innovation
  8. Open Source vs. Vendor-Supported IoT Development Tools: Den richtigen Stack für Ihr Enterprise wählen
  9. Warum Open Source Innovation am Edge antreibt – Essential eBook
  10. Open Source treibt den Aufstieg von IoT und Edge Computing voran