Integration von Modbus und MQTT (Schritt-für-Schritt Anleitung)

Inhalt

In der modernen Fabrik spielt die Kombination aus Modbus und MQTT eine wichtige Rolle bei der nahtlosen Vernetzung von OT- und IT-Systemen. Modbus ist für seine Robustheit und Zuverlässigkeit in industriellen Kommunikationsumgebungen bekannt. MQTT hingegen bietet die event-basierte und skalierbare Schnittstelle zwischen OT und IT. Angesichts der weiten Verbreitung von Modbus in der Industrie und der zunehmenden Nutzung von MQTT wächst die Notwendigkeit, beide Technologien nahtlos zu integrieren. Zudem wird die Integration im Rahmen der Industrial Unified Namespace Architektur immer bedeutender. Die folgende Schritt-für-Schritt Anleitung beschreibt den Prozess, wie die Integration von Modbus und MQTT gelingt.

 

Was ist Modbus?

Modbus, ein Kommunikationsprotokoll, das 1979 von Modicon entwickelt wurde, ist in der industriellen Automatisierung weit verbreitet. Es vereinfacht die Vernetzung verschiedenster Geräte wie Steuerungssysteme und Sensoren innerhalb eines Netzwerks. Durch seine Einfachheit und Robustheit ist Modbus ideal für zuverlässige Datenübertragungen geeignet.

 

Master-Slave-Architektur

Modbus funktioniert nach dem Master-Slave-Prinzip, wobei der Master das Gerät ist, das Befehle sendet, und die Slaves die Geräte sind, die diese Befehle empfangen und ausführen. Diese Struktur ermöglicht eine effiziente und kontrollierte Datenkommunikation innerhalb von Netzwerken. Modbus unterstützt verschiedene Übertragungsmodi, einschließlich RS-232 und RS-485 für serielle Verbindungen sowie TCP/IP für Ethernet-basierte Verbindungen. Diese Flexibilität ermöglicht es Modbus, sowohl in älteren als auch in modernen industriellen Netzwerkumgebungen effektiv zu funktionieren.

 

Speicherbereiche und Adressierung

Die Speicherstruktur in Modbus ist in vier Haupttypen unterteilt: Coils, Discrete Inputs, Input Registers und Holding Registers. Jeder Typ hat spezifische Funktionen und Zugriffsrechte, die entweder nur Lesezugriff oder Lese- und Schreibzugriff ermöglichen. Die Adressierung innerhalb dieser Speicherbereiche ist entscheidend für die korrekte Konfiguration und den Betrieb von Modbus-Netzwerken, da jeder Bereich eine eindeutige Adresse und spezifische Operationen verwendet.

  1. Coils sind binäre Ausgangspositionen, die sowohl gelesen als auch geschrieben werden können und häufig zur Steuerung von Relais oder Schaltern dienen.
  2. Discrete Inputs sind binäre Eingänge, die nur gelesen werden können und Zustände wie Sensorwerte oder Schalterstellungen erfassen.
  3. Input Registers speichern typischerweise analoge Eingänge wie Temperatur- oder Druckmessungen und sind ausschließlich lesbar.
  4. Holding Registers, die sowohl lesbar als auch beschreibbar sind, eignen sich ideal zur Speicherung von Konfigurationsdaten oder Arbeitsparametern, die während des Betriebs angepasst werden können.

 

Funktionen und Befehle

