Figure 34 illustrates the structure of the ConnectionManagerType. A ConnectionManager uses the configuration data stored in a ConnectionConfigurationSet (see 6.8) to establish Connections. Optional Methods are provided by ConnectionManagerType to allow Clients to manage editing and trigger the processing of Connections.

A ConnectionManager is represented by an instance of ConnectionManagerType; see 12 for details on its location in the UAFX Information Model.

image039.png

Figure 34 – ConnectionManagerType illustration

ConnectionConfigurationSets may be serialised into a file format as described in Annex F.

The ConnectionManagerType is formally defined in Table 77.

Table 77 – ConnectionManagerType definition

Attribute

Value

BrowseName

4:ConnectionManagerType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

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

0:HasComponent

Object

4:ConnectionConfigurationSets

0:FolderType

M

0:HasComponent

Object

4:ConnectionManagerConfiguration

4:ConnectionManagerConfigurationType

O

0:HasComponent

Method

4:EditConnectionConfigurationSets

Defined in 6.7.4

O

0:HasComponent

Method

4:ProcessConnectionConfigurationSets

Defined in 6.7.5

O

0:HasComponent

Object

4:Capabilities

4:ConnectionManagerCapabilitiesType

O

0:HasComponent

Variable

4:AggregatedCurrentState

0:Boolean

0:BaseDataVariableType

O

0:HasComponent

Object

5:Diagnostics

5:FunctionalGroupType

O

0:HasComponent

Object

4:ConnectionManagerLog

0:LogObjectType

O

0:GeneratesEvent

ObjectType

4:CloseConnectionErrorEventType

0:GeneratesEvent

ObjectType

4:EstablishConnectionErrorEventType

ConformanceUnits

UAFX ConnectionManager Base

The components of the ConnectionManagerType have additional subcomponents, which are defined in Table 78.

Table 78 – ConnectionManagerType additional subcomponents

BrowsePath

References

Node Class

BrowseName

DataType

TypeDefinition

Others

5:Diagnostics

0:HasComponent

Variable

4:EstablishCallCount

0:UInt32

0:BaseDataVariableType

O

5:Diagnostics

0:HasComponent

Variable

4:EstablishCallFailedCount

0:UInt32

0:BaseDataVariableType

O

5:Diagnostics

0:HasComponent

Variable

4:CloseCallCount

0:UInt32

0:BaseDataVariableType

O

5:Diagnostics

0:HasComponent

Variable

4:CloseCallFailedCount

0:UInt32

0:BaseDataVariableType

O

ConnectionConfigurationSets provides a Folder for the ConnectionConfigurationSets (defined in 6.8) that are exposed by this ConnectionManager. It shall be restricted to holding only instances of ConnectionConfigurationSetType, which provide the data required by a ConnectionManager to establish Connections. This Folder may also contain other Folders that can be used to organise the ConnectionConfigurationSets. The Folder may be empty. The string part of the BrowseName of ConnectionConfigurationSets shall be unique within a ConnectionConfigurationSets Folder.

ConnectionManagerConfiguration provides standardised mechanisms for adding, removing, or replacing ConnectionConfigurationSets (see F.1).

EditConnectionConfigurationSets provides a way to alter the Edit Property of one or more ConnectionConfigurationSets in a single Call.

ProcessConnectionConfigurationSets causes the ConnectionManager to manage Connections contained in one or more ConnectionConfigurationSets in a single Call (see 6.7.5). In addition, vendor-specific means may be used to trigger the processing of ConnectionConfigurationSets. All processing of ConnectionConfigurationSets shall follow the behaviour defined in 6.7.5.3.

Capabilities is a ConnectionManagerCapabilitiesType Folder that describes the functionality provided by a ConnectionManager (see 6.7.6).

AggregatedCurrentState shall be set to TRUE if one or more ConnectionConfigurationSets’ ConnectionConfigurationSetStateMachine is in State Error. This only indicates that the ConnectionManager encountered a problem in processing one or more of the ConnectionConfigurationSets; it does not indicate the status of the Connections.

ConnectionManagerLog exposes a LogObject for the ConnectionManager. The LogObject (see OPC 10000-26) can be accessed to obtain the log of activity related to the ConnectionManager. Standardised Events that can be used to trigger records for the LogObject are defined in 8.9 and 8.10. LogObject records can also be generated without the generation of an Event. If the LogObject is supported, the ConnectionManager shall generate records for all EstablishConnections calls, CloseConnections calls, and any related calls (see 13), including reporting of all errors. The reporting of all errors might result in multiple log records for a single call. For example, if there are multiple verification errors (e.g. Asset verification or FunctionalEntity verification), all would be logged. To facilitate tracking of LogRecords between the ConnectionManager and an AutomationComponent, the ConnectionManager shall provide the SpanContextDataType as part of the EstablishConnection Method Call to each AutomationComponent, as defined in OPC 10000-26.

EstablishCallCount diagnostics counter provides a count of the number of EstablishConnections calls issued by the ConnectionManager. This applies to local and remote calls.

