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.