What Modbus RTU CRC-16 checks
Modbus RTU appends a 16-bit CRC check value to every frame. The receiver recalculates the CRC from the received bytes and compares it with the final two bytes of the frame. A mismatch indicates that the frame was altered in transit, assembled incorrectly or parsed incorrectly.
Modbus RTU also has an important byte-order detail: the low CRC byte is transmitted first, followed by the high byte. A calculator may therefore display a numeric CRC such as 0xCDC5 while the frame contains C5 CD. This often causes confusion when frames are assembled manually.
Useful during troubleshooting
- Manual frame test: verify a request from documentation or a serial log.
- Compare with a trace: confirm that the last two bytes are the expected CRC.
- Client development: use a known frame as a test vector for your implementation.
A valid CRC does not prove that the Modbus request itself is correct. Device address, function code, register, quantity and timing still need to be checked separately.