RS-485 Modbus troubleshooting
A Modbus RTU device that does not answer is more often a wiring or adapter problem than a protocol problem. Work through this list from the cable upwards.
1. A and B
RS-485 is a differential pair. A device labelled A or D- and one labelled B or D+ are not named the same way by every maker, and two manufacturers can use opposite labels for the same terminal. If a line is silent and everything else is right, swap the two wires. This does no harm to the transceivers and is the most common fix.
2. Termination and bias
- Put a 120 ohm resistor across the pair at each of the two ends of the bus, and nowhere else.
- A bus should be a line with short stubs, not a star. Long stubs and extra terminators cause reflections and damaged frames.
- Bias resistors keep the idle line in a defined state. One bias point on the whole bus is enough; many adapters and masters already have it.
3. Ground and shield
RS-485 tolerates only a limited voltage difference between devices. Connect the signal ground (often marked C, G or GND) between devices, especially over long runs or when devices have separate supplies. Use twisted pair cable and connect the shield at one end.
4. The adapter
- Echo. Some two-wire converters hear their own transmission and return it. The master then reads its own request as the answer. Busscope can remove the echo (see below).
- Direction control. A two-wire line is half duplex: the master must switch the driver on to send and off to listen. Most USB converters do this automatically. Some need the RTS line to switch the driver, which is what the RTS toggle is for.
- Quality. Very cheap USB adapters are a frequent source of lost or late bytes at higher baud rates. Try a lower baud rate or another adapter before changing anything else.
5. The bus itself
- One master only. A second master or a gateway that polls the same bus corrupts frames.
- Every device needs its own address and the same baud rate, parity and stop bits.
- Add devices one at a time. If the bus works with one device and fails with a certain second device, the problem is that device or its position.
- A long bus at a high baud rate has more errors. Lowering the baud rate is a quick test.
Test it with Busscope
In the Modbus RTU connection settings, tick Remove echo (RS-485 loopback) if requests come back unchanged, and tick RTS toggle (transmit enable) if your converter needs the RTS line to enable the driver. The traffic panel (F4) shows the frames as hex: a received frame that is identical to the sent one is an echo; no received bytes at all point to wiring, polarity or the slave ID; received bytes that fail the check point to line settings or noise (see Modbus RTU CRC errors and timeouts).
If you do not know a device's address, the Register Probe can scan an address range once the device answers, and polling a single register at a low baud rate with a long response timeout is the simplest way to confirm that the link works at all.
Related guides
Try Busscope
Install Busscope and run it without a license key to see whether it fits your work. Evaluation mode is for trying the tool, not for production or commercial use.