Errata exists for this version of the document.
The following tables describe ConformanceUnits for the Services specified in OPC 10000-4. The tables correlate with the Service Sets.
A single ConformanceUnit can reference several Services (e.g. CreateSession, ActivateSession and CloseSession) but can also refer to individual aspects of Services (e.g. the use of ActivateSession to impersonate a new user).
Each table includes a listing of the Profile Category to which a ConformanceUnit belongs, the title and description of the ConformanceUnit. In some cases, a ConformanceUnit will be derived from another ConformanceUnit. This parent unit will then be specified in the description of each derived unit. In such cases the derived units inherit all of the tests of its parent plus one or more additional TestCases. These TestCases can only further restrict the existing TestCases. An example would be one in which the number of connections is tested, where the TestCase of the parent required at least one connection and the derived ConformanceUnit would require a TestCase for at least five connections.
The Discovery Service Set is composed of multiple ConformanceUnits (see Table 3). All Servers provide some aspects of this functionality; see Profiles categorized as Server Profiles for details. Clients may support some aspects of this functionality; see Profiles categorized as Client Profiles for details.
Category |
Title |
Description |
Discovery Get Endpoints |
Support the GetEndpoints Service to obtain all Endpoints of the Server. This includes filtering based on Profiles. |
|
Discovery Get Endpoints SessionLess |
Support at least one endpoint for issueing SessionLess Services. Support obtaining such endpoints by accepting the Transport URI as a filter to the GetEndpoints Service with the query string "SL" appended to the Transport URI. E.g. "http://opcfoundation.org/UA-Profile/Transport/https-uajson?SL" |
|
Support the FindServers Service only for itself. |
||
Discovery Register |
Call the RegisterServer Service to register itself (OPC UA Server) with an external Discovery Service via a secure channel with a SecurityMode other than NONE. |
|
Discovery Register2 |
Call the RegisterServer2 Service to register with an external Discovery Service via a Secure Channel with a SecurityMode other than "None". This includes passing a list of short capability identifiers. The identifiers and their use are specified in Part 12. |
|
Provide mDNS functionality to announce a Server with its capabilities. The capability identifiers and the use of mDNS records for the purpose of OPC UA Discovery is specified in Part 12.
Note that this functionality is only required for Servers that do not register with an LDS. The capability identifiers and their use in mDNS records are specified in Part 12. |
||
Discovery Configuration |
Allow configuration of the Discovery Server URL where the Server will register itself. Allow complete disabling of registration with a Discovery Server. |
|
Uses the FindServers Service to obtain all Servers installed on a given platform. |
||
Use FindServers Service to obtain URLs for specific Server URIs. |
||
Detect new Servers after an initial FindServers Service call. |
||
Support one of the options to locate Servers on the network. |
||
Use FindServersOnNetwork Service to obtain URLs for specific Server URIs. Note that this Service is available via the Local Discovery Server with multicast extension (LDS-ME). |
||
Use mDNS based Service Discovery to locate Servers on the same multicast network. The contents of mDNS records for OPC UA Discovery are described in Part 12.
Note that this functionality is only required for Clients when there is no Local Discovery Server with multicast extension (LDS-ME). The capability identifiers and their use in mDNS records are specified in Part 12. |
||
Use the QueryServers Method on the GDS Directory Object to locate Servers that meet filter criteria specified in the request. This Method is specified in Part 12. |
||
Use the QueryApplications Method on the GDS Directory Object to locate Applications that meet filter criteria specified in the request. This Method is specified in Part 12. |
||
Uses the GetEndpoints Service to obtain all Endpoints for a given Server URI. |
||
Uses the GetEndpoints Service with a filter to obtain Endpoints that can be used for SessionLess Service invocation. The filter is the Transport URI extended with the query string "SL". E.g. http://opcfoundation.org/UA-Profile/Transport/https-uajson?SL. |
||
Detect changes to the Endpoints after an initial GetEndpoints Service call. |
||
Allow specification of an Endpoint without going through the Discovery Service Set. |
The Session Service Set is composed of multiple ConformanceUnits (see Table 4). The CreateSession, ActivateSession, and CloseSession services are supported as a single unit. All Servers and Clients provide this functionality.
Category |
Title |
Description |
Implement basic Service behaviour. This includes in particular: – checking the authentication token – returning the requestHandle in responses – returning available diagnostic information as requested with the 'returnDiagnostics' parameter – respecting a timeoutHint |
||
Session Base |
Support the Session Service Set (CreateSession, ActivateSession, CloseSession) except the use of ActivateSession to change the Session user. This includes correct handling of all parameters that are provided. Note that for the CreateSession and ActivateSession services, if the SecurityMode = None then: 1) The Application Certificate and Nonce are optional. 2) The signatures are null/empty. The details of this are described in Part 4. |
|
Session Change User |
Support the use of ActivateSession to change the Session user. |
|
Session Cancel |
Support the Cancel Service to cancel outstanding requests. |
|
Session Minimum 1 |
Support minimum 1 Session (total). |
|
Session Minimum 2 Parallel |
Support minimum 2 parallel Sessions (total for all Clients). |
|
Session Minimum 50 Parallel |
Support minimum 50 parallel Sessions (total for all Clients). |
|
Session Sessionless Invocation |
Defines the support of the SessionlessInvoke Service defined in UA Part 4 to process any of the Services (like Read/Write, Browse, or Call) that are designated for Session-less invocation. |
|
Implement basic Service behaviour. This includes in particular: – including the proper authentication token of the Session – creating a requestHandle if needed – requesting diagnostic information with the 'returnDiagnostics' parameter – evaluate the serviceResult and operational results |
||
Use the Session Service Set (CreateSession, ActivateSession, and CloseSession) except the use of ActivateSession to change the Session user. This includes correct handling of all parameters that are provided Note that for the CreateSession and ActivateSession services, if the SecurityMode = None then: 1) The Application Certificate and Nonce are optional. 2) The signatures are null/empty. |
||
Support unlimited connections (client side) with multiple Servers. Any limit on numbers of connections is from server side. May have a memory based limit, but not a software constraint limit. |
||
This ConformanceUnit applies to Clients that allow persisting NodeIds. Verify that the Namespace Table has not changed for NodeIds that the Client has persisted and is going to re-use beyond a Session lifetime. If changes occurred the Client has to recalculate the Namespace Indices of the respective NodeIds. |
||
Uses ActivateSession to change the Session user (impersonation). |
||
Make periodic requests to keep the Session alive. |
||
Read or monitor the ServerStatus/State Variable to recognize a potential shutdown of the Server and clean up resources. |
||
Use the Cancel Service to cancel outstanding requests. |
||
Automatic Client reconnect including: – ActivateSession with new SecureChannel if SecureChannel is no longer valid but Session is still valid – Creation of a new Session only if Session is no longer valid |
||
The Client shall interoperate with Servers that only support one Session. |
||
Defines the use of the SessionlessInvoke Service defined in UA Part 4 to request one of the Services (like Read or Browse) that are allowed for sessionless invocation. UA Part 6 specifies which transports may be used and how. |
The Node Management Service Set is composed of multiple ConformanceUnits (see Table 5). Servers may provide some aspects of this functionality; see Profiles categorized as Server Profiles for details. Clients may support some aspects of this functionality; see Profiles categorized as Client Profiles for details.
Table 5 – Node Management Services
Category |
Title |
Description |
Support the AddNodes Service to add one or more Nodes into the OPC UA AddressSpace. |
||
Support the DeleteNodes Service to delete one or more Nodes from the OPC UA AddressSpace. |
||
Node Management Add Ref |
Support the AddReferences Service to add one or more References to one or more Nodes in the OPC UA AddressSpace. |
|
Node Management Delete Ref |
Support the DeleteReferences Service to delete one or more References of a Node in the OPC UA AddressSpace. |
|
Uses Node Management Services to add or delete Nodes and to add or delete References in Server's OPC UA AddressSpace. |
The View Service Set is composed of a multiple ConformanceUnits (see Table 6). All Servers support some aspects of this conformance group. Clients may support some aspects of this functionality; see Profiles categorized as Client Profiles for details.
Category |
Title |
Description |
View Basic |
Support the View Service Set (Browse, BrowseNext). |
|
View TranslateBrowsePath |
Support TranslateBrowsePathsToNodeIds Service. |
|
View RegisterNodes |
Support the RegisterNodes and UnregisterNodes Services as a way to optimize access to repeatedly used Nodes in the Server's OPC UA AddressSpace. |
|
View Minimum Continuation Point 01 |
Support minimum 1 continuation point per Session. |
|
View Minimum Continuation Point 05 |
Support minimum 5 continuation points per Session. This number has to be supported for at least half of the minimum required sessions. |
|
View Client Basic Browse |
Uses Browse and BrowseNext Services to navigate through the Server's OPC UA AddressSpace. Make use of the referenceTypeId and the nodeClassMask to specify the needed References. |
|
The Client can browse to nodes that have an extended NodeID that reference a Server different than the originating Server. This includes automatic connection to the remote Server. It is acceptable that the Server configuration information be pre-configured on the Client and / or that the user is prompted to connect. |
||
View Client Basic ResultSet Filtering |
Makes use of the resultMask parameter to optimize the result set to be returned by the Server. |
|
View Client TranslateBrowsePath |
Uses the TranslateBrowsePathsToNodeIds Service to identify the NodeIds for Nodes where a starting Node and a BrowsePath is known. Makes use of bulk operations rather than multiple calls whenever possible. |
|
The Client can translate browse paths that include nodes with extended NodeID that reference a Server different than the originating Server and return them as part of the TranslateBrowsePathsToNodeIds Service. It is acceptable that the Server configuration information be pre-configured on the Client. |
||
View Client RegisterNodes |
Uses the RegisterNodes Service to optimize access for Nodes that are used repeatedly. Use UnregisterNodes when Nodes are not used anymore. |
The Attribute Service Set is composed of multiple ConformanceUnits (see Table 7). The majority of the Attribute service set is a core functionality of OPC UA and as such is supported by most Servers. Most Clients will also support some aspects of the Attribute Service Set.
Category |
Title |
Description |
Attribute Read |
Supports the Read Service to read one or more Attributes of one or more Nodes. This includes support of the IndexRange parameter to read a single element or a range of elements when the Attribute value is an array. |
|
Attribute Read Complex |
Supports reading and encoding Values with structured DataTypes. |
|
Attribute Write Values |
Supports writing to values to one or more Attributes of one or more Nodes. |
|
Attribute Write Complex |
Supports writing and decoding Values with structured DataTypes. |
|
Attribute Write StatusCode & Timestamp |
Supports writing of StatusCode and Timestamps along with the Value. |
|
Attribute Write Index |
Supports the IndexRange to write a single element or a range of elements when the Attribute value is an array and partial updates is allowed for this array. |
|
Attribute Alternate Encoding |
Supports alternate Data Encoding when reading value Attributes. By default, every Server has to support the Data Encoding of the currently used Stack Profile (i.e. binary with UA Binary Encoding and XML with XML Encoding). This ConformanceUnit - when supported - specifies that the other Data Encoding is supported in addition. |
|
Attribute Historical Read |
Supports the HistoryRead Service. The details of what aspects of this service are used are listed in additional ConformanceUnits, but at least one of ReadRaw, ReadProcessed, ReadModified, ReadAtTime or ReadEvents must be supported. |
|
Attribute Historical Update |
Supports the HistoryUpdate service. The details of the supported features of this service are described by additional ConformanceUnits, but at least one of the following must be supported: InsertData, InsertEvents, ReplaceData, ReplaceEvents, UpdateData, UpdateEvents, DeleteData, DeleteEvents or DeleteAtTime. |
|
Use the Read Service to read one or more Attributes of one or more Nodes. This includes use of an IndexRange to select a single element or a range of elements when the Attribute value is an array. Clients shall use bulk operations whenever possible to reduce the number of Service invocations. |
||
The Client can retrieve attributes of nodes that have an extended NodeID that reference a Server different than the originating Server. This requires a connection to the remote Server for access (not necessarily displayed as a connection). It is acceptable that the Server configuration information be pre-configured on the Client. |
||
This ConformanceUnit refers to the ability of a Client to discover the available encodings and choose a specific one when calling the Read Service. |
||
Read and decode Values with structured DataTypes. |
||
Use the Write Service to write values to one or more Attributes of one or more Nodes. This includes use of an IndexRange to select a single element or a range of elements when the Attribute value is an array. Clients shall use bulk operations whenever possible to reduce the number of Service invocations. |
||
Write and Encode Values with structured DataTypes. |
||
Use the Write Service to also write StatusCode and/or Timestamps along with a Value. |
||
The Client makes use of the HistoryRead service. The details of which aspect of this service are used are provided by additional ConformanceUnits, but at least one or more of the following is used ReadRaw, ReadAtTime, ReadProcessed, ReadModified or ReadEvents. |
||
The Client makes use of the HistoryUpdate service. The details of this usage are provided by additional ConformanceUnits, but at least one or more of the following must be provided InsertData, InsertEvents, ReplaceData, ReplaceEvents, UpdateData, UpdateEvents, DeleteData or DeleteEvents or DeleteAtTime. |
The Method Service Set is composed of ConformanceUnits (see Table 8). The primary ConformanceUnits provide support for the call functionality. Servers may provide some aspects of this functionality; see Profiles categorized as Server Profiles for details. Clients may support some aspects of this functionality; see Profiles categorized as Client Profiles for details.
Category |
Title |
Description |
Method Call |
Support the Call Service to call (invoke) a Method which includes support for Method Parameters. |
|
Use the Call Service to call one or several Methods. |
The MonitoredItem Service Set is composed of multiple ConformanceUnits (see Table 9). Servers may provide some aspects of this functionality; see Profiles categorized as Server Profiles for details. Clients may support some aspects of this functionality; see Profiles categorized as Client Profiles for details.
Table 9 – Monitored Item Services
Category |
Title |
Description |
Monitor Basic |
Support the following MonitoredItem Services: CreateMonitoredItems, ModifyMonitoredItems, DeleteMonitoredItems and SetMonitoringMode. |
|
Monitor Value Change |
Support creation of MonitoredItems for Attribute value changes. This includes support of the IndexRange to select a single element or a range of elements when the Attribute value is an array. |
|
Monitor Complex Value |
Supports monitoring and encoding Values with structured DataTypes. |
|
Monitored Items Deadband Filter |
Supports an absolute Deadband filter as a DataChangeFilter for numeric data types. |
|
Monitor Aggregate Filter |
Support for Aggregate filters for MonitoredItems. The result of this ConformanceUnit includes a list of Aggregates that are supported as part of the Profile Certificate. |
|
Monitor Alternate Encoding |
Support alternate encoding when monitoring value Attributes. By default, every Server has to support the encoding of the currently used Stack Profile (i.e. binary with UA Binary Encoding and XML with XML Encoding). This ConformanceUnit - when supported - specifies that the other encoding is supported in addition. |
|
Monitor Items 2 |
Support at least 2 MonitoredItems per Subscription where the size of each MonitoredItem is at least equal to size of Double. |
|
Monitor Items 10 |
Support at least 10 MonitoredItems per Subscription where the size of each MonitoredItem is at least equal to size of Double. |
|
Monitor Items 100 |
Support at least 100 MonitoredItems per Subscription. This number has to be supported for at least half of the required Subscriptions for half of the required Sessions. |
|
Monitor Items 500 |
Support at least 500 MonitoredItems per Subscription. This number has to be supported for at least half of the required Subscriptions for half of the required Sessions. |
|
Monitor QueueSize_1 |
This ConformanceUnit does not require queuing when multiple value changes occur during a "publish period". I.e. the latest change will be sent in the Notification. |
|
Monitor MinQueueSize_02 |
Support at least 2 queue entries for MonitoredItems. Servers often will adapt the queue size to the number of currently MonitoredItems. However, it is expected that Servers support this minimum queue size for at least one third of the supported MonitoredItems. |
|
Monitor MinQueueSize_05 |
Support at least 5 queue entries for MonitoredItems. Servers often will adapt the queue size to the number of currently MonitoredItems. However, it is expected that Servers support this minimum queue size for at least one third of the supported MonitoredItems. |
|
Monitor QueueSize_ServerMax |
This ConformanceUnit is for events. When the Client requests queuesize=MAXUInt32 the Server is to return the maximum queue size that it can support for event notifications as the revisedQueueSize. |
|
Monitor Triggering |
Support the SetTriggering Service to create and/or delete triggering links for a triggering item. |
|
Monitor Events |
Support creation of MonitoredItems for an "EventNotifier Attribute" for the purpose of Event Notification. The subscription includes supporting a filter that includes SimpleAttribute Operands and a select list of Operators. The list of Operators includes: Equals, IsNull, GreaterThan, LessThan, GreaterThanorEqual, LessThatorEqual, Like, Not, Between, InList, And, Or, Cast, BitwiseAnd, BitwiseOr. |
|
Monitor Complex Event Filter |
Support for the 'TypeOf' complex Event filter operator. |
|
Monitor Client Value Change |
Use the MonitoredItem Service Set to register items for changes in Attribute value. Use CreateMonitoredItems to register the Node/Attribute tuple. Set proper sampling interval, Deadband filter and queuing mode. Use disabling / enabling instead of deleting and re-creating a MonitoredItem. Use bulk operations rather than individual service requests to reduce communication overhead. |
|
Monitor Client Complex Value |
Monitor and decode Values with structured DataTypes. |
|
Monitor Client Deadband Filter |
Uses Absolute Deadband filters for subscriptions. |
|
Monitor Client by Index |
Use the IndexRange to select a single element or a range of elements when the Attribute value is an array. |
|
Monitor Client Aggregate Filter |
Uses Aggregate filters for Subscriptions. |
|
Monitor Client Events |
Use the MonitoredItem Service Set to create MonitoredItems for Event notifications. |
|
Use the Event filter when calling CreateMonitoredItems to filter the desired Events and to select the columns to be provided for each Event Notification. |
||
Use of the 'TypeOf' complex Event filter operator. |
||
Monitor Client Modify |
Use ModifyMonitoredItems Service to change the configuration setting. Use SetMonitoringMode Service to disable / enable sampling and / or publishing. |
|
Monitor Client Trigger |
Use the Triggering Model if certain items are to be reported only if some other item triggers. Use proper monitoring mode for these items. Use SetTriggering Service to link these items to the trigger item. |
The Subscription Service Set is composed of multiple ConformanceUnits (see Table 10). Servers may provide some aspects of this functionality; see Profiles categorized as Server Profiles for details. Clients may support some aspects of this functionality; see Profiles categorized as Client Profiles for details.
Table 10 – Subscription Services
Category |
Title |
Description |
Subscription Basic |
Support the following Subscription Services: CreateSubscription, ModifySubscription, DeleteSubscriptions, Publish, Republish and SetPublishingMode. |
|
Subscription Minimum 1 |
Support at least 1 Subscription per Session. This number has to be supported for all of the minimum required sessions. |
|
Subscription Minimum 02 |
Support at least 2 Subscriptions per Session. This number has to be supported for at least half of the minimum required sessions. |
|
Subscription Minimum 05 |
Support at least 5 Subscriptions per Session. This number has to be supported for at least half of the minimum required sessions. |
|
Subscription Publish Min 02 |
Support at least 2 Publish Service requests per Session. This number has to be supported for all of the minimum required sessions. Support of a NotificationMessage retransmission queue is not required; if not available the Republish Service returns Bad_MessageNotAvailable. |
|
Subscription Publish Min 05 |
Support at least 5 Publish Service requests per Session. This number has to be supported for at least half of the minimum required sessions. Support, as a minimum, the number of Publish requests per session as the size of the NotificationMessage retransmission queue for Republish. |
|
Subscription Publish Min 10 |
Support at least 10 Publish Service requests per Session. This number has to be supported for at least half of the minimum required sessions. Support, as a minimum, the number of Publish requests per session as the size of the NotificationMessage retransmission queue for Republish. |
|
Subscription Publish Discard Policy |
Respect the specified policy for discarding Publish Service requests. If the maximum number of Publish Service requests has been queued and a new Publish Service request arrives, the "oldest" Publish request has to be discarded by returning the proper error. |
|
Subscription Transfer |
Support TransferSubscriptions Service to transfer a Subscription from one Session to another. |
|
Subscription Durable |
Support setting Subscriptions in durable mode. This mode requires that collected data and events are stored and delivered even if a Client was disconnected for a longer time or the Server was restarted. Support one of the “Subscription Durable StorageLevel nnn” ConformanceUnits. |
|
Subscription Durable StorageLevel Small |
Support at least 20 monitored items with a queue size of 10000 for each item and where the size of each MonitoredItem is at least equal to size of Double. This requires storage capacity for 200 thousand values of DataType Double. |
|
Subscription Durable StorageLevel Medium |
Support at least 100 monitored items with a queue size of 50000 for each item and where the size of each MonitoredItem is at least equal to size of Double. This requires storage capacity for 5 million values of DataType Double. |
|
Subscription Durable StorageLevel High |
Support at least 2000 monitored items with a queue size of 200000 for each item and where the size of each MonitoredItem is at least equal to size of Double. This requires storage capacity for 400 million values of DataType Double. |
|
Subscription Client Basic |
Use the Subscription and MonitoredItem Service Set as an efficient means to detect changes of Attribute values and / or to receive Event occurrences. Set appropriate intervals for publishing, keep alive notifications and total Subscription lifetime. Supply a sufficient number of Publish requests to the Server so that Notifications can be sent whenever a publish timer expires. Acknowledge received Notifications with subsequent Publish requests. |
|
Subscription Client Fallback |
The Client shall interoperate with Servers that do not support Subscriptions, or have exhausted Subscription limits, for Monitoring by using Read Service. |
|
Subscription Client Republish |
Evaluate the sequence number in Notifications to detect lost Notifications. Use Republish to request missing Notifications. |
|
Subscription Client Modify |
Allow modification of the Subscription configuration using the ModifySubscription Service. |
|
Subscription Client TransferSubscriptions |
The Client supports transferring Subscription from other Clients. This ConformanceUnit is used as part of redundant Clients. |
|
Subscription Client Multiple |
Use multiple Subscriptions to reduce the payload of individual Notifications. |
|
Subscription Client Publish Configurable |
Send multiple Publish Service requests to assure that the Server is always able to send Notifications. The number of parallel Publish Service requests per Session shall be configurable. |
|
Subscription Client Durable |
Use durable Subscriptions. |