Modbus

Zuletzt aktualisiert am 16 Oktober 2025

Das Modbus-Kommunikationsprotokoll ist ein weit verbreiteter Standard in der industriellen Automatisierung. In dieser Anleitung erkläre ich in verständlicher Sprache, was Modbus ist, welche Varianten es gibt und wie man es praktisch einstellt. Sie lesen über Modbus RTU und Modbus TCP, Register und Coils sowie wichtige Einstellungen wie RS-485, Baudrate und Slave-ID.

Was ist das Modbus-Kommunikationsprotokoll?

Modbus ist ein einfaches, offenes Protokoll, das von Modicon (jetzt Schneider Electric) entwickelt wurde, um Daten zwischen elektronischen Geräten auszutauschen. Das Modbus-Kommunikationsprotokoll arbeitet nach einem Master/Slave-Modell bei seriellen Leitungen (RTU) und einem Client/Server-Modell bei TCP. Geräte fragen Daten ab oder liefern sie über Coils und Register mit fester Adressierung.

Architektur: Master/Slave und Client/Server

Bei Modbus RTU gibt es einen Master, der Befehle und Leseanforderungen sendet, und mehrere Slaves, die reagieren. Bei Modbus TCP sprechen wir von Client/Server: Ein Client (z. B. SCADA oder SPS) verbindet sich über TCP/IP mit einem oder mehreren Servern (Geräten).

Datendarstellung: Coils und Register

Der Austausch erfolgt über Coils (1 Bit) und Register (16-Bit-Wörter). Coils sind typischerweise digitale Ausgänge; diskrete Eingänge sind Nur-Lese-Digitaleingänge. Eingangsregister enthalten analoge Messwerte; Holding-Register sind les- und schreibbar für Sollwerte und Parameter.

Wichtigste Merkmale

  1. Simpel und robust – wenig Overhead, zuverlässig in industriellen Umgebungen
  2. Breit unterstützt – offener Standard, von vielen Herstellern und Geräten
  3. Master-Slave (RTU) / Client-Server (TCP) – eine Partei bestimmt die Kommunikation
  4. Standardisierte Adressstruktur – feste Einteilung für Coils und Register
  5. Flexibler Transport – serielle Leitungen (RS-232/RS-485) und Ethernet (TCP/IP)
  6. Deterministisches Verhalten – vorhersehbare Timing dank mastergesteuerter Polling

Unterstützte Geräte und Anwendungen

Anwendung / GerätBeschreibung
SPSViele SPS unterstützen Modbus RTU und/oder Modbus TCP für die Kommunikation mit Peripheriegeräten.
Sensoren & AktorenIntelligente Sensoren (Temperatur, Druck, Durchfluss) und Aktoren bieten oft Daten über Modbus.
Frequenzumrichter und MotorstarterAntriebe verwenden Modbus, um Parameter zu lesen oder zu schreiben.
Mess- und EnergiezählerEnergie- und Messzähler kommunizieren über Modbus-Register.
SCADA- und HMI-SystemeFungieren oft als Master oder Client, um Daten aus Modbus-Slaves zu sammeln.
Gateways und KonverterKonvertieren Modbus RTU nach TCP oder in andere Protokolle (z. B. MQTT).

Einstellen: Modbus RTU

Modbus RTU ist für serielle Kommunikation gedacht und eignet sich für einfache, lokale Netzwerke.

Physische Verbindung

  1. Verwenden Sie RS-485 (am häufigsten verwendet) oder RS-232. RS-485 unterstützt Multidrop (mehrere Geräte auf einer Leitung).
  2. Sorgen Sie für korrekte Verkabelung und richtige Abschlusswiderstände, um Reflexionen zu vermeiden.

Netzwerkparameter

  1. Stellen Sie Baudrate, Datenbits, Parität und Stoppbits identisch auf allen Geräten ein.
  2. Jeder Slave erhält eine eindeutige Slave-ID (1–247).
  3. Polling: Der Master fragt periodisch Daten ab; gute Timing verhindert Kollisionen.

