BACnet is a communications protocol for building automation and control, used as a standard protocol by ASHRAE, ANSI, and ISO, and maintained by an ASHRAE committee. Compared to the simplicity of the Modbus protocol, BACnet is much more complex, providing features at a high level of functionality, such as the auto-discovery of devices, and its auto-discovery tool can significantly speed up the time needed to configure and set up large systems.
In practice, BACnet can be quite unwieldy. The software’s age and ambitious goals mean that it can be overwhelming to even more advanced users; many manufacturers simply use it as a method for simple communication between products from different manufacturers.
BACnet can run on several different physical layers, including MS/TP over RS-485, P2P over RS-232, and BACnet/IP. MS/TP and BACnet/IP have traditionally been the most popular, with BACnet/IP slowly gaining share as LAN infrastructure becomes more commonplace.
A practical guide to setup
Because BACnet provides auto-discovery, configuring the software for a system is usually an easy task. The primary headache caused by BACnet systems is typically ensuring compatibility between devices. Beyond ensuring that the same physical layer is being used (eg. RS-485, RS-232, BACnet/IP), the user must also confirm compatibility of the BACnet object types. Some of the most common object types are described below:
Sensor values can be read using the analog input object. BACnet analog input objects contain the engineering unit used, as well as allowing floating point values, so there is usually no configuration needed. Analog input objects are very widely supported, and can typically be used even if no other higher-level objects are supported by a device.
The trend log object was added to the BACnet standard later on, so it is not as widely supported. It provides a mechanism to retrieve "logged" data from a sensor, as opposed to only being able to read the most recent sample using the analog input object.
Control values can be set using the analog output object. Similar to the analog input object, it provides a lower-level interface for direct control of device outputs.