EstablishCallFailedCount diagnostics counter provides a count of the number of EstablishConnections calls that failed (any command). This applies to local and remote calls.

CloseCallCount diagnostics counter provides a count of the number of CloseConnections calls issued by the ConnectionManager. This applies to local and remote calls.

CloseCallFailedCount diagnostics counter provides a count of the number of CloseConnections calls issued by the ConnectionManage that failed. This applies to local and remote calls.

The Diagnostics FunctionalGroup contains Variables and Methods for diagnostics (see OPC 10000-100 Recommended FunctionalGroup BrowseNames). For UAFX, this includes the defined diagnostic Variable in Table 78 – ConnectionManagerType additional subcomponentsTable 78.

The ConnectionManager performs the functionality described in this clause. This functionality may be invoked by a ConnectionManagerType- defined Method or by vendor-specific means.

To establish Connections defined in a ConnectionConfigurationSet, the ConnectionManager shall use the sequence of Calls illustrated in Figure 36 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.

image040.png

Figure 35 – ConnectionConfigurationSet example

The EstablishConnections Method (see 6.2.4) is used to establish ConnectionEndpoints on an AutomationComponent.

The Method allows for the establishment of 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.23) 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.

image041.png

Figure 36 – Command sequence illustration

A ConnectionManager shall call 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 the EstablishConnections Method.

The following applies to the usage of commands:

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 well-known 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 what extent in parallel) a ConnectionManager establishes multiple Connections.

Table 79 lists the commands and their required configuration information in the ConnectionConfigurationSetType Information Model.

Table 79 – Commands and their required configuration information

Command

Description

Relevant types from configuration model

VerifyAssetCmd

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.

VerifyFunctionalEntityCmd

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.

ReserveCommunicationIdsCmd

Reserves identifiers for the communication configuration.

The argument ReserveCommunicationIds that is passed for this command is constructed out of the instance of CommunicationModelConfigurationType.

CreateConnectionEndpointCmd

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.

EstablishControlCmd

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.

SetConfigurationDataCmd

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.

ReassignControlCmd

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.

SetCommunicationConfigurationCmd

Set communication configuration specific to the communication model utilised 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 the CommunicationLinks Variable in Endpoint1 or Endpoint2 Object in the instances of ConnectionConfigurationType.

EnableCommunicationCmd

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 for examples).

If a configuration entry is null or empty, the corresponding command shall be skipped.

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 the establishing sequence 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.

To close Connections defined in a ConnectionConfigurationSet, a ConnectionManager shall use the CloseConnections Method on the AutomationComponents (see 6.2.5). A ConnectionManager may remove or disable the Connections.

If CloseConnections returns any error, the ConnectionManager shall complete closing all Connections in the ConnectionConfigurationSet and initiate a ProcessingToError transition in the ConnectionConfigurationSetStateMachine (see 6.9).

If any of the ConnectionEndpoints require SKS configuration and were removed, the ConnectionManager shall also remove the appropriate configuration from the SKS (SecurityGroups and/or PushTargets; see E.5 for examples).

The EditConnectionConfigurationSets Method manages the editing of ConnectionConfigurationSets by a Client.

The Method shall set the Edit Property to TRUE for the requested ConnectionConfigurationSets. For ConnectionConfigurationSets which are not editable (indicated by the absence of the Property Edit), this Method shall return Bad_InvalidState. For the ConnectionConfigurationSets that allow editing, the Method shall also set the Lock to the Client Session associated with this Method Call. The Lock shall behave as described in OPC 10000-100, including the requirement to renew the Lock and to remove the Lock in the case of the Client Session exiting. If the Lock exits for any reason, the internal action on the ConnectionConfigurationSets shall be as if this Method was called with a DiscardUpdates Action. For ConnectionConfigurationSet, which is already in edit mode and locked to this Client Session, no action shall be performed on this ConnectionConfigurationSet, and a successful result will be returned.

If Action is CommitUpdates, the Method shall set the Property Edit to FALSE for all requested ConnectionConfigurationSets. The ConnectionManager shall only process committed updates. It shall reassign the Lock back to the ConnectionManager. If Version is supported, it shall always be incremented; for additional behaviour, see Version in 6.8.2. If the requesting Client does not own the Lock, the request is rejected with an error.

If Action is DiscardUpdates, the Method shall set the Property Edit to FALSE for all requested ConnectionConfigurationSets. The ConnectionManager shall discard the updates to the ConnectionConfigurationSet. It shall reassign the Lock back to the ConnectionManager. If the requesting Client does not own the Lock, the request is rejected with an error.

If a ConnectionConfigurationSet is called with Action set to either CommitUpdates or DiscardUpdates, but the Edit Property is FALSE, the Method shall ignore the Call for the ConnectionConfigurationSet.

The signature of this Method is specified below. The Method parameters are defined in Table 80.

Signature

EditConnectionConfigurationSets (

[in] 4:FxEditEnum Action,

[in] 0:NodeId[] ConnectionConfigurationSets,

[out] 0:StatusCode[]Results

);

