The AutomationComponentType ObjectType provides for a grouping of Assets and FunctionalEntities in a given model. It exposes a Method that is used to establish Connections between FunctionalEntities. An overview of the AutomationComponentType is illustrated in Figure 18.

image021.png

Figure 18 – AutomationComponentType overview

The AutomationComponentType is the base ObjectType for an OPC UA FX device, controller, PLC, instrument, etc. It includes information related to the current Asset, the available functionality, its capabilities (including communication-related capabilities) and any related offline information. The AutomationComponentType is formally defined in Table 4 and Table 5.

Table 4 – AutomationComponentType definition

Attribute

Value

BrowseName

3:AutomationComponentType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:BaseObjectType defined in OPC 10000-5

0:HasComponent

Object

3:FunctionalEntities

0:FolderType

M

0:HasComponent

Object

3:Assets

0:FolderType

M

0:HasComponent

Object

3:PublisherCapabilities

3:PublisherCapabilitiesType

O

0:HasComponent

Object

3:SubscriberCapabilities

3:SubscriberCapabilitiesType

O

0:HasComponent

Object

3:ComponentCapabilities

3:AutomationComponentCapabilitiesType

M

0:HasProperty

Variable

3:ConformanceName

0:UriString

0:PropertyType

O

0:HasComponent

Method

3:EstablishConnections

Defined in 6.2.4

M

0:HasComponent

Method

3:CloseConnections

Defined in 6.2.5

M

0:HasComponent

Object

3:Descriptors

0:FolderType

M

0:HasComponent

Variable

3:AggregatedHealth

3:AggregatedHealthDataType

3:AggregatedHealthType

M

0:GeneratesEvent

ObjectType

0:SystemStatusChangeEventType

Defined in OPC 10000-3

ConformanceUnits

UAFX AutomationComponent Base

Table 5 – AutomationComponentType additional References

SourceBrowsePath

Reference Type

IsForward

TargetBrowsePath

3:FunctionalEntities

3:<FunctionalEntity>

0:IsHostedBy

True

3:Assets

3:<Asset>

The components of the AutomationComponentType have additional subcomponents, which are defined in Table 6.

Table 6 – AutomationComponentType additional subcomponents

BrowsePath

References

NodeClass

BrowseName

DataType

TypeDefinition

Others

3:FunctionalEntities

0: Organizes

Object

3:<FunctionalEntity>

3:FunctionalEntityType

OP

3:Assets

0: Organizes

Object

3:<Asset>

3:FxAssetType

OP

FunctionalEntities provides a Folder for the FunctionalEntities that this AutomationComponent exposes. The Folder shall be restricted to hold only instances of a type derived from FunctionalEntityType or instances that implement the IFunctionalEntityType Interface. The Folder may be empty. FunctionalEntities may reference other FunctionalEntities, but FunctionalEntities that are directly referenced from this Folder are considered top-level FunctionalEntities.

Assets provides a Folder for assets. It shall include all assets that are referenced from FunctionalEntities of this AutomationComponent. An Asset might be a complex type that includes other Assets. Assets directly referenced from this Folder are considered top-level Assets. For more details on the asset model, see 6.3. The Folder shall be restricted to hold only instances of FxAssetType or a subtype of it or instances that implement the IVendorNameplateType, ITagNameplateType, and IAssetRevisionType Interfaces. The Folder may be empty; however, typically, there is at least one entry in this Folder. For examples of Assets, see Annex D.

Objects may be added/removed to/from the FunctionalEntities or Assets Folders during operation, in which case the Server shall generate GeneralModelChangeEvent to reflect these changes.

The optional PublisherCapabilities provide the Publisher capabilities associated with this AutomationComponent. They apply to all instances in the FunctionalEntities Folder. An individual FunctionalEntity can further restrict these capabilities. If an AutomationComponent supports being a Publisher as defined in OPC 10000-14, then an instance of this Object shall be provided.

The optional SubscriberCapabilities provides the general Subscriber capabilities associated with this AutomationComponent. They apply to all instances in the FunctionalEntities Folder. An individual FunctionalEntity can further limit these capabilities. If an AutomationComponent supports being a Subscriber as defined in OPC 10000-14, then an instance of this Object shall be provided.

ComponentCapabilities is an AutomationComponentCapabilitiesType Folder that describes the functionality provided by an AutomationComponent (e.g., number of supported Connections, etc.).

The optional ConformanceName provides the URL to the product’s listing on the OPC Foundation website, under which the result of the conformance testing for this product can be found. The product's name might be different from the name of the AutomationComponent since conformance testing may be done for a product family, but this shall be described on the OPC Foundation product page. The DisplayName of the instance of the AutomationComponent shall be able to be resolved on the Website to the specifics of the product that was tested. Furthermore, at least one Asset listed in this AutomationComponent shall include IVendorNameplateType information that is on the related OPC Foundation product page.

Descriptors is a Folder that can contain AcDescriptors. Typically, at least one AcDescriptor is included, but depending on the system's architecture, additional AcDescriptors might be added. These added AcDescriptors describe added FunctionalEntities or added Assets or added combinations of Assets and FunctionalEntities. The additions may result from application developers adding functionality, integration of this AutomationComponent into a larger piece of Equipment, or the addition of modular Assets to the system. This Folder may also contain other Folders that can be used to organize the AcDescriptors.

AggregatedHealth provides the aggregated health of the AutomationComponent; this includes an aggregation of the health of all included Assets and FunctionalEntities. For the definition of the AggregatedHealthType and the aggregation rules, see 9.1.

The IsHostedBy ReferenceType (see OPC 10000-23) indicates the Assets used to execute the functionality provided by a FunctionalEntity. There may be multiple IsHostedBy References from one FunctionalEntity to multiple Assets. An example is a drive axis FunctionalEntity, which has IsHostedBy References to a drive inverter Asset and a motor Asset. Another example is an input FunctionalEntity having IsHostedBy References to the input module, the head, and the firmware Assets of a modular device.

Figure 19 illustrates an example of the usage of IsHostedBy.

image022.png

Figure 19 – IsHostedBy Reference example

If Eventing is supported, the AutomationComponent shall generate Events of SystemStatusChangeEventType (see OPC 10000-3) if the ServerState changes (e.g., following a power cycle).

The AcDescriptorType is an Object that is used to represent a Descriptor. This Object shall include either a DescriptorFile or the pair of DescriptorIdentifier and DescriptorVersion. It may include all three.

The AcDescriptorType is formally defined in Table 7.

Table 7 – AcDescriptorType definition

Attribute

Value

BrowseName

3:AcDescriptorType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:BaseObjectType defined in OPC 10000-5

0:HasProperty

Variable

3:DescriptorIdentifier

0:UriString

0:PropertyType

O

0:HasProperty

Variable

3:DescriptorVersion

3:FxVersion

0:PropertyType

O

0:HasComponent

