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.
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.
Figure 7 shows an example how groups of BACnet properties are integrated through aggregation.
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.