Object collection shall be implemented using folders and should be used to group components or equipment that are physically grouped together in a common structure. Several examples of where object collection could be utilised would include modelling Subsea Electronics Modules, Electronic Power Units and Wells.
Object aggregation shall be implemented by creating a subtype of the MDISAggregateObjectType and should be used to group relevant objects to represent a complex piece of equipment that cannot be represented by a single MDIS Object. A specific example of where Object aggregation could be used would be modelling Multiphase Flow Meters (MPFMs). Aggregated Objects have specific rules, defined below, to allow Clients to be able to discover them and easily support them.
Object extension shall be implemented by creating a subtype of an existing MDIS Object and should be used when an existing MDIS Object, such as a valve Object, has additional information or functionality that needs to be represented. An example might be a vendor specific valve, that follows all of the rules associated with a MDISValveObjectType, but includes additional diagnostic information related to the vendor specific valve. Extension of Objects applies to models defined in section 6 and listed below:
- MDISInstrumentObjectType
- MDISInstrumentOutObjectType
- MDISInstrumentArbitrationObjectType
- MDISDigitalInstrumentObjectType
- MDISDigitalOutObjectType
- MDISDigitalArbitrationObjectType
- MDISDiscreteInstrumentObjectType
- MDISDiscreteOutObjectType
- MDISDiscreteArbitrationObjectType
- MDISValveObjectType
- MDISChokeObjectType
- MDISElectricChokeObjectType
- MDISCIMVObjectType
- MDISMotorObjectType
Subtyping MDISBaseObjectType and MDISCounterObjectType is not allowed.
Figure 25 illustrates an extension that adds a simple diagnostic variable.
Rules for developing aggregated and extended objects are provided in Table 120. To minimise variability, when aggregating or extending objects only instances of the following VariableTypes and ObjectTypes shall be used:
- Standard MDIS Objects defined in section 6.
- BaseDataVariableType
- DiscreteItemType (Variable)
- AnalogItemType (Variable)
Table 120 – Aggregation and Extension Decision Matrix
Description |
Aggregation |
Extension |
Require new NodeId on TypeDefinition level |
Yes |
Yes |
0) Define new ObjectType with any non-MDIS parent |
No |
No |
1) Define new ObjectType with any MDIS parent (subtyping MDIS ObjectTypes - MDISValveObjectType, MDISChokeObjectType, MDISElectricChokeObjectType, MDISMotorObjectType, MDISCIMVObjectType, MDISDigitalInstrumentObjectType, MDISInstrumentObjectType, MDISDiscreteInstrumentObjectType or any subtype of these types) |
No |
Yes |
2) Define new ObjectType with MDISAggregateObjectType as parent |
Yes |
No |
The operations described in Table 121 are valid operations in a generic OPC UA Server, but for an MDIS Server they are restricted as described in the table. All changes shall be based on type changes. Instance specific changes are not allowed.
Table 121 – General rules that apply to existing MDIS types
Description |
Aggregation |
Extension |
Add MDIS Object instance to an instance of an existing MDIS ObjectType (or subtype). |
No |
No |
Add non-MDIS Object instance to existing MDIS ObjectType (or subtype). |
No |
No |
Add non-MDIS Object instance to an instance of an existing MDIS ObjectType (or subtype). |
No |
No |
Add Method to an existing MDIS ObjectType (or subtype). |
No |
No |
Add a Variable instance to an instance of an existing MDIS ObjectType (or subtype). |
No |
No |
Add a Variable instance to an existing MDIS ObjectType. |
No |
No |
Base MDIS Object’s compliance to MDIS OPC UA specs shall be demonstrable (CTT). |
Yes |
Yes |
When extending an existing ObjectType, the rules described in
Table 122 apply to the MDIS Objects defined in Section 6. These rules apply to MDISValveObjectType, MDISChokeObjectType, MDISElectricChokeObjectType, MDISMotorObjectType, MDISCIMVObjectType, MDISInstrumentObjectType, MDISDigitalInstrumentObjectType, MDISDiscreteInstrumentObjectType or any subtype of these types; they do not apply to the MDISBaseObjectType and the MDISAggregateObjectType. The MDISBaseObjectType cannot be extended or subtyped by a vendor or project. Only the MDIS working group can extend the MDISBaseObjectType or create new a subtype of it. The MDISAggregateObjectType has its own set of rules. Extending existing ObjectTypes are restricted to limit available additions to allow Clients to pick up the new types without requiring coding changes to the Client.
Table 122 – Rules for subtypes
Description |
Extension |
Add a BaseDataVariableType instance to the newly create subtype of an MDIS ObjectType (MDISValveObjectType, MDISChokeObjectType, MDISElectricChokeObjectType, MDISCIMVObjectType, MDISMotorObjectType, MDISDigitalInstrumentObjectType, MDISDiscreteInstrumentObjectType, MDISInstrumentObjectType or any subtype of these types), with a DataType of one of the OPC BaseDataType excluding structure. |
Yes |
Add an instance of an AnalogItemType to the newly created subtype of an MDIS ObjectType. |
Yes |
Add an instance of a DiscreteItemType to the newly created subtype of an MDIS ObjectType. |
Yes |
Change ModellingRule from Optional -> Mandatory for any of existing properties or components. |
Yes |
Table 123 describes rules for creating an aggregate object. They only apply as described.
Table 123 – Aggregation Related Rules
Description |
Aggregate |
Add a MDIS Object InstanceDeclaration to the newly created subtype of MDISAggregateObjectType |
Yes |
Add a MDIS Variable instance to the newly created sub type of the MDISAggregateObjectType |
Yes |
Add a MDIS defined Reference to the newly created subtype of MDISAggregateObjectType. |
Yes |
Clients are expected to be able to handle new aggregate Objects, even if the Client only lists them as separate MDIS Objects and Variables of which they are composed. Clients are not required to handle an extension Object’s additional Variables, but they are required to support instances of the extension object. Clients that are unable to handle the extension Object’s additional Variables shall treat the extension object as an instance of the parent standard MDIS ObjectType. It is expected that some projects will require supporting the additional Variables defined in an extension Object.