The ProcessConnectionConfigurationSets Method causes the ConnectionManager to process the requested ConnectionConfigurationSets according to the specified Action:
- ActionEstablishConnectionsEnabled, ActionEstablishConnectionsDisabled, and ActionEstablishConnections – establish all Connections contained in the ConnectionConfigurationSets (see 6.7.4.3.1)
- ActionRemoveConnections – disable and remove all Connections contained in the ConnectionConfigurationSets (see 6.7.4.3.2)
- ActionEnableConnections – enable the communication model for all Connections contained in the ConnectionConfigurationSets (see 6.7.4.3.3)
- ActionDisableConnections – disable the communication model for all Connections contained in the ConnectionConfigurationSets (see 6.7.4.3.4)
The ProcessConnectionConfigurationSets Method shall initiate the ReadyToProcessing or ErrorToProcessing transition in the ConnectionConfigurationSetStateMachine (see 6.9) on all requested ConnectionConfigurationSets.
The Method triggers the processing and returns immediately. The result of processing is “returned” asynchronously by one of the ConnectionConfigurationSetEventType Events.
The signature of this Method is specified below; the Method arguments are defined in Table 79.
Signature
ProcessConnectionConfigurationSets (
[in] 4:FxProcessEnumAction,
[in] 0:NodeId[] ConnectionConfigurationSets,
[out] 0:StatusCode[]Results
);
Table 79 – ProcessConnectionConfigurationSets Method arguments
Argument |
Description |
Action |
The operation to be performed on the ConnectionConfigurationSets (see 10.23). |
ConnectionConfigurationSets |
A list of NodeIds of ConnectionConfigurationSets to be processed. |
Results |
The array of StatusCode corresponding to the ConnectionConfigurationSets input argument. The length of this array shall match the length of the ConnectionConfigurationSets NodeId array. Clients may inspect this list to determine the status of the individual Call to trigger processing on each ConnectionConfigurationSets. For possible values for StatusCode, see Table 81. |
The possible Method result codes are formally defined in Table 80.
Table 80 – ProcessConnectionConfigurationSets Method result codes
ResultCode |
Description |
Bad_UserAccessDenied |
The caller is not allowed to invoke this Method |
Bad_NotSupported |
The requested Action is not supported. |
Uncertain |
There was at least one error or warning for one of the ConnectionConfigurationSets. Results will contain additional information. |
The possible Result StatusCodes are formally defined in Table 81.
Table 81 – Results StatusCodes
Result Code |
Description |
Good |
Changing the State succeeded for the ConnectionConfigurationSet. |
Bad_NodeIdInvalid |
The syntax of the NodeId is not valid. |
Bad_NodeIdUnknown |
The NodeId refers to a node that does not exist in the Server address space. |
Bad_InvalidArgument |
The NodeId for the requested ConnectionConfigurationSet was not a ConnectionConfigurationSet. |
Bad_UserAccessDenied |
The caller is not allowed to trigger processing of this ConnectionConfigurationSet. |
Bad_InvalidState |
The ConnectionConfigurationSet is in a State that does not allow it to be triggered for processing. |
The ProcessConnectionConfigurationSets Method representation in the AddressSpace is formally defined in Table 82.
Table 82 – ProcessConnectionConfigurationSets Method AddressSpace definition
Attribute |
Value |
|||||
BrowseName |
4:ProcessConnectionConfigurationSets |
|||||
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.4 |
|
||
ConformanceUnits |
||||||
UAFX ConnectionManager ProcessConnectionConfigurationSets |
Calling ProcessConnectionConfigurationSets with Action set to ActionEstablishConnectionsEnabled, ActionEstablishConnectionsDisabled, or ActionEstablishConnections shall establish the Connections contained in the ConnectionConfigurationSets and their related communication model. To establish Connections from a ConnectionConfigurationSet, the ConnectionManager uses a sequence of Calls to the EstablishConnections Method on the involved AutomationComponents.
See Figure 35 for an illustration of the configuration information contained in the ConnectionConfigurationSet. The figure illustrates a single Connection. For further examples, please refer to Annex E.
Figure 35 – ConnectionConfigurationSet example
The EstablishConnections Method (see 6.2.4) is used to establish ConnectionEndpoints on an AutomationComponent.
The Method allows establishing multiple Connections with a single Call. The number of Connections to be established with a single Call may be restricted by the addressed AutomationComponent as indicated by MaxConnectionsPerCall (see 6.2.6).
The Method provides several commands (see 10.21) to verify and create the individual Information Model Objects related to a Connection.
Figure 36 illustrates the sequence of commands to a single AutomationComponent when calling the EstablishConnections Method.
Figure 36 – Command sequence illustration
A ConnectionManager shall process the ConnectionConfigurationSet by calling the EstablishConnections Method on the AutomationComponents, passing in one or several commands to be executed together with their required arguments. A ConnectionManager may use one or multiple EstablishConnections Calls (see 6.2.4).
The ConnectionManager shall use the following commands in the following sequence: CreateConnectionEndpointCmd, EstablishControlCmd, SetConfigurationDataCmd, ReassignControlCmd, and SetCommunicationConfigurationCmd. The sequence may be built by having one EstablishConnections Call with the required commands (in this case, the mandated sequence is maintained by the AutomationComponent) or multiple subsequent EstablishConnections Calls by keeping the sequence of commands across the Calls (in this case, the mandated sequence is maintained by the ConnectionManager).
The ConnectionManager may use the following commands at any time and in any order: VerifyAssetCmd, VerifyFunctionalEntityCmd, ReserveCommunicationIdsCmd, and EnableCommunicationCmd.
A Client using the Methods exposed in the Information Model (e.g., VerifyAsset, ReassignControl) can invoke them in any order or at any time. The sequence is only mandated for the commands within EstablishConnections Method.
The following applies to the usage of commands:
- Commands may be omitted if not needed, e.g., if no ControlGroups are exposed by the AutomationComponent, or used by the configuration in the ConnectionConfigurationSet, the commands EstablishControlCmd and ReassignControlCmd may be omitted.
- Method Calls are subject to certain limits defined by OPC UA and provided by a Server (e.g., MaxMessageSize, MaxByteStringLength etc.). Therefore, it may be necessary to issue commands in consecutive EstablishConnections Calls, e.g., to apply large configuration data, multiple Calls with SetConfigurationDataCmd may be required.
- If AutomationComponentConfiguration CommandBundleRequired is set to TRUE, the ConnectionManager shall issue all required bundled commands in a single Call (see 6.2.4.3.1). It is recommended that the ConnectionManager issues any additional commands required in the same Call.
- It is recommended that the ConnectionManager issue all required commands in a single Call.
- It is recommended that a ConnectionManager establishing multiple Connections between multiple AutomationComponents performs these operations in parallel.
If Auditing is supported, the ConnectionManager shall generate an Event of AuditClientUpdateMethodResultEventType for all calls of the EstablishConnections Method and shall pass the AuditEventId as part of the Method invocation.
It is recommended that the ConnectionManager has the Role ConnectionAdmin as defined in Clause 5.9.
NOTE The specified configuration sequence applies to the establishment of a single Connection (on an AutomationComponent). It is implementation specific in which sequence (and to which extent in parallel) a ConnectionManager processes multiple Connections.
Table 83 lists the commands and their required configuration information in the ConnectionConfigurationSetType Information Model.
Table 83 – Commands and their required configuration information
Command |
Description |
Relevant types from configuration model |
Verify that the Assets are the ones expected by system engineering. |
The argument AssetVerifications that is passed for this command is constructed out of the AssetVerificationType instances in the AutomationComponentConfiguration. |
|
Verify that the FunctionalEntity is the one expected by system engineering. |
The argument ConnectionEndpointConfigurations ExpectedVerificationVariables that is passed for this command is constructed out of the ExpectedVerificationVariables contained in Endpoint1 or Endpoint2 Object in the instances of ConnectionConfigurationType. |
|
Reserves identifier for the communication configuration. |
The argument ReserveCommunicationIds that is passed for this command is constructed out of the instance of CommunicationModelConfigurationType. |
|
Create a ConnectionEndpoint on the FunctionalEntity. Alternatively, use a preconfigured ConnectionEndpoint. |
The argument ConnectionEndpointConfigurations ConnectionEndpoint that is passed for this command is constructed out of the Parameter Object in the ConnectionEndpoint Object in Endpoint1 or Endpoint2 Object in the instances of ConnectionConfigurationType. |
|
Establish control of specific ControlGroups of the FunctionalEntity. |
The argument ConnectionEndpointConfigurations ControlGroups that is passed for this command is constructed out of the ControlGroups Variable in Endpoint1 or Endpoint2 Object in the instances of ConnectionConfigurationType. |
|
Set ConfigurationData on the FunctionalEntity to adapt its behaviour as required (e.g., setting engineering units). |
The argument ConnectionEndpointConfigurations ConfigurationData that is passed for this command is constructed out of the ConfigurationData Variable in Endpoint1 or Endpoint2 Object in the instances of ConnectionConfigurationType. |
|
Reassigns the ControlGroups to be associated with a Connection. |
The argument ConnectionEndpointConfigurations ControlGroups that is passed for this command is constructed out of the ControlGroups Variable in Endpoint1 or Endpoint2 Object in the instances of ConnectionConfigurationType. |
|
Set communication configuration specific for the communication model utilized for data exchange (e.g., PubSub). |
The argument CommunicationConfigurations that is passed for this command is constructed out of the instance of CommunicationModelConfigurationType. The argument ConnectionEndpointConfigurations CommunicationLinks is constructed out of CommunicationLinks Variable in Endpoint1 or Endpoint2 Object in the instances of ConnectionConfigurationType. |
|
Enable the communication model. |
The argument ConnectionEndpointConfigurations ConnectionEndpoint that is passed for this command is constructed out of the ConnectionEndpoint Object in Endpoint1 or Endpoint2 Object in the instances of ConnectionConfigurationType. |
The ConnectionManager shall resolve identifier information contained in the ConnectionConfigurationSets to the arguments required for the EstablishConnections Call (see 13).
If any of the ConnectionEndpoints require SKS configuration, the ConnectionManager shall also call the SKS and add the appropriate configuration (SecurityGroups and/or PushTargets, see E.5).
If a configuration entry is an empty array, the corresponding command shall be skipped.
The ConnectionManager shall ensure the expected result of the requested Action as follows:
- Calling ProcessConnectionConfigurationSets with Action set to ActionEstablishConnectionsEnabled shall establish all Connections contained in the ConnectionConfigurationSets with a disabled communication model and include EnableCommunicationCmd in the command sequence. A disabled communication model has Enabled flags set to FALSE for all DataSetReader and DataSetWriter configuration elements and to TRUE for all other elements (WriterGroup, ReaderGroup, PubSubConnection, and PublishSubscribe).
A disabled ClientServer communication model may be defined in a future version of this document.
- Calling ProcessConnectionConfigurationSets with Action set to ActionEstablishConnectionsDisabled shall establish all Connections contained in the ConnectionConfigurationSets with a disabled communication model and omit EnableCommunicationCmd from the command sequence. A disabled communication model has Enabled flags set to FALSE for all DataSetReader and DataSetWriter configuration elements and to TRUE for all other elements (WriterGroup, ReaderGroup, PubSubConnection, and PublishSubscribe).
- Calling ProcessConnectionConfigurationSets with Action set to ActionEstablishConnections shall establish all Connections contained in the ConnectionConfigurationSets with the communication model as configured by the engineering tool generating the communication model. The ConnectionManager shall apply the communication model as is using the SetCommunicationConfigurationCmd and omit EnableCommunicationCmd from the command sequence. Depending on the state of the configuration elements (e.g., the value of the Enabled flag for PubSub configuration elements), parts of the communication model may be enabled and others disabled. This allows, for example, to have a subset of the Connections enabled and the rest disabled. It is the responsibility of the engineering tool to configure the state of the configuration elements properly and consistently.
If EstablishConnections returns Uncertain, indicating an Abort of the Method (see 6.2.4.3.11) or if a fatal OPC UA communication error occurs, the ConnectionManager shall stop processing this ConnectionConfigurationSet and initiate a ProcessingToError transition in the ConnectionConfigurationSetStateMachine (see 6.9). If RollbackOnError is TRUE, the ConnectionManager shall call the Method CloseConnections for all ConnectionEndpoints established so far with Remove set to TRUE. If RollbackOnError is FALSE, no additional actions are performed by the ConnectionManager.
Calling ProcessConnectionConfigurationSets with Action set to ActionRemoveConnections shall remove all Connections contained in the ConnectionConfigurationSets and their related communication model.
For each ConnectionConfigurationSet, the ConnectionManager shall call the CloseConnections Method (see 6.2.5) with Remove set to TRUE for all contained ConnectionEndpoints.
If CloseConnections returns any error, the ConnectionManager shall complete processing the ConnectionConfigurationSet and initiate a ProcessingToError transition in the ConnectionConfigurationSetStateMachine (see 6.9).
If any of the ConnectionEndpoints require SKS configuration, the ConnectionManager shall also call the SKS and remove the appropriate configuration (SecurityGroups and PushTargets).
Calling ProcessConnectionConfigurationSets with Action set to ActionEnableConnections shall enable all Connections contained in the ConnectionConfigurationSets.
For each ConnectionConfigurationSet, the ConnectionManager shall call the EstablishConnections Method containing the EnableCommunicationCmd for all contained ConnectionEndpoints.
If EstablishConnections returns Uncertain, indicating an abort of the Method (see 6.2.4.3.11), the ConnectionManager shall stop processing this ConnectionConfigurationSet and initiate a ProcessingToError transition in the ConnectionConfigurationSetStateMachine (see 6.9).
Calling ProcessConnectionConfigurationSets with Action set to ActionDisableConnections shall disable all Connections contained in the ConnectionConfigurationSets.
For each ConnectionConfigurationSet, the ConnectionManager shall call the CloseConnections Method (see 6.2.5) with Remove set to FALSE for all contained ConnectionEndpoints.
If CloseConnections returns any error, the ConnectionManager shall complete processing the ConnectionConfigurationSet and initiate a ProcessingToError transition in the ConnectionConfigurationSetStateMachine (see 6.9).