Clientsuse the browse Servicesof the View Service Setto navigate through the AddressSpaceor through a Viewwhich is a subset of the AddressSpace.

A Viewis a subset of the AddressSpacecreated by the Server. Future versions of this document may also define services to create Client-defined Views. See OPC 10000-5for a description of the organization of views in the AddressSpace.

This Serviceis used to discover the Referencesof a specified Node. The browse can be further limited by the use of a View. This Browse Servicealso supports a primitive filtering capability.

In some cases it may take longer than the Clienttimeout hint to process all nodes to browse. In this case the Servermay return zero results with a continuation point for the affected nodes before the timeout expires.

Table 34defines the parameters for the Service.

Table 34– Browse Service Parameters

Name

Type

Description

Request

requestHeader

RequestHeader

Common request parameters (see 7.33for RequestHeaderdefinition).

View

ViewDescription

Description of the Viewto browse (see 7.45for ViewDescriptiondefinition). An empty ViewDescriptionvalue indicates the entire AddressSpace. Use of the empty ViewDescriptionvalue causes all Referencesof the nodesToBrowseto be returned. Use of any other Viewcauses only the Referencesof the nodesToBrowsethat are defined for that Viewto be returned.

requestedMax

ReferencesPerNode

Counter

Indicates the maximum number of references to return for each starting Node specified in the request. The value 0 indicates that the Clientis imposing no limitation (see 7.8for Counterdefinition).

nodesToBrowse []

BrowseDescription

A list of nodes to Browse. This structure is defined in-line with the following indented items.

nodeId

NodeId

NodeIdof the Nodeto be browsed. If a view is provided, it shall include this Node.

browseDirection

Enum

BrowseDirection

An enumeration that specifies the direction of Referencesto follow. The enumeration is defined in 7.5.

The returned Referencesdo indicate the direction the Serverfollowed in the isForwardparameter of the ReferenceDescription.

Symmetric Referencesare always considered to be in forward direction therefore the isForward flag is always set to TRUE and symmetric Referencesare not returned if browseDirectionis set to INVERSE.

referenceTypeId

NodeId

Specifies the NodeIdof the ReferenceTypeto follow. Only instances of this ReferenceTypeor its subtypes are returned.

If not specified then all Referencesare returned and includeSubtypes is ignored.

includeSubtypes

Boolean

Indicates whether subtypes of the ReferenceTypeshould be included in the browse. If TRUE, then instances of referenceTypeIdand all of its subtypes are returned.

nodeClassMask

UInt32

Specifies the NodeClassesof the TargetNodes. Only TargetNodeswith the selected NodeClassesare returned. The NodeClassesare assigned the following bits:

Bit

NodeClass

0

Object

1

Variable

2

Method

3

ObjectType

4

VariableType

5

ReferenceType

6

DataType

7

View

If set to zero, then all NodeClassesare returned.

If the NodeClassis unknown for a remote Node, the nodeClassMaskis ignored.

resultMask

UInt32

Specifies the fields in the ReferenceDescriptionstructure that should be returned. The fields are assigned the following bits:

Bit

Result

0

ReferenceType

1

IsForward

2

NodeClass

3

BrowseName

4

DisplayName

5

TypeDefinition

The ReferenceDescriptiontype is defined in 7.30.

Response

responseHeader

Response Header

Common response parameters (see 7.34for ResponseHeaderdefinition).

results []

BrowseResult

A list of BrowseResults. The size and order of the list matches the size and order of the nodesToBrowsespecified in the request.

The BrowseResulttype is defined in 7.6.

diagnosticInfos []

Diagnostic Info

List of diagnostic information for the results(see 7.12for DiagnosticInfo definition). The size and order of the list matches the size and order of the resultsresponse parameter. This list is empty if diagnostics information was not requested in the request header or if no diagnostic information was encountered in processing of the request.

Table 35defines the Serviceresults specific to this Service. Common StatusCodesare defined in Table 182.

Table 35– Browse Service Result Codes

Symbolic Id

Description

Bad_ViewIdUnknown

See Table 182for the description of this result code.

Bad_ViewTimestampInvalid

