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.
| Kriterium | Modbus RTU | Modbus TCP |
|---|---|---|
| Physikalische Schicht | RS-232 / RS-485 | Ethernet / TCP-IP |
| Typische Baudrate | 9.600 bis 115.200 Baud | 10/100 Mbit/s |
| Entfernung | Bis zu 1.200 m (RS-485) | Standard-Ethernet-Netzwerk |
| Anzahl der Slaves | 1 bis 247 | Unbegrenzt (IP-Adressierung) |
| Integritätsprüfung | CRC-16 | TCP-Prüfsumme |
| Native Sicherheit | Keine | Keine (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:
| Typ | Adresse | Zugriff | Beschreibung |
|---|---|---|---|
| Coils (Spulen) | 0x0001–0xFFFF (Basis 1) | Lesen / Schreiben | Digitale Binäreingänge (Bit) – Status eines Ventils, eines Relais |
| Discrete Inputs | 0x1001–0xFFFF | Nur Lesen | Digitale Binäreingänge (Bit) – Zustand eines binären Sensors |
| Holding-Register | 0x4001–0xFFFF | Lesen/Schreiben | 16-Bit-Lese-/Schreibregister – Sollwerte, Parameter, Messwerte |
| Eingangsregister | 0x3001–0xFFFF | Nur Lesen | 16-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)
| Code | Hex | Name | Beschreibung |
|---|---|---|---|
| FC01 | 0x01 | Read Coils | Status von N Spulen (digitale Ausgänge) auslesen |
| FC02 | 0x02 | Read Discrete Inputs | Status von N digitalen Eingängen auslesen |
| FC03 | 0x03 | Read Holding Registers | N 16-Bit-Register im Lese-/Schreibmodus lesen – am häufigsten verwendet |
| FC04 | 0x04 | Read Input Registers | N 16-Bit-Register im Nur-Lese-Modus lesen |
| FC05 | 0x05 | Einzelnen digitalen Ausgang schreiben | Einen einzelnen digitalen Ausgang schreiben (0x0000 = AUS, 0xFF00 = EIN) |
| FC06 | 0x06 | Einzelnes Register schreiben | Ein einzelnes 16-Bit-Holding-Register schreiben |
| FC16 | 0x10 | Mehrere Register schreiben | Mehrere 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:
- Protokoll auswählen: Wählen Sie im Menü „Datenquelle“ entweder „Modbus RTU“ oder „Modbus TCP“ aus.
- 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).
- Slave-Adresse: Geben Sie die Adresse des Geräts ein (1 bis 247).
- 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.
- Erfassungsintervall: Abfragefrequenz (von 1 Sekunde bis zu mehreren Minuten, je nach Bedarf).
- 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
- Umfassendes Handbuch zu RS-485 und Modbus
- Anschluss einer SPS an die Eziwan-Plattform
- Blogbeitrag: Modbus TCP vs. RTU – wann welches Protokoll verwenden?
- SPS / API – Programmierbare industrielle Steuerung
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
- Modbus in die Cloud – Erfassung und Überwachung Ihrer Modbus-Geräte
- Modbus-RTU-/TCP-Gateway – die Brücke zwischen serieller Schnittstelle und IP
- Modbus RTU vs. TCP – der detaillierte Vergleich
- Umfassender Modbus-Leitfaden – Konfiguration und Fehlerbehebung
- Industrieprotokolle – die Drehscheibe für OT-Protokolle