Object

3:DescriptorFile

0:FileType

O

ConformanceUnits

UAFX AutomationComponent Descriptor

The optional DescriptorIdentifier provides a globally unique identifier of the Descriptor of the AutomationComponent. It can be used to retrieve the Descriptor from the vendor’s product listing on the OPC Foundation Website (i.e., the OPC Marketplace).

The optional DescriptorVersion provides the version of the Descriptor used to describe this AutomationComponent.

The optional DescriptorFile exposes the Descriptor (defined in OPC 10000-83) directly from the AutomationComponent.

If both the DescriptorFile and the DescriptorIdentifier are provided, the value of the DescriptorIdentifier Variable exposed in the Object shall match the value of DescriptorIdentifier provided in the manifest of the DescriptorFile. If, in addition, the DescriptorVersion is provided, the value of the DescriptorVersion Variable exposed in the Object shall match the value of DescriptorVersion provided in the manifest of the DescriptorFile.

The EstablishConnections Method establishes one or more Connections. The ConnectionManager typically calls it. It allows for creating ConnectionEndpoints, establishing control, verifying FunctionalEntity and Asset compatibility, applying ConfigurationData, and configuration of the communication model to be used for data exchange. It is recommended that this Method be restricted to Client connections that have the well-known Role ConnectionAdmin as defined in Clause 5.9.

The signature of this Method is specified below; the arguments are defined in Table 8.

Signature

EstablishConnections (

[in] 2:FxCommandMask CommandMask,

[in] 2:AssetVerificationDataType[] AssetVerifications,

[in] 2:ConnectionEndpointConfigurationDataType[]

ConnectionEndpointConfigurations,

[in] 2:ReserveCommunicationIdsDataType[]ReserveCommunicationIds,

[in] 2:CommunicationConfigurationDataType[]CommunicationConfigurations,

[out] 2:AssetVerificationResultDataType[]AssetVerificationResults,

[out] 2:ConnectionEndpointConfigurationResultDataType[]

ConnectionEndpointConfigurationResults,

[out] 2:ReserveCommunicationIdsResultDataType[]

ReserveCommunicationIdsResults,

[out] 2:CommunicationConfigurationResultDataType[]

CommunicationConfigurationResults

);

Table 8 – EstablishConnections Method arguments

Argument

Description

CommandMask

CommandMask provides the commands to be processed by the implementation of this Method. How individual commands shall be processed is described in 6.2.4.3.

The CommandMask contains bits for the following commands: VerifyAssetCmd (see 6.2.4.3.2), VerifyFunctionalEntityCmd (see 6.2.4.3.3 ), ReserveCommunicationIdsCmd (see 6.2.4.3.4), CreateConnectionEndpointCmd (see 6.2.4.3.5), EstablishControlCmd (see 6.2.4.3.6), SetConfigurationDataCmd (see 6.2.4.3.7), ReassignControlCmd (see 6.2.4.3.8), SetCommunicationConfigurationCmd (see 6.2.4.3.9), and EnableCommunicationCmd (see 6.2.4.3.10). For a formal definition of the CommandMask, see 10.21.

The CommandMask shall have at least one command bit set to TRUE.

AssetVerifications

Provides parameters for Asset verification.

For a formal definition of the AssetVerificationDataType, see 10.5.

If CommandMask VerifyAssetCmd is set, AssetVerifications shall contain at least one element. If CommandMask VerifyAssetCmd is not set, AssetVerifications shall be null or empty.

ConnectionEndpointConfigurations

Provides configuration information for Connections.

For a formal definition of the ConnectionEndpointConfigurationDataType see 10.14.

If CommandMask VerifyFunctionalEntityCmd, CreateConnectionEndpointCmd, EstablishControlCmd, SetConfigurationDataCmd, ReassignControlCmd, SetCommunicationConfigurationCmd, or EnableCommunicationCmd is set, ConnectionEndpointConfigurations shall contain at least one element. If CommandMask VerifyFunctionalEntityCmd, CreateConnectionEndpointCmd, EstablishControlCmd, SetConfigurationDataCmd, ReassignControlCmd, SetCommunicationConfigurationCmd, and EnableCommunicationCmd are not set, ConnectionEndpointConfigurations shall be null or empty.

If CommandMask VerifyFunctionalEntityCmd is set, at least one of the ConnectionEndpointConfigurations elements shall contain ExpectedVerificationVariables with at least one element. If CommandMask VerifyFunctionalEntityCmd is not set, all ExpectedVerificationVariables in all ConnectionEndpointConfigurations shall be null or empty.

For the EstablishControlCmd, SetConfigurationDataCmd, ReassignControlCmd, SetCommunicationConfigurationCmd, or EnableCommunicationCmd, a non-null ConnectionEndpoint is required.

If CommandMask CreateConnectionEndpointCmd is set, at least one of the ConnectionEndpointConfigurations elements shall expose ConnectionEndpointDefinitionDataType with Parameter (see 10.16) as ConnectionEndpoint. If CommandMask CreateConnectionEndpointCmd is not set, all ConnectionEndpointConfigurations elements shall expose ConnectionEndpointDefinitionDataType with Node (see 10.16) as ConnectionEndpoint.

If CommandMask EstablishControlCmd or ReassignControlCmd is set, at least one of the ConnectionEndpointConfigurations elements shall contain ControlGroups with at least one element. If CommandMask EstablishControlCmd and ReassignControlCmd are not set, all ControlGroups in all ConnectionEndpointConfigurations shall be null or empty.

If CommandMask SetConfigurationDataCmd is set, at least one of the ConnectionEndpointConfigurations elements shall contain ConfigurationData with at least one element. If CommandMask SetConfigurationDataCmd is not set, all ConfigurationData in all ConnectionEndpointConfigurations shall be null or empty.

If CommandMask SetCommunicationConfigurationCmd is set, at least one of the ConnectionEndpointConfigurations elements shall contain a non-null CommunicationLinks. If CommandMask SetCommunicationConfigurationCmd is not set, all CommunicationLinks in all ConnectionEndpointConfigurations shall be set to null.

ReserveCommunicationIds

Provides the request for communication model-specific identifiers.

For a formal definition of the ReserveCommunicationIdsDataType, see 10.39.

If CommandMask ReserveCommunicationIdsCmd is set, ReserveCommunicationIds shall contain at least one element. If CommandMask ReserveCommunicationIdsCmd is not set, ReserveCommunicationIds shall be null or empty.

CommunicationConfigurations

Provides the ConfigurationData specific to the communication model utilized by the provided Connections.

For a formal definition of the CommunicationConfigurationDataType, see 10.10.

If CommandMask SetCommunicationConfigurationCmd is set, CommunicationConfigurations shall contain a single element. If CommandMask SetCommunicationConfigurationCmd is not set, CommunicationConfigurations shall be null or empty.

AssetVerificationResults

