BACnet, Building Automation and Control Networks, ASHRAE 135.
BACnet is the open communication protocol for building automation and control networks, developed by ASHRAE and standardized as ANSI/ASHRAE Standard 135 and ISO 16484-5. BACnet defines an object model, analog input, analog output, binary input, binary output, schedule, calendar, trend log, notification class, and 30 plus other object types, a service model, read property, write property, subscribe COV, alarm, file transfer, and a network architecture supporting multiple physical layers, BACnet/IP, BACnet/SC, MS/TP, ARCNET. BACnet is the dominant BAS protocol in commercial buildings worldwide.
What BACnet, Building Automation and Control Networks, ASHRAE 135 means.
BACnet emerged in the 1990s as the ASHRAE response to vendor-proprietary BAS protocols that locked building owners into single-vendor systems. The protocol is intentionally vendor-neutral. Any BACnet-conformant device can communicate with any other, regardless of vendor. ASHRAE 135 has been updated continuously since the original 1995 release. The current edition is 2020, with addenda through 2024. The protocol supports a range of device complexity, from simple sensors with a few objects to full building controllers with thousands, multiple physical layers, and a standardized commissioning workflow. The international version, ISO 16484-5 is widely adopted in Europe, the Middle East, and Asia.
What is a BACnet object.
A BACnet object is an addressable container that represents a sensor, an actuator, a setpoint, a schedule, a trend log, an alarm, or other building-control entity. Each object has an object identifier, object type plus instance number and a set of properties, current value, units, description, present-value priority array, alarm thresholds, COV increment. Standard object types include analog input, AI. A sensor reading, analog output, AO. A setpoint or commanded value, binary input, BI. A status, binary output, BO. A command, multistate value, calendar, schedule, notification class, trend log, file, device. Each device exposes an inventory of objects. The BAS configuration tool reads and writes object properties to commission and operate the system.
What is the BACnet priority array.
Output objects, AO, BO, multistate output support a priority array with 16 priority levels. Each priority level can hold a commanded value. The actual output is the highest-priority non-null value. Priority 1 is manual life-safety, rare. Priority 8 is manual operator override. Priority 16 is the lowest, typically program control. The priority array allows multiple programs and operators to command an output without overwriting each other. Each writes to its own priority level, and the priority array resolves conflicts. Operator overrides at priority 8 win over program control at priority 16.
What is COV, Change of Value.
COV, Change of Value is the BACnet notification mechanism where a device sends an unsolicited update when an object property changes by more than a configured increment. COV reduces network traffic versus polling. The BAS supervisory tool subscribes to COV notifications from each sensor, and the sensor only sends an update when its value changes significantly. Each subscribing client controls the COV increment per subscription. COV notifications include the new value and an aging time so the supervisory tool can detect a sensor that has gone silent.
Worked example, resolving a priority array.
A damper actuator is not moving to the position the front end is commanding. The object is a commandable Analog Output, so the value in force is decided by the priority array rather than by whoever wrote last. Read the array from slot 1 downward and take the first slot holding a value. The front end schedule wrote 40 percent into slot 16. The optimisation routine wrote 60 percent into slot 10. An operator override from an earlier shift is still sitting at slot 8 with 0 percent. Slot 8 is the lowest numbered slot holding a value, so the actuator is commanded to 0 percent and every other write is correctly ignored. The fix is to relinquish slot 8, which is done by writing a null to that slot rather than by writing the wanted value into it. Once every slot is empty the object falls back to Relinquish_Default, which is why that property is worth setting deliberately rather than leaving at zero. This is the single most common source of a point that reads correctly, communicates correctly and still does not do what the schedule says.
BACnet standard object types an integrator meets first
ANSI/ASHRAE Standard 135, also ISO 16484-5. A BACnet device presents its data as objects, each with a fixed set of properties, which is why a point list maps onto it directly.
| Object type | What it models | Properties that matter on a point list |
|---|---|---|
| Analog Input, AI | A measured analogue value from a sensor | Present_Value, Units, Out_Of_Service, COV_Increment |
| Analog Output, AO | A commanded analogue value driven to a device | Present_Value, Priority_Array, Relinquish_Default, Units |
| Analog Value, AV | A setpoint or calculated analogue value held in the controller | Present_Value, Priority_Array, Units |
| Binary Input, BI | A two state field input such as a status contact | Present_Value, Polarity, Active_Text, Inactive_Text |
| Binary Output, BO | A two state command such as start and stop | Present_Value, Priority_Array, Minimum_On_Time, Minimum_Off_Time |
| Binary Value, BV | A two state value held in the controller | Present_Value, Priority_Array |
| Multi-state Input, Output and Value | An enumerated state such as Off, Low, High | Present_Value, Number_Of_States, State_Text |
| Device | The controller itself | Object_Identifier, Vendor_Identifier, Protocol_Services_Supported, Max_APDU_Length_Accepted |
| Schedule | A time of day program | Weekly_Schedule, Exception_Schedule, List_Of_Object_Property_References |
| Calendar | Named date lists that schedules refer to | Date_List |
| Trend Log | A stored history of one property | Log_Buffer, Log_Interval, Buffer_Size, Stop_When_Full |
| Notification Class | Where alarms are routed, and at what priority | Priority, Recipient_List, Ack_Required |
| Loop | A control loop running inside the controller | Setpoint_Reference, Proportional_Constant, Integral_Constant |
The BACnet priority array, slots 1 to 16
Every commandable object holds sixteen slots. The lowest numbered slot with a value wins; when every slot is empty the object falls back to Relinquish_Default. Slots the standard leaves available are assigned by the project.
| Priority | Assignment in ANSI/ASHRAE 135 | Typical use |
|---|---|---|
| 1 | Manual, life safety | A manual life safety override, the highest authority there is |
| 2 | Automatic, life safety | A fire or life safety system commanding the point |
| 3 | Available | Assigned by the project |
| 4 | Available | Assigned by the project |
| 5 | Critical equipment control | Equipment protection interlocks |
| 6 | Minimum on and off | The controller enforcing anti short cycling |
| 7 | Available | Assigned by the project |
| 8 | Manual operator | An operator override from the front end |
| 9 to 15 | Available | Assigned by the project, often for optimisation and demand response |
| 16 | Available | In common practice the slot normal automatic control writes to |
Common questions
What physical layers does BACnet support.
What is BTL.
Can BACnet integrate with other BAS protocols.
What is BACnet/SC.
Run it on your drawings.
Upload a drawing set, get every document populated and classified, export to the format your team uses.