Interfacesare ObjectTypesthat represent a generic feature (functionality), assumed to be usable by different ObjectTypesor Objects. The Interfacemodel specifies the rules and mechanisms to achieve this.

The “InterfaceTypesObject(see OPC 10000-5) has been defined so that all Interfacesof the Serverare either directly or indirectly accessible browsing HierarchicalReferencesstarting from this Node.

Rules for the definition of Interfaces:

Rules for applying Interfaces:

If the rules cannot be fulfilled (e.g. name collisions) the ObjectTypecannot apply the Interface, i.e. it shall not reference the Interfacewith a HasInterface Referenceof a subtype.

The rules apply for each referenced Interface. As a consequence, an ObjectTypecannot reference two Interfacesusing the same BrowsePathfor Nodesthat are not similar Nodesor have TypeDefinitionNodesthat are not compatible (compatible means they have either the same TypeDefinitionNodeor one TypeDefinitionNodeis the subtype of the other TypeDefinitionNode).

Figure 8illustrates example Interfaces:

  • ISerializeServiceType, an Interfaceto convert the Objectand its components into a stream of bytes.
  • ITransactionServiceType, an Interfaceto perform a sequence of changes to the Objectas a single operation.
  • ILocationType, an Interfaceto specify the installation location of the Object.

image011.png

Figure 8– Examples of Interfaces

The following examples illustrate the application of these Interfaces. In Figure 9the example Interface ILocationTypeis applied to the XYZ-DeviceType ObjectType. It also illustrates the overriding of Property“Address” by changing the ModellingRulefrom Optionalto Mandatory. Figure 10in addition shows how to use the ISerializeService Interfaceon the instance only. Figure 11shows an Interfacehierarchy where InstanceDeclarationsof the referenced Interfaceand its parent type(s) are applied (the fully-inherited InstanceDeclarationHierarchy).

image012.png

Figure 9– Example: Interface application to an ObjectType

image013.png

Figure 10– Example: One Interface applied to an ObjectType another one to the instance

image014.png

Figure 11– Example: Interface Hierarchy

Clientscan detect the implementation of Interfacesby filtering for the HasInterface Referenceinto the Browse Servicerequest.

On instances, the Browse Servicewill return elements derived from an Interfacetogether with elements of the Node’sbase type. Clientscan also use the TranslateBrowsePathsToNodeId Servicewith BrowseNamesof Interfacemembers to get the NodeIdof these members directly.

In the example in Figure 10Address” with the starting node MD002can be used to request the NodeIdof this Property.

On Objectinstances, some Nodesof an Interfacemay not be available if defined with ModellingRule Optional.