CoderTools

Modbus-Protokoll-Parser

Modbus RTU/ASCII/TCP-Kommunikation analysieren, konvertieren und debuggen

Bitte Daten eingeben

Modbus-Protokoll-Referenz

Modbus ist das am weitesten verbreitete industrielle Kommunikationsprotokoll, das 1979 von Modicon entwickelt wurde. Es ermöglicht die Kommunikation zwischen elektronischen Geräten über serielle Leitungen (RTU) oder Ethernet (TCP/IP). Dieses Tool hilft Ingenieuren beim Debuggen und Analysieren von Modbus-Kommunikation ohne spezielle Hardware oder Software.

Modbus RTU Rahmenstruktur

Modbus RTU (Remote Terminal Unit) überträgt Daten im Binärformat über serielle Verbindungen wie RS-232 oder RS-485. Jeder Rahmen enthält eine Slave-Adresse, einen Funktionscode, Daten und eine 16-Bit-CRC-Prüfsumme zur Fehlererkennung. Das kompakte Binärformat macht RTU effizient für bandbreitenbeschränkte Umgebungen.

Slave ID
1 byte
Function
1 byte
Data
N bytes
CRC-16
2 bytes

Modbus RTU Frame Structure

Modbus TCP Rahmenstruktur

Modbus TCP kapselt RTU-Rahmen in TCP/IP-Pakete mit einem 7-Byte MBAP (Modbus Application Protocol) Header. Dieser Header enthält eine Transaktions-ID für die Anfrage-Antwort-Zuordnung, Protokollkennung (immer 0 für Modbus), Nachrichtenlänge und Unit-ID. TCP-Kommunikation verwendet standardmäßig Port 502.

Trans ID
2 bytes
Proto ID
2 bytes
Length
2 bytes
Unit ID
1 byte
Function
1 byte
Data
N bytes

Modbus TCP Frame Structure (MBAP Header + PDU)

Häufige Funktionscodes

Funktionscodes definieren den Operationstyp in einer Modbus-Anfrage. Leseoperationen (01-04) rufen Spulenzustände oder Registerwerte ab, während Schreiboperationen (05, 06, 0F, 10) Gerätedaten ändern. Jeder Funktionscode hat spezifische Datenformatanforderungen.

Code Funktion Typ
0x01Coils lesenLesen
0x02Diskrete Eingänge lesenLesen
0x03Holding-Register lesenLesen
0x04Eingangsregister lesenLesen
0x05Einzelnen Coil schreibenSchreiben
0x06Einzelnes Register schreibenSchreiben
0x0FMehrere Coils schreibenSchreiben
0x10Mehrere Register schreibenSchreiben

Byte-Ordnung in Modbus

Verschiedene PLC-Hersteller verwenden unterschiedliche Byte-Ordnungen für 32-Bit und 64-Bit Werte. Die vier üblichen Anordnungen sind: Big Endian (ABCD) - Standard-Netzwerkordnung; Little Endian (DCBA); Mid-Big Endian (BADC); und Mid-Little Endian (CDAB). Bei falschen Werten verschiedene Byte-Ordnungen ausprobieren, um die korrekte Interpretation zu finden.

Big Endian (ABCD)
A B C D
Little Endian (DCBA)
D C B A
Mid-Big Endian (BADC)
B A D C
Mid-Little Endian (CDAB)
C D A B

CRC-16/Modbus Algorithmus

Modbus RTU verwendet CRC-16 mit Polynom 0x8005 und Initialwert 0xFFFF zur Fehlererkennung. Der CRC wird über Slave-Adresse, Funktionscode und Datenbytes berechnet, dann mit Low-Byte zuerst angehängt. Ein Rahmen mit falschem CRC sollte vom Empfänger verworfen werden.

Polynom: 0x8005
Anfangswert: 0xFFFF
Eingang spiegeln: Ja
Ausgang spiegeln: Ja

Praktische Anwendungen

  • Kommunikationsfehler zwischen PLCs und SCADA-Systemen durch Analyse von Roh-Paketdaten beheben
  • Registerwerte während der Inbetriebnahme durch Konvertierung von Hex-Daten in technische Einheiten verifizieren
  • Testbefehle für Gerätevalidierung ohne dedizierte Modbus-Master-Software generieren
  • Byte-Ordnungsprobleme bei der Integration von Geräten verschiedener Hersteller debuggen

Verwandte Tools

Schnellmenü

Keine aktuellen Tools