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
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.
Objects
– 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
OBJECT
|
EXAMPLE OF USE
|
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
|
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.
|
Properties
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
ENUMERATED:
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)
|
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 (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)
|