Indicates the results for the command VerifyAssetCmd (see 6.2.4.3.2).

For a formal definition of the AssetVerificationResultDataType, see 10.6.

If CommandMask VerifyAssetCmd is set, the length of this array shall match the length of AssetVerifications, and each element shall contain the result of the corresponding element in AssetVerifications. If CommandMask VerifyAssetCmd is not set, it shall be null or empty.

ConnectionEndpointConfigurationResults

Indicates the results for the commands VerifyFunctionalEntityCmd (see 6.2.4.3.3), CreateConnectionEndpointCmd (see 6.2.4.3.5), EstablishControlCmd (see 6.2.4.3.6), SetConfigurationDataCmd (see 6.2.4.3.7), ReassignControlCmd (see 6.2.4.3.8) or EnableCommunicationCmd (see 6.2.4.3.10).

For a formal definition of the ConnectionEndpointConfigurationResultDataType see 10.15.

If CommandMask VerifyFunctionalEntityCmd, CreateConnectionEndpointCmd, EstablishControlCmd, SetConfigurationDataCmd, ReassignControlCmd, or EnableCommunicationCmd are set, the length of this array shall match the length of ConnectionEndpointConfigurations, and each element shall contain the result of the corresponding element in ConnectionEndpointConfigurations. If CommandMask VerifyFunctionalEntityCmd, CreateConnectionEndpointCmd, EstablishControlCmd, SetConfigurationDataCmd, ReassignControlCmd and EnableCommunicationCmd are not set, it shall be null or empty.

For the setting of the individual results in the ConnectionEndpointConfigurationResultDataType, see 6.2.4.3 (if the appropriate CommandMask bit is set) and 10.15 (if the appropriate CommandMask bit is not set).

ReserveCommunicationIdsResults

Indicates the results for the command ReserveCommunicationIdsCmd (see 6.2.4.3.4).

For a formal definition of the ReserveCommunicationIdsResultDataType, see 10.40.

If CommandMask ReserveCommunicationIdsCmd is set, the length of this array shall match the length of the ReserveCommunicationIds, and each element shall contain the result of the corresponding element in ReserveCommunicationIds. If CommandMask ReserveCommunicationIdsCmd is not set, it shall be null or empty.

CommunicationConfigurationResults

Indicates the result for the command SetCommunicationConfigurationCmd (see 6.2.4.3.9).

For a formal definition of the CommunicationConfigurationResultDataType, see 10.11.

If CommandMask SetCommunicationConfigurationCmd is set, a single element shall exist containing the result of the SetCommunicationConfigurationCmd command. If CommandMask SetCommunicationConfigurationCmd is not set, it shall be null or empty.

The possible Method result codes are formally defined in Table 9.

Table 9 – EstablishConnections Method result codes

Result Code

Description

Bad_InvalidArgument

One or multiple Arguments do not match the requirements specified for the commands set in CommandMask (see Table 8), or no bits in CommandMask are set.

Bad_InvalidState

A command bit or combination of command bits set in CommandMask cannot be processed in the AutomationComponent’s current state.

Bad_TooManyOperations

The requested number of Connections to establish exceeds the MaxConnectionsPerCall capability of the AutomationComponent (see 6.2.6).

Uncertain

The Method was aborted due to errors while executing a command.

Depending on the executed commands, one or more of the AssetVerificationResults, ConnectionEndpointConfigurationResults, ReserveCommunicationIdsResults, and CommunicationConfigurationResults will contain additional information.

The possible StatusCodes for the AssetVerificationResults VerificationStatus are formally defined in Table 10.

Table 10 – AssetVerificationResults VerificationStatus Status Codes

Result Code

Description

Bad_NodeIdUnknown

AssetToVerify does not exist in the Server address space.

The VerificationResult shall be set to Mismatch and VerificationVariablesErrors, and VerificationAdditionalVariablesErrors shall be set to null or empty in the corresponding element in AssetVerificationResults.

Bad_NodeIdInvalid

The syntax of AssetToVerify is invalid.

The VerificationResult shall be set to Mismatch and VerificationVariablesErrors, and VerificationAdditionalVariablesErrors shall be set to null or empty in the corresponding element in AssetVerificationResults.

Bad_InvalidArgument

AssetToVerify is not an Asset.

The VerificationResult shall be set to Mismatch and VerificationVariablesErrors, and VerificationAdditionalVariablesErrors shall be set to null or empty in the corresponding element in AssetVerificationResults.

Also, include all Result Codes in Table 31.

The possible StatusCodes for the ConnectionEndpointConfigurationResults FunctionalEntityNodeResult are formally defined in Table 11.

Table 11 – FunctionalEntityNodeResult Status Codes

Result Code

Description

Bad_NodeIdUnknown

The NodeId for FunctionalEntityNode does not exist in the Server address space.

Bad_NodeIdInvalid

The syntax of the NodeId for FunctionalEntityNode was invalid.

Bad_InvalidArgument

The NodeId for FunctionalEntityNode was not a FunctionalEntity or not related to the AutomationComponent on which EstablishConnections was called.

Good

The NodeId for FunctionalEntityNode was valid.

The possible StatusCodes for the ConnectionEndpointConfigurationResults ConnectionEndpointResult are formally defined in Table 12.

Table 12 – ConnectionEndpointResult Status Codes

Result Code

Description

Bad_NotSupported

The requested IsPersistent was not supported.

The requested Connection does not include a feedback signal, and the FunctionalEntity requires it.

Bad_TypeDefinitionInvalid

The requested ConnectionEndpointTypeId does not reference a supported type (see 6.6).

Bad_InvalidArgument

Neither InputVariableIds nor OutputVariableIds was specified.

An element of InputVariableIds or OutputVariableIds has an unknown or invalid NodeId or was not a Variable.

An element of InputVariableIds is not referenced from an input folder in either the FunctionalEntityNode or a SubFunctionalEntity of it.

An element of OutputVariableIds is not referenced from an output folder in either the FunctionalEntityNode or a SubFunctionalEntity of it.

The NodeId for the requested ConnectionEndpoint was not a ConnectionEndpoint.

A null RelatedEndpoint was specified.

A null ConnectionEndpoint was supplied, but the command required a ConnectionEndpoint.

The requested ConnectionEndpointTypeId does not match a concrete subtype of ConnectionEndpointType.

A preconfigured ConnectionEndpoint exists, but it does not match the requested parameters.

The preconfigured ConnectionEndpoint was not found.

This error code may also be used for any other parameter error in an EstablishConnections Call.

Bad_BrowseNameDuplicated

The name for the ConnectionEndpoint was not unique within the scope of the FunctionalEntity’s ConnectionEndpoints Folder.

Bad_ResourceUnavailable

Not enough resources were available to create this connection.

Bad_NothingToDo

The operation was skipped.

Creating this ConnectionEndpoint was skipped because a preceding command already resulted in an error.

