Modbus-CRC- und LRC-Rechner

CRC-16 eines Modbus-RTU-Telegramms oder LRC eines Modbus-ASCII-Telegramms berechnen oder prüfen und alle in den Bytes enthaltenen Felder lesen.

Modbus und serielle Verbindungen Aktualisiert Kostenlos, ohne Anmeldung

LRC, ASCII

Zum Senden dieses Telegramms 7E anhängen. Ein eingefügtes Telegramm mit eigener LRC-Prüfsumme wird stattdessen geprüft.

Halteregister lesen, Anfrage

BytesFeldWertBedeutung
11Unit-Adresse17Server, für den dieses Telegramm bestimmt ist oder von dem es stammt
03Funktion0x03Halteregister lesen
00 6BStartadresse107Halteregister 40108, Protokolladresse 0x006B
00 03Anzahl33 Halteregister; die Antwort enthält 6 Datenbytes
7ELRC0x7EAls zwei ASCII-Zeichen vor CR LF übertragen

Vollständiges Telegramm

  • Mit Leerzeichen11 03 00 6B 00 03 7E
  • C-Array0x11, 0x03, 0x00, 0x6B, 0x00, 0x03, 0x7E
  • Ohne Trennzeichen1103006B00037E
  • Modbus ASCII, dann CR LF:1103006B00037E
LRC Byte für Byte

Jedes Byte wird zur Summe addiert; Überträge werden verworfen.

ByteWertSumme danach
1110x11
2030x14
3000x14
46B0x7F
5000x7F
6030x82

Die Summe endet bei 0x82; ihr Zweierkomplement ist der LRC 7E.

Prüfverfahren
Prüfverfahren
Telegramm

Beispiele

Ab der Unit-Adresse. Zum Prüfen mit CRC einfügen

LRC-Byte

7E

Halteregister lesen: Anfrage an Unit 17.

ASCII-Telegramm vor CR LF
:1103006B00037E
Bytesumme ohne Überträge
0x82
Telegrammlänge mit Doppelpunkt, LRC und CR LF
17 Zeichen

Modbus ASCII überträgt jedes Byte als zwei Hex-Zeichen, beginnt mit einem Doppelpunkt und endet mit CR LF.

So wird es berechnet
  1. Summe = Adresse + Funktion + Daten, Überträge verworfen=11 + 03 + 00 + 6B + 00 + 03=0x82
  2. LRC = Zweierkomplement der Summe = (0x100 − Summe) mod 0x100=0x100 − 0x82=0x7E

Choose the gateway connection for this Modbus line.

System zusammenstellen

Der Modbus-ASCII-LRC von 11 03 00 6B 00 03 ist 7E; das Telegramm lautet :1103006B00037E, gefolgt von CR LF.

Tipp: Fügen Sie ein Telegramm direkt aus einer seriellen Aufzeichnung ein, einschließlich CRC. Wenn der Funktionscode die Länge festlegt, werden die letzten Bytes geprüft; das Ergebnis zeigt, ob die Prüfsumme übereinstimmt.

Modbus-CRC-16 berechnen

Jedes Modbus-RTU-Telegramm endet mit einem 16-Bit-CRC über alle vorhergehenden Bytes; bei der Übertragung kommt das niederwertige Byte zuerst. Ermittelt ein Gerät einen anderen CRC, verwirft es das Telegramm ohne Antwort. Deshalb zeigt sich ein falscher CRC als Zeitüberschreitung und nicht als Ausnahme. Modbus ASCII verwendet stattdessen einen einfacheren LRC aus einem Byte. Der Rechner ermittelt beide und zeigt das Telegramm Byte für Byte.

CRC-16 (Modbus RTU)

Start 0xFFFF; für jedes Byte: XOR, dann 8 × (nach rechts schieben; fällt eine 1 heraus, XOR mit 0xA001)

Beginnen Sie mit 0xFFFF. Verknüpfen Sie das erste Byte per XOR mit dem niederwertigen Registerbyte. Schieben Sie danach achtmal nach rechts und verknüpfen Sie nach jedem Schieben, bei dem eine 1 herausfällt, per XOR mit 0xA001. Wiederholen Sie dies für jedes Byte von der Unit-Adresse bis zum letzten Datenbyte.

Bytefolge bei der Übertragung

CRC 0x8776 → übertragen als 76 87

Der CRC ist das einzige Feld in einem Modbus-Telegramm, das mit dem niederwertigen Byte zuerst übertragen wird. Alle anderen Felder, auch Adressen und Registerwerte, werden mit dem höherwertigen Byte zuerst übertragen.

LRC (Modbus ASCII)

LRC = (0x100 − (Bytesumme mod 0x100)) mod 0x100

