Modbus – Protokoll für die industrielle Kommunikation

Definition und Geschichte

Modbus ist ein industrielles Kommunikationsprotokoll, das 1979 von Modicon (heute Schneider Electric) veröffentlicht wurde, um die Kommunikation zwischen seiner speicherprogrammierbaren Steuerung und Feldgeräten zu ermöglichen. Seit 2002 ist Modbus ein offener und lizenzfreier Standard und gilt heute als das am weitesten verbreitete Protokoll in der Industrie, das weltweit in Hunderten von Millionen Geräten zum Einsatz kommt.

Seine Beliebtheit beruht auf drei grundlegenden Eigenschaften: Einfachheit (einfach zu implementieren, gut dokumentiert), Robustheit (funktioniert auch bei Verbindungen mit schlechter Qualität) und Interoperabilität (offener Standard, der von nahezu allen industriellen Geräten unterstützt wird – Steuerungen, Frequenzumrichter, Energiezähler, Sensoren, Regler).

Trotz seines Alters ist Modbus nach wie vor unverzichtbar, insbesondere in bestehenden Anlagen (Brownfield) und für kostengünstige Geräte. Sein größter Nachteil ist das Fehlen nativer Sicherheitsfunktionen (keine Authentifizierung, keine Verschlüsselung), weshalb es hinter einem VPN geschützt werden muss, wenn es über ein nicht kontrolliertes Netzwerk übertragen wird.

Modbus RTU vs. Modbus TCP

Es gibt zwei Hauptvarianten des Modbus-Protokolls:

Modbus RTU (seriell)

  • Physikalische Schicht: RS-232 (Punkt-zu-Punkt) oder RS-485 (Multidrop-Bus mit bis zu 32 Geräten, maximale Entfernung 1.200 m bei 9.600 Baud).
  • Übertragung: binär, kompakt. Jede Nachricht enthält die Adresse des Slaves, den Funktionscode, die Daten und einen CRC-16 zur Integritätsprüfung.
  • Topologie: Master-Slave (ein einziger Master, bis zu 247 adressierbare Slaves von 1 bis 247).
  • Anwendungsbereiche: Energiezähler, Frequenzumrichter, industrielle Sensoren mit RS-485-Ausgang, ältere SPSen.

Modbus TCP (Ethernet)

  • Physikalische Schicht: Ethernet (10/100/1000 Mbit/s), IP-Protokoll, TCP-Port 502.
  • Kapselung: Der Modbus-RTU-Frame wird in einen 7 Byte großen MBAP-Header (Modbus Application Protocol) gekapselt, der den CRC ersetzt (Ethernet gewährleistet die Integrität selbst).
  • Topologie: Client-Server (der Client, ehemals Master, fragt den Server, ehemals Slave, ab). Mehrere Clients können gleichzeitig denselben Server abfragen.
  • Anwendung: Steuerungen mit Ethernet-Anschluss (Siemens S7, Schneider M340/M580, Allen-Bradley), HMI/SCADA, Cloud-Gateways.
KriteriumModbus RTUModbus TCP
Physikalische SchichtRS-232 / RS-485Ethernet / TCP-IP
Typische Baudrate9.600 bis 115.200 Baud10/100 Mbit/s
EntfernungBis zu 1.200 m (RS-485)Standard-Ethernet-Netzwerk
Anzahl der Slaves1 bis 247Unbegrenzt (IP-Adressierung)
IntegritätsprüfungCRC-16TCP-Prüfsumme
Native SicherheitKeineKeine (VPN verwenden)

Aufbau einer Modbus-Nachricht

Modbus RTU – Datenrahmen

| Slave-Adresse (1 Byte) | Funktionscode (1 Byte) | Daten (N Bytes) | CRC-16 (2 Bytes) |

Beispiel für eine FC03-Anfrage, bei der zwei Register ab der Adresse 0x0000 auf Slave 1 gelesen werden:

01 03 00 00 00 02 C4 0B

Modbus TCP – Datenrahmen (mit MBAP-Header)

| Transaktions-ID (2 Byte) | Protokoll-ID (2 Byte, = 0x0000) | Länge (2 Byte) | Geräte-ID (1 Byte) | Funktionscode | Daten |

Modbus-Register

Modbus gliedert die Daten in vier Registertypen, die durch ihre Referenzadresse gekennzeichnet sind:

TypAdresseZugriffBeschreibung
Coils (Spulen)0x0001–0xFFFF (Basis 1)Lesen / SchreibenDigitale Binäreingänge (Bit) – Status eines Ventils, eines Relais
Discrete Inputs0x1001–0xFFFFNur LesenDigitale Binäreingänge (Bit) – Zustand eines binären Sensors
Holding-Register0x4001–0xFFFFLesen/Schreiben16-Bit-Lese-/Schreibregister – Sollwerte, Parameter, Messwerte
Eingangsregister0x3001–0xFFFFNur Lesen16-Bit-Register (nur Lesen) – Sensormesswerte, Prozesswerte