Modbus definiert eine Reihe von Funktioncodes, die verwendet werden, um Speicherbereiche zu lesen oder zu schreiben. Diese Codes ermöglichen es dem Master, gezielte Befehle an die Slaves zu senden, um bestimmte Daten zu lesen oder Steuerbefehle auszuführen. Die Implementierung und Nutzung dieser Funktioncodes muss präzise erfolgen, um die Integrität und Effizienz des Netzwerks zu gewährleisten. Beispiele für häufig verwendete Funktioncodes:

  1. Lesen von Coils (Funktioncode 01)
    • Anwendung: Abfrage des Zustands von mehreren Coils in einem Slave-Gerät.
    • Beispiel: Ein Master sendet eine Anfrage, um den Status von 10 Coils ab Adresse 20 zu lesen. Der Slave antwortet mit den aktuellen Zuständen dieser Coils, zum Beispiel 0 (aus) oder 1 (ein).
  2. Lesen von Discrete Inputs (Funktioncode 02)
    • Anwendung: Abfrage des Zustands von Eingängen, die nicht durch den Master verändert werden können.
    • Beispiel: Der Master fragt die Zustände von 5 Discrete Inputs ab Adresse 30 ab. Der Slave sendet die Zustände dieser Inputs zurück.
  3. Schreiben eines einzelnen Coils (Funktioncode 05)
    • Anwendung: Steuerung eines spezifischen Coils, um es ein- oder auszuschalten.
    • Beispiel: Der Master sendet einen Befehl, um das Coil an Adresse 45 auf „Ein“ zu setzen. Der Slave führt diesen Befehl aus und bestätigt die Aktion.
  4. Schreiben mehrerer Coils (Funktioncode 15)
    • Anwendung: Gleichzeitiges Ändern mehrerer Coil-Zustände.
    • Beispiel: Der Master sendet eine Anfrage, um 20 Coils ab Adresse 50 einzuschalten. Der Slave aktualisiert seine Coils entsprechend und bestätigt die Durchführung.
  5. Lesen von Holding Registers (Funktioncode 03)
    • Anwendung: Abfrage von Registerwerten, die sowohl gelesen als auch beschrieben werden können.
    • Beispiel: Der Master möchte die aktuellen Werte von 3 Holding Registers ab Adresse 100 lesen. Der Slave liefert die geforderten Daten.

 

Gateway – die Brücke zwischen Modbus und MQTT

Die Integration von Modbus und MQTT erfordert ein Gateway, das als Übersetzer zwischen den Protokollen fungiert. Dabei schreibt bzw. liest das Gateway Modbus Coils und Register aus und konvertiert diese in MQTT Nachrichten.

Modbus to MQTT Integration via Gateway

Stellen Sie dabei sicher, dass Ihr Gateway Modbus und MQTT-Protokolle nativ unterstützt. Überprüfen Sie die Kompatibilität mit weiteren relevanten Systemen (z.B. Steuerungen, ERP) Ihrer OT/IT Landschaft. Das Gateway sollte die erforderlichen Sicherheitsfeatures bieten und je nach Anwendungsfall zusätzlichen Anforderungen wie Redundanz und Skalierbarkeit standhalten.

 

Schritt-für-Schritt Anleitung zur Integration von Modbus und MQTT

Folgende Schritte müssen durchlaufen werden, um die Anbindung von Modbus Geräten an einen MQTT Broker mittels eines Gateways zu realisieren.

 

Schritt 1: Überprüfung der Voraussetzungen

Überprüfen Sie die vorhandene Infrastruktur und konfigurieren Sie die notwendigen Zugriffsrechte, um eine zuverlässige Integration von Modbus zu gewährleisten.

Infrastruktur prüfen: Überprüfen Sie, ob die Modbus Geräte und der MQTT Broker voll funktionsfähig sind und richten Sie eine Testumgebung ein. Dies ermöglicht Ihnen, die Integration und spätere Anpassungen in einer kontrollierten Umgebung zu testen, bevor Sie Änderungen in der Produktionsumgebung vornehmen.

Netzwerk konfigurieren: Nehmen Sie die erforderlichen Anpassungen in Ihrer Netzwerktopologie vor. Dies beinhaltet die Konfiguration von Ports und Firewalls, um die Kommunikation zwischen den Modbus Geräten und dem MQTT Broker zu ermöglichen und gleichzeitig unbefugten Zugriff zu verhindern.

Zugriff und Berechtigungen: Stellen Sie sicher, dass Sie Zugriff auf die Modbus Geräte, den MQTT-Broker sowie das Gateway haben. Dies umfasst auch die erforderlichen Benutzerrechte und Berechtigungen, um Konfigurationen vornehmen zu können. Installieren Sie bei Bedarf die entsprechende Konfigurationssoftware der Systeme.

 

