Common Modbus problems and how to find them

No response, CRC errors, exception 02, meaningless values, off-by-one registers — step-by-step diagnostics for Modbus RTU and TCP.

Work bottom-up: physical line → communication settings → addressing → data interpretation.

1. No response (timeout)

CauseHow to check
Baud rate, parity or stop bits differcompare client and device settings; the specification default is 19200, 8E1
Wrong device addressaddresses 1…247; address 0 is broadcast and never answered
A/B (D0/D1) lines swappedvendor labelling differs; try swapping
No termination or polarizationlong lines without terminations produce errors; polarization at one point
CRC or parity error in the requestper the specification a server that detects a communication error does not respond
Modbus TCP: wrong Unit IDsome devices expect a specific value (1, 0, 255)
Timeout too shortallow for device processing time and gateway delay

2. Response with a CRC error

  • Noise: shield, single-point grounding, separation from power cables.
  • Several devices with the same address answer at once.
  • Two clients on one RS-485 line — the protocol does not allow it.
  • Gaps inside a frame longer than 1.5 characters (slow USB converters, byte-by-byte software transmission).

Paste the received frame into the Modbus RTU Frame Parser: if the CRC is invalid, compare "CRC bytes in frame" with "Expected CRC bytes". If they match but are swapped, the sender uses the wrong CRC byte order.

3. Exception 02 (ILLEGAL DATA ADDRESS)

Communication works, but the address does not exist:

  • off-by-one (40001 ↔ address 0, see addressing);
  • wrong table (function 03 instead of 04 or vice versa);
  • the request block covers non-existent addresses — reduce the quantity;
  • the address is hex but was entered as decimal.

4. The value is meaningless

Check the data type and word order first:

  • a huge or tiny number instead of the expected one (e.g. 5.45e+23 instead of 123.45) — wrong FLOAT32 word order;
  • a value near 65535 or negative where a small positive value is expected — wrong signedness;
  • a value 10/100 times too large — scaling from the register map not applied;
  • the value of a neighbouring parameter — off by one register.

Enter the raw registers into the Modbus Data Converter: it shows all interpretations and byte orders at once. See also Byte and word order.

5. Intermittent communication

  • Polling period shorter than the device response time — requests overlap.
  • Bus load: at 9600 bit/s reading 10 registers (8-byte request + 25-byte response) takes about 40 ms of transmission alone, plus gaps and device processing time, and a bus may carry dozens of such requests.
  • Several clients behind one Modbus TCP → RTU gateway create a queue.
  • Reused TCP connections are closed by the device after an inactivity timeout.

Minimum diagnostic kit

A passive line monitor (RS-485 sniffer, or Wireshark for Modbus TCP), the register map and a proven client tool. Record raw frames — they show unambiguously which side is at fault.

Loading the map…

Sources

  1. MODBUS over Serial Line Specification and Implementation Guide V1.02 — Modbus Organization
  2. MODBUS Application Protocol Specification V1.1b3 — Modbus Organization

Updated 2026-10-01