Call us! 512-349-0334 or (877) INDUSOFT

Using BACnet Devices with InduSoft Web Studio

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:

Bacnet and InduSoft Web Studio
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
Command Averaging Device Group
Notification Class Calendar Loop Trend Log
File Program Schedule

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)
Schedule (SCH)

Figure 3: Registers Supported by InduSoft in the BACNE Driver

A BACnet Device Example

BACnet device
A BACnet Logical Device is simply a collection of objects that represents the functionality actually present in any given real device (Figure 4).

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 serverApplication 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.

Priority Property Type AI AO AV BI BO BV MSI MSO MSV SCH
low acked–transitions BACnet Event Transition Bits (OPTIONAL)
low active–text Character String (OPTIONAL)
low alarm–value BACnet Binary PV (OPTIONAL)
low change–of–statecount Unsigned (OPTIONAL)
low change–of–statetime BACnet Date Time (OPTIONAL)
low cov–increment REAL (OPTIONAL)
low deadband REAL (OPTIONAL)
low description Character String (OPTIONAL)
low device–type Character String (OPTIONAL)
low effective–period Bacnet DateRange
low elapsed–activetime Unsigned32 (OPTIONAL)
low event–enable BACnet Event Transition Bits (OPTIONAL)
mid event–state BACnet Event State
low exceptionschedule BACnetARRAY[N]
low feedback–value BACnet Binary PV (OPTIONAL)
mid high–limit REAL (OPTIONAL)
low inactive–text Character String (OPTIONAL)
low limit–enable BACnet Limit Enable (OPTIONAL)
mid low–limit REAL (OPTIONAL)
low max–pres–value REAL (OPTIONAL)
low minimum–off–time Unsigned32 (OPTIONAL)
low minimum–on–time Unsigned32 (OPTIONAL)
low min–pres–value REAL (OPTIONAL)
low notification–class Unsigned (OPTIONAL)
low notify–type BACnet Notify Type (OPTIONAL)
low number–of–states Unsigned
low object–identifier BACnet Object Identifier
low object–name Character String
low object–type BACnet Object Type
low out–of–service BOOLEAN
low polarity BACnet Polarity
high present–value REAL
low priority–array BACnet Priority Array (OPTIONAL)
low priority–for–writing Unsigned(1…16)
low profile–name Character String (OPTIONAL)
low reliability BACnet Reliability (OPTIONAL)
low relinquish–default REAL (OPTIONAL)
low resolution REAL (OPTIONAL)
low schedule–default Any
high status–flags BACnet Status Flags
low time–delay Unsigned (OPTIONAL)
low Time–of–activetime–reset BACnet Date Time (OPTIONAL)
low Time–of–statecount–reset BACnet Date Time (OPTIONAL)
low units BACnet Engineering Units
low update–internal Unsigned (OPTIONAL)
low weekly–schedule BACnetARRAY[7]

Figure 6: InduSoft Supported BACnet Registers and Properties using the BACNE Driver

Data Types

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
BACnetEventState normal (0)
fault (1)
offnormal (2)
high-limit (3)
low-limit (4)
life-safety-alarm (5)
BACnetNotifyType alarm (0)
event (1)
ack-notification (2)
BACnetPolarity normal (0)
reverse (1)
BACnetBinaryPV inactive (0)
active (1)
Tag Number NULL (0)
Boolean (1)
Unsigned Integer (2)
Integer (3)
Real (4)
String (7)
Enumerated (9)

Figure 7: Supported Enumeration Values

Network Specifications

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.

Leave a Reply