Das Modbus-Kommunikationsprotokoll wurde 1979 von Modicon erfunden und ist das älteste Busprotokoll der Welt, das in der Industrie eingesetzt wird. Da es kostenlos veröffentlicht wurde, müssen Hersteller, die das Protokoll verwenden, keine Gebühren zahlen, so dass das Modbus-Protokoll weltweit weit verbreitet ist.
Das Modbus-Kommunikationsprotokoll hat mehrere Varianten, von denen die gängigsten Modbus RTU- und Modbus TCP-Protokolle sind.
Die beiden Protokolle sind sich sehr ähnlich. Nehmen wir als Beispiel das Lesen mehrerer Halteregister, um den Unterschied zwischen ihnen zu verdeutlichen:
Das Sendeformat der Modbus-RTU-Kommunikation lautet: Slave-Adresse 01 (Angabe der Slave-Adresse) Funktionscode 03 (Lesen von Einzel-/Mehrfach-Hauptregistern) Datenstartadresse 00 00 (Angabe, dass mit 40001 begonnen wird) Datennummer 00 02 (Angabe, dass zwei Wörter gelesen werden) CRC-Prüfcode xx xx (der CRC-Prüfcode ist hier C4 0B), was zusammen 01 03 00 00 00 02 C4 0B ergibt. Nach dem Senden sendet die Slave-Station Daten zurück. Das Datenformat ist: 01 03 04 01 02 03 04 5B 3C, wobei 01 die Adresse der Slave-Station, 03 der Funktionscode für das Lesen, 04 die Anzahl der Datenbytes, 01 02 03 04 der Dateninhalt, 5B 3C der CRC-Prüfcode ist.
Das Modbus-TCP-Protokoll fügt dem Modbus-RTU-Protokoll einen MBAP-Header hinzu. Da TCP ein Dienst ist, der auf zuverlässigen Verbindungen basiert, wird der CRC-Prüfcode im RTU-Protokoll nicht mehr benötigt, so dass das Modbus-TCP-Protokoll keine CRC-Prüfung enthält. Die Verifizierung zeigt, dass der MBAP-Header sieben Bytes lang ist. Bis auf das fünfte und sechste Byte sind die übrigen Bytes im Wesentlichen unverändert. Bei der Verwendung von Modbus TCP zur Ausführung des obigen Vorgangs wird beispielsweise 00 01 00 00 00 06 ff 03 00 00 00 00 02 gesendet. Das fünfte und sechste Byte sind 00 06, d. h. nach 00 06 folgen 6 Bytes.
Der Rückgabewert ist 00 01 00 00 00 07 ff 03 04 01 02 03 04. Die ersten 7 Bytes sind der MBAP-Nachrichtenkopf, 03 Funktionscode-Lesung, 04 Datenbytes, 01 02 03 04 stellt den Dateninhalt dar.
Das Modbus-TCP-Protokoll ist also eigentlich das Modbus-RTU-Protokoll, bei dem der CRC-Prüfcode und der vorherige Slave-Adresscode entfernt und ein 7-Byte-MBAP-Header an der Vorderseite hinzugefügt wurde.
Modbus TCP hat sich auf der Grundlage von Ethernet entwickelt, und die physikalische Schnittstelle bestimmt die Kommunikationsrate und die Verifizierungsmethode.
Dies ist der grundlegende Unterschied zwischen den Protokollen Modbus RTU und Modbus TCP. Es ist klarer beschrieben und ich hoffe, dass es alle Zweifel ausräumen kann.