Understanding BACnet Protocol Basics
Understanding BACnet Protocol Basics
Overview of Training
Building Automation Protocols
• History of BACnet
• What is BACnet
BACnet Architecture
BACnet Terminologies
BACnet Objects & Properties
BACnet Services
BACnet Profiles
BACnet Test Conformance & Process
Development Approach
Building Automation
Building Automation means “Integrated Management of Buildings” i.e. a solution of many sub-
systems and plants perfectly integrated among them
In a system where a BA solution is implemented there will coexist many subsystems such as,
heating and conditioning systems, management systems of electricity and lighting, video supervi-
sion, security, fire fighting, multimedia, etc
A particular control reader allows you to light, heat or air-condition a room just when the staff
enters it. When the room is empty everything is set in Stand-by.
In order to control all the subsystems of the plant it is necessary to have an integrated supervi-
sion system
The BAS (Building Automation System)functionality reduces building energy and maintenance
costs when compared to a non-controlled building. A building controlled by a BAS is often re-
ferred to as an intelligent building system.
Building Automation Protocols in market
LonTalk
• LonTalk is a protocol optimized for control created by Echelon Corporation for networking
devices over media such as twisted pair, powerlines, fiber optics, and RF. It is popular for
the automation of various functions in industrial control, home automation, transportation,
and buildings systems such as lighting and HVAC.
• All LonWorks devices communicate with each other using a standard protocol that's em-
bedded in Neuron Chips.
Modbus
• Modbus is a serial communications protocol published by Modicon in 1979 for use with its
programmable logic controllers (PLCs). It has become a standard communications protocol
in industry, and is now the most commonly available means of connecting industrial elec-
tronic devices
• The number of data types is limited to those understood by PLCs .
• Variations exist between different implementations. Common one are
- Support of different data types
- Different protocol extensions (16 bit slave address, 32 bit data size, word swapped data)
Challenges faced before BACnet
Proprietary products from different manufacturers and vendors are difficult or sometimes impos-
sible to integrate together. Building automation owners had no choice but to stick to ‘one ven-
dor’
Building owners feel trapped, locked-in to products made by a single manufacturer
Even though there are ways to interconnect products from different vendors in a
system through an ‘interface’, but developing such an interface require co-operation, knowledge
of proprietary standards.
In practice these systems have been very costly to implement and support, as the various sys-
tems they interface with evolve and change independently
The most important challenge was: how to achieve ‘interoperability’?
Benefits of Interoperability
Lower cost:
Most engineers and other building owners prefer to work with a small group of vendors or even
a single vendor, but desire the economy of competitive pricing during bidding. If all systems and
devices are interoperable, they can mix and match and select products in a competitive environ-
ment to create the best solution at the lowest cost.
Single point of control:
Users are interested in establishing a single point of control over all building systems, from HVAC
to lighting to access control, with an operator monitoring the whole system from the control
room. This arrangement greatly simplifies building management and creates synergies among
various building control systems to save energy and perform profiling
Flexibility and scalability:
Building owners always look for better options to replace any existing obsolete product in their
BAS. Interoperable products can be easily integrated in the existing running system without any
danger of affecting its functionality
Before BACnet After BACnet
A manufacture A manufacture
B manufacture C manufacture
B manufacture C manufacture
A proprietary protocol
B proprietary protocol Standard BACnet proto-
C proprietary protocol
col
Evolution of BACnet
Around early 1980, building owners and operators were trapped, locked-in to products made by
a single manufacturer and were looking for an open standard protocol. The industry needed a
leader to step forward and set a standard.
The resulting unrest prompted ASHRAE to form SPC-135P, a committee with the express charter
to investigate and develop a new standard to address their issues. Through a consensus process
involving nearly every major vendor of controls in North America, as well as academics, end
users, consulting engineers and government interests, the BACnet standard was born after
around nearly nine years of effort and brain storming.
ASHRAE's board of directors voted to approve the standard and publish ASHRAE 135-1995 in Sep-
tember, 1995. Since ASHRAE is an approved ANSI standards body, the standard was also submit-
ted to ANSI and BACnet became ASHRAE/ANSI Standard 135 in 1995 and ISO 16484-5 in 2003.
The Method of Test for Conformance to BACnet was published in 2003 as ASHRAE Standard
135.1.
BACnet is under continuous maintenance by the ASHRAE Standing Standard Project Committee
135
What is BACnet?
BACnet is the data communication protocol for Building Automation and Control Networks.
It is an ASHRAE, ANSI, and ISO standard protocol.
A data communication protocol is a set of rules that control the exchange of data over a network.
These rules have to be implemented consistently across all types of devices, and by all device
manufacturers whose products are connected to a common network.
BACnet was designed specifically to meet the communication needs of building automation and
control systems for applications such as HVAC, lighting control, access control, and fire detection
systems
Features of BACnet Protocol
Interoperability of devices and systems from various vendors
BACnet is independent from any specific hardware, operating system or software platform
No fixed architecture
Object model is easily extended
Broad participation in its development
Single point of control
Competitive system expansion
Eliminate fear of being “locked in”
Possibility of integrating all BAC functions
Low cost
Provides various data link and network options
BACnet is an Open standard Protocol
The following table reflects why BACnet is considered as an Open Protocol
Is BACnet protocol used by multiple vendors? Yes
BACnet IP device
BACnet Work Station BACnet/IP to
MS/TP Router
BACnet LAN: MS/TP
MS/TP Device
BACnet/IP device
Each BACnet/IP device has a B/IP MAC address. It consists of six octets consisting of the four-
octet IP address followed by a two-octet UDP port number(0xBAC0)
BACnet/ BACnet/
IP de- IP device
vice
BACnet terminology
Objects
• Devices and systems are seen as black boxes consisting of a number of objects
• BACnet objects only define the outside behaviour of the devices and systems – no in-
ternal functionality is defined
Object properties
• Each object has got a number of mandatory (required) and optional properties.
• The properties can be read by other devices and systems and some can be written to.
• Vendors may define vendor specific properties .
Services
• Communication between BACnet devices and systems is done using specific services.
• Services can be used to read object properties.
BACnet : Object Oriented Approach
BACnet has been designed taking into consideration the object-oriented approach.
This protocol models each building automation and control computer as a collection of data
structures called ‘Objects’, the properties of which represent various aspects of the hardware,
software, and operation of the device.
These objects provide a means of identifying and accessing information without requiring knowl-
edge of the details of the device's internal design or configuration
While this Standard prescribes the most widely applicable object types and their properties, im-
plementers are free to create additional object types if desired.
As the object model can be easily extended, it provides a way for BACnet to evolve in a backward
compatible manner as the technology and building needs change
BACnet Objects
Objects are defined as standard functional entities which have its own set of predefined proper-
ties making it unique.
Objects can be defined as a collection of information related to a particular function that can be
uniquely identified and accessed over a network in a standardized way.
Objects may represent single physical "points", or logical groupings or collections of points which
perform a specific function.
It is an abstract concept that allows us to talk about and organize information relating to physical
inputs and outputs, as well as non-physical concepts like software, or calculations
For example:
• For example, an object might represent a physical input device like a temperature sensor or thermostat,
or an output device like a fan or pump or valve position. Objects can also represent non-physical con-
cepts like program logic, schedules and historical data
BACnet Properties
Each object is characterized by a set of attributes or "properties” that describe its behavior or
govern its operation.
Object's properties can be visualized as a table with two columns. On the left is the name or
identifier for the property, and on the right is the property's value.
Property Identifier Property Value
Object Name "Thermostat"
Object Type Analog Input
Present Value 25.5
High Limit 50
Low Limit 2
Here is an example of a temperature sensor, which might be represented as a BACnet Analog In-
put object. The object has a name property (“Thermostat") and an object type (ANALOG INPUT).
The Present value property tells us what the temperature sensor is reading at this moment (25.5
degrees)
Some properties are read-only meaning that you can look at the property value, but not change
it. Some properties can be changed (written).
Vendors may add proprietary object properties or vendor specific objects to a device
BACnet Properties
Each object has got a number of mandatory (required) and optional properties.
Three BACnet properties are mandatory in every object
• Object_Identifier :
• This property, of type BACnetObjectIdentifier, is a numeric code that is used to identify the object. It
consists of (Object type, instance number).Instance number can vary between 0 to 4194303.
• Object_Name :
• This property, of type CharacterString, shall represent a name for the object that is unique within
the BACnet device
• Object_Type :
• This property, of type BACnetObjectType, indicates membership in a particular object type class
BACnet standard has listed down required properties for each object based on its characteristics.
To claim an object to be an BACnet object, it needs to have those required properties.
Few properties are optional, those are provided to give additional facilities for the particular ob-
ject.
Properties have read and write access attached to it. Following letters indicates whether the
property is required or not in the coming slides.
• O indicates that the property is optional,
• R indicates that the property is required to be present and readable using BACnet services,
• W indicates that the property is required to be present, readable, and writable using BACnet services
BACnet Objects
BACnet defines 30 standard object types detail. A BACnet standard object is one whose behavior,
in terms of which properties it provides and what they do, is defined in the BACnet standard.
Each service request issued and service acknowledgment (reply) returned becomes a message
packet transferred over the network from the sending to the receiving device.
Services allow one BACnet device to do something on behalf of another BACnet device.
• For example, if one device needs to know a temperature, it can read the Present_Value property of the
analog input object which represents that temperature sensor.
BACnet Client/Server Architecture
A BACnet device may trigger a service or can react on a service request:
Initiate
Service
(A side)
C S
Execute
Service (B side)
The one who acts as a user of the data(client) acts as a initiator and the one who is the
provider of this data(server) acts as executor
Application Services
Services in BACnet are classified in two types
• Confirmed Application Services
The client expects an acknowledgement for the requested service in case of confirmed ap-
plication services.
• Unconfirmed Application Services
The client does not expects an acknowledgement for the requested service in case of un-
confirmed application services.
• ReadProperty
• ReadPropertyMultiple
• ReadPropertyConditional
• ReadRange
• WriteProperty
• WritePropertyMultiple
• CreateObject
• DeleteObject
• AddListElement
• RemoveListElement
ReadProperty Service
The ReadProperty service is used by a client BACnet-user to request the value of one property of
one BACnet Object
It falls into confirmed application service category.
ReadProperty Service requires following two important fields
• Object Identifier
• Property Identifier
ReadPropertyMultiple Service
The ReadPropertyMultiple service is used by a client BACnet-user to request the values of one or
more specified properties of one or more BACnet Objects
WriteProperty Service
The WriteProperty service is used by a client BACnet-user to modify the value of a single speci-
fied property of a BACnet object.
This falls under Confirmed Application Services category .
WritePropertyMultiple Service
The WritePropertyMultiple service is used by a client BACnet-user to modify the value of one or
more specified properties of a BACnet object.
This falls under Confirmed Application Services category.
Remote Device Management Services
The Remote Device Management Services provide a number of disparate functions,
including operator control, specialized message transfer, and addressing/auto-
configuring functions. Following is the list of services under this category:
Time parameter, of type BACnetDateTime, shall convey the current date and time as determined
by the clock in the device issuing the service request.
ReinitializeDevice Service & DeviceCommunicationControl
The DeviceCommunicationControl and ReinitializeDevice Services are intended to
provide a human operator with diagnostic tools which may be invoked remotely.
The ReinitializeDevice service is used by a client BACnet-user to instruct a remote de-
vice to reboot itself (cold start), reset itself to some predefined initial state (warm
start)
The DeviceCommunicationControl service is used by a client BACnet-user to instruct a
remote device to stop initiating and optionally stop responding to all APDUs (except
DeviceCommunicationControl or, if supported, ReinitializeDevice) on the communica-
tion network or internetwork for a specified duration of time.
Due to the sensitive nature of this service, a password may be required from the re-
sponding BACnet-user prior to executing the service.
Alarm and Event Services
“Events" are changes of value of certain properties of certain objects, or internal status changes,
that meet predetermined criteria.
There are three mechanisms provided in BACnet for managing events:
• change of value reporting,
• intrinsic reporting,
• algorithmic change reporting.
Alarms and events service provides a way to indicate problems or error conditions, such as a sen-
sor reading out of normal range or, for that matter, returning to normal operation ("Events"); or a
change in a reading (of some increment since the previous report) termed "Change Of Value" or
COV.
SERVICE BACnet DESCRIPTION
SubscribeCOV C Sent by a device to request that it be told of COVs in an object.
ConfirmedCOVNotification C Tells subscribing devices of the COV that occurred in a property.
UnconfirmedCOVNotification U Tells subscribing devices that a change has occurred to one or more
properties of a particular object.
ConfirmedEventNotification C Used to tell sender of a possible error condition.
UnconfirmedEventNotification U Used to tell sender of a possible error condition.
GetAlarmSummary C Requests from a device a list of "active alarms," if any.
GenEnrollmentSummary C Requests a list of "event" (possible error) generating objects.
GetEventInformation Service C To obtain a summary of all "active event states"
LifeSafetyOperation Service The LifeSafetyOperation service is intended for use in fire, life safety
and security systems
AcknowledgeAlarm Service C Used to tell sender of alarm that a human has seen the alarm.
COV Reporting
COV stands for Change of Value !
The SubscribeCOV service is used by a COV-client to subscribe for the receipt of notifications of
changes that may occur to the properties of a particular object.
For example:
- Let the client subscribe for an monitored object as Analog Input object(AI,0).
- At the time of subscription, client needs to specify whether it wants confirmedCOV notifica-
tion or unconfirmed COV notification.
- Also, it needs to mention the time duration for which the subscription is valid.
- Now, when any change in the present value of AI object occurs and it is larger than
COV_Increment property of the AI object, it will issue the confirmed COV notification to the
client in the time duration of its subscription.
- The (AI,0) object will wait for acknowledgement from the client for the Confirmed COV notifica-
tion.
- Let us see this happening in the next slide !
COV Subscription
Intrinsic /Algorithmic change Reporting
Object supporting intrinsic reporting has notification class property which refers to
the notification class object. Notification class object has recipient list property which
holds the list of referenced objects which needs to be notified in case of event/alarm
condition.
Intrinsic events are connected to one or more recipients indirectly through association
with a Notification Class object. Algorithmic change events are connected to one or
more recipients by the creation of an Event Enrollment object.
Intrinsic Event Reporting
• The recipient list of alarms and events from specific objects will statically or dynamic-
ally be managed using NotificationClass objects
• The objects to support intrinsic alarming will have to support various optional proper-
ties like the EventEnable property
Algorithmic Change Events
• In order to support algorithmic change events, the EventEnrollment object needs to be
supported. The EventEnrollment object list contains stages and values of data points
that need to be monitored.
• In case of a limit violation, the distribution of alarms/events can either be handled by
the EventEnrollment object itself (if recipients are defined) or via a Notification Class
object list if a NC object is defined with the object in alarm.
Intrinsic Reporting
Recipient
List
BACnet Interoperability Building Blocks
Services are paired based on the functionality it belongs to. Small building blocks were
formed for each functional area. Such groups or blocks are known as BIBBs
BIBBs come in pairs, designated A and B, that reflect the client/server nature of control
system communication. Both of these devices are nodes on a BACnet internetwork.
In most cases, the "A" device will act as the user of data (client), and the "B" device will
be the provider of this data (server).
There are BIBBs for the following areas of interoperability:
• Data Sharing (DS)
• Alarm and Event Notification (AE)
• Scheduling (SCHED)
• Trending (T)
• Device Management (DM)
• Network Management (NM)
• Virtual Terminal Management (VT)
BACnet Interoperability Building Blocks
BIBBs example:
• BIBB - Data Sharing - ReadProperty-A (DS-RP-A)
The A device is a user of data from device B
-A
P-
A DM-TS DS
-W
-R P-B
DS
DS-
RP-
B
BACnet BIBBs AE
-ACK
-B
SCHE
D-A
s
er
ty o -Ha
ro
p Wh W
dP ho I-Am
Re
a
WriteP
BACnet Services
ropert
-Is
y I-Hav
e
Operator Workstation
B-OWS
(B-OWS)
Application-Specific Controller
B-AAC
B-ASC (B-AAC or B-ASC)
B-ASC B-ASC
B-SA B-SS
Smart Sensor/Actuator
BACnet profiles
BACnet Smart Sensor (B-SS)
• Supports Data Sharing BIBBs
• They are simple sensing device with very limited resources
• Ability to provide values for any of its BACnet objects upon request
BACnet Testing Laboratories was established by BACnet International to support compliance test-
ing and interoperability testing activities for BACnet devices using the draft testing procedures
from 135.1P.
The Visual Test Shell (VTS) is a Microsoft Windows application for testing the BACnet functiona
lity of equipment used in building automation systems. It can be freely downloaded from http:
//[Link]/projects/vts/files
• Wireshark:
It is a Protocol Analyzer used for IP, Ethernet or MS/TP captures. It can be freely downloaded f
rom [Link]
To Test MSTP device:
Following is the list of tools required for testing MSTP device
• VTS
• Wireshark
• Oscilloscope – PicoScope 2204 - Used to verify MS/TP timing during BTL Testing.
• Frontline Serialtest - Serial Analyzer which can be used for MS/TP testing
VTS
Wireshark
Oscilloscope – PicoScope 2204
Frontline Serialtest
BACnet Development Approach
Factors to be considered for the development of BACnet Compliant device
Original Broadcast-NPDU
This message is used by B/IP devices and routers
which are not foreign devices to broadcast NPDUs on
a B/IP network
Forwarded NPDU
This BVLL message is used in broadcast messages
from a BBMD as well as in messages forwarded to
registered foreign devices. It contains the source
address of the original node as well as the original
BACnet NPDU
Application Layer frame Structure
Application Layer Protocol Data Units (APDUs) are used in BACnet to convey the information con-
tained in the application service primitives and associated parameters.
Each APDU consists of a fixed portion and a variable portion depending upon the APDU type.
Fixed Portion:
"Protocol control information" (PCI) comprises data required for the operation of the application layer protocol,
including the type of APDU, information to match service requests and service responses, and information to
carry out the reassembly of segmented messages. This information is contained in the "header," or fixed part, of
the APDU.
Variable Portion:
Variable part of APDU consists of "User data“comprising information specific to individual service requests or re-
sponses.
There are 8 types of BACnet APDU. They are:
Application Layer frame Structure
Let us take the example BACnet –Confirmed-Request-PDU
Application Layer frame Structure
Let us take the example BACnet -Unconfirmed-Request-PDU
BACnet-Simple-Ack-PDU