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

With its user friendly architecture and ability to control and monitor any building automation process, BACnet became a boon for users, integrators, and equipment vendors.

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

1.      Provide various 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 standardize the representation of data within a device.

3.      Provides multiple physical interfaces to communicate with a variety of systems.

Wondering what is BACnet?

BACnet (Building Automation and Control Network) is a communications protocol that helps the communication between building automation end-devices and building management systems. The BACnet protocol specification like every other protocol specification defines both how data is represented on the network and the services that are used to move data from one BACnet node to another. The specification also tells us about messages that identify data and network nodes such as Who-Has, I-Have, Who-Is, and I-Am.

To meet the requirement of the widest possible set of applications BACnet was designed to support several different physical and link layers:

BACnet MS/TP (master slave/token passing)
MS/TP is exclusive to BACnet and can be implemented 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 particularly suitable for single controller and low cost communications.
(ANSI/ATA 878.1) ARCNET® is a token bus standard, and devices typically support it using single-source chips that handle network communications. ARCNET can run on a variety of media at different speeds-from 150 kbit/s on EIA-485 (STP) up to 7.5 Mbit/s over coaxial cable, STP, or fiber optics. Typically, ARCNET runs at 2.5 Mbit/s over twisted pair.

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

BACnet PTP (point-to-point)

PTP is unique to BACnet and provides for inter networked communications over modems and voice grade phone lines. PTP accommodates 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.6 kb it/s to 56.0 kbit/s.

Like the Control and Information Protocol (CIP) used in industrial application, BACnet uses objects to represent data on a network. Objects defined by the BACnet specification 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 non-proprietary open communication software standard. The standard is now controlled by the ANSI (American National Standards Institute) and ASHRAE (American Society of Heating Refrigeration and Air-Conditioning Engineers) 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 perform certain actions. BACnet has a total of 32 standard services.  A service is the mechanism which a building automation system uses to access a property or request an action from a BACnet Object. The only required 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 (digital) control system parameter


Defines a list of dates, such as holidays or special events, for scheduling.


Writes multiple values to multiple objects in multiple devices to accomplish a specific purpose, such as day-mode to night-mode, or emergency mode.


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.


Allows read and write access to data files supported by the device.


Provides access to multiple properties of multiple objects in a read single operation.


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.


Allows a program running in the device to be started, stopped, loaded and unloaded, and reports the present status of the program.


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.



Object_Identifier (75)


Object_Name (77) (W)

“Analog Input n

Object_Description (28) (W)

Character String
Same as Object_Name, is only alias for Object_Name

Object_Type (79)

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 commandable objects)
(input objects writeable only when out of service)

Status_Flags (111)

BIT STRING: fault(1), out-of-service(3)

Event_State (36)

ENUMERATED: normal(0), fault(1)

Reliability (103)

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)


COV_Increment (22) (W)

REAL (analog objects only)

COV_Period (180) (W)


Priority_Array (87)

BACnetPriorityArray (commandable 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
  •  Lontalk
  •  UDP / IP