BACnet Tutorial

BACnet Tutorial


In June of 1987, a group of HVAC and Building Automation professionals came together in Nashville to create an open control specially designed for the building automation industry. Their combined effort produced BACnet, and it became a replacement to the private (or unique) and closed protocol offered by large vendors in the industry.

With its user friendly (related to the beautiful design and construction of buildings, etc.) and ability to control and monitor any building automation process, BACnet became an advantage for users, integrators, and equipment vendors.

BACnet’s success can be attributed to the following factors:

1. Provide different ways to access the data within a device. We can use the BACnet explorer to send a ‘who is’ message to any BACnet device and find out all the properties of it.

2. Object oriented approach helps to (make something look or work the same way every time)the representation of data within a device.

3. Provides multiple physical (connecting points/ways of interacting with something) to communicate with a variety of systems.

What is BACnet?

BACnet is a Building Automation and Control (BAC) networks. It is an ASHRAE, ANSI, and ISO 16484-5 standard protocol.

BACnet was designed to allow communication of building automation and control systems for uses such as heating, ventilating, and air-conditioning control (HVAC), lighting control, access-control, and fire detection systems and their connected equipment. The BACnet protocol provides (machines/methods/ways) for computerized building automation devices to exchange information, (without any concern about/having nothing to do with) the particular building service they do/complete.

Benefits of BACnet

  • No charge for its use – anyone may develop putting into uses without cost.
  • Maintained by an ASHRAE Committee representing all sectors of the industry.
  • Designed specifically for building control.
  • Can be implemented in devices of any size.
  • Can be readily enhanced and improved.

BACnet MS/TP (master slave/token passing)

MS/TP is exclusive to BACnet and can be put into use using the EIA-485 signaling standard. This is a shielded twisted-pair (STP) LAN operating at speeds from 9.6Kbit/s to 76.0Kbit/s. This LAN type is especially good for single controller and low cost communications.


The BACnet IP allows users to move data to and from devices over Ethernet using BACnet IP Protocol. It allows users to use different computer programs to discover devices, objects and properties of objects of any field device that supports BACnet IP.


(ANSI/ATA878.1) ARCNET® is a symbol/symbolic bus standard, and devices usually support it using single source chips that handle network communications. ARCNET can run on a variety of media at different speeds from 150Kbit/s on EIA-485 (STP) up to 7.5Mbit/s over coaxial cable, STP, or (transmitting information by pulsing light through glass fibres). Usually, ARCNET runs at 2.5Mbit/s over twisted pair.

BACnet PTP (point to point)

PTP is unique to BACnet and provides for bury networked communications over modems and voice grade phone lines. PTP changes something (to help someone) takes care of someone modern modem protocols (V.32bis and V.42) and also supports direct cable connections using the EIA-232 signaling standard. Speed is limited to from 9.6kbit/s to 56.0kbit/s.

Like the Control and Information Protocol (CIP) used in industrial use, BACnet uses objects to represent data on a network. Objects defined by the BACnet include Analog Input, Analog Output, Analog Value, Binary Input, Binary Output, Binary Value, Multi State Input, Multi State Output, Calendar, Event-Enrollment Program, Schedule, Command and Device. The BACnet Protocol is a completely unique open communication software standard. The standard is now controlled by the ANSI and ASHRAE Standard 135-1995. In June of 1995, ASHRAE adopted BACnet as a standard for the Building Automation industry.


Services are how one BACnet device gathers information from another device, communicates events to other objects, or asks a device to (do/complete) certain actions. BACnet has a total of 32 standard services. A service is the machine/method/way) which a building automation system uses to access a property or request an action from a BACnet Object. The only needed/demanded service that must be supported by all devices is the Read-property service.

As a system developer or user, you don’t need to be concerned with the execution of service requests; these will be automatic. As a system design engineer for a building automation system you will need to know what objects and services are supported by which devices.


A BACnet object is a logical representation used in the BACnet protocol. It can be used to give us details about various aspects of a device. Some of the examples are:  many different aspects of a control system. Examples are:
A physical device (device objects)
A pressure input (analog input)
A switch control (binary output)
A state of alarm (Multi-state Inputs/Outputs)

Now there will be a question how does object differ from a data point? The answer to that is an object consists of a number of prescribed properties, only one of which is the present value whereas a data point would typically have a single value associated with it. It is the many different properties of BACnet object that helps to control and monitor BACnet objects.

For example lets us consider we are reading the temperature value out of the system.  A data point will only tell us that the value is 24 degree C, but Analog input(AI) will give us the information like the unit of the temperature value, what type of device we are reading the values from, description of the area whose temperature value we are reading, etc.

Standard BACnet Objects

