Modbus: Aufbau, Funktion und Beispiel

Lesedauer: 5min Veröffentlicht am: August 1, 2023. Der Autor des Beitrages ist Maximilian Backenstos.
Modbus ist ein Kommunikationsprotokoll für den Datenaustausch zwischen industriellen Systemen. In diesem Fachartikel erfahren Sie mehr über den Aufbau, die Funktionsweise und die Anwendung von Modbus anhand eines konkreten Beispiels.
Inhalte auf dieser Seite
Primary Item (H2)Sub Item 1 (H3)

Was ist Modbus?

Modbus ist ein weit verbreitetes Kommunikationsprotokoll in der Industrieautomatisierung und Prozesssteuerung. Es ermöglicht den Austausch von Daten zwischen elektronischen Geräten und Systemen, die in industriellen Umgebungen im Einsatz sind.

Das Modbus-Protokoll wurde in den späten 1970er Jahren von Modicon (gehört heute zu Schneider Electric) entwickelt und besteht aus mehreren Varianten, darunter die Varianten RTU (Remote Terminal Unit) und TCP/IP (Transmission Control Protocol/Internet Protocol). Es ist ein offenes Protokoll und daher sehr flexibel und einfach in der Implementierung.

Bei der Kommunikation werden die Kommunikationspartner in “Client” und “Server” unterschieden. Statt Server kann auch der Begriff “Master” verwendet werden. Der Client führt auf dem Master einen bestimmten Befehl aus. Ist dieser korrekt, verarbeitet der Master die Anfrage und gibt eine Antwort (z.B. einen Prozesswert) zurück.

Aufbau des Modbus Protokolls. Ein Client (z.B. Software) sendet eine Anfrage an den Master. Dieser prüft die Anfrage und gibt ein Ergebnis zurück.

Unterschied Modbus RTU und TCP/IP

RTU ist eine serielle Kommunikationsvariante, die üblicherweise über RS-485- oder RS-232-Schnittstellen läuft. Es verwendet eine binäre Datenrepräsentation, um Informationen zwischen Geräten zu übertragen.

TCP/IP hingegen ist eine Variante, die über Ethernet-Netzwerke läuft und auf dem Internet Protocol (IP) basiert. Diese Version erlaubt die Kommunikation über IP-Netzwerke, was sie in modernen industriellen Umgebungen sehr beliebt macht.

Anwendungsfälle von Modbus

Modbus wird häufig in verschiedenen industriellen Anwendungen eingesetzt, um Daten von Sensoren, Steuerungen und anderen Geräten zu sammeln und an eine zentrale Steuerungseinheit oder ein Überwachungssystem zu übertragen. Es ist weit verbreitet und wird von vielen Herstellern unterstützt.

Beispiele für Anwendungen:

  • Energiezähler
  • Druckluftkompressoren
  • Speicherprogrammierbare Steuerungen (SPS, z.B. Siemens Logo)

Vor- und Nachteile von Modbus

In der industriellen Automatisierung und Prozesssteuerung ist Modbus ein weit verbreitetes Protokoll. Es bietet verschiedene Vor- und Nachteile, die berücksichtigt werden müssen, um zu entscheiden, welches Protokoll zum Einsatz kommt:

Vorteile:

  • Einfachheit: Modbus ist ein vergleichsweise einfaches Protokoll, das leicht zu implementieren und zu verstehen ist. Die einfache Struktur erleichtert die Integration in verschiedene Geräte und Systeme.
  • Weit verbreitet: Modbus ist ein offenes Protokoll und wird von einer Vielzahl von Herstellern unterstützt. Dies führt zu einer hohen Interoperabilität zwischen verschiedenen Geräten und ermöglicht es, Komponenten verschiedener Hersteller in einem System zu integrieren.
  • Kosten: Aufgrund seiner Einfachheit und langjährigen Verbreitung ist Modbus oft kostengünstiger als andere komplexe Protokolle.
  • Flexibilität: Modbus bietet sowohl serielle (Modbus RTU) als auch TCP/IP-basierte (Modbus TCP/IP) Kommunikationsvarianten, was es ermöglicht, das Protokoll in verschiedenen Netzwerktopologien einzusetzen.

Nachteile:

  • Sicherheit: Das Protokoll wurde ursprünglich nicht mit Sicherheitsmerkmalen (z.B. User-/Passwortschutz) entwickelt, und die älteren Versionen des Protokolls haben keine eingebauten Sicherheitsmechanismen. Dies kann in modernen Umgebungen ein Sicherheitsrisiko darstellen. Seit 2019 existiert zwar eine Spezifikation für den Einsatz des Verschlüsselungsprotokoll TLS, dies betrifft jedoch nur Geräte neueres Baujahres.
  • Datenmenge: Die Datenkapazität pro Nachricht ist begrenzt, was die Übertragung großer Datenmengen ineffizient machen kann.
  • Fehlererkennung: Im Protokoll ist keine Fehlererkennung oder Fehlerkorrekturmechanismen integriert, was bedeutet, dass die Zuverlässigkeit der Datenübertragung in hohem Maße von der zugrunde liegenden physischen Verbindung abhängt.
  • Keine Adressenvergabe: Das Protokoll bietet keine dynamische Adressvergabe für Geräte, was in großen Netzwerken oder bei der Hinzufügung neuer Geräte problematisch sein kann.
  • Geschwindigkeit: Obwohl RTU schneller als TCP/IP sein kann, ist es im Vergleich zu einigen modernen Protokollen langsam und könnte für Anwendungen mit sehr hohen Geschwindigkeitsanforderungen ungeeignet sein.