See Table 182for the description of this result code.

Bad_ViewParameterMismatchInvalid

See Table 182for the description of this result code.

Bad_ViewVersionInvalid

See Table 182for the description of this result code.

Bad_NothingToDo

See Table 182for the description of this result code.

Bad_TooManyOperations

See Table 182for the description of this result code.

Table 36defines values for the resultsparameter that are specific to this Service. Common StatusCodesare defined in Table 183.

Table 36– Browse Operation Level Result Codes

Symbolic Id

Description

Bad_NodeIdInvalid

See Table 183for the description of this result code.

Bad_NodeIdUnknown

See Table 183for the description of this result code.

Bad_ReferenceTypeIdInvalid

See Table 183for the description of this result code.

Bad_BrowseDirectionInvalid

See Table 183for the description of this result code.

Bad_NodeNotInView

See Table 183for the description of this result code.

Bad_NoContinuationPoints

See Table 183for the description of this result code.

Uncertain_NotAllNodesAvailable

Browse results may be incomplete because of the unavailability of a subsystem.

This Serviceis used to request the next set of Browseor BrowseNextresponse information that is too large to be sent in a single response. “Too large” in this context means that the Serveris not able to return a larger response or that the number of results to return exceeds the maximum number of results to return that was specified by the Clientin the original Browserequest. The BrowseNextshall be submitted on the same Sessionthat was used to submit the Browseor BrowseNextthat is being continued.

Table 37defines the parameters for the Service.

Table 37– BrowseNext Service Parameters

Name

Type

Description

Request

requestHeader

Request Header

Common request parameters (see 7.33for RequestHeaderdefinition).

releaseContinuationPoints

Boolean

A Booleanparameter with the following values:

TRUEpassed continuationPointsshall be reset to free resources in the Server. The continuation points are released and the results and diagnosticInfos arrays are empty.

FALSEpassed continuationPointsshall be used to get the next set of browse information.

A Clientshall always use the continuation point returned by a Browseor BrowseNextresponse to free the resources for the continuation point in the Server. If the Clientdoes not want to get the next set of browse information, BrowseNextshall be called with this parameter set to TRUE.

continuationPoints []

Continuation Point

A list of Server-defined opaque values that represent continuation points. The value for a continuation point was returned to the Clientin a previous Browseor BrowseNextresponse. These values are used to identify the previously processed Browseor BrowseNextrequest that is being continued and the point in the result set from which the browse response is to continue.

Clientsmay mix continuation points from different Browse or BrowseNext responses.

The ContinuationPointtype is described in 7.9.

Response

responseHeader

Response Header

Common response parameters (see 7.34for ResponseHeaderdefinition).

results []

BrowseResult

A list of references that met the criteria specified in the original Browserequest.

The size and order of this list matches the size and order of the continuationPointsrequest parameter.

The BrowseResulttype is defined in 7.6.

diagnosticInfos []

Diagnostic Info

List of diagnostic information for the results(see 7.12for DiagnosticInfo definition). The size and order of the list matches the size and order of the resultsresponse parameter. This list is empty if diagnostics information was not requested in the request header or if no diagnostic information was encountered in processing of the request.

Table 38defines the Serviceresults specific to this Service. Common StatusCodesare defined in Table 182.

Table 38– BrowseNext Service Result Codes

Symbolic Id

Description

Bad_NothingToDo

See Table 182for the description of this result code.

Bad_TooManyOperations

See Table 182for the description of this result code.

Table 39defines values for the resultsparameter that are specific to this Service. Common StatusCodesare defined in Table 183.

Table 39– BrowseNext Operation Level Result Codes

Symbolic Id

Description

Bad_NodeIdInvalid

See Table 183for the description of this result code.

Bad_NodeIdUnknown

See Table 183for the description of this result code.

Bad_ReferenceTypeIdInvalid

See Table 183for the description of this result code.

Bad_BrowseDirectionInvalid

See Table 183for the description of this result code.

Bad_NodeNotInView

See Table 183for the description of this result code.

Bad_ContinuationPointInvalid

See Table 183for the description of this result code.

