This section defines specialized types that are commonly used for Field Devices. It makes use of the ConfigurableObjectType as a way to add functionality using composition.
Subclause 9.2 defines a generic pattern to expose and configure components. It defines the following principles:
- A configurable Object shall contain a folder called SupportedTypes that references the list of Types available for configuring components using Organizes References. Sub-folders can be used for further structuring of the set. The names of these sub-folders are vendor specific.
- The configured instances shall be components of the configurable Object.
Figure 36 illustrates these principles.
Figure 36 – Configurable component pattern
In some cases the SupportedTypes folder on the instance may be different to the one on the Type and may contain only a subset. It may be for example that only one instance of each Type can be configured. In this case the list of supported Types will shrink with each configured component.
This ObjectType implements the configurable component pattern and is used when an Object or an instance declaration needs nothing but configuration capability. Figure 37 illustrates the ConfigurableObjectType. It is formally defined in Table 65. Concrete examples are in Clauses 9.3 and 9.4.
Figure 37 – ConfigurableObjectType
Table 65 – ConfigurableObjectType definition
Attribute |
Value |
||||
BrowseName |
ConfigurableObjectType |
||||
IsAbstract |
False |
||||
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
ModellingRule |
Subtype of the BaseObjectType defined in OPC 10000-5 |
|||||
|
|
|
|
||
HasComponent |
Object |
SupportedTypes |
|
FolderType |
Mandatory |
HasComponent |
Object |
<ObjectIdentifier> |
|
BaseObjectType |
OptionalPlaceholder |
The SupportedTypes folder is used to maintain the set of (subtypes of) BaseObjectTypes that can be instantiated in this configurable Object (the course of action to instantiate components is outside the scope of this specification).
The configured instances shall be components of the ConfigurableObject.
A block-oriented Device can be composed using the modelling elements defined in this specification. A block-oriented Device includes a configurable set of Blocks. Figure 38 shows the general structure of block-oriented Devices.
Figure 38 – Block-oriented Device structure example
An Object called Blocks is used as a container for the actual BlockType instances. It is of the ConfigurableObjectType which includes the SupportedTypes folder. The SupportedTypes folder for Blocks is used to maintain the set of (subtypes of) BlockTypes that can be instantiated. The supported Blocks may be restricted by the block-oriented Device. In Figure 38 the BlockTypes B and E have already been instantiated. In this example, only one instance of these types is allowed and the SupportedTypes folder therefore does not reference these types anymore. See 9.2.1 for the complete definition of the ConfigurableObjectType.
A Modular Device is represented by a (subtype of) ComponentType that is composed of a top-Device and a set of subdevices (modules). The top-Device often is the head module with the program logic but a large part of the functionality depends on the used subdevices. The supported subdevices may be restricted by the Modular Device. Figure 39 shows the general structure of Modular Devices.
Figure 39 – Modular Device structure example
The modules (subdevices) of Modular Devices are aggregated in the SubDevices Object. It is of the ConfigurableObjectType, which includes the SupportedTypes folder. The SupportedTypes folder for SubDevices is used to maintain the set modules that can be added to the Modular Device. Modules are not in the DeviceSet Object.
Depending on the actual configuration, Modular Device instances might already have a set of pre-configured subdevices. Furthermore, the SupportedTypes folder might only refer to a subset of all possible subdevices for the Modular Device. In Figure 39 the modules C and D have already been instantiated. In this example, only one instance of these types is allowed and the SupportedTypes folder therefore does not reference these types anymore. See clause 9.2.1 for the complete definition of the ConfigurableObjectType.
Subdevices may themselves be Modular Devices.