The BACnet (Building Automation Control Network) protocol was created as a standard for communication between various building automation devices. Its concept is characterized by user-friendliness, notable ruggedness and a possibility of implementation into simple and cheap devices. BACnet has been developed since 1980's, but its full ISO certification no. 16484-5 was issued only in 2003, with its most recent update released in 2017.

The protocol's specification focuses mostly on the data exchange itself and defines through which physical interfaces can devices communicate. Available is BACnet/IP for a network communication, BACnet MS/TP for serial communication through an RS485 interface, but also BACnet/Zigbee for low-power mesh wireless networks.

BACnet operates in a master/slave mode - a feature shared with its closest counterpart Modbus. One or more master devices initiate communication with slave devices and read or write values into them. It is not without interest a device can serve simultaneously as master and slave, allowing it to act as a bridge between different physical interfaces. In this mode, the device effectively functions as a router and relays communication between, for example, BACnet/IP and BACnet MS/TP.

The core of BACnet is its method of data exchange. A well-known disadvantage of Modbus is the need to precisely specify devices we want to communicate with. BACnet, on the other hand, allows us to “discover” the device and find out which objects and properties are available on it. The “object” is one of the most basic terms we will use throughout the protocol.

Each BACnet device shares information through objects, which take the form of a definition similar to a data point. That means a single object represents one specific input/output, one operating value of the device etc. Each object has its properties, eg. real values of the said object. To make our work with an unknown device easier, the standard defines a list of properties each object must implement. Among these mandatory properties is, for example, a property name, its unique numerical identification and its current value. Other properties may include a quantity the current value represents, its threshold values etc. Currently, there are over 500 of such specified properties and many more can be defined freely by device vendors.

Modbus users are also probably used to communicate through functions for reading or writing data into registers and coils. BACnet designates these functions as services and defines over 30 of them. However, there are only few services each device must support (and which you will encounter most frequently). These are services for looking up devices in the network (the Who-is service), describing its objects (the Who-has service) and read/write functions for editing property values (Read-property + Write-property).

However, it is worth noting that most of BACnet definitions are well-hidden. This allows the BACnet users to focus on the most important task - to integrate the device into the network. BACnet devices can be easily added or swapped, while the protocol guarantees interoperability of devices from various vendors.