This Serviceis used to request that the Servertranslates one or more browse paths to NodeIds. Each browse path is constructed of a starting Nodeand a RelativePath. The specified starting Nodeidentifies the Nodefrom which the RelativePathis based. The RelativePathcontains a sequence of ReferenceTypesand BrowseNames.

One purpose of this Serviceis to allow programming against type definitions. Since BrowseNamesshall be unique in the context of type definitions, a Clientmay create a browse path that is valid for a type definition and use this path on instances of the type. For example, an ObjectType“Boiler” may have a “HeatSensor” Variableas InstanceDeclaration. A graphical element programmed against the “Boiler” may need to display the Valueof the “HeatSensor”. If the graphical element would be called on “Boiler1”, an instance of “Boiler”, it would need to call this Servicespecifying the NodeIdof “Boiler1” as starting Nodeand the BrowseNameof the “HeatSensor” as browse path. The Servicewould return the NodeIdof the “HeatSensor” of “Boiler1” and the graphical element could subscribe to its Value Attribute.

If a Nodehas multiple targets with the same BrowseName, the Servershall return a list of NodeIds. However, since one of the main purposes of this Serviceis to support programming against type definitions, the NodeIdof the Nodebased on the type definition of the starting Nodeis returned as the first NodeIdin the list.

Table 40defines the parameters for the Service.

Table 40– TranslateBrowsePathsToNodeIds Service Parameters

Name

Type

Description

Request

requestHeader

RequestHeader

Common request parameters (see 7.33for RequestHeaderdefinition).

browsePaths []

BrowsePath

List of browse paths for which NodeIdsare being requested. This structure is defined in-line with the following indented items.

startingNode

NodeId

NodeIdof the starting Nodefor the browse path.

relativePath

RelativePath

The path to follow from the startingNode.

The last element in therelativePathshall always have a targetNamespecified. This further restricts the definition of the RelativePath type. The Servershall return Bad_BrowseNameInvalidif the targetNameis missing.

The RelativePathstructure is defined in 7.31.

Response

responseHeader

ResponseHeader

Common response parameters (see 7.34for ResponseHeaderdefinition).

results []

BrowsePathResult

List of results for the list of browse paths. The size and order of the list matches the size and order of the browsePathsrequest parameter. This structure is defined in-line with the following indented items.

statusCode

StatusCode

StatusCodefor the browse path (see 7.39for StatusCodedefinition).

targets []

BrowsePathTarget

List of targets for the relativePathfrom the startingNode. This structure is defined in-line with the following indented items.

A Servermay encounter a Referenceto a Nodein another Serverwhich it cannot follow while it is processing the RelativePath. If this happens the Serverreturns the NodeIdof the external Nodeand sets the remainingPathIndexparameter to indicate which RelativePathelements still need to be processed. To complete the operation the Clientshall connect to the other Serverand call this service again using the target as the startingNodeand the unprocessed elements as the relativePath.

targetId

ExpandedNodeId

The identifier for a target of the RelativePath.

remainingPathIndex

Index

The index of the first unprocessed element in the RelativePath.

This value shall be equal to the maximum value of Indexdata type if all elements were processed (see 7.18for Indexdefinition).

diagnosticInfos []

DiagnosticInfo

List of diagnostic information for the list of browse paths (see 7.12for DiagnosticInfo definition). The size and order of the list matches the size and order of the browsePathsrequest parameter. This list is empty if diagnostics information was not requested in the request header or if no diagnostic information was encountered in processing of the request.

Table 41defines the Serviceresults specific to this Service. Common StatusCodesare defined in 7.39.

Table 41– TranslateBrowsePathsToNodeIds Service Result Codes

Symbolic Id

Description

Bad_NothingToDo

See Table 182for the description of this result code.

Bad_TooManyOperations

See Table 182for the description of this result code.

Table 42defines values for the operation level statusCodeparameters that are specific to this Service. Common StatusCodesare defined in Table 183.

Table 42– TranslateBrowsePathsToNodeIds Operation Level Result Codes

Symbolic Id

Description

Bad_NodeIdInvalid

See Table 183for the description of this result code.

