InduSoft is committed to developing SCADA/HMI software that supports worldwide standards in automation. This is the first article in a series designed to explore InduSoft’s relationship to international automation standards.
What is BACnet?
BACnet or Building Automation and Controls Network is a standard that was introduced in 1995 in order to consolidate building automation, HVAC, fire, life safety, security, and a variety of other related functionality and communications into a single protocol. The BACnet-1995 standard was later approved within CEN (Committee for European Standardization) in 2003 as CEN TC 247, defining various levels or layers regarding building controls and automation (i.e., the Management Level, the Automation Level, and the Field Level) and was finally used in the standard ISO 16484-5.
CEN concluded that the various protocols used by disparate building automation vendors creating systems controls, could no longer be rigidly associated with any of the particular levels. Any protocol may now be used to carry out the functional requirements of any level as desired. Protocol rules apply to Electrical Signaling, Addressing, Network Access (Master/Slave, Peer/Peer), Error Checking, Flow Control, Message Sequencing, Segmentation and Checkpointing, Presentation Format (Compression, Encryption), and Message Format. BACnet is “special” among protocols because its message format was specifically designed to facilitate communication about information related to building automation and control (as opposed to graphic design, manufacturing, word processing, etc.).
BACnet has been developed into a standard network view or model so each vendor using the standard can “map” their devices. BACnet also has standard messages or services that use the model and carry out other common functions. BACnet also defines the physical link, data link, and networking standards, i.e., LANs that the vendors are willing to support.
How is BACnet Used?
The BACnet concept is to model objects within the building automation system. Objects, or more correctly, logical devices, are simply collections of information related to a particular function that can be uniquely identified and accessed over the network in a standardized way. Objects or logical devices may represent single physical “points” or logical groupings of points that perform a specific function. Each logical device is characterized by a set of “properties” that define its behavior or govern its operation.
For example, a temperature sensor in a thermostat, which might be represented as a BACnet Analog Input logical device, is shown in Figure 1:
In the example of Figure 1, this logical device [object] provides properties which are used to get information from the real device and also provides information about it. The logical device has a Name property (“SPACE TEMP”) and an object_type (ANALOG INPUT). The present_value property tells us what the temperature sensor is reading at this moment (72.3 degrees). Other properties show us other information about the real sensor object, such as whether it appears to be functioning normally, or High and Low Limits for alarming purposes.
BACnet Object Types and Registers Supported by the InduSoft BACNE Driver
The BACnet Standard defines a total of 23 Standard Object Types, which are called “Registers” within the context of the InduSoft BACNE driver. The behavior of a Standard Object Type is determined by which properties it provides and what the properties do. They are shown in Figure 2.
|Binary Input||Analog Input||Multi-state Input||LifeSafetyZone|
|Binary Output||Analog Output||Multi-state Output||LifeSafetyPoint|
|Binary Value||Analog Value||Multi-state Value||Event Enrollment|
|Notification Class||Calendar||Loop||Trend Log|
Figure 2: List of Standard Object Types as defined in the BACnet Standard
This set of Standard Object Types represents much of the functionality found in typical building automation and control systems. InduSoft supports a subset (10) of these Standard Object Types (called Registers within the BACNE driver,) as shown in Figure 3.
|Binary Input (BI)||Analog Input (AI)||Multi-state Input (MSI)|
|Binary Output (BO)||Analog Output (AO)||Multi-state Output (MSO)|
|Binary Value (BV)||Analog Value (AV)||Multi-state Value (MSV)|
Figure 3: Registers Supported by InduSoft in the BACNE Driver
A BACnet Device Example
While the example in Figure 2 is simplified for our discussion, a more typical BACnet device might have 16 BI and BO objects, 2 or 3 Schedule objects, and so on.
BACnet is based on the Client-Server Model. “Services” as defined in the BACnet Standard are messages which are carried out on behalf of the BACnet client by the server. Application Services are defined in the BACnet Standard as “Classes”. The Application Service Classes define the kind of message sent to the devices. Some are shown in Figure 5. The BACNE driver basically ignores the Application Service Classes.
|Application Service Classes|
|Alarm and Event Services|
|File Access Services|
|Object Access Services|
|Remote Device Management Services|
|Virtual Terminal Services|
Figure 5: List of BACnet Application Service Classes
In addition to the Application Service Classes, there are many InduSoft supported Object Access Services (called Properties within the BACNE driver.) These Object Access Services access the properties of the registers described in Figure 3. The BACNE supported configurations are shown in Figure 6.
|low||acked–transitions||BACnet Event Transition Bits (OPTIONAL)||√||√||√||√||√||√||√||√||√||—|
|low||active–text||Character String (OPTIONAL)||—||—||—||√||√||√||—||—||—||—|
|low||alarm–value||BACnet Binary PV (OPTIONAL)||—||—||—||√||—||√||—||—||—||—|
|low||change–of–statetime||BACnet Date Time (OPTIONAL)||—||—||—||√||√||√||—||—||—||—|
|low||description||Character String (OPTIONAL)||√||√||√||√||√||√||√||√||√||√|
|low||device–type||Character String (OPTIONAL)||√||√||—||√||√||—||√||√||—|
|low||event–enable||BACnet Event Transition Bits (OPTIONAL)||√||√||√||√||√||√||√||√||√||—|
|mid||event–state||BACnet Event State||√||√||√||√||√||√||√||√||√|
|low||feedback–value||BACnet Binary PV (OPTIONAL)||—||—||—||—||√||—||—||√||—||—|
|low||inactive–text||Character String (OPTIONAL)||—||—||—||√||√||√||—||—||—||—|
|low||limit–enable||BACnet Limit Enable (OPTIONAL)||√||√||√||—||—||—||—||—||—||—|
|low||notify–type||BACnet Notify Type (OPTIONAL)||√||√||√||√||√||√||√||√||√||—|
|low||object–identifier||BACnet Object Identifier||√||√||√||√||√||√||√||√||√||√|
|low||object–type||BACnet Object Type||√||√||√||√||√||√||√||√||√||√|
|low||priority–array||BACnet Priority Array (OPTIONAL)||—||√||√||—||√||√||—||√||√||—|
|low||profile–name||Character String (OPTIONAL)||√||√||√||√||√||√||√||√||√||√|
|low||reliability||BACnet Reliability (OPTIONAL)||√||√||√||√||√||√||√||√||√||√|
|high||status–flags||BACnet Status Flags||√||√||√||√||√||√||√||√||√||√|
|low||Time–of–activetime–reset||BACnet Date Time (OPTIONAL)||—||—||—||√||√||√||—||—||—||—|
|low||Time–of–statecount–reset||BACnet Date Time (OPTIONAL)||—||—||—||√||√||√||—||—||—||—|
|low||units||BACnet Engineering Units||√||√||√||—||—||—||—||—||—||—|
Figure 6: InduSoft Supported BACnet Registers and Properties using the BACNE Driver
The BACnet protocol uses several data types to transport values from devices. The primitive data types, such as integers, strings and floating-point numbers are easily used and understood. However, some properties employ enumerations, dates and times to represent data.
Note that in the “Type” column of Figure 6, that there are many BACnet enumerated values which are listed in Figure 7. It is important to remember that these values will only be able to return numeric values or date values in a specific format to Indusoft Tags.
The BACnetEngineeringUnits enumeration is also used with the UNITS property. However, due to space limitations, the possible values are not shown.
Using values outside of the ranges specified here will produce unspecified behavior. More information on Enumeration and supported values and formats is in the Help File for the BACNE driver.
|Enumeration||InduSoft Supported Values|
|Tag Number||NULL (0)|
|Unsigned Integer (2)|
Figure 7: Supported Enumeration Values
BACnet is designed to run on several types of networks including serial, ARCNET and TCP/IP. The Indusoft BACNE driver only supports devices communicating with BACnet/IP over UDP/IP.