By Frank Schubert, Vice Chairman of the Working Group Technique; Member of the BACnet Interest Group Europe Advisory Board
The OPC Foundation and BACnet Interest Group Europe founded a common working group to specify a mapping profile between the two technologies. This document introduces the basics to understand the mapping between these two technologies.
Introduction to BACnet
BACnet (Building Automation and Control networks) is a data-communication protocol specifically designed for building automation applications.
1987 the ASHRAE (American Society of Heating, Refrigerating and Air-Conditioning Engineers) founded the committee 135 to create an open and neutral communication protocol for building automation. First published in 1995 the BACnet standard is under continuous maintenance by SSPC 135. A public review process before the formal approval assures acceptance by the industry or interested parties.
While starting as a national American standard BACnet has become a world-wide standard and was accepted by ISO as the standards ISO 16484-5 and ISO 16484-6.
The general architecture of BACnet describes three main parts, the BACnet data link layers, the BACnet objects and the BACnet application services.
BACnet supports a total of 7 different network media (data-link-layer).
- BACnet Ethernet (ISO 8802-3 aka Layer-2 Ethernet)
- ARCnet (Network or EIA-485)
- LonTalk (any media supported by LonTalk)
- MS/TP (Master/Slave Token Passing) based on EIA-485 (serial networks)
- PTP (Point-to-Point) based on EIA-232 (serial connection)
- BACnet/IP (based on IPv4/IPv6/UDP)
- ZIGBEE (wireless mesh networks)
BACnet models the data of building automation components as objects. Those include Analog, Binary and Multi-Sate Input, Output and Value Objects, primitive data, the representation of devices, counters, calendar and scheduling, trend-logging, alarming, life-safety and access control objects as well as objects to represent a building structure (groups, structured views).
Objects consist of properties to represent the data associated to the specific information. This includes text information like the name and description, the technical address of the data, the present value, units, alarm-limits as well as specific building automation functionality like command priorities, elapsed active time or change-of-state counting. Due to the de-central approach of BACnet a client can request all information from a device representing data as a server.
BACnet Application Services
The BACnet application services allow access to the objects and provide functions to interact between BACnet applications in a network. Another set of network services on layer 3 of the ISO/OSI model provide routing functions between the different data-link-layers as well as exchanging information about network security.
Application services include object access like reading, writing and change-of-value. Other services provide file-transfer, alarm information, remote device and network management and virtual terminal functions.
To assure interoperability between applications BACnet specifies a PICS document. A PICS is a self-declaration by the vendor of a BACnet device and describes which parts of BACnet are supported by the implementation.
Mapping BACnet Objects to OPC UA
In the working group the members identified the most commonly expected use-cases. The first approach included in the current documents is a mapping of building automation data from BACnet devices and represent them through a mapping device in OPC UA.
The OPC UA / BACnet mapping profile does not specify which networks to use. Most likely BACnet/IP will be used but this is up to the gateway implementation.
BACnet defines a list of object types where all common properties are repeated for each type. Type hierarchies and inheritance are not used in BACnet.
Since OPC UA supports type hierarchies, inheritance and aggregation, these concepts are used to avoid duplicated definitions in the OPC UA representation of BACnet. The example of a BACnet analog input object type is used in this overview chapter to describe how the different concepts are used in this mapping specification.
The following three concepts are used to reduce duplicated definitions in this specification:
- Type hierarchies and inheritance is used to map common BACnet properties on a base type or different levels of a type hierarchy.
- BACnet properties that match existing OPC UA Attributes or Properties are mapped to existing OPC UA concepts like BACnet Object_Name to OPC UA Attribute BrowseName or the BACnet properties Units, Min_Pres_Value and Max_Pres_Value to OPC UA Properties of the AnalogItemType.
- Aggregation is used if BACnet properties can be logically grouped or a group of BACnet properties is used in different OPC UA ObjectTypes across the type hierarchy.
Figure 1 shows an example for type hierarchies and inheritance used to map the BACnet Analog Input object type to OPC UA. The BACnet properties are shown in the same order as defined in the BACnet standard. Figure 2 shows a mapping example.
Figure 1 – Mapping with Inheritance and Type Hierarchies
Figure 2 – BACnet Mapping Example
Figure 3 shows an example of BACnet objects referencing each other with BACnetObjectIdentifiers and the representation with OPC UA Objects and References. The example contains a BACnet Device object, one Analog Input object that creates alarms and therefore references a Notification Class object.
Figure 3 – Event Notifiers in BACnet and OPC UA
Mapping BACnet Services
BACnet introduced a total of 38 application services like reading, writing, device management, etc. The BACnet services are mapped in OPC UA using methods. Methods are used to call a specific service w or w/o optional parameters. The success or failure is returned to the calling process by a result code.
Example: Method DeviceCommunicationControl
This method represents the BACnet service DeviceCommunicationControl. It is used to instruct a remote device to stop initiating communication and optionally stop responding to communication for a specified duration of time.
[in] UInt16 TimeDurationInMinutes
[in] BACnetDeviceCommunicationEnabled EnableDisable
[in] String Password
|TimeDurationInMinutes||This optional parameter of DataType UInt16 indicates the number of minutes that the remote device shall stop communication. If the parameter is not specified, 0 shall be passed in as value.|
|EnableDisable||This parameter is an enumeration that may take on the values ENABLE, DISABLE, or DISABLE_INITIATION. It is used to indicate whether the device should enable all, disable initiation, or disable all communications on the network interface. The BACnetDeviceCommunicationEnabled DataType is defined in 10.4.6.|
|Password||Optional password parameter.|
Method Result Codes
|BadUserAccessDenied||This status is returned for the BACnet error code PASSWORD_FAILURE|
|BadNotSupported||This status is returned for the BACnet error code OPTIONAL_FUNCTIONALITY_NOT_SUPPORTED|
The mapping is not complete yet. One of the next steps may be to map OPC UA data to BACnet management stations or SCADA systems.
Not all of the BACnet functionality specified in the BACnet standard is included in the mapping so far. The working group decided to include the most important objects and services used in real applications. In the future the mapping may be extended to support Life-Safety devices, access-control-systems, elevators/escalators or lighting output.
How to Get the Document
The mapping document is available for download on the BACnet Interest Group Europe web site.
The document and the license to use the mapping specifications are FREE and companies are invited to implement the mapping.
How to Contact the Working Group
Reporting feedback is highly appreciated. Feel free to contact the head of the working group.
OPC Foundation: email@example.com
BACnet Interest Group: firstname.lastname@example.org
About the Author
Frank Schubert with MBS in Krefeld, Germany is member of the ASHRAE SSPC-135, the Advisory Board and Working Group Technique as well as training-leader of the BACnet Interest Group Europe.