Bad_NodeIdUnknown

The NodeId for the requested ConnectionEndpoint does not exist in the FunctionalEntity.

Bad_NodeIdInvalid

The syntax of the NodeId for the requested ConnectionEndpoint was invalid.

Bad_RequestNotAllowed

The ConnectionEndpoint to be enabled references input Variables, which are referenced by another enabled ConnectionEndpoint.

Bad_InvalidState

A preconfigured ConnectionEndpoint exists, but it is currently in use, as indicated by a RelatedEndpoint.

Good

Creating or using the ConnectionEndpoint succeeded.

The possible StatusCodes for the ConnectionEndpointConfigurationResults EstablishControlResult are formally defined in Table 13.

Table 13 – EstablishControlResult StatusCodes

Result Code

Description

Bad_NodeIdUnknown

The NodeId for the requested ControlGroup does not exist in the FunctionalEntity.

Bad_NodeIdInvalid

The syntax of the NodeId for the requested ControlGroup was invalid.

Bad_InvalidArgument

The NodeId for the requested ControlGroup was not a ControlGroup.

Bad_NothingToDo

Establishing control was skipped because a preceding command already resulted in error.

Also, include all Result Codes in Table 63.

The possible StatusCodes for the ConnectionEndpointConfigurationResults ConfigurationDataResult are formally defined in Table 14.

Table 14 – ConfigurationDataResult Status Codes

Result Code

Description

Bad_NodeIdUnknown

The NodeId for the requested Key does not exist in the FunctionalEntity hierarchy.

Bad_NodeIdInvalid

The syntax of the NodeId for the requested Key was invalid.

Bad_InvalidArgument

The NodeId for the requested Key was not a Node in the ConfigurationData Folder hierarchy.

Bad_TypeMismatch

The value supplied for the configuration Variable is not of the same type as the implemented configuration Variable.

Bad_UserAccessDenied

The change to a configuration Variable failed; this may result from a Lock existing on the Variable.

Bad_NothingToDo

Applying the Value to this Key was skipped because a preceding command already resulted in an error.

Bad_ConfigurationError

The applied configuration data is inconsistent.

Good

Setting the ConfigurationData succeeded.

The possible StatusCodes for the ConnectionEndpointConfigurationResults ReassignControlResult are formally defined in Table 15.

Table 15 – ReassignControlResult StatusCodes

Result Code

Description

Bad_NodeIdUnknown

The NodeId for the requested ControlGroup does not exist in the FunctionalEntity.

Bad_NodeIdInvalid

The syntax of the NodeId for the requested ControlGroup was invalid.

Bad_InvalidArgument

The NodeId for the requested ControlGroup was not a ControlGroup, or the LockContext was null, invalid, or non-existent.

Bad_NothingToDo

Reassigning control was skipped because a preceding command already resulted in an error.

Bad_ConfigurationError

The applied configuration data is inconsistent.

Also, include all Result Codes in Table 68

The possible StatusCodes for the ConnectionEndpointConfigurationResults CommunicationLinksResult are formally defined in Table 16.

Table 16 – CommunicationLinksResult Status Codes

Result Code

Description

Bad_NotFound

At least one of the configuration elements referenced by the CommunicationLinks was not found in the CommunicationConfiguration.

Bad_InvalidArgument

At least one of the CommunicationLinks contains in its ConfigurationMask more than one reference bit or specifies an element operation.

Bad_NoMatch

At least one of the configuration elements referenced by the CommunicationLinks does not match the ConnectionEndpoint.

Bad_ConfigurationError

The version of the DataSet related to the DataSetReader and/or DataSetWriter referenced by the CommunicationLinks does not match the expected version.

Bad_NothingToDo

Establishing communication links was skipped because a preceding command already resulted in an error.

Bad_InvalidState

At least one of the configuration elements referenced by the CommunicationLinks or one of its parent elements is not persisted for a persistent ConnectionEndpoint.

Good

The operation was either successfully executed or not executed since CommandMask SetCommunicationConfigurationCmd was not set.

Also, include all StatusCodes defined by OPC 10000-14

The possible StatusCodes for the ConnectionEndpointConfigurationResults EnableCommunicationResult are formally defined in Table 17.

Table 17 – EnableCommunicationResult Status Codes

Result Code

Description

Bad_NothingToDo

EnableCommunicationCmd was skipped because a preceding command had already resulted in error.

Bad_RequestNotAllowed

The ConnectionEndpoint to be enabled references InputVariables, which are referenced by another enabled ConnectionEndpoint.

Bad_InvalidState

Required ToDatasetReader or ToDatasetWriter References are not configured for the ConnectionEndpoint.

Good

The operation was either successfully executed or not executed since CommandMask EnableCommunicationCmd was not set.

Also, include all StatusCodes defined by OPC 10000-14

The possible StatusCodes for the ReserveCommunicationIdsResults Result are formally defined in Table 18.

Table 18 – ReserveCommunicationIdsResults Result Status Codes

Result Code

Description

Include all Method Result Codes of the ReserveIds Method defined by OPC 10000-14

The possible StatusCodes for the CommunicationConfigurationResults Result are formally defined in Table 19.

Table 19 – CommunicationConfigurationResults Result Status Codes

Result Code

Description

Bad_ConfigurationError

The communication configuration violates the capabilities of the AutomationComponent, FunctionalEntity, Input- or OutputGroup, or the applied configuration data is inconsistent.

Bad_ResourceUnavailable

The Server does not have enough resources to add the entire PubSub configuration.

Bad_InvalidState

The current State of the Object does not allow a configuration change.

Also, include all Method Result Codes of the CloseAndUpdate Method defined by OPC 10000-14

The EstablishConnections Method representation in the AddressSpace is formally defined in Table 20.

Table 20 – EstablishConnections Method AddressSpace definition

Attribute

Value

BrowseName

3:EstablishConnections

References

Node Class

BrowseName

DataType

TypeDefinition

Other

0:HasProperty

Variable

0:InputArguments

0:Argument[]

0:PropertyType

M

0:HasProperty

Variable

0:OutputArguments

0:Argument[]

0:PropertyType

M

0:GeneratesEvent

ObjectType

2:AuditUpdateMethodResultEventType

Defined in 8.2

ConformanceUnits

UAFX AutomationComponent Base

A Client calling the EstablishConnections Method may provide multiple commands and the required Arguments for each command. If multiple commands are provided in a single call, the individual commands shall be processed in the order VerifyAssetCmd, VerifyFunctionalEntityCmd, ReserveCommunicationIdsCmd, CreateConnectionEndpointCmd, EstablishControlCmd, SetConfigurationDataCmd, ReassignControlCmd, SetCommunicationConfigurationCmd, EnableCommunicationCmd which is illustrated in Figure 20.

A Client may issue the same command in consecutive EstablishConnections Calls, e.g., to apply large configuration data in multiple Calls with SetConfigurationDataCmd.