Einstellen: Modbus TCP

Modbus TCP ist Modbus über Ethernet via TCP/IP. Der Standardport ist 502. Ein Client (z. B. SCADA oder SPS) stellt eine Verbindung zu einem Server/Gerät her. Für Remote Access und Cloud-Integration können Sie Modbus TCP in Kombination mit Netzwerksegmentierung und Sicherheitsmaßnahmen einsetzen.

Für Remote Access und Datalogging können Sie Modbus TCP mit Gateways und Datenloggern kombinieren; achten Sie dabei gut auf IP-Konfiguration (feste IP oder zuverlässige DHCP-Reservierung) und auf Firewallregeln.

Modbus-Speichermodell und Registertypen

Modbus verwendet vier Registertypen mit festen logischen Adressen und Funktionscodes:

TypLogischer AdressbereichBeschreibungFunktionen (typisch)Zugänglichkeit
Coils0xxxxDigitale Ausgänge (1 Bit)01 (Read), 05/15 (Write)Lesen & Schreiben
Discrete Inputs1xxxxDigitale Eingänge (1 Bit)02 (Read)Nur lesen
Input Registers3xxxxAnaloge Eingänge (16-Bit)04 (Read)Nur lesen
Holding Registers4xxxxAnaloge Werte / Einstellparameter03 (Read), 06/16 (Write)Lesen & Schreiben

Praktische Beispiele

In Modbus-Nachrichten verwenden Sie Offsets ab 0, nicht die logischen Adressen. Beispiele:

  1. Holding Register 40001 → Offset 0 bei Funktionscode 03.
  2. Holding Register 40010 → Offset 9.
  3. Coils lesen: FC01; Coils schreiben: FC05 (single) oder FC15 (multiple).

Coils (0xxxx)

1 Bit pro Adresse, repräsentieren digitale Ausgänge. Beispiel: 00001 = Lampe ein/aus. Lesen: FC01. Schreiben: FC05/FC15.

Discrete Inputs (1xxxx)

1 Bit pro Adresse, Nur-Lese-Digitaleingänge. Lesen: FC02. Beispiel: 10001 = Tür offen/geschlossen.

Input Registers (3xxxx)

16-Bit-Wörter, Nur-Lesen. Wird für analoge Messwerte (Temperatur, Druck) verwendet. Lesen: FC04. Beispiel: 30001 = Temperatur °C.

Holding Registers (4xxxx)

16-Bit-Wörter, Lesen und Schreiben; für Einstellwerte und Prozessdaten. Lesen: FC03. Schreiben: FC06 (single) / FC16 (multiple). Beispiel: 40001 = Sollwert Temperatur.

Logische Adressen vs. Offsets

Die logischen Adressen (wie 40001) sind für die Dokumentation gedacht; in Modbus-Nachrichten wird nur der Offset gesendet. Verwechslung zwischen logischen Adressen und Offsets ist eine häufige Fehlerquelle – überprüfen Sie immer die Gerätedokumentation.

Sicherheit und Segmentierung

Modbus hat keine eingebaute Security. Verwenden Sie daher Netzwerksegmentierung (VLANs), Firewalls und VPNs, um das Protokoll zu schützen. Für breitere IT/OT-Issues ist Wissen über Cybersecurity essentiell bei Design und Inbetriebnahme.

Zusammenfassung

Modbus RTU und Modbus TCP bilden zusammen einen robusten und breit anwendbaren Standard für industrielle Kommunikation. RTU ist ideal für serielle Verbindungen; TCP ist geeignet für Ethernet. Das Speichermodell mit Coils und Registern ist fest, wobei Holding-Register am flexibelsten sind. Verständnis von Offsets, Funktionscodes (z. B. FC01, FC03, FC04) und seriellen Einstellungen (Baudrate, Parität, Stoppbits) ist essentiell für eine korrekte Implementierung.