Addieren Sie Adress-, Funktions- und Datenbytes, verwerfen Sie Überträge über 8 Bit hinaus und bilden Sie das Zweierkomplement. Es wird als zwei Hex-Zeichen nach den Daten und vor CR LF übertragen.

Beispiele: Modbus-CRC

Drei Halteregister von Unit 17 lesen

Unit 0x11 (17), Funktion 03, ab Adresse 0x006B, drei Register: die Anfrage aus dem Leitfaden für die serielle Modbus-Leitung. Der CRC ist 0x8776 und wird als 76 87 übertragen. Das vollständige Telegramm lautet daher 11 03 00 6B 00 03 76 87.

CRC-Bytes in Übertragungsreihenfolge 76 87 Im Rechner öffnen

Dieselbe Anfrage in Modbus ASCII

0x11 + 0x03 + 0x00 + 0x6B + 0x00 + 0x03 = 0x82. Das Zweierkomplement ist 0x7E. Der LRC ist damit 7E und die Zeile lautet :1103006B00037E, gefolgt von CR LF.

LRC-Byte 7E Im Rechner öffnen

Ein erfasstes Telegramm prüfen

Eine serielle Aufzeichnung zeigt 01 03 00 00 00 0A C5 CD. Geben Sie die ersten sechs Bytes ein: Der CRC ergibt C5 CD und stimmt mit den letzten beiden erfassten Bytes überein. Der Prüfwert des Telegramms passt damit zu seinen vorangehenden Bytes. Falls die Werte abweichen, prüfen Sie Verkabelung, Abschluss und Störungen, bevor Sie das Gerät verdächtigen.

CRC-Bytes in Übertragungsreihenfolge C5 CD Im Rechner öffnen

CRC und LRC gängiger Modbus-Anfragen

Anfragen an Unit 1 und Unit 17, mit dem CRC in Übertragungsreihenfolge und dem Modbus-ASCII-LRC.

Telegramm (Hex)CRC-16, übertragenLRC
01 03 00 00 00 0184 0AFB
01 03 00 00 00 0AC5 CDF2
01 04 00 00 00 0271 CBF9
01 06 00 01 00 0398 0BF5
11 03 00 6B 00 0376 877E
11 10 00 01 00 02 04 00 0A 01 02C6 F0CB

Diese Tabelle als CSV herunterladen

Fragen zu Modbus-CRC

Warum wird beim Modbus-CRC das niederwertige Byte zuerst übertragen?

Das folgt aus der CRC-Berechnung, die beim niederwertigsten Bit beginnt und nach rechts schiebt. Die Modbus-Spezifikation für serielle Leitungen legt die Reihenfolge fest: erst das niederwertige, dann das höherwertige Byte. Werkzeuge mit der Anzeige 0x8776 und Telegramme mit der Endfolge 76 87 sind beide korrekt.

Was geschieht bei einem falschen CRC?

Das Gerät verwirft das Telegramm und antwortet nicht; der Master sieht eine Zeitüberschreitung. Für einen falschen CRC sendet das Gerät keine Ausnahme. Wiederholte CRC-Fehler weisen häufig auf Abschluss, Bias-Widerstände, Erdung oder Leitungsführung hin.

Verwendet Modbus TCP einen CRC?

Nein. Modbus TCP stützt sich auf die Fehlerprüfung von TCP und ersetzt den CRC durch den MBAP-Header. Ein Gateway zwischen TCP und RTU ergänzt beziehungsweise entfernt den CRC.

Welche CRC-Variante verwendet Modbus?

CRC-16/MODBUS: Polynom 0x8005 in reflektierter Form (0xA001), Anfangswert 0xFFFF, kein abschließendes XOR.

Grenzen dieses Ergebnisses

  • Ein übereinstimmender CRC belegt nur, dass die eingegebenen Bytes die Prüfsumme ergeben; er bestätigt weder Funktion, Adresse, Anzahl noch Geräteantwort.
  • Modbus-TCP-Telegramme enthalten keinen CRC; der MBAP-Header wird hier nicht erstellt.

Kontinuierlich messen

Ein ZMB erstellt und prüft die RTU-Telegramme selbst. Er fragt das Modbus-Gerät vor Ort über RS-485 ab und sendet die Daten über das drahtlose Mesh-Netz an das Gateway.

Verwandte Leitfäden

Quellen

  1. MODBUS over Serial Line Specification and Implementation Guide V1.02 (öffnet in einem neuen Tab) (PDF) Modbus Organization, 2006-12-20
  2. SCADAPack E Modbus frame diagnostics example (öffnet in einem neuen Tab) Schneider Electric, modified 2025-08-18