BACnet MS/TP RS-485 Problems: Reflections, Biasing & Timing
What Can Go Wrong with RS-485 on BACnet MS/TP Networks?
Sometimes a BACnet MS/TP network has the correct baud rate, unique MAC addresses, proper device configuration, and apparently good wiring, but communication is still intermittent or unreliable.
At that point, the problem may be at the RS-485 physical layer. Signal reflections, improper termination, fail-safe biasing, electrical noise, grounding or reference problems, bus loading, and transmitter timing can all affect communication.
These problems can be difficult to diagnose because a network may work most of the time and fail only when traffic increases, another device is added, or electrical conditions change.
Before investigating these advanced problems, work through the basic troubleshooting steps first: Troubleshooting Guide for BACnet MS/TP Networks
Signal Reflections
RS-485 cable behaves as a transmission line. When a signal reaches an impedance discontinuity, part of the signal can be reflected back along the cable.
Reflections can distort the differential waveform seen by receivers. If the distortion is large enough or occurs at the wrong time, a receiver may incorrectly interpret one or more bits.
Common causes of reflections include:
- Missing termination
- Incorrect termination resistance
- Termination installed at the wrong locations
- Long branch or stub connections
- Star wiring
- Changes in cable type or characteristic impedance
RS-485 Termination
Termination is used to match the impedance at the end of the transmission line to the characteristic impedance of the cable. This reduces signal reflections.
On a typical two-wire BACnet MS/TP trunk, termination is placed across the two differential signal conductors at the two physical ends of the trunk.
The termination resistance should approximately match the cable's characteristic impedance. A value around 120 ohms is common for RS-485 cable, but the actual cable specification and equipment manufacturer's instructions should be checked.
Do not install termination at every device. Some equipment contains built-in selectable termination, so verify whether termination is already enabled before adding an external resistor.
Star Wiring and Long Stubs
BACnet MS/TP works best when the RS-485 network is wired as a continuous trunk or daisy chain.
A branch or stub creates an additional electrical path. Part of the transmitted signal can travel down the branch and reflect back toward the main trunk. The longer the stub, the greater the potential for it to interfere with communication.
Star wiring creates several branches from one point and can create multiple impedance discontinuities and reflections. A network may appear to operate with a star topology under some conditions but become unreliable when the cable length, baud rate, number of devices, or electrical environment changes.
Whenever practical, use a continuous trunk and keep device stubs as short as possible.
Fail-Safe and Idle-State Biasing
BACnet MS/TP normally uses two-wire, half-duplex RS-485. Only one transmitter should actively drive the shared bus at a time.
When no device is transmitting, the RS-485 transmitter drivers are disabled and their outputs enter a high-impedance state. Without appropriate fail-safe behavior, the differential voltage seen by the receivers can enter an indeterminate region where electrical noise may cause false transitions.
Fail-safe biasing, also called idle-state biasing or line biasing, establishes a known differential voltage when no transmitter is actively driving the network.
Fail-safe operation may be provided by external bias resistors, by the RS-485 transceivers themselves, or by a combination of the two depending on the equipment.
Too Much or Incorrect Biasing
Adding more biasing is not automatically better.
External bias resistors add electrical loading to the RS-485 network and interact with the termination resistors and the input loading of every device on the bus.
If several devices contain active bias networks, the combined loading can affect the differential voltage and reduce the available signal margin. For this reason, the biasing method should be understood before changing resistor values or enabling biasing on multiple devices.
Some devices provide selectable bias resistors through switches, jumpers, or software configuration. Follow the equipment manufacturer's documentation rather than changing resistor values by trial and error.
RS-485 Driver Enable and Disable Timing
Because BACnet MS/TP uses a shared half-duplex bus, a device must enable its RS-485 transmitter before sending a frame and release the bus when the transmission is complete.
When the transmitter is disabled, its output enters a high-impedance state so another device can use the same pair of wires.
Timing around this process is important.
- Driver enabled too late: The first portion of a frame may be damaged or lost.
- Driver disabled too early: The final bits of the frame may be truncated.
- Driver disabled too late: The device continues holding the bus after its frame has finished and may interfere with another device attempting to respond or transmit.
These timing problems are normally caused by the device hardware, firmware, or RS-485 implementation rather than by BACnet configuration.
Ground Reference and Common-Mode Voltage
RS-485 communicates using the voltage difference between two signal conductors, but the receiver still has a limited common-mode voltage range.
If equipment at different locations develops a large difference in local ground potential, the voltage presented to an RS-485 receiver can move outside the range that the transceiver can tolerate.
Many RS-485 installations therefore use a signal-reference or common conductor in addition to the differential pair. The requirements depend on the equipment and whether the interfaces are isolated.
The cable shield and the signal-reference conductor perform different functions and should not automatically be treated as interchangeable. Follow the manufacturer's wiring and grounding requirements for the devices on the network.
Electrical Noise
Differential signaling gives RS-485 good noise immunity, but sufficiently strong electrical interference can still corrupt communication.
Potential noise sources include:
- Variable-frequency drives
- Motors and motor wiring
- Contactors and relays
- Transformers
- High-current power conductors
- Improper grounding
- Long parallel cable runs near electrical equipment
Problems caused by noise may be intermittent and may appear only when specific equipment starts or stops.
If communication errors correlate with operation of nearby electrical equipment, investigate cable routing, shielding, grounding, isolation, and the signal quality on the RS-485 bus.
RS-485 Bus Loading
Every RS-485 receiver connected to the trunk places some electrical load on the network. Termination and external fail-safe bias resistors also add load.
The maximum practical number of devices therefore depends on the transceivers used by the equipment, their unit loading, termination, biasing, and the overall network design.
A network that operates correctly with a small number of devices but becomes unreliable as more equipment is connected may have a wiring, biasing, termination, or loading problem.
Device count should therefore be based on the specifications of the equipment being installed rather than assuming that every RS-485 transceiver presents the same load.
What These Problems Look Like on BACnet MS/TP
Physical-layer RS-485 problems often appear at the BACnet MS/TP level as communication errors rather than obvious electrical failures.
Symptoms can include:
- Devices appearing and disappearing from the network
- Intermittent BACnet timeouts
- CRC or framing errors
- Repeated messages or retries
- Slow communication
- Lost or regenerated tokens
- Devices working when isolated but failing on the complete trunk
- Communication changing when another device is connected or removed
These symptoms do not by themselves identify the cause. They indicate that the physical network should be investigated along with normal BACnet MS/TP configuration checks.
Using an Oscilloscope on an RS-485 Network
An oscilloscope can be extremely useful when basic troubleshooting does not reveal the problem.
A scope can help identify:
- Signal reflections
- Excessive electrical noise
- An unstable idle state
- Weak differential signal levels
- Driver-enable and driver-disable timing problems
- Signal distortion when additional devices are connected
Compare captures at different locations on the trunk and under different operating conditions. A problem that is not obvious at one point on the network may be much easier to see near the end of the cable or close to a problematic branch.
A Practical Troubleshooting Approach
Before changing termination or bias resistor values, first confirm the basic network configuration.
- Verify device power.
- Verify baud rate and unique MS/TP MAC addresses.
- Confirm that the network is wired as a continuous trunk.
- Check polarity and manufacturer terminal designations.
- Verify termination at the physical ends of the trunk.
- Check signal reference and grounding requirements.
- Look for communication errors and determine whether they are increasing.
- Isolate sections of the network to determine whether one device or branch causes the problem.
- Inspect the RS-485 waveform with an oscilloscope when necessary.
Avoid changing several things at the same time. Make one controlled change, retest the network, and record whether the communication improves or becomes worse.
Related BACnet MS/TP Resources
Need Help with a BACnet Integration?
Chipkin provides BACnet gateways, routers, diagnostic tools, protocol stacks, and integration solutions for building and industrial automation systems.