A CRC (Cyclic Redundancy Check) error means the Modbus frame arrived but was corrupted in transit. The master calculates a CRC from the received bytes and compares it to the CRC appended by the sender — if they don't match, something changed the data between sender and receiver. This is always a physical layer or electrical noise problem.
How CRC Works in Modbus
Every Modbus RTU frame ends with a 2-byte CRC-16 checksum. The sender calculates it from all preceding bytes using a standard polynomial (0xA001). The receiver does the same calculation and compares. If even a single bit is flipped during transmission, the CRC won't match.
Modbus TCP uses TCP's own checksumming and doesn't have this issue — if you're seeing data corruption over TCP, your problem is at the application layer (byte order, data types), not the transport layer.
Common Causes
1. Missing termination resistors
Without 120Ω terminators at both ends of the RS485 bus, signal reflections corrupt frames. This is the #1 cause of intermittent CRC errors, especially on cable runs over 10 metres.
2. Incorrect wiring
RS485 needs twisted pair cable. Running Modbus over untwisted cable alongside power cables introduces electromagnetic interference that flips bits.
3. Missing ground reference
Without a common ground between nodes, the differential voltage reference drifts and bit decisions become unreliable. This causes random CRC failures that are maddening to debug.
4. Baud rate too high for cable length
At 115200 baud over 500m of cable, you're asking for trouble. RS485 can do 1200m at 9600 baud, but the maximum distance drops as baud rate increases.
5. Electromagnetic interference
Running RS485 cables near VFDs, transformers, or high-current power cables introduces noise. BESS sites and generator installations are particularly bad for this.
Wiring Fixes
- Use shielded twisted pair cable (STP) — minimum Cat5e quality
- Install 120Ω terminators at both physical ends of the bus
- Keep RS485 cable at least 300mm from power cables
- Use metal conduit for RS485 in electrically noisy environments
- Connect shield to earth ground at one end only (to avoid ground loops)
Grounding & Shielding
Connect a dedicated signal ground wire between all nodes on the RS485 bus. This is the third wire that manufacturers like Phoenix Contact and Wago correctly include in their RS485 connectors but that gets forgotten in field wiring.
Software-Side Fixes
While CRC errors are fundamentally a hardware problem, you can improve resilience:
- Implement retry logic (3 retries with 50ms delay is standard)
- Reduce baud rate if you can tolerate slower polling
- Increase inter-frame delay (some devices need 50-100ms between requests)
- Log CRC error rates over time — if they correlate with equipment starting (VFDs, pumps), the cause is EMI
Track & diagnose CRC errors over time
ModBus Pro's built-in request logging records every request and response with timestamps. Spot patterns in communication failures — turning random errors into actionable diagnostics.
Download Free