To understand a standard what you have to do is to focus on the data representation. How a protocol represents data is key to its functionality. Once you understand the data representation, then it’s simply a matter of figuring out how that data is moved from Point A to Point B over whatever physical layer it uses.
In BACnet, the basic construct to organize data is an Object. An Object is really key to the operation of BACnet. Objects contain the physical data – temperatures, counts, rates and everything else captured by our automated devices. Groups of Objects represent the devices themselves. A flow meter can be represented by a group of Analog Input Objects and some Binary Objects. Objects are really at the center of BACnet technology.
BACnet has eighteen different objects in its specification. That list includes the most common objects, objects you’ll find in most BACnet devices: the Analog Input Object, the Analog Output Object, the Binary Input Object, the Binary Output Object and the Binary Value Object. It also includes some objects you might never run into in an entire career, like the Notification Class Object and the Loop Object.
Every BACnet Object is composed of a set of properties. The properties of an Object describe the Object to the network. BACnet properties include items like identification strings, configuration information, status values and diagnostic status. It is only through an Object’s properties that an Object is monitored and controlled.
Properties are very valuable to BACnet users. They provide information called meta-data. Meta-data defines and explains a data point. For example, you may have a temperature value of 25. Without meta-data, you won’t know if the refrigeration system is properly cold (25 Fahrenheit) or if the building roof is really hot (25 Celsius). Properties (meta-data) help to explain the characteristics of a value, what we call “present value” in BACnet.
Properties can tell you things like the scale, where the sensor is located, what kind of sensor is being used, or what kind of device is doing the measuring. Properties can be either Read only or Read-Write. The BACnet specification details what level of access an external device has to a BACnet property.
Properties are either required or optional. Required properties are properties that must be included in the Object. Network queries to the Object can always find and read those properties in an Object because, be definition, they have to be present. Optional properties are properties that CAN be included in the Object. It’s the choice of the device vendor to include or exclude an optional property.
Three properties, Object-identifier, Object-name, and Object-type are required to be present in every BACnet Object. Every Object must have these three objects plus any other Objects that are required for that Object’s Object-type. The type of Object and the type of device in which that Object resides determine which properties are required.
An Analog Input Object, for example, has the three objects required of every BACnet object, five other required objects plus seventeen optional objects:
Object_Identifier | Required | Analog Input #1 |
Object_Name | Required | “AI 01” |
Object_Type | Required | Analog Input |
Present_Value | Required | 68.0 |
Status_Flags | Required | In_Alarm Fault Overridden Out_Of_Service flags |
Event_State | Required | Normal (plus various problem-reporting states) |
Out_Of_Service | Required | False |
Units | Required | Degrees Fahrenheit |
Update_Interval | Optional | 1.00 (seconds) |
Reliability | Optional | No_Fault_Detected (plus various fault conditions) |
Description | Optional | “Outside Air Temperature” |
Device_Type | Optional | “10k Thermistor” |
Min_Pres_Value | Optional | -100.0 minimum reliably read value |
Max_Pres_Value | Optional | +300.0 maximum reliably read value |
Resolution | Optional | 0.1 |
COV_Increment | Optional | Notify if Present_Value changes by increment: 0.5 |
Time_Delay | Optional | Seconds to wait before detecting out-of-range: 5 |
Notification_Class | Optional | Send COV notification to Notification Class Object: 2 |
High_Limit | Optional | +215.0 Upper normal range |
Low_Limit | Optional | -45.0 Lower normal range |
Deadband | Optional | 0.1 |
Limit_Enable | Optional | Enable High-limit-reporting Low-limit-reporting. |
Event_Enable | Optional | Enable To_Offnormal To_Fault To_Normal change reporting. |
Acked_Transitions | Optional | Flags indicating received acknowledgments for above changes. |
Notify_Type | Optional | Events or Alarms |
I’ll have more on BACnet objects in next week’s article. John