Modbus

Das standardisierte Modbus-Protokoll ist in der Anwenderschicht (7. Schicht) des ISO/OSI Modells angesiedelt. Modbus ist weit verbreitet, vielseitig und wird häufig in der Industrie bei Feldbussen eingesetzt. Die Kommunikation kann über die serielle asynchrone UART-Schnittstelle über EIA-232, EIA-422 und EIA-485 oder TCP/IP erfolgen.

Entwickelt und veröffentlich wurde das Protokoll Modbus 1979 von der Modicon Corporation, die von Richard Morley und seinen Partnern 1968 gegründet wurde. Modbus hat sich seither zu einem der erfolgreichsten Kommunikationsprotokolle entwickelt und gilt als der Urahn der industriellen Kommunikationsprotokolle in der industriellen Automation.

Ursprünglich wurde das Protokoll zur Vernetzung von Modicon SPSen untereinander und auch mit weiteren Geräten entwickelt. Modbus wurde als Open Standard veröffentlicht, wodurch jeder das rotokoll kostenfrei und kommerziell verwenden kann.

Es gibt drei wesentliche Gründe für den Erfolg und die breite Akzeptanz und Anwendung von Modbus:

  • Modbus ist ein Open Standard, welches kostenfrei frei zur Verfügung steht.
  • Modbus verwendet Standard Schnittstellen wie EIA-232, EIA-422, EIA-485 und Ethernet TCP/IP.
  • Das Protokoll Modbus ist einfach.

Die Einfachheit war ein wesentlicher Punkt bei der Entwicklung von Modbus, da die damaligen Rechner teils mit weniger als 64 Byte RAM ausgestattet waren und auch nur auf einer 8-Bit Architektur basierten. Wichtig war auch, dass selbst Ingenieure ohne Programmiererfahrung das einfache Konzept mit Coils und Registern lesen und verstehen konnten.

 

Modbus RTU

Modbus RTU ist ein Master-Slave-Bus, in dem zu einem Zeitpunkt nur ein Master aktiv sein und auch nur dieser eine Master eine Kommunikation mit einem Slave initiieren kann. Unter der Voraussetzung, dass nur ein Master zu einem gegebenen Zeitpunkt aktiv ist, können auch mehrere Master (Multi-Master) an einem Bus anliegen.

Modbus RTU kommuniziert im Halbduplexverfahren über die EIA-485 Schnittstelle, kann aber auch über einen EIA-232 Bus betrieben werden, mit der Einschränkung, dass nur ein Master mit einem Slave (Punkt-zu-Punkt) über eine Distanz von maximal 15 m miteinander kommunizieren kann.

An einem EIA-485 Bus können maximal 32 Teilnehmer angeschlossen sein, von denen einer der Master ist. Die maximale Distanz beträgt 1200 m, wobei das nur mit einer geringen Baudrate von 1200 Bd möglich ist. Hohe Übertragungsraten sind nur über geringere Entfernungen möglich, wie z. B. die maximale Geschwindigkeit von 115200 Bd, bei einer Leitungslänge von maximal 12 m.

Die Kommunikation über EIA-485 erfolgt symmetrisch7 und kann im Halb- oder Vollduplex Betrieb erfolgen. Bei Vollduplex werden statt zwei Leitungen vier Leitungen benötigt. Für eine fehlerfreie Kommunikation müssen alle Teilnehmer im Netzwerk die gleichen Einstellungen haben, wie die Zahl der Datenbits, der Paritäts- und Stoppbits und der Baudrate (üblich 9600 – 19200 Bits/s).

screenshot 2026 04 02 202712
Abb. 1 – Modbus RTU Netzwerktopologie EIA-485

 

Das Protokoll Modbus RTU

Der gesamte Rahmen (Application Data Unit, ADU) des Protokolls Modbus RTU, besteht aus den Feldern Slave Adresse, Funktionscode, Datenbytes und CRC Prüfung. Dabei nennt man den Teil ohne Slave ID und ohne CRC-Prüfung Protocol Data Unit (PDU). Die PDU beinhaltet mit dem Funktionscode und den Datenbytes, bei allen Modbus Varianten (RTU/ASCII/TCP) den gleichen Informationsgehalt.

screenshot 2026 04 03 110833
Abb. 2 – Rahmen des Protokolls Modbus RTU

In einem Netzwerk wird jedem Slave eine eigene 1-Byte Adresse von 1…247 zugeordnet, wobei der Master keine eigene Adresse hat. Mit der Adresse 0, kann der Master durch einen Rundruf (Broadcast) alle Slaves gleichzeitig ansprechen. Die Adressen 248 – 255 sind reserviert. Der Funktionscode vermittelt den Slaves die durchzuführende Aktion. Die häufigsten Codes sind in folgender Tabelle aufgeführt.

screenshot 2026 04 03 111128
Abb. 3 – Modbus Funktionscodes

Das Datenbyte wird wie bei der UART Schnittstelle als 11- oder 12-Bit Datenwort (1 Startbit, 8 Datenbits, 1 Paritätsbit, 1 oder 2 Stoppbits) mit dem niederwertigsten Bit (LSB) zuerst übertragen. Das Paritätsbit kann auch entfallen, wenn nach den Datenbits 2 Stoppbits folgen.

 

Adressrahmen Modbus

Die Adressen der Register werden mit zwei Bytes codiert und können somit jeweils bis zu 65535 Coils, Input Coils, Input Register und Holding Register adressieren.

screenshot 2026 04 03 112041
Abb. 4 Modbus Coils- und Register-Adressen

Die Adressen der Register werden mit zwei Bytes codiert und können somit jeweils bis zu 65535 Coils, Input Coils, Input Register und Holding Register adressieren.

 

Datenrepräsentation Modbus

Die Bezeichnung der Register und Coils ist in der Literatur nicht immer einheitlich. Mal werden bspw. „Input Coils“ nur als „Input“ oder als „Diskrete Input“ bezeichnet, was teilweise verwirren kann. Hier richten wir uns nach den Bezeichnungen in dem Buch „Modbus“ von John S. Rinald. Demnach sind:

  • Coils: 1-Bit Ausgänge für diskrete digitale Werte (Lesen/ Schreiben)
  • Input Coils: 1-Bit Eingänge für diskrete digitale Werte (nur Lesen)
  • Input Register: Eingänge für vorzeichenlose 16-Bit Werte von 0 – 65535 (nur Lesen)
  • Holding Register: Ausgänge für vorzeichenlose 16-Bit für Werte von 0 – 65535 (Lesen und Schreiben)

Coils und Holding Register können geschrieben und gelesen werden. Lesen bedeutet nicht, dass diese Register als Eingänge verwendet werden können. Das Lesen dient lediglich dem „Rücklesen“, um den Zustand eines Ausgangs auszulesen (rückzulesen).

Bei Modbus gibt es keine direkte Darstellungsmöglichkeit von Gleitkommazahlen. Diese können nach Bedarf aus zwei Registern zusammengesetzt werden. Die Stelle vor dem Komma kann z. B. Register 40001 und der Wert hinter dem Komma 40002 sein. Es können aber beliebige andere Zusammenstellungen gewählt werden, da es hier keine festgelegten Konventionen gibt. Solche Darstellungsmöglichkeiten gelten auch für Zahlen, die größer als 16-Bit sind. Für 32-Bit Zahlen können zwei Register verwendet werden.

Bei der Verwendung von Modbus Hardware muss die Konvention der Hersteller aus den Datenblättern entnommen werden, damit beim Lesen und Schreiben auf die richtigen Register und Coils zugegriffen wird. Hersteller von Modbus Hardware und Programmierer können bspw. für 16 diskrete Eingänge 16 Input Coils verwenden, aber auch genauso ein 16-Bit Input Register. Welche Register die Hersteller für Ein- und Ausgänge verwenden, ist deren Bedürfnissen überlassen.