Understanding Modbus CRC

Why CRC?

  • More robust than simple checksums
  • Detects common transmission errors
  • Industry standard for serial communications
  • Computationally efficient
  • Proven reliability in industrial environments

CRC vs Checksum: Simple Example

Simple Checksum

Original Message:
0x01 0x03 0x02
Calculation:
01 + 03 + 02 = 06
Result:
Checksum = 0x06
❌ Wont detect: 0x02 0x03 0x01
❌ Wont detect: 0x03 0x01 0x02

CRC-16

Original Message:
0x01 0x03 0x02
Calculation:
CRC = 0xFFFF For each byte: CRC ^= byte For each bit: if (CRC & 1) CRC = (CRC >> 1) ^ 0xA001 else CRC = CRC >> 1
Result:
CRC = 0xB8C1
✓ Detects any byte order change
✓ Detects bit errors