BACnet MS/TP Essentials

BACnet Best Practices


BACnet Wiring

Correctly set the EOL terminations on MS/TP controllers and on any EC-BOSAX.

Page 12 of the Network User guide indicates the following:
End-of-line (EOL) terminations are critical to error-free EIA-485 data bus operation. The impedance of the cable used for the data bus should be equal to the value of the EOL termination resistors (typically 120 ohms). Cable impedance is usually specified by the cable manufacturer.

Note: If the Communication Bus is only 18-24 inches long (for example, for a small test bench setup) then setting the EOL terminations is not necessary. 





EOL must be enabled/installed at the last device of every MSTP network. This is noted on page 17 of the Network User Guide



BACnet MAC Address Gaps

Page 25 of the Network Guide - Gaps or pockets of unassigned device MAC Addresses should be avoided as this reduces bus performance. Every 50 requests, each master must poll for the next master that may exist on the Data Bus. It is the timeout for each unassigned MAC Address that slows down the data bus.

The way MAC Addresses are assigned is not a physical requirement: Devices can be daisy-chained on the data bus in any physical order regardless of their MAC Address sequence. The goal is to avoid gaps in the device MAC Address range.




BACnet Device Instance Number (Device ID)

Page 32 of the Network Guide - Device Instance Number for Distech Controls’ controllers

By default, controllers from Distech Controls automatically self-assign a Device Instance number generated from the unique MAC Address assigned to the controller during installation. The Device Instance number is calculated as follows: 
Device Instance number = 364 X 1000 + MAC Address 
Where 364 is Distech Controls unique BACnet Manufacturer ID.

This Numbering system is sufficient for a BACnet network that has only one Building Controller. For larger BACnet networks that have more than one Building Controller (to form a BACnet intranetwork), set the MAC Addresses, Device Instance Numbers and Network Numbers according to the numbering scheme below.

Note: The device instance number (Device ID) MUST be unique on all networks – see below





BACnet BAUD rate

Page 16 of the Network Guide - BACnet MS/TP Communication Bus Fundamentals
The recommended baud rate for Distech Controls’ devices is 38 400. 
Set the baud rate of two controllers on a BACnet MS/TP Data Bus Segment to the same baud rate to provide failover protection.

For example, set the baud rate of the EC-BOSAX (if equipped) and one other controller to 38 400 baud. If the EC-BOSAX becomes unavailable and there is a power cycle, the controller will set the baud rate for the BACnet MS/TP Data Bus. 
Set all other devices to automatically (AUTO) detect the baud rate.




Setting the Max Master and Max info Frames

Page 30 of the Network Guide - Setting the Max Master and Max Info Frames

The Max Master and Max Info Frames are parameters used to optimize a BACnet MS/TP Data Bus. This is set in the Bus Master (EC-BOSAX Building Controller) for the MS/TP port of the Bus Master and for each BACnet MS/TP device connected on that port.

For the Bus Master (EC-BOSAX), set the Max Info Frames to 20 as this is a device that will make more requests for service from other devices on the network.

To prevent the passing of the token to unused MAC Addresses situated after the final Master device, the Max Master parameter must be set. When commissioning a BACnet MS/TP Data Bus, it is useful to start with the Max Master set to 127 so as to be able to discover all devices connected to the data bus.

Then, once all devices have been discovered and the MAC Addressing is finalized by eliminating any gaps in the address range, set the Max Master (maximum MAC Address) in the EC-BOSAX (Building Controller) to the highest Master device’s MAC Address number to optimize the efficiency of the data bus. Distech Controls recommends a maximum of 50 devices per MS/TP network.




BcpBacnetNetwork Policies

Bcp Tuning Policies:

Min Write Time:
Applies to writable proxy points, especially ones that have one or more linked inputs. Specifies the minimum amount of time allowed between writes. Provides a method to throttle rapidly changing value so that only the last value is written. If this property value is set to 0 (default), this rule is disabled (all value changes attempt to write).

Max Write Time
Applies to writable proxy points. Specifies the maximum “wait time” before rewriting the value, in case nothing else has triggered a write. Any write action resets this timer. If this property value is set to 0 (default), this rule is disabled (no timed rewrites). The Max Write Time under BcpPolicy, BcpBacnetNetwork, is disabled as it would cause redundancy on the network and increase traffic.




Poll Service

Page 24 of the Driver Guide: Poll Service

A Poll Service with a busy time being near 100% does not necessarily indicate a problem. It just means that the number of objects in the poll queues, along with the configured poll rate times, is causing the poll thread to constantly execute, instead of being able to periodically sleep. This means that the inter-message delay is basically at 0 seconds.

Typically, there is a “base number” of points that are permanently subscribed, including any points that are linked, and/or have a history or alarm extension. Note that these permanently subscribed points will always reflect in their assigned poll rate queue. A good starting point would be to adjust the configured poll rates such that the Busy Time is at 75%, with only these points polling.

Maintaining some free time for the Poll Service should allow subscription surges (users viewing graphics, property sheets, wire sheets, etc.) as new points are processed, without causing a noticeable increase in the poll cycle times. If poll cycle times do change noticeably during normal operations, then it may be necessary to adjust the configured poll rates, such that steady state Busy Time is below 75%.

If the EC-BOSAX’s CPU usage is high, and the poll service’s Busy Time is near 100%, then increasing the poll interval rate values (to slow down polling) should reduce both the Busy Time and the CPU usage.

BACnet Best Practices

Add Feedback