For each IODD Variable defined in the IODD an OPC UA Variable is created that is referenced from the ParameterSet with a HasComponent Reference. The ModellingRule shall be Mandatory for each of those Variables.
Each Object representing a menu referencing the Variable via a VariableRef not defining a Button shall reference the Variable with an Organizes Reference.
Each Object representing a menu referencing the Variable via a RecordItemRef not defining a Button shall reference the corresponding Sub-Variable with an Organizes Reference.
The BrowseName of the Variable shall be the Id of IODD Variable and the DisplayName the Name of the IODD Variable. Localization should be considered. The Description Attribute shall be the Description of IODD Variable. Localization should be considered.
The VariableType, DataType, ValueRank and ArrayDimensions are set according to section 12 depending on the Datatype or DatatypeRef. In addition, the VariableRef or RecordItemRef defines some characteristics that need to be considered.
- If at least one VariableRef contains a unitCode the Variable shall have the Property EngineeringUnits. If more than one VariableRef references the IODD Variable and all VariableRefs contain the unitCode, the EngineeringUnits shall have the ModellingRule Mandatory, otherwise the ModellingRule Optional. The value of EngineeringUnits is vendor-specific because several VariableRefs might define different unitCodes. It might be omitted on the InstanceDeclaration.
- If at least one VariableRef contains a displayFormat the Variable shall have the Property DisplayFormat (see section 13.6). If all VariableRefs contain the displayFormat, the DisplayFormat shall have the ModellingRule Mandatory, otherwise the ModellingRule Optional. The value of DisplayFormat is vendor-specific. It might be omitted on the InstanceDeclaration.
The same rules apply for the sub-variables referenced based on the RecordItemRefs.
The accessRightRestriction is ignored on the ObjectType and only considered on the instances.
In Figure 15 an example is shown of how to map IODD Variables referenced from an IODD Menu to OPC UA.
Figure 15 – Example on how to map Variables
In Figure 16 another example is shown. In this example, the VariableRefs to the same IODD Variable contain different information.
Figure 16 – Example on how to map Variables with different VariableRefs
In Figure 17 an example on how to map RecordItemRefs is shown.
Figure 17 – Example on how to map Variables with RecordItemRefs