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.
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.