If the processing of a command results in an error, the processing of the command sequence shall be stopped at the command that caused the error, and the EstablishConnections Method Call shall be aborted, as described in 6.2.4.3.11.

An AutomationComponent may support individual commands in EstablishConnections Method Calls or may require that certain commands be bundled in a single EstablishConnections Method Call. If an AutomationComponent requires bundled commands, the CommandBundleRequired capability shall be provided and set to TRUE(see 6.2.6). The set of bundled commands is defined as follows: CreateConnectionEndpointCmd, EstablishControlCmd, SetConfigurationDataCmd, ReassignControlCmd, and SetCommunicationConfigurationCmd. The commands CreateConnectionEndpointCmd and SetCommunicationConfigurationCmd are mandatory in the bundle; the remaining commands are optional. An AutomationComponent requiring bundled commands shall return a Bad_InvalidArgument for any command in the set of bundled commands that is issued individually, i.e., not issued in a bundle.

NOTE   AutomationComponents that have CommandBundleRequired set to TRUE could be restricted regarding the size of the Arguments issued in a single call, for example, ConfigurationData.

How the commands are processed is described in Clauses 6.2.4.3.2 to 6.2.4.3.10.

image023.png

Figure 20 – Command processing sequence illustration

If CommandMask VerifyAssetCmd is set, the EstablishConnections implementation shall execute the IAssetRevisionType VerifyAsset Method for each element in the AssetVerifications array. The VerifyAsset Method shall be called on each AssetToVerify, supplying the VerificationMode, ExpectedVerificationVariables and ExpectedAdditionalVerificationVariables as Method Arguments.

The StatusCode returned by the VerifyAsset Method and the values of its output Arguments VerificationResult, VerificationVariablesErrors, and VerificationAdditionalVariablesErrors shall be stored in the appropriate elements in AssetVerificationResults (see 10.6).

Once all array processing is complete, if at least one of the following conditions is true:

then the EstablishConnections implementation shall abort processing of additional commands as described in 6.2.4.3.11.

The possible StatusCodes related to the command VerifyAssetCmd are formally defined in Table 10. The StatusCodes related to individual verification Variables are formally defined in Table 32 and Table 33.

If CommandMask VerifyFunctionalEntityCmd is set, the EstablishConnections implementation shall execute the FunctionalEntityType Verify Method for each element in ConnectionEndpointConfigurations with a non-empty ExpectedVerificationVariables array. For elements with a null or empty ExpectedVerificationVariables array, the VerificationStatus shall be set to Good_NoData, VerificationResult to NotSet, and VerificationVariablesErrors to null or empty. The Method shall be called on the FunctionalEntity identified by FunctionalEntityNode, supplying the ExpectedVerificationVariables as Method Argument.

The StatusCode returned by the Verify Method shall be stored in VerificationStatus, and the values of its output Arguments VerificationResult and VerificationVariablesErrors in VerificationResult and VerificationVariablesErrors (see 10.15).

If the FunctionalEntityNode was not found, the VerificationVariablesErrors shall be set to null or empty, and the VerificationResult shall be set to Mismatch.

Once all array processing is complete, if any one of the following conditions applies:

the EstablishConnections implementation shall abort the processing of subsequent commands as described in 6.2.4.3.11.

The possible StatusCodes for the FunctionalEntityNodeResult are formally defined in Table 11. The possible StatusCodes for VerificationStatus are formally defined in Table 42. The possible StatusCodes for VerificationVariablesErrors are formally defined in Table 43.

If CommandMask ReserveCommunicationIdsCmd is set, the EstablishConnections implementation shall reserve communication model identifiers for each element in ReserveCommunicationIds.

For a PubSub communication model, a structure of type PubSubReserveCommunicationIdsDataType (see 10.39.3) shall be used.

The EstablishConnections implementation shall reserve for each requested TransportProfileUri the requested number of IDs for both WriterGroups and DataSetWriters. For additional details, see OPC 10000-14 ReserveIds Method, including error definitions.

If any error occurs, the EstablishConnections implementation shall abort processing as described in 6.2.4.3.11.

The EstablishConnections implementation shall return for each requested TransportProfileUri the default value for the PublisherId, the reserved WriterGroupIds, and DataSetWriterIds in the output Argument ReserveCommunicationIdsResults.

The possible StatusCodes for the ReserveCommunicationIdsResults Result are formally defined in Table 18.

This clause may be defined in a future version of this document.

If CommandMask CreateConnectionEndpointCmd is set, the EstablishConnections Method shall create a ConnectionEndpoint or shall verify and update a preconfigured ConnectionEndpoint for each element in ConnectionEndpointConfigurations (see 10.14) with Parameter defined in ConnectionEndpoint (see 10.16).

The EstablishConnections implementation shall set ConnectionEndpointResult on errors as specified in Table 12.

The EstablishConnections implementation shall set ConnectionEndpointResult to Bad_NotSupported if FeedbackSignalRequired is set to TRUE (see 6.4.7) and Mode is set to Publisher.

If IsPreconfigured is set to FALSE, the EstablishConnections implementation shall create a ConnectionEndpoint in the ConnectionEndpoints Folder of the FunctionalEntity identified by FunctionalEntityNode. The created ConnectionEndpoint shall be of the subtype specified in ConnectionEndpoint TypeId. The BrowseName shall be set to Name, and all Variables shall be set according to Parameter. The appropriate entries in InputVariables and OutputVariables shall be populated.

If IsPreconfigured is set to TRUE, a preconfigured ConnectionEndpoint (see 5.5.5) shall exist with a BrowseName that matches Name in the ConnectionEndpoints Folder of the FunctionalEntity identified by FunctionalEntityNode. Its ConnectionEndpointTypeId, InputVariables and OutputVariables shall match what is specified in Parameter. IsPersistent, CleanupTimeout, and RelatedEndpoint of the preconfigured ConnectionEndpoint shall be set according to Parameter.

The implementation shall return the NodeId of the ConnectionEndpoint in the corresponding element in ConnectionEndpointConfigurationResults. If additional commands in the EstablishConnections Method sequence are present, this NodeId shall be used.

The EstablishConnections implementation shall stop processing this command on the first error and abort processing as described in 6.2.4.3.11.

The possible StatusCodes for the FunctionalEntityNodeResult are formally defined in Table 11. The possible StatusCodes for the ConnectionEndpointResult are formally defined in Table 12.

If CommandMask EstablishControlCmd is set, the EstablishConnections implementation shall call the EstablishControl Method on each element in ControlGroups for each element in ConnectionEndpointConfigurations. If ControlGroups is null or empty, EstablishControlResult shall be set to null or empty (see 10.15).

This command shall pass the ApplicationUri of the Session associated with the EstablishConnections Method Call as LockContext Argument to EstablishControl (see 6.5.3).

