Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial Internet of Things >> Technologie de l'Internet des objets

Intégration transparente de capteurs Modbus avec EdgeX Foundry sur Raspberry Pi

Intégration transparente de capteurs Modbus avec EdgeX Foundry sur Raspberry Pi

Les déploiements IIoT (Industrial Internet of Things) s'appuient de plus en plus sur des passerelles de périphérie pour connecter des périphériques Modbus à l'analytique cloud. Construire une passerelle propriétaire peut être coûteux et lent. Cette étude de cas montre comment un framework open source — EdgeX Foundry — peut être déployé sur un Raspberry Pi pour connecter un capteur température-humidité Modbus, transmettre les données vers le cloud et déclencher des actions en temps réel avec un effort minimal.

Pourquoi Modbus et EdgeX ?

Modbus est un protocole ouvert et léger qui fonctionne sur des liaisons RS-485 peu coûteuses. Il utilise des registres simples (entiers non signés 16 bits) pour les valeurs analogiques et des bobines pour les états binaires, le rendant idéal pour les appareils industriels. EdgeX Foundry, un middleware de périphérie open source, fait le pont entre les capteurs physiques et les systèmes IT, fournissant la gestion des appareils, la transformation des données et la connectivité cloud clé en main.

Pile matérielle

Figure 1 : Intégration transparente de capteurs Modbus avec EdgeX Foundry sur Raspberry Pi Figure 1. EdgeX Foundry – middleware de périphérie open source

Figure 2 : Intégration transparente de capteurs Modbus avec EdgeX Foundry sur Raspberry Pi Figure 2. Diagramme de haut niveau du déploiement EdgeX

Intégration étape par étape

  1. Configurer le Raspberry Pi
    • Installer Ubuntu 20.04 LTS avec Docker et docker-compose.
    • Cloner le dépôt EdgeX Foundry et lancer la pile via docker-compose.
  2. Simuler l'appareil Modbus
    • Utiliser ModbusPal (GPL) pour émuler jusqu'à 247 esclaves Modbus.
    • Configurer un esclave avec des registres de maintien pour la température (adresse 2) et l'humidité (adresse 3). Chaque registre correspond à un entier 16 bits qui sera mis à l'échelle en °C et %HR.
    • Démarrer ModbusPal via TCP ou série (USB-RS485) pour vérifier la communication.
  3. Télécharger le profil de l'appareil

    Envoyer une requête POST à https://localhost:48081/api/v1/deviceprofile/uploadfile avec le fichier YAML contenant le profil (voir ci-dessous). La réponse renvoie un ID de profil unique.

  4. Enregistrer l'appareil

    Publier le JSON suivant sur https://localhost:48081/api/v1/device pour créer l'entrée du capteur. La section protocols.modbus-rtu pointe vers /dev/ttyUSB0 à 9600 bauds.

    { "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. Vérifier le flux de données
    • Le service d'appareil EdgeX récupère les données toutes les 5 s et les écrit dans le service principal, qui les stocke dans Redis.
    • Les services d'application transmettent les données vers IBM Cloud (ou tout cloud de choix).
    • Exemples d'entrées de journal montrant les paquets de requête/réponse Modbus.
  6. Actionner les LED avec le moteur de règles Kuiper
    • Définir les règles : si température > 30 °C allumer la LED rouge ; si < 30 °C l'éteindre ; de même pour la LED bleue à 28 °C.
    • Kuiper pousse les commandes vers EdgeX core-command, qui met à jour le service d'appareil GPIO.
    • Les sorties GPIO sont vérifiées via /sys/class/gpio/gpio12/value et /sys/class/gpio/gpio14/value.

Extraits de configuration clés

Profil d'appareil (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]

Configuration TOML device-modbus (extrait)

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

Résultats

Le flux de bout en bout montre des données de température et d'humidité en temps réel arrivant dans IBM Cloud, déclenchant des changements d'état de LED basés sur des règles, et démontrant les pleines capacités d'EdgeX sur un Raspberry Pi à faible coût.

Conclusion

EdgeX Foundry permet un déploiement rapide de solutions IIoT basées sur Modbus avec un surcoût de développement minimal. En abstraisant la gestion des appareils, le stockage des données et la connectivité cloud, il libère les ingénieurs pour se concentrer sur la logique métier et l'analytique.

Acronymes

AcronymeDéfinition
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

Technologie de l'Internet des objets

  1. Guide débutant de la terminologie open‑source
  2. Cisco dévoile les routeurs industriels Catalyst 5G pour connecter transparemment entreprise et edge
  3. AT&T et Tech Mahindra lancent Acumos : plateforme IA open-source pour déploiement rapide
  4. Élever l'excellence manufacturière avec l'Industrie 4.0 : l'essor de la Qualité 4.0
  5. Sécuriser l'open source dans l'IoT : atténuer les risques logiciels
  6. Élever l'Industrie 4.0 : exploiter l'analytics de bord pour une manufacture plus intelligente, plus rapide
  7. L'IIC et OpenFog fusionnent pour driver l'innovation en edge computing
  8. Outils de développement IoT open-source vs vendor-supported : choisir la bonne stack pour votre entreprise
  9. Pourquoi l'open source stimule l'innovation à la périphérie — eBook essentiel