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 5 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 5 – Mapping with inheritance and type hierarchies
The BACnet properties defined for all BACnet object types are mapped to the BACnetObjectType. This abstract OPC UA ObjectType is used as root for the BACnet object type hierarchy.
The BACnet properties defined for all BACnet analog object types are mapped to the abstract BACnetAnalogType. The remaining property is mapped to the concrete OPC UA ObjectType BACnetAnalogInputType.
Figure 6 shows an example for mapping BACnet properties to OPC UA built-in concepts like TypeDefinition, Attributes or standard OPC UA Properties.
Figure 6 – Mapping to OPC UA Attributes and Properties
The BACnet property Object_Type is mapped to the TypeDefinition of the OPC UA Object instance.
The BACnet properties Object_Name, Description and Update_Interval are mapped to the OPC UA Attributes BrowseName, Description and MinSamplingInterval.
The BACnet properties Units, Min_Pres_Value and Max_Pres_Value are mapped the OPC UA Properties EngineeringUnits and EURange of the OPC UA VariableType AnalogItemType.
Figure 7 shows an example how groups of BACnet properties are integrated through aggregation.
Figure 7 – Mapping aggregation of BACnet property groups
The BACnet properties used to configure event reporting like Event_State, Notification_Class, Event_Enabled and Notify_Type are grouped in the OPC UA ObjectType BACnetEventReportingType. An instance of this type is then aggregates as OPC UA Object EventReporting in the OPC UA Object AnalogInput1.
The BACnet properties used for the event algorithm in the event reporting like High_Limit, Low_Limit or Deadband are aggregated in the OPC UA Object EventAlgorithm. Since different event algorithms can be used in event reporting, they build their own event algorithm type hierarchy with the base ObjectType BACnetEventAlgorithmType and the derived types like BACnetOutOfRangeAlgorithmType that is used in the BACnetAnalogInputType.
The BACnet properties used to configure fault evaluation like Reliability and Reliability_Evaluation_Inhibit are grouped in the OPC UA ObjectType BACnetFaultEvaluationType. An instance of this type is then aggregates as OPC UA Object FaultEvaluation in the OPC UA Object AnalogInput1.
Figure 8 depicts the main ObjectTypes of the OPC UA for BACnet information model and their relationship. The drawing is not intended to be complete.
Figure 8 – BACnet OPC UA Model Overview
The boxes in this drawing show the ObjectTypes used in this specification as well as some elements from other specifications. The upper grey box shows the OPC UA core ObjectType from which the OPC UA for BACnet information model ObjectTypes are derived and some VariableTypes used in the BACnet ObjectTypes.
The left grey box in the second level shows the main ObjectTypes that this specification introduces. They represent corresponding BACnet object types. A type hierarchy is used whenever identical components are used in different BACnet object types.
The right grey box in the second level shows the ObjectTypes used for grouping of BACnet features. These groupings are used in the OPC UA for BACnet information model ObjectTypes shown in the left grey box.
Figure 9 provides an example for the mapping of a BACnet Analog Input object type to an OPC UA ObjectType.
Figure 9 – BACnet mapping example
The left grey box shows the list of BACnet properties of the BACnet Analog Input object type.
The middle grey box shows an instance of an OPC UA BACnetAnalogInput ObjectType.
The right grey box shows the OPC UA ObjectTypes used to represent a BACnet Analog Input object type.
Most of the BACnet properties are mapped to OPC UA Properties using the BACnet property name as OPC UA BrowseName. They are either Properties of the Object directly or Properties of the EventReporting Object.
The following BACnet properties are mapped to existing OPC UA information.
- Object_Name is mapped to the BrowseName of the OPC UA Object
- Object_Type is mapped to the type definition of the OPC UA Object
- Description is mapped to the OPC UA Attribute Description of the OPC UA Object
- Present_Value, Units, Min_Pres_Value and Max_Pres_Value are mapped to an OPC UA AnalogItemType Variable with the name Present_Value
- Update is mapped to the OPC UA Attribute MinimumSamplingInterval of the OPC UA Variable Present_Value
All character string information provided through this information model is solely ISO 10646 (UTF-8). A gateway application may convert character string information into other character sets according to the BACnet device capabilities.