RS-485 — Industrial Multi-Drop Signaling
RS-485 is a differential electrical standard for robust serial communication over long cables and noisy environments. It is common in factories, energy meters, motor drives, building automation, lighting systems, and field instruments. Protocols such as Modbus RTU, PROFIBUS, BACnet MS/TP, and DMX512 often run on top of RS-485.
Learning Objectives
By the end of this lesson, you should be able to:
- explain differential signaling and why it rejects common-mode noise;
- wire a half-duplex RS-485 bus as a daisy chain with termination;
- understand driver-enable and receiver-enable timing;
- distinguish RS-485 physical wiring from protocols such as Modbus RTU;
- debug polarity, termination, biasing, and turnaround failures.
Physical Layer, Not Message Meaning
RS-485 defines the electrical layer:
- A and B differential wires;
- driver and receiver voltage thresholds;
- multi-drop bus loading;
- cable topology and termination.
It does not define register addresses, commands, CRC fields, or message timing. Those belong to the protocol above it.
Differential Signaling
Single-ended links compare one signal to ground. RS-485 compares two wires to each other. Noise coupled equally into both wires is mostly rejected.
| Condition | Meaning |
|---|---|
VA - VB >= +200 mV |
one valid logic state |
VB - VA >= +200 mV |
the opposite valid logic state |
| difference near 0 | undefined unless biasing forces an idle state |
Different vendors label A and B inconsistently. If the bus is silent or every frame has CRC errors, swapped polarity is one of the first things to test.
Half-Duplex Bus Topology
Most industrial RS-485 uses two-wire half-duplex operation. All nodes share the same pair, but only one driver may transmit at a time.
Use a linear daisy chain. Avoid star wiring and long stubs because impedance discontinuities cause reflections.
Termination and Bias
Termination matches the cable impedance so signal edges do not reflect from the cable ends. A typical twisted-pair RS-485 cable has about 120 ohm characteristic impedance, so the usual termination is:
one 120 ohm resistor at the first physical end
one 120 ohm resistor at the last physical end
Only the two ends get termination. Do not place 120 ohm resistors at every node.
Bias resistors create a defined idle state when no driver is enabled. Without biasing, the bus can float and receivers may detect false characters. Many gateways include fail-safe bias internally, but real installations should verify it instead of assuming.
Driver Enable and Turnaround
An RS-485 transceiver converts MCU UART pins to the A/B bus. In half-duplex systems it usually has control pins:
| Pin | Meaning | Typical use |
|---|---|---|
DI |
Driver input | MCU TX data into transceiver |
RO |
Receiver output | received data to MCU RX |
DE |
Driver enable | high enables transmit driver |
RE_N |
Receiver enable, active low | low enables receiver |
Firmware must enable the driver before transmitting, wait until the final stop bit has fully left the UART, then disable the driver so another node can reply.
If DE is disabled too early, the last byte is truncated. If disabled too late, the slave's first response byte can collide with the master driver.
Cable Length and Speed
RS-485 can reach long distances at low data rates. Practical values depend on cable, transceivers, termination, grounding, and noise.
| Data rate | Typical distance guidance |
|---|---|
| 100 kbps | up to about 1200 m with proper cable |
| 1 Mbps | much shorter; often tens to hundreds of metres |
| 10 Mbps | short cable only |
Use twisted pair, keep stubs short, and route away from contactors, drives, and high-current conductors. In harsh environments, use isolated RS-485 transceivers and surge protection.
Worked Example: Modbus RTU Link
A controller reads an energy meter over two-wire RS-485 using Modbus RTU:
- Physical layer: RS-485 A/B pair, 120 ohm termination at both ends, biasing at one place.
- Serial settings:
9600,8E1or as configured by the meter. - Protocol layer: Modbus RTU slave address, function code, register address, data count, CRC.
- Firmware: master enables
DE, sends request, turns around, waits for response, validates CRC.
If the CRC is wrong, first inspect RS-485 wiring and timing. If the CRC is valid but the register value is wrong, debug the Modbus register map.
Practical Commissioning Checks
- Confirm a linear daisy-chain bus, not a star.
- Install exactly two end terminators.
- Verify A/B polarity across all devices.
- Check idle bias with no active transmitter.
- Match baud rate, parity, stop bits, and protocol address.
- Use shield and ground strategy appropriate for the site.
- Scope the bus at both ends if errors happen only on long cables.
- Leave notes showing which physical nodes contain termination and bias.
Common Mistakes
- Treating RS-485 as if it defines Modbus registers.
- Adding termination at every device.
- Creating long star branches from a panel terminal block.
- Leaving
DEhigh after transmitting. - Disabling
DEbefore the UART transmit-complete flag, not just data-register-empty. - Trusting A/B labels without testing polarity.
- Omitting bias on an idle bus.
Summary
RS-485 is a rugged differential physical layer for long-distance, multi-drop serial buses. It works well when the cable is a daisy chain, termination exists only at the ends, idle bias is defined, device polarity is consistent, and firmware handles half-duplex turnaround correctly. Protocols such as Modbus RTU give meaning to the bytes carried over the bus.
Further Reading
- Texas Instruments, RS-485 Design Guide.
- Analog Devices, RS-485/RS-422 circuit implementation guides.
- TIA/EIA-485 standard summaries from transceiver vendors.
- Modbus Organization, Modbus over Serial Line specification.