Schritt 2: Identifikation der relevanten Modbus-Register

Überprüfen Sie Ihre Modbus-Geräte, um sicherzustellen, dass diese die relevanten Datenpunkte (Register) zuverlässig zur Verfügung stellen. Dies umfasst die Identifikation der für den Use-Case relevanten Register in den Geräten.

Modbus-Register identifizieren: Bestimmen Sie, welche Modbus-Register (Datenpunkte wie z.B. Sensordaten, Statusinformationen) für Ihren Use-Case relevant sind. Dazu gehören Coils, Discrete Inputs, Input Registers und Holding Registers, je nachdem, ob Sie schreibbare Steuerbefehle oder lesbare Sensorwerte benötigen.

Register-Typen und Attribute überprüfen: Überprüfen Sie, ob den Registern die richtigen Typen und Attribute zugewiesen sind. Achten Sie auf die Registeradressen, die Datenlänge und die Zugriffsrechte. Stellen Sie sicher, dass diese korrekt in den Modbus-Geräten konfiguriert sind, um eine fehlerfreie Kommunikation und Datenverarbeitung zu gewährleisten.

 

Schritt 3: Definition des MQTT Namespace

In Modbus-Systemen werden Daten über Register kommuniziert, die in der Gerätekonfiguration definiert sind. Im Gegensatz dazu entsteht der MQTT Namespace in Kollaboration zwischen Publisher und Subscriber. Dabei ist die Einhaltung einer standardisierten Struktur entscheidend für eine effektive Kommunikation und Datenorganisation in MQTT. Dieser Schritt beinhaltet:

Standardisierung der MQTT Topic Hierarchie: Ein Topic ist ein UTF-8-String, der den Pfad angibt, unter dem eine Nachricht veröffentlicht wird. Clients können Nachrichten zu diesen Topics publizieren oder sich für Topics abonnieren, um Nachrichten zu empfangen. Legen Sie dabei Richtlinien für die Benennung dieser Topics unter Berücksichtigung von Best Practices fest, um Konsistenz zu gewährleisten.

Standardisierung des MQTT Nachrichteninhalts (Payload): Die Definition eines standardisierten Payloads ist für Interoperabilität und Skalierbarkeit, insbesondere bei einem heterogenen Maschinenpark, zwingend erforderlich. Erstellen Sie hierfür ein Datenmodell, welches die folgenden Komponenten umfasst:

  • Einheitliche Struktur des Payloads, einschließlich Metadaten (z.B. Maschinentyp und ID) und deren Repräsentation innerhalb der MQTT-Topics
  • Einheitliches Datenformat, beispielsweise JSON oder XML, um die Datenverarbeitung und -integration zu vereinfachen
  • Einheitliche Datentypen und Benennungskonventionen, um die Eindeutigkeit und Verständlichkeit der Daten zu gewährleisten.

 

Schritt 4: Mapping von Modbus-Registern und MQTT Namespace

In diesem Schritt etablieren Sie eine Verbindung zwischen dem Gateway, den Modbus-Geräten und dem MQTT-Broker. Das Gateway fungiert dabei als Brücke zwischen den beiden Protokollen und übersetzt Modbus-Registerdaten in standardisierte MQTT-Nachrichten.

Verbindungstest: Überprüfen Sie die Konnektivität zwischen den Modbus-Geräten, dem Gateway und dem MQTT-Broker. Achten Sie dabei besonders auf die Einhaltung der Sicherheitsrichtlinien, einschließlich der korrekten Einrichtung von Authentifizierungs- und Verschlüsselungsmethoden.

Mapping des MQTT Payloads: Mappen Sie die relevanten Daten aus den Modbus-Registern auf das in Schritt 3 definierte Datenmodell. Ergänzen Sie bei Bedarf das Datenmodell mit statischen Inputs (z.B. für Metadaten wie Gerätetyp und ID).