Analog Input Sensor input
Analog Output Control output
Analog Value Setpoint or other Analog control system parameter
Binary Input Switch input
Binary Output Relay output
Binary Value Binary control system parameter
Calendar Defines a list of dates, such as holidays or special events, for scheduling
Command Writes multiple values to multiple objects in multiple devices to accomplish a specific purpose, such as day-mode to night-mode, or emergency mode
Device Properties tell what objects and services the device supports, and other device-specific information such as vendor, firmware revision, etc.
Event Enrollment Describes an event that might be an error condition (e.g., “Input out of range”) or an alarm that other devices to know about. It can directly tell one device or use a Notification Class object to tell multiple devices.
File Allows read and write access to data files supported by the device
Group Provides access to multiple properties of multiple objects in a read single operation
Loop Provides standardized access to a ‘control loop’.
Multi state input Represents the status of a multiple-state process, such as a refrigerator’s On, Off, and Defrost cycles
Multi state output Represents the desired state of a multiple-state process (such as It’s Time to Cool, It’s Cold Enough and it’s Time to Defrost)
Notification class Contains a list of devices to be informed if an Event Enrollment object determines that a warning or alarm message needs to be sent
Program Allows a program running in the device to be started, stopped, loaded and unloaded, and reports the present status of the program
Schedule Defines a weekly schedule of operations (performed by writing to specified list of objects with exceptions such as holidays. Can use a Calendar object for the exceptions


As we discussed above, objects are monitored and controlled only via their properties. BACnet ha specified 123 properties of objects. Every object in BACnet must have at least the following three properties:
○ Object identifier
○ Object name
○ Object type
The type of object and the type of device in which that object resides determine which properties are present.

BACnet objects have two kinds of properties. One of them is mandatory properties like present value. This property is a must for any BACnet Object to be functional. The other is the optional properties which the vendor chooses to give or not. Vendor will add these values as per the needs of the customer.

The BACnet specification limit defines some properties as Read-only and others as Read-write. The device manufacturer can also limit the access to some properties by classifying them as Read-only.

Property Encoding
Object_Identifier(75) BACnetObjectIdentifier
Object_Name (77) (W) CharacterString
“Analog Input n
Object_Description (28) (W) Character String
Same as Object_Name, is only alias for Object_Name
Object_Type (79) BACnetObjectType
analog-input (0)
analog-output (1)
analog-value (2)
binary-input (3)
binary-output (4)
binary-value (5)
device (8)
multi-state-input (13)
multi-state-output (14)
multi-state-value (19)
Present_Value (85) (W) REAL (analog objects)
ENUMERATED (binary objects)
Unsigned (multi-state objets)
(no index)
(priority required when writing commendable objects)
(input objects writeable only when out of service)
Status_Flags (111) BACnetStatusFlags
BIT STRING: fault(1), out-of-service(3)
Event_State (36) BACnetEventState
ENUMERATED: normal(0), fault(1)
Reliability (103) BACnetReliability
ENUMERATED: normal(0)
Vendor specific:
no response (64)
crc error (65)
exception, illegal function code (66)
exception, illegal data address (67)
exception, illegal data value (68)
exception, code+65, rarely used (69..79)
configuration property fault (80)
exception, code not recognized (81)
BACnet client read/write timeout (82)
BACnet client received error response from slave (83)
SNMP client received no response from agent (84)
SNMP client unable to parse data (85)
SNMP client reply does not match request (86)
Out_Of_Service (81) (W) BOOLEAN
COV_Increment (22) (W) REAL (analog objects only)
COV_Period (180) (W) Unsigned
Priority_Array (87) BACnetPriorityArray (commendable objects only)
SEQUENCE SIZE (16) OF BACnetPriorityValue
REAL (each element, analog output objects)
ENUMERATED (each element, binary output objects)
Unsigned (each element, multi-state output objects)
Relinquish_Default (104) (W) REAL (analog objects)
ENUMERATED (binary objects)
Unsigned (multi-state objets)
Polarity (84) BACnetPolarity (binary objects only)
ENUMERATED: normal(0)
Number_Of_States (74) Unsigned (multi-state objects only)
Units (117) BACnetEngineeringUnits (analog objects only)

BACnet network Architecture

The BACnet network architecture can be related to the architecture model OSI (Open System Interconnection) of ISO . There is however a simplified architecture that refers only to the layers: physical, link, network, application. Layers: transport, session and presentation are not used in this case.

The network layer and application specifications are subject to specific BACnet protocol. Layers: physical link and refer to existing specifications independent BACnet

  •  ISO 8802-02 + (ISO 8802-3 or Arcnet)
  •  MS / TP EIA-485 +
  •  PTP + EIA-232
  •  Lon talk
  •  UDP / IP