The EstablishConnections implementation shall stop processing this command on the first error and shall abort processing as described in 6.2.4.3.11.

The possible StatusCodes for the EstablishControlResult are formally defined in Table 13. The possible StatusCodes for the FunctionalEntityNodeResult are formally defined in Table 11. The possible StatusCodes for the ConnectionEndpointResult are formally defined in Table 12.

If CommandMask SetConfigurationDataCmd is set, the EstablishConnections implementation shall apply the Value to the Key for each element in ConnectionEndpointConfigurations and each element in ConfigurationData. If the ConnectionEndpoint related to ConfigurationData has IsPersistent set, SetStoredVariables (see 6.4.6.3) shall be called for all Variables indicated by Key having the NonVolatile bit in the AccessLevelEx Attribute not set. If ConfigurationData is empty, ConfigurationDataResult shall be set to null or empty (see 10.15).

The EstablishConnections implementation shall stop processing this command on the first error and abort processing as described in 6.2.4.3.11.

The possible StatusCodes for the ConfigurationDataResult are formally defined in Table 14. The possible StatusCodes for the FunctionalEntityNodeResult are formally defined in Table 11. The possible StatusCodes for the ConnectionEndpointResult are formally defined in Table 12.

If CommandMask ReassignControlCmd is set, the EstablishConnections implementation shall call the ReassignControl Method on each element in ControlGroups for each element in ConnectionEndpointConfigurations. If ControlGroups is null or empty, ReassignControlResult shall be set to null or empty (see 10.15).

This command shall pass the string representation of the NodeId of the ConnectionEndpoint as LockContext Argument to ReassignControl.

The EstablishConnections implementation shall stop processing this command on the first error and shall abort processing as described in 6.2.4.3.11.

The possible StatusCodes for the ReassignControlResult are formally defined in Table 15. The possible StatusCodes for the FunctionalEntityNodeResult are formally defined in Table 11. The possible StatusCodes for the ConnectionEndpointResult are formally defined in Table 12.

If CommandMask SetCommunicationConfigurationCmd is set, the EstablishConnections implementation shall apply the communication model configuration supplied in CommunicationConfigurations in an atomic operation.

The communication configuration applied in the case of a PubSub communication model is a structure of the type PubSubCommunicationConfigurationDataType (see 10.10.3).

The EstablishConnections implementation shall process the supplied PubSubConfiguration with RequireCompleteUpdate and ConfigurationReferences in an atomic operation according to the behaviour of the CloseAndUpdate Method specified by OPC 10000-14. It shall set the overall processing result in PubSubCommunicationConfigurationResults Result and the returned ChangesApplied, ReferenceResults, ConfigurationValues, and ConfigurationObjects in PubSubCommunicationConfigurationResults.

If an error is returned, the EstablishConnections implementation shall abort processing as described in 6.2.4.3.11.

The SetCommunicationConfigurationCmd will apply the PubSubConfiguration, including the values of all Enabled flags for the configuration elements. Depending on the values of the Enabled flags, this may result in overall enabled PubSub communication without passing the EnableCommunicationCmd or parts of the PubSub communication being enabled while others are disabled.

The EstablishConnections implementation shall create the ToDataSetReader and ToDataSetWriter References according to the link information supplied in ConnectionEndpointConfigurations CommunicationLinks (see 10.13). If the PubSub configuration model is not exposed by this Server, this Reference may point to a Node that is not accessible. If the Reference cannot be created, an appropriate StatusCode shall be set in the appropriate element in ConnectionEndpointConfigurationResults CommunicationLinksResult, and the EstablishConnections implementation shall abort processing as described in 6.2.4.3.11.

The EstablishConnections implementation shall verify the SubscribedDataSet associated with the referenced DataSetReader for each element in ConnectionEndpointConfigurations having a ToDataSetReader Reference.

If ExpectedSubscribedDataSetVersion MajorVersion is 0 (for the definition of MajorVersion, see OPC 10000-14), no verification shall be performed. If ExpectedSubscribedDataSetVersion MinorVersion is 0 (for the definition of MinorVersion, see OPC 10000-14), the verification for MinorVersion shall be skipped. If the ExpectedSubscribedDataSetVersion does not match the version of the associated SubscribedDataSet, the appropriate element in ConnectionEndpointConfigurationResults CommunicationLinksResult shall be set to Bad_ConfigurationError, and the EstablishConnections implementation shall abort processing as described in 6.2.4.3.11

If InputVariableIds is used, and at least one Variable is not contained in the associated SubscribedDataSet, the appropriate element in ConnectionEndpointConfigurationResults CommunicationLinksResult shall be set to Bad_NoMatch, and the EstablishConnections implementation shall abort processing as described in 6.2.4.3.11.

The EstablishConnections implementation shall verify the PublishedDataSet associated with the referenced DataSetWriter for each element in ConnectionEndpointConfigurations having a ToDataSetWriter Reference.

If ExpectedPublishedDataSetVersion MajorVersion is 0, no verification shall be performed. If ExpectedPublishedDataSetVersion MinorVersion is 0, the verification for MinorVersion shall be skipped. If the ExpectedPublishedDataSetVersion does not match the version of the associated PublishedDataSet, the appropriate element in ConnectionEndpointConfigurationResults CommunicationLinksResult shall be set to Bad_ConfigurationError, and the EstablishConnections implementation shall abort processing as described in 6.2.4.3.11

If OutputVariableIds is used, and at least one Variable is not contained in the associated PublishedDataSet, the appropriate element in ConnectionEndpointConfigurationResults CommunicationLinksResult shall be set to Bad_NoMatch, and the EstablishConnections implementation shall abort processing as described in 6.2.4.3.11.

The EstablishConnections implementation shall verify that ConnectionEndpoints with their IsPersistent Property set to TRUE reference a DataSetReader and/or DataSetWriter which are persisted, including all parent Objects, i.e., WriterGroup, ReaderGroup, PubSubConnection and PublishSubscribe (see NotPersisted in OPC 10000-14). If the IsPersistent Property is set to FALSE, the EstablishConnections implementation shall verify that the DataSetReader and/or DataSetWriter are not persisted (see NotPersisted in OPC 10000-14). Otherwise, Bad_InvalidState shall be set in the appropriate element in ConnectionEndpointConfigurationResults CommunicationLinksResult, and the EstablishConnections implementation shall abort processing as described in 6.2.4.3.11.

If communication configuration exceeds capabilities (PublisherCapabilities, SubscriberCapabilities or ComponentCapabilities) of the AutomationComponent, FunctionalEntities, Input- or OutputData, or if communication configuration cannot be applied, Bad_ConfigurationError shall be set in PubSubCommunicationConfigurationResults Result, and the EstablishConnections implementation shall abort processing as described in 6.2.4.3.11.