Mapping der MQTT Topics: Legen Sie fest, wie die MQTT Payloads den MQTT-Topics zugeordnet werden. Dies kann einfache 1:1-Zuordnungen umfassen oder, je nach Anforderungen des Use-Cases, komplexere Transformationen erfordern.

Transformationslogik implementieren: Nutzen Sie die Funktionalitäten Ihres Gateways, um die erforderlichen Datenkonvertierungen durchzuführen. Dies kann die Skalierung von Messwerten, die Umwandlung von Datentypen oder die Aggregation von Datenpunkten beinhalten, um eine effektive Datenintegration und -nutzung zu gewährleisten.

Mapping of Modbus Registers and MQTT Namespace

 

Schritt 5: Integration von Modbus und MQTT in Testumgebung

Nachrichtenübermittlung definieren: Legen Sie fest, wann die Daten aus Modbus-Geräten in MQTT aktualisiert werden sollen. Die Aktualisierung kann bei Änderungen an spezifischen Registern (Best Practice) oder gemäß einem vordefinierten Zyklus (z.B. jede Sekunde) erfolgen. Definieren Sie zudem wichtige MQTT Einstellungen wie Quality of Service (QoS), Retain und Report by Exception, um die Datenkommunikation optimal zu gestalten.

Datenintegrität prüfen: Stellen Sie sicher, dass die Daten in Ihrer Testumgebung korrekt von der Steuerung über das Gateway zum MQTT-Broker fließen und alle Sicherheitsmechanismen wie geplant funktionieren.

 

Schritt 6: Inbetriebnahme und Monitoring

Inbetriebnahme: Nach erfolgreichem Test können Sie die Modbus zu MQTT Integration in Betrieb nehmen.

Monitoring einrichten: Implementieren Sie Überwachungs- und Alarmierungsfunktionen, um die Systemleistung und die Integrität der Datenübertragung kontinuierlich zu überwachen.

Logging und Diagnose: Stellen Sie sicher, dass detaillierte Protokolle für die Fehlerbehebung und Optimierung der Systemleistung verfügbar sind.

 

Fazit

Die Kombination von Modbus-Geräten und MQTT eröffnet neue Möglichkeiten für eine intelligent vernetzte Fertigung. Die Wahl der richtigen Integrationsmethode ist dabei entscheidend für den Erfolg. Durch die Implementierung einer nachhaltigen Integrationsstrategie können Unternehmen ihre Effizienz steigern, die Produktivität erhöhen und somit ihre Wettbewerbsfähigkeit verbessern. Einheitliches Mapping der Modbus-Register und des MQTT Namespace über Systeme und Fabriken hinweg ist ein zentraler Aspekt für eine erfolgreiche Integration. Dies gelingt nur über ein Gateway, das die Standardisierung und Skalierung des MQTT Namespace im gesamten Unternehmen unterstützt.

Über i-flow: i-flow ist ein Unternehmen für industrielle Software mit Sitz in Süddeutschland. Wir bieten produzierenden Unternehmen die weltweit intuitivste Software zur Vernetzung von Fabriken. Täglich über 400 Millionen Datenoperationen in produktionskritischer Umgebung demonstrieren nicht nur die Skalierbarkeit der Software, sondern auch das tiefe Vertrauen, das unsere Kunden in i-flow setzen. Unser Erfolg basiert auf enger Zusammenarbeit mit Kunden und Partnern weltweit, darunter namhafte Fortune-500-Unternehmen und Branchenführer wie Bosch.

Jetzt selbst ausprobieren - Kostenlose Testversion

Überzeugen Sie sich in einem Test selbst von den unbegrenzten Möglichkeiten, die Sie mit i-flow erhalten. Jetzt 30 Tage kostenfrei testen, auf Ihren Systemen.

Ihre Frage wurde nicht be­antwortet? Kontaktieren Sie uns.

Ihr Kontakt:

Marieke Severiens (i-flow GmbH)
content@i-flow.io