Bad_NodeIdUnknown

See Table 183for the description of this result code.

Bad_NothingToDo

See Table 182for the description of this result code.

This code indicates that the relativePath contained an empty list.

Bad_BrowseNameInvalid

See Table 183for the description of this result code.

This code indicates that a TargetName was missing in a RelativePath.

Uncertain_ReferenceOutOfServer

The path element has targets which are in another Server.

Bad_TooManyMatches

The requested operation has too many matches to return.

Users should use queries for large result sets. Serversshould allow at least 10 matches before returning this error code.

Bad_QueryTooComplex

The requested operation requires too many resources in the Server.

Bad_NoMatch

The requested relativePath cannot be resolved to a target to return.

A Serveroften has no direct access to the information that it manages. Variables or services might be in underlying systems where additional effort is required to establish a connection to these systems. The RegisterNodes Servicecan be used by Clientsto register the Nodesthat they know they will access repeatedly (e.g. Write, Call). It allows Serversto set up anything needed so that the access operations will be more efficient. Clientscan expect performance improvements when using registered NodeIds, but the optimization measures are vendor-specific. For Variable Nodes Serversshall concentrate their optimization efforts on the Value Attribute.

RegisteredNodeIdsare only guaranteed to be valid within the current Session. Clientsshall unregister unneeded Ids immediately to free up resources.

RegisterNodesdoes not validate the NodeIdsfrom the request. Serverswill simply copy unknown NodeIdsin the response. Structural NodeIderrors (size violations, invalid id types) will cause the complete Serviceto fail.

For the purpose of Auditing, Serversshall not use the registered NodeIdsbut only the canonical NodeIds which is the value of theNodeId Attribute.

Table 43defines the parameters for the Service.

Table 43– RegisterNodes Service Parameters

Name

Type

Description

Request

requestHeader

Request Header

Common request parameters (see 7.33for RequestHeaderdefinition).

nodesToRegister []

NodeId

List of NodeIdsto register that the Clienthas retrieved through browsing, querying or in some other manner.

Response

responseHeader

Response Header

Common response parameters (see 7.34for ResponseHeaderdefinition).

registeredNodeIds []

NodeId

A list of NodeIdswhich the Clientshall use for subsequent access operations. The size and order of this list matches the size and order of the nodesToRegisterrequest parameter.

The Servermay return the NodeIdfrom the request or a new (an alias) NodeId. It is recommended that the Serverreturn a numeric NodeIdsfor aliasing.

In case no optimization is supported for a Node, the Servershall return the NodeIdfrom the request.

Table 44defines the Serviceresults specific to this Service. Common StatusCodesare defined in Table 182.

Table 44– RegisterNodes Service Result Codes

Symbolic Id

Description

Bad_NothingToDo

See Table 182for the description of this result code.

Bad_TooManyOperations

See Table 182for the description of this result code.

Bad_NodeIdInvalid

See Table 183for the description of this result code.

Serversshall completely reject the RegisterNodesrequest if any of the NodeIdsin the nodesToRegisterparameter are structurally invalid.

This Serviceis used to unregister NodeIdsthat have been obtained via the RegisterNodesservice.

UnregisterNodesdoes not validate the NodeIdsfrom the request. Serversshall simply unregister NodeIdsthat are known as registered NodeIds. Any NodeIdsthat are in the list, but are not registered NodeIdsare simply ignored.

Table 50defines the parameters for the Service.

Table 45– UnregisterNodes Service Parameters

Name

Type

Description

Request

requestHeader

Request Header

Common request parameters (see 7.33for RequestHeaderdefinition).

nodesToUnregister []

NodeId

A list of NodeIdsthat have been obtained via the RegisterNodesservice.

Response

responseHeader

Response Header

Common response parameters (see 7.34for ResponseHeaderdefinition).

Table 51defines the Serviceresults specific to this Service. Common StatusCodesare defined in Table 182.

Table 46– UnregisterNodes Service Result Codes

Symbolic Id

Description

Bad_NothingToDo

See Table 182for the description of this result code.

Bad_TooManyOperations

See Table 182for the description of this result code.