NOTE Hint – in the EstablishConnections command, Bad_ConfigurationError is returned if a communication configuration is supplied that requests functionality that is not currently supported and not specified by a capability (e.g., usage of multicast address).

In the ConnectionEndpointConfigurationResults, the possible StatusCodes for the FunctionalEntityNodeResult are formally defined in Table 11. The possible StatusCodes for the ConnectionEndpointResult are formally defined in Table 12. The possible StatusCodes for the CommunicationLinksResult are formally defined in Table 16.

The possible StatusCodes for the CommunicationConfigurationResults Result are formally defined in Table 19.

Standard OPC UA Diagnostics can be used to obtain additional information related to any PubSub configuration errors.

This clause may be defined in a future version of this document.

If CommandMask EnableCommunicationCmd is set, the EstablishConnections implementation shall enable all communication model-specific Objects related to the ConnectionEndpoints in an atomic operation.

The EstablishConnections implementation shall enable the DataSetReader and DataSetWriter referenced by ToDataSetReader and/or ToDataSetWriter References for each element in ConnectionEndpointConfigurations. It shall also ensure that the parent Objects (WriterGroup, ReaderGroup, PubSubConnection, and PublishSubscribe) are enabled.

If enabling any communication model-specific Objects fails, the EstablishConnections implementation shall abort processing as described in 6.2.4.3.11.

If enabling a ConnectionEndpoint would lead to multiple DataSetReaders being enabled that reference the same TargetVariable(s), the EstablishConnections implementation shall abort processing as described in 6.2.4.3.11.

The possible StatusCodes for the FunctionalEntityNodeResult are formally defined in Table 11. The possible StatusCodes for the ConnectionEndpointResult are formally defined in Table 12. The possible StatusCodes for the EnableCommunicationResult are formally defined in Table 17.

This clause may be defined in a future version of this document.

The EstablishConnections implementation shall abort processing if one of the issued commands fails; see the individual command behaviour descriptions in Clauses 6.2.4.3.2 to 6.2.4.3.10. No further commands requested for this Method Call shall be executed. The result of the commands executed with this Method Call shall be rolled back according to Table 21.

Table 21 – Rollback actions

Command

Rollback action

VerifyAssetCmd

None

VerifyFunctionalEntityCmd

None

ReserveCommunicationIdsCmd

None

CreateConnectionEndpointCmd

All ConnectionEndpoints in the context of this Method Call shall be deleted.

EstablishControlCmd

All requested ControlGroups requested in the context of this Method Call shall be released by calling ReleaseControl. All Control References created shall be deleted.

SetConfigurationDataCmd

None

Note:   Any settings that have been applied will remain.

ReassignControlCmd

None

SetCommunicationConfigurationCmd

All communication configuration and References created in the context of this Method Call shall be deleted.

EnableCommunicationCmd

All communication configuration Objects that were enabled in the context of this Method Call shall be disabled.

The Method shall set the appropriate StatusCodes for not executed commands to Bad_NothingToDo and return with an Uncertain result.

There is no rollback provided by the Method over multiple Method calls; such a rollback is the responsibility of the caller of the Method (e.g., the ConnectionManager). The caller of the Method may use the CloseConnections Method for issuing a complete rollback.

This Method disables one or more Connections. Optionally, it also removes these Connections. It is recommended that this Method has the execute privilege for the well-known Role ConnectionAdmin as defined in Clause 5.9.

The signature of the Method is described below, and the arguments are described in Table 22.

Signature

CloseConnections (

[in] 0:NodeId[] ConnectionEndpoints,

[in] 0:Boolean Remove,

[out] 0:StatusCode[] Results

);

Table 22 – CloseConnections Method arguments

Argument

Description

ConnectionEndpoints

The list of Connections to be closed.

Remove

When TRUE, the Objects dynamically created for the Connection are removed.

Results

The results of closing the Connections identified by the ConnectionEndpoints argument, see Table 24.

The length of this array shall match the length of the ConnectionEndpoints list.

Clients may inspect this list to determine which Connections failed to be closed.

The possible Method result codes are formally defined in Table 23.

Table 23 – CloseConnections Method result codes

Result Code

Description

Uncertain

There was at least one error or warning for one of the Connections. Results will contain additional information.

The possible Results StatusCodes are formally defined in Table 24.

Table 24 – Results StatusCodes

Result Code

Description

Bad_NodeIdUnknown

The NodeId for the requested ConnectionEndpoint does not exist in the Server address space.

Bad_NodeIdInvalid

The syntax of the NodeId for the requested ConnectionEndpoint was invalid.

Bad_InvalidArgument

The NodeId for the requested ConnectionEndpoint was not a ConnectionEndpoint.

The CloseConnections Method representation in the AddressSpace is formally defined in Table 25.

Table 25 – CloseConnections Method AddressSpace definition

Attribute

Value

BrowseName

3:CloseConnections

References

Node Class

BrowseName

DataType

TypeDefinition

Other

0:HasProperty

Variable

0:InputArguments

0:Argument[]

0:PropertyType

M

0:HasProperty

Variable

0:OutputArguments

0:Argument[]

0:PropertyType

M

0:GeneratesEvent

ObjectType

2:AuditUpdateMethodResultEventType

Defined in 8.2

ConformanceUnits

UAFX AutomationComponent Base

The Method implementation shall disable all communication model Objects for each element in ConnectionEndpoints in an atomic operation.

If PubSub is used as the communication model for a ConnectionEndpoint, the Method implementation shall only disable the DataSetReader and DataSetWriter referenced by ToDataSetReader and/or ToDataSetWriter References if no further References from other ConnectionEndpoints exist. Their parent Objects (WriterGroup, ReaderGroup, PubSubConnection, and PublishSubscribe) shall be left in their current state.

The behaviour of the Client Server communication model may be defined in a future version of this document.

The CleanupTimeout processing shall be disabled.

If Remove is TRUE, the Method implementation shall remove what has been dynamically created by EstablishConnections Method Call(s) related to the ConnectionEndpoints. This includes any configuration specific to the utilized communication model, all related communication model Objects if not referenced from other ConnectionEndpoints, the ConnectionEndpoints, and all persisted items. In addition, all ControlGroups-based restrictions placed on Objects shall be released. Preconfigured Objects or Objects referenced by other ConnectionEndpoints shall not be removed.

What occurs with the ConfigurationData that was applied when establishing the ConnectionEndpoints is vendor-specific.

NOTE   A FunctionalEntity could provide application-specific behaviour for its ConfigurationData, i.e., it might roll it back to a predetermined setting, or it might leave it as configured.

The AutomationComponentCapabilitiesType extends the FolderType defined in OPC 10000-5. It shall be restricted to hold only Variables that reflect the capabilities of the AutomationComponentType.

The AutomationComponentCapabilitiesType is formally defined in Table 26.

Table 26 – AutomationComponentCapabilitiesType definition

Attribute

Value

BrowseName