Table 80 – EditConnectionConfigurationSets Method arguments

Argument

Description

Action

Indicates whether to allow editing, commit the updates to the ConnectionConfigurationSets or discard the updates.

ConnectionConfigurationSets

A list of NodeIds of ConnectionConfigurationSets to be edited.

Results

A list 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 which ConnectionConfigurationSets were successfully updated and which failed. See Table 82 for possible Results values.

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

Table 81 – EditConnectionConfigurationSets Method result codes

ResultCode

Description

Bad_UserAccessDenied

The caller is not allowed to invoke this Method.

Uncertain

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

The possible Results StatusCodes are formally defined in Table 82. The Results array shall contain Good for any ConnectionConfigurationSet that was successfully updated.

Table 82 – Results StatusCodes

ResultCode

Description

Good

The operation succeeded.

Bad_NodeIdUnknown

The NodeId refers to a non-existent ConnectionConfigurationSet.

Bad_NodeIdInvalid

The syntax of the NodeId is not valid.

Bad_InvalidArgument

The NodeId for the requested ConnectionConfigurationSet was not a ConnectionConfigurationSet.

Bad_UserAccessDenied

The caller is not allowed to edit this ConnectionConfigurationSet.

Bad_InvalidState

The ConnectionConfigurationSet cannot be edited. The caller is not allowed to edit, commit, or discard updates since the ConnectionConfigurationSet is locked by a different Client.

The EditConnectionConfigurationSets Method representation in the AddressSpace is formally defined in Table 83.

Table 83 – EditConnectionConfigurationSets Method AddressSpace definition

Attribute

Value

BrowseName

4:EditConnectionConfigurationSets

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 EditConnectionConfigurationSets

The ProcessConnectionConfigurationSets Method causes the ConnectionManager to process the requested ConnectionConfigurationSets according to the specified Action:

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

Signature

ProcessConnectionConfigurationSets (

[in] 4:FxProcessEnumAction,

[in] 0:NodeId[] ConnectionConfigurationSets,

[out] 0:StatusCode[]Results

);

Table 84 – ProcessConnectionConfigurationSets Method arguments

Argument

Description

Action

The operation to be performed on the ConnectionConfigurationSets (see 10.25).

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 ConnectionConfigurationSet. For possible values for StatusCode, see Table 86.

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

Table 85 – 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 86.

Table 86 – 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 the 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 87.

Table 87 – 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.

Establishing connections shall follow the behaviour specified in 6.7.3.2.

The ConnectionManager shall ensure the expected result of the requested Action as follows:

A disabled ClientServer communication model may be defined in a future version of this document.

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 may be disabled. This allows, for example, a subset of the Connections to be enabled and the rest disabled. It is the responsibility of the engineering tool to configure the state of the configuration elements properly and consistently.

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. See 6.7.3.3 for ConnectionManager behaviour.

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. See 6.7.3.2 for ConnectionManager behaviour.

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. See 6.7.3.3 for ConnectionManager behaviour.

The ConnectionManagerCapabilitiesType extends the FolderType defined in OPC 10000-5. It shall be restricted to holding only Variables that reflect the capabilities of the ConnectionManager.

The ConnectionManagerCapabilitiesType is formally defined in Table 88.

Table 88 – ConnectionManagerCapabilitiesType definition

Attribute

Value

BrowseName

4:ConnectionManagerCapabilitiesType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

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

4:HasCMCapability

Variable

4:<Capability>

0:BaseDataType

0:BaseDataVariableType

OP

4:HasCMCapability

Variable

4:MaxConnectionConfigurationSets

0:UInt32

0:BaseDataVariableType

O

4:HasCMCapability

Variable

4:MonitorsLocalConnectionEndpoints

0:Boolean

0:BaseDataVariableType

O

4:HasCMCapability

Variable

4:MonitorsAllConnectionEndpoints

0:Boolean

0:BaseDataVariableType

O

ConformanceUnits

UAFX ConnectionManager Capabilities Base

<Capability> - is an OptionalPlaceholder (defined in OPC 10000-3) to indicate that additional capabilities may be added by this document, a companion specification, or by a vendor at any time. These capabilities shall include a Description, and they follow all of the rules associated with an OptionalPlaceholder.

MaxConnectionConfigurationSets indicates the maximum number of ConnectionConfigurationSets that the ConnectionManager can support.

MonitorsLocalConnectionEndpoints, when true, describes the capability of the ConnectionManager Information Model to report the status of all the Connections created by this ConnectionManager that have a ConnectionEndpoint on this Server. If this capability is not provided, or false, the ConnectionManager Information Model does not report the current status of Connections.

NOTE In some cases, this status might include the status of the remote Connection.

MonitorsAllConnectionEndpoints, when true, describes the capability of the ConnectionManager Information Model to report status information for all ConnectionEndpoints of all Connections created by this ConnectionManager. This capability extends the MonitorsLocalConnectionEndpoints capability and shall not be provided if MonitorsLocalConnectionEndpoints is not provided.