Blue Flower

Ad - Header


BACnet stands for Building Automation and HVAC Control Networks. It was officially unveiled by ASHRAE in 1996, and has been approved as ISO standard 16454-5 and it's also becoming a standard in the European Union. 

BACnet IP and BACnet MS/TP are names that identify the physical layer (IP or MS/TP) used to transmit BACnet packets on the network. There are at least three other physical layers defined and in use to lesser degrees. We will talk about IP and MS/TP on this web site because those are the two most common physical layers, and because those are the two that Control Solutions supports in its product line.

Where Modbus would talk about registers, BACnet talks about objects and object properties. A sensor, for example, is an object. One if its properties is its present value, and this property is referred to as just that in BACnet: The Present Value property. The sensor will most likely be one of two object types: Analog Input (temperature, humidity, etc) or Binary Input (occupancy sensor, switch, etc). The most frequently used property will be the present value, but there are other properties required. Other properties include status flags (fault, out of service), reliability, and optionally a host of others such as high and low limits.

BACnet devices are defined on the network as a collection of “objects”. Typical objects include Analog Inputs, Analog Outputs, Binary Inputs, Binary Outputs, and more complex objects such as Scheduler. Messages on the network deal with reading and writing Object Properties. The most frequently referenced property for an analog input is “present value”, which typically means data derived from a sensor or physical device. Other properties associated with an analog input object, for example, include fault status, reliability, object name, minimum and maximum limits, etc. BACnet protocol standards define required and optional properties for each object type. The manufacturer’s documentation for the BACnet device will list which object types are included in the device, along with which optional properties are included in each object.

Along with the definition of objects, BACnet protocol defines “services”. These include object access services, alarm and event services, file access services, and a few more. Object access services are the most commonly used since these provide the fundamental “read/write” access to object properties.

Accessing object properties requires specifying these parameters:
                - device instance (i.e., which device on the network)
                - object type (analog input, binary intput, etc.)
                - object instance (i.e., which analog input)
                - property (present value, object name, status flags, etc.)

Input objects are simple, they just have a “present value” associated with them. Output objects are known as “commandable” and these get a bit more interesting. Because there is the possibility that more than one control algorithm might want control over an object, the command requests are prioritized and only the highest priority command will take effect. When the higher priority command is relinquished, the next lower command will take effect. All of the commands are maintained by the object in its command priority array (containing 16 priority levels).

Writing to an output object requires specifying all of the parameters shown above for accessing object properties, plus two additional parameters:
                - command priority
                - command level for given priority

The present value obtained when a commandable object is read will be the command level having the highest level that has not been relinquished. To pass command to some other process, you simply write a “relinquish” to the commandable object.

BACnet Physical Layer

The protocol defines rules for electrical signaling, addressing, network access, error checking, flow control, presentation, and message format. The protocol focuses on building automation applications.


BACnet IP uses a standard UDP/IP stack to send and receive messages (see definition of UDP/IP below). For the most part, the same packet that would be found on an MS/TP link is encapsulated in a UDP/IP packet and called BACnet IP. Devices use IP addresses and Ethernet MAC addresses just like other UDP/IP network devices. There is no concept of master/slave token passing since Ethernet is automatically peer to peer in nature. Devices simply transmit to their intended recipient at will, and let Ethernet deal with packet collisions and retries as needed.


MS/TP stands for Master Slave  Token Passing. Each device on the link is considered the “master” when it has the token. If it does not have immediate need to use the token, it is required to pass the token along to the next device. This is the “token passing” part. All devices on the link which do not currently have the token are regarded as slaves,  and are expected to listen to any messages the current master may have for it. Because all devices take turns being master, the link is effectively peer to peer.

BACnet Application Layer

This is where the real fun takes place. All message processing is handled at the application layer, including device addressing. The IP address will get a BACnet packet through all layers of the UDP/IP stack. Then the application layer decides what to do with the BACnet message. There is an entire list of possible message types, but the most frequently used is simply "read present value property". Another strong contender for "most used" would be the COV notification (Change of Value).