CRC i sumy kontrolne (Modbus CRC16, CRC32)

Wklej bajty ramki, a dostaniesz sumy kontrolne i ramkę z dopisanym CRC, gotową do wysłania przez port szeregowy.

Sumy kontrolne

Wynik

Modbus CRC160xCDC5
Bajty CRC w ramce (najpierw młodszy)
C5 CD
Liczba bajtów danych
6
Ramka Modbus RTU z CRC
01 03 00 00 00 0A C5 CD
Ramka Modbus ASCII z LRC
:01030000000AF2\r\n
Algorytmhexdziesiętnie
CRC-16/MODBUS0xCDC552677
CRC-16/IBM-3740 (CCITT-FALSE)0x04281064
CRC-16/XMODEM0x0A382616
CRC-16/KERMIT0xB6BD46781
CRC-16/ARC0xD6C554981
CRC-32 (ISO-HDLC)0xDDEBE1C83723223496
CRC-32C (Castagnoli)0x9BCB8F5F2613808991
CRC-8/SMBUS0xB9185
LRC (Modbus ASCII)0xF2242
XOR (BCC)0x088
Suma mod 2560x0E14
Suma mod 655360x000E14

Modbus RTU wysyła CRC na końcu ramki, najpierw młodszy bajt. Parametry algorytmów zgodne z katalogiem CRC RevEng.

Wstaw na swoją stronę

Wklej ten kod w HTML swojej strony. Narzędzie dopasuje wysokość samo, a link do Kalkio musi zostać widoczny.

Kalkulator od Kalkio · kalkio.app

CRC w Modbus RTU

Modbus RTU używa algorytmu CRC-16/MODBUS: wielomian 0x8005 w odwróconej postaci (0xA001), wartość początkowa 0xFFFF. Dwa bajty CRC dopisuje się na końcu ramki, najpierw młodszy. Przykład: zapytanie o 10 rejestrów od adresu 0 do urządzenia nr 1 to 01 03 00 00 00 0A, jego CRC to 0xCDC5, więc ramka kończy się bajtami C5 CD.

LRC w Modbus ASCII

W Modbus ASCII zamiast CRC jest LRC: suma bajtów adresu, funkcji i danych modulo 256, zanegowana (uzupełnienie do dwóch). Ramka zaczyna się dwukropkiem, bajty są zapisane jako znaki hex, a kończy ją CR LF.

Który CRC wybrać?

Jeśli dokumentacja urządzenia podaje tylko „CRC16”, porównaj wynik ze znaną ramką: różne odmiany CRC-16 dają różne wyniki dla tych samych danych. Sprawdzeniem każdego algorytmu jest jego wynik dla tekstu „123456789”, np. 0x4B37 dla CRC-16/MODBUS i 0xCBF43926 dla CRC-32.

Potrzebujesz więcej?

Kalkio liczy to, co najczęściej potrzebne. Do bardziej zaawansowanych zadań polecamy:

Częste pytania

Dlaczego mój CRC ma bajty w odwrotnej kolejności?

Modbus RTU wysyła CRC od młodszego bajtu. Wartość 0xCDC5 trafia do ramki jako C5 CD. Kalkulator pokazuje obie postacie.

Czy wpisać adres urządzenia do danych?

Tak. CRC liczy się z całej ramki: adresu urządzenia, kodu funkcji i danych, bez samych bajtów CRC.