Datenmodell

In der Modbus-Spezifikation sind vier verschiedene Tabellentypen definiert. Diese werden in der folgenden Tabelle beschrieben. Jeder Anwender des Protokolls (z.B. Gerätehersteller) definiert auf Basis dieses Basisdatenmodells eigene Tabellen. Diese werden dann dem Endanwender in einem Handbuch zur Verfügung gestellt.

Primäre TabellenObjekttypZugriffstyp
Discrete Inputs (Einzelner Eingang)Single bitLesezugriff
Coils (Einzelner Ein-/Ausgang)Single bitLese-/Schreibzugriff
Input Registers (Eingänge)16-bit wordLesezugriff
Holding Registers (Ein-/Ausgänge)16-bit wordLese-/Schreibzugriff

Funktionsbausteine

Zur Erfüllung definierter Aufgaben existieren im Protokoll verschiedene Funktionen bzw. Funktionsbausteine. Die Funktionsbausteine haben eine numerische Kodierung und werden als Modbus Funktionen bezeichnet. Die gebräuchlichsten Funktionsbausteine im Protokoll sind:

  1. Funktion 01 (0x01) – Read Coils: Diese Funktion wird verwendet, um Ausgangszustände (Coils) von einem Server zu einem Client zu lesen. Der Client kann den Zustand von mehreren Ausgängen gleichzeitig anfordern.
  2. Funktion 02 (0x02) – Read Discrete Inputs: Diese Funktion ermöglicht es dem Client, den Zustand von digitalen Eingängen (discrete inputs) von einem Server zu lesen.
  3. Funktion 03 (0x03) – Read Holding Registers: Mit dieser Funktion kann der Client Holding-Register von einem Server lesen.
  4. Funktion 04 (0x04) – Read Input Registers: Diese Funktion erlaubt es dem Client, Input-Register von einem Server zu lesen.
  5. Funktion 05 (0x05) – Write Single Coil: Mit dieser Funktion kann der Client einen einzelnen digitalen Ausgangszustand (Coil) in einem Server setzen oder zurücksetzen.
  6. Funktion 06 (0x06) – Write Single Register: Diese Funktion ermöglicht es dem Client, einen einzelnen Wert in ein Holding-Register auf einem Server zu schreiben.
  7. Funktion 15 (0x0F) – Write Multiple Coils: Mit dieser Funktion kann der Client mehrere digitale Ausgangszustände (Coils) in einem Server gleichzeitig setzen oder zurücksetzen.
  8. Funktion 16 (0x10) – Write Multiple Registers: Diese Funktion erlaubt es dem Client, mehrere Werte in aufeinanderfolgende Holding-Register auf einem Server zu schreiben.

Die Verfügbarkeit und Unterstützung bestimmter Funktionen kann von der Protokoll-Variante (RTU oder TCP/IP) und den verwendeten Geräten abhängen. Jede Funktion hat eine spezifische Datenstruktur und verwendet spezifische Modbus-Registeradressen, um zu kommunizieren.

Praxisbeispiel: Modbus TCP auslesen

In einer Lebensmittelproduktion soll der Druckluftkompressor überwacht werden. Der Hersteller bietet hierfür das Modbus-Protokoll an. Zunächst wird der Kompressor über ein Ethernetkabel in das Maschinennetz eingebunden. In der Steuerung wird die IP-Adresse eingestellt, die für Zugriff relevant ist.

In der Anleitung des Herstellers finden sich folgende Hinweise:

  • Schreiben der Register mit der Funktion 16 “Write Multiple Registers” oder 06 “Write Single Register”.
  • Lesen der Register mit der Funktion 03 “Read Holding Registers”. Nicht beschriebene Register haben den Inhalt “0”.

Damit ist klar, mit welcher Funktion auf die Daten zugegriffen werden kann. Der Anwender möchte nur Daten lesen, daher wird nur die Funktion 03 weiter betrachtet. Der aktuelle Netzdruck und der Energiezähler sollen überwacht werden. Dazu stehen folgende Angaben zur Verfügung:

  • Netzdruck; Protokolladresse: 41; Holding Register: 40298; Einheit: mbar, Format: Int
  • Energiezähler; Protokolladresse: 46; Holding Register: 40323; Einheit: kWh; Format: Int

Mit diesen Informationen kann das DatenBerg Gateway konfiguriert werden. Zusätzlich wird das Abfrageintervall (in Sekunden) definiert. Das Gateway fragt dann z.B. alle 60 Sekunden die Daten ab und liest die Holding Register aus. Der Wert wird dann direkt an das Data Warehouse der smartPLAZA gesendet und kann dort auf Dashboards visualisiert oder mit Hilfe des Monitorings überwacht werden.

Weitere Quellen

Sie möchten mehr zum Thema Modbus: Aufbau, Funktion und Beispiel erfahren?
Der Autor Maximilian ist Geschäftsführer bei DatenBerg. Er begleitet Kunden von der Datenerfassung bis hin zur automatisierten Auswertung. Ist er nicht bei Kunden im Einsatz, hält er Vorträge zu den Themen Daten nutzen in der Produktion, Anwendungsfälle von Industrie 4.0 und automatisierte Auswertung von Produktionsdaten. Gerne besprechen wir mit Ihnen, wie das Thema Modbus: Aufbau, Funktion und Beispiel in Ihrer Produktion umgesetzt werden kann. Kontaktieren Sie uns hier.

Ähnliche Beiträge