3:AutomationComponentCapabilitiesType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:FolderType defined in OPC 10000-5

3:HasCapability

Variable

3:<Capability>

0:BaseDataType

0:BaseDataVariableType

OP

3:HasCapability

Variable

3:SupportsPersistence

0:Boolean

0:BaseDataVariableType

O

3:HasCapability

Variable

3:MaxFunctionalEntities

0:UInt32

0:BaseDataVariableType

O

3:HasCapability

Variable

3:MaxConnections

0:UInt32

0:BaseDataVariableType

O

3:HasCapability

Variable

3:MaxConnectionsPerCall

0:UInt32

0:BaseDataVariableType

O

3:HasCapability

Variable

3:CommandBundleRequired

0:Boolean

0:BaseDataVariableType

O

ConformanceUnits

UAFX AutomationComponent Base

<Capability> - is a placeholder to indicate that additional capabilities may be added by this document or by a companion specification at any time. These capabilities shall include a Description.

The optional SupportsPersistence indicates whether this AutomationComponent supports persistent Connections. For additional details on persistence, see 6.6. If this capability is not present or set to FALSE, the AutomationComponent does not support persistent Connections.

The optional MaxFunctionalEntities indicates the maximum number of FunctionalEntities that the AutomationComponent can support.

The optional MaxConnections indicates the maximum number of Connections that the AutomationComponent can support. This number may be further restricted based on the type of Connections being provided (i.e., a high-speed Connection might further reduce the number of available Connections).

The optional MaxConnectionsPerCall indicates the maximum number of Connections that can be established in a single EstablishConnections Call (see 6.2.4).

If MaxFunctionalEntities, MaxConnections, and MaxConnectionsPerCall are not present or set to zero, no limit is specified.

The optional CommandBundleRequired indicates whether this AutomationComponent requires a single Method Call for bundled commands when EstablishConnections is called (see 6.2.4.3.1). If the capability is not present or set to FALSE, the AutomationComponent supports individual calls.

The PublisherCapabilitiesType is a subtype of the BaseObjectType. It is used to contain the various Publisher capabilities that can be supported. An instance of this ObjectType groups the capabilities and can be deployed as part of any Object that desires to expose a range of capabilities that are supported by that Object.

It is formally defined in Table 27.

Table 27 – PublisherCapabilitiesType definition

Attribute

Value

BrowseName

3:PublisherCapabilitiesType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:BaseObjectType defined in OPC 10000-5

0:HasComponent

Variable

3:SupportedPublishingIntervals

3:IntervalRange[]

0:BaseDataVariableType

M

0:HasComponent

Variable

3:SupportedQos

3:PublisherQosDataType[]

0:BaseDataVariableType

M

0:HasComponent

Variable

3:PreconfiguredPublishedDataSets

0:String[]

0:BaseDataVariableType

M

0:HasComponent

Variable

3:PreconfiguredDataSetOnly

0:Boolean

0:BaseDataVariableType

M

ConformanceUnits

UAFX AutomationComponent Base

UAFX FunctionalEntity Base

SupportedPublishingIntervals provides the supported intervals for publishing.

SupportedQos provides the supported Quality of Service settings.

PreconfiguredPublishedDataSets provides the names of preconfigured PublishedDataSets (see 5.5.5), where the name is the string part of the BrowseName of a PublishedDataSet that is listed in the PublishedDataSets Folder tree of the PublishSubscribe Object (see OPC 10000-14). If PublisherCapabilities is referenced from a FunctionalEntity (see 6.4.2) or OutputData (see 6.4.5), a preconfigured PublishedDataSet shall only reference OutputVariables of this FunctionalEntity and its sub-FunctionalEntities. If the PublisherCapabilities is referenced from an AutomationComponent, a preconfigured PublishedDataSet shall only reference OutputVariables from FunctionalEntities that are part of the AutomationComponent. When the preconfigured PublishedDataSet is used in a ConnectionConfigurationSet, Connections shall be established to one or more of the FunctionalEntities whose variables are present in the DataSet.

PreconfiguredDataSetOnly, if set to TRUE, indicates that the Publisher supports publishing of preconfigured PublishedDataSets only. If set to FALSE, the Publisher supports publishing of customized PublishedDataSets as well as preconfigured PublishedDataSets.

The SubscriberCapabilitiesType is a subtype of the BaseObjectType. It is used to contain the various Subscriber capabilities that can be supported. An instance of this ObjectType groups the capabilities and can be deployed as part of any Object that desires to expose a range of capabilities that are supported by that Object.

It is formally defined in Table 28.

Table 28 – SubscriberCapabilitiesType definition

Attribute

Value

BrowseName

3:SubscriberCapabilitiesType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:BaseObjectType defined in OPC 10000-5

0:HasComponent

Variable

3:SupportedPublishingIntervals

3:IntervalRange[]

0:BaseDataVariableType

M

0:HasComponent

Variable

3:SupportedQos

3:SubscriberQosDataType[]

0:BaseDataVariableType

M

0:HasComponent

Variable

3:SupportedMessageReceiveTimeouts

3:IntervalRange[]

0:BaseDataVariableType

M

0:HasComponent

Variable

3:PreconfiguredSubscribedDataSets

0:String[]

0:BaseDataVariableType

M

0:HasComponent

Variable

3:PreconfiguredDataSetOnly

0:Boolean

0:BaseDataVariableType

M

ConformanceUnits

UAFX AutomationComponent Base

UAFX FunctionalEntity Base

SupportedPublishingIntervals provides the intervals for publications, which this Subscriber is able to receive.

SupportedQos provides the supported Quality of Service settings.

SupportedMessageReceiveTimeouts provides the supported timeouts for receiving messages.

PreconfiguredSubscribedDataSets provides the names of preconfigured StandaloneSubscribedDataSets (see 5.5.5), where the name is the string part of the BrowseName of a StandaloneSubscribedDataSet that is listed in the SubscribedDataSets Folder tree of the PublishSubscribe Object (see OPC 10000-14). If SubscriberCapabilities is referenced from a FunctionalEntity (see 6.4.2) or InputData (see 6.4.4), a preconfigured StandaloneSubscribedDataSet shall only reference InputVariables from the FunctionalEntity and its sub-FunctionalEntities. If the SubscriberCapabilities is referenced from an AutomationComponent, a preconfigured StandaloneSubscribedDataSet shall only reference InputVariables from FunctionalEntities that are part of the AutomationComponent. When the preconfigured StandaloneSubscribedDataSet is used in a ConnectionConfigurationSet, Connections shall be established to one or more of the FunctionalEntities whose variables are present in the DataSet.

PreconfiguredDataSetOnly, if set to TRUE, indicates that the Subscriber only supports subscribing with preconfigured StandaloneSubscribedDataSets. If set to FALSE, the subscriber supports subscribing with customized SubscribedDataSets as well as preconfigured StandaloneSubscribedDataSets.