Hinweis: Die tatsächliche Adressierung in den Frames beginnt bei 0 (Offset -1 gegenüber den dokumentierten Referenzwerten). Somit wird das Holding-Register mit der Referenznummer 40001 im Frame mit 0x0000 adressiert.

Gängige Funktionscodes (Function Codes)

CodeHexNameBeschreibung
FC010x01Read CoilsStatus von N Spulen (digitale Ausgänge) auslesen
FC020x02Read Discrete InputsStatus von N digitalen Eingängen auslesen
FC030x03Read Holding RegistersN 16-Bit-Register im Lese-/Schreibmodus lesen – am häufigsten verwendet
FC040x04Read Input RegistersN 16-Bit-Register im Nur-Lese-Modus lesen
FC050x05Einzelnen digitalen Ausgang schreibenEinen einzelnen digitalen Ausgang schreiben (0x0000 = AUS, 0xFF00 = EIN)
FC060x06Einzelnes Register schreibenEin einzelnes 16-Bit-Holding-Register schreiben
FC160x10Mehrere Register schreibenMehrere aufeinanderfolgende Register in einer einzigen Transaktion schreiben

FC03 ist mit Abstand der am häufigsten verwendete Code für die Überwachung: Er ermöglicht das Auslesen von Messwerten, Zuständen und Zählerständen eines Geräts.

Slave-Adressierung (Unit-ID)

Bei Modbus RTU verfügt jedes Gerät am RS-485-Bus über eine eindeutige Adresse zwischen 1 und 247. Die Adresse 0 ist für den Broadcast-Betrieb reserviert – es können ausschließlich Schreibbefehle gesendet werden.

Bei Modbus TCP wird das Feld Unit ID (früher als Slave ID bezeichnet) im MBAP-Header beibehalten. Es ist bei Steuerungen mit nur einer Einheit in der Regel auf 1 oder 255 festgelegt, kann jedoch zur Adressierung verschiedener RS-485-Busse hinter einem einzigen Modbus-TCP/RTU-Gateway verwendet werden.

Modbus-Konfiguration am Eziwan-Gateway

Das Eziwan-Gateway unterstützt nativ Modbus RTU (über RS-485) und Modbus TCP (über Ethernet). Die Konfiguration erfolgt über die Weboberfläche des Gateways:

  1. Protokoll auswählen: Wählen Sie im Menü „Datenquelle“ entweder „Modbus RTU“ oder „Modbus TCP“ aus.
  2. Serielle Einstellungen (nur RTU): Baudrate (9.600, 19.200, 38.400, 57.600 oder 115.200), Parität (Keine/Gerade/Ungerade), Stoppbits (1 oder 2).
  3. Slave-Adresse: Geben Sie die Adresse des Geräts ein (1 bis 247).
  4. Datenpunkte definieren: Geben Sie für jeden auszulesenden Wert den Funktionscode (FC01 bis FC04), die Registeradresse und den Datentyp (INT16, UINT16, INT32, FLOAT32, BOOL) an.
  5. Erfassungsintervall: Abfragefrequenz (von 1 Sekunde bis zu mehreren Minuten, je nach Bedarf).
  6. Verbindung testen: Verwenden Sie die Funktion „Lesetest“, um zu überprüfen, ob die Daten korrekt gelesen werden, bevor Sie die Datenübertragung in die Cloud aktivieren.

Weiterführende Ressourcen

Häufig gestellte Fragen

Was ist der Unterschied zwischen Modbus RTU und Modbus TCP?

Modbus RTU wird über eine serielle RS-485-Verbindung übertragen (Multi-Slave-Bus, bis zu 1.200 m); Modbus TCP kapseln dieselben Anfragen in einen Ethernet/IP-Frame auf Port 502 ein. Ein Gateway schlägt eine Brücke zwischen den beiden Welten.

Was ist ein Modbus-Register?

Ein durch eine Adresse identifiziertes 16-Bit-Speicherfeld. Die Halteregister (Holding Registers, FC03/FC06/FC16) enthalten die Prozesswerte; die 32-Bit-Größen (Gleitkommazahlen, Zähler) belegen zwei aufeinanderfolgende Register.

Ist Modbus sicher?

Nein: Das Protokoll verfügt weder über eine Authentifizierung noch über eine Verschlüsselung. Es darf niemals im Internet zugänglich sein – die Regel lautet, es auf das lokale Netzwerk zu beschränken und die Daten über einen verschlüsselten VPN-Tunnel in die Cloud zu übertragen.

Wie viele Geräte können an einen Modbus-RTU-Bus angeschlossen werden?

Bis zu 32 Slaves ohne Repeater (247 mögliche logische Adressen). Bei einer größeren Anzahl oder zur Kombination unterschiedlicher Abfrageraten erfolgt eine Aufteilung auf mehrere Busse über separate RS-485-Anschlüsse.

Weiterführende Ressourcen