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).



The BACnet Device ID or instance number is one of the most commonly misunderstood terms in BACnet to newcomers.This is perhaps because many developers come to BACnet from other protocols such as Johnson's N2 which does not have the extra complexity of an address resolution protocol. The term "Device ID" is short for Device Identifier, and is shorthand for the Instance Number a portion of the BACnet Device object Object_Identifier property. The Device ID is used for identifying the device in the network, commonly referred to as the device "binding". I like to tell people the device ID is like the devices social security number. No two devices can have the same instance number.The Device ID is a value that is configured by someone or the HAVC system at the site when the BACnet device is installed.This number can be auto generated in most HVAC systems which can a blessing and a curse.

The BACnet standard says that "each object within a single BACnet Device shall have a unique value for the Object_Identifier property. The standard specifies that the instance number range is 22-bits: 0-4194303. It also states that "No object shall have an Object_Identifier with an instance number of 4194303."
When I'm planning a BACnet network I use the network number (161) + router number (01)+ the devices mac address (04) for the instance number(1610104). If you stick to a routine instance scheme and document your devices even on the largest site with multiple BACnet manufactures adding devices will be a snap. I use an excel spread sheet I call a room schedule to keep track the instance number in my BACnet network.
Hvac room schedule