6.7.1.3
Eine Modbus Nachricht wird von einem sendenden Gerät in ein Telegramm gefügt,
das einen festgelegten Anfangs- und Endpunkt hat. Dies ermöglicht empfangenden
Geräten den Beginn und das Ende der Nachricht zu erkennen. Teilnachrichten müs-
sen erkannt und als Ergebnis ein Fehler gesetzt werden. In der Betriebsart RTU wer-
den Nachrichtentelegramme durch ein Ruheintervall von mindestens 3,5 Zeichen
voneinander getrennt.
Das gesamte Nachrichtentelegramm muss als zusammenhängender Zeichenfluss
übertragen werden.
Falls ein Ruheintervall von mehr als 1,5 Zeichen zwischen zwei Zeichen auftritt, wird
das Nachrichtentelegramm als unvollständig gekennzeichnet und vom Frequenzum-
richter verworfen.
6.7.1.4
Die Betriebsart RTU enthält ein Fehlerprüffeld, welches auf einer zyklischen Block-
prüfung (CRC – Cyclic Redundancy Check) der Nachrichteninhalte basiert.
Das CRC-Feld prüft den Inhalt der gesamten Nachricht. Dies wird ungeachtet einer
Paritätsprüfung durchgeführt, welche die einzelnen Zeichen der Nachricht prüft.
Das CRC-Feld enthält einen 16-Bit Wert, ausgeführt als zwei Bytes (je 8 Bit).
Das CRC-Feld wird als letztes Feld an die Nachricht angehängt. Es wird in der Rei-
henfolge „niederwertiges Byte", „höherwertiges Byte" angefügt. Das CRC höherwer-
tige Byte ist das letzte Byte, das mit der Nachricht gesendet wird.
Der CRC-Wert wird vom sendenden Gerät berechnet und an die Nachricht ange-
hängt. Das empfangende Gerät berechnet während des Empfangs der Nachricht
einen CRC-Wert und vergleicht den berechneten Wert mit dem aktuell empfangenen
Wert des CRC-Feldes. Sind die beiden Werte nicht gleich, wird ein Fehler ausgelöst.
Die CRC Berechnung beginnt mit dem Anfangsladen eines 16-Bit Registers mit allen
Einerkomplementen (0xFFFF). Danach werden nacheinander die Bytes der Nach-
richt mit dem aktuellen Inhalt des Registers verknüpft.
Während der Erzeugung des CRC wird jedes 8-Bit Zeichen über eine ExOR (Exclu-
siv-ODER)-Funktion mit dem Registerinhalt verknüpft. Das Ergebnis wird in Richtung
des niederwertigsten Bit (LSB – least significant bit) geschoben und eine Null in das
höherwertigste Bit (MSB – most significant bit) geschrieben. Das niederwertigste Bit
(LSB) wird herausgezogen und geprüft. Falls das LSB eine 1 ist, wird das Register
mit dem festen Wert 0xA001 EXOR-verknüpft. Falls das LSB eine 0 ist, erfolgt keine
ExOR-Verknüpfung.
Dieser Ablauf wird wiederholt, bis acht Verschiebungen durchgeführt wurden. Nach
der letzten (der achten) Verschiebung wird das nächste 8-Bit Zeichen mit dem aktu-
ellen Registerwert ExOR-verknüpft; der Ablauf wird acht mal wiederholt, wie oben
beschrieben. Der endgültige Inhalt des Registers nach dem Durchlauf aller Bytes der
Nachricht ist der CRC-Wert.
Zuerst wird das niederwertige Byte und dann das höherwertige Byte des CRC-
Wertes an die Nachricht angehängt.
30
30
Modbus RTU Nachrichtentelegramm
Start
Adresse
Funktion
>= 3,5
8 Bits
Zeichen
CRC Prüfung
Betriebsanleitung Modbus
Betriebsanleitung Modbus
MODBUS Nachricht
Daten
8 Bits
N x 8 Bits
CRC
Ende
>= 3,5
16 Bits
Zeichen
05/08
05/08