High Performance OPC UA Server SDK
1.5.0.296
|
Vendor-specific diagnostic information.
Field | DataType | ValueRank | Description |
---|---|---|---|
SymbolicIdSpecified | Bit | Scalar | |
NamespaceURISpecified | Bit | Scalar | |
LocaleSpecified | Bit | Scalar | |
LocalizedTextSpecified | Bit | Scalar | |
AdditionalInfoSpecified | Bit | Scalar | |
InnerStatusCodeSpecified | Bit | Scalar | |
InnerDiagnosticInfoSpecified | Bit | Scalar | |
Reserved1 | Bit | Scalar | |
SymbolicId | Int32 | Scalar | Used to identify a vendor-specific error or condition; typically the result of some server internal operation. More... |
NamespaceURI | Int32 | Scalar | The URI of the namespace in whose context the symbolicId is defined within. More... |
Locale | Int32 | Scalar | The locale part of the vendor-specific localized text describing the symbolic id. More... |
LocalizedText | Int32 | Scalar | A vendor-specific localized text string describes the symbolic id. More... |
AdditionalInfo | CharArray | Scalar | Vendor-specific diagnostic information. |
InnerStatusCode | StatusCode | Scalar | The StatusCode from the inner operation. More... |
InnerDiagnosticInfo | DiagnosticInfo | Scalar | The diagnostic info associated with the inner StatusCode. |
Used to identify a vendor-specific error or condition; typically the result of some server internal operation.
The maximum length of this string is 32 characters. Servers wishing to return a numeric return code should convert the return code into a string and use this string as symbolicId (e.g., "0xC0040007" or "-4").
This symbolic identifier string is conveyed to the Client in the stringTable parameter of the ResponseHeader parameter. The symbolicId parameter contains the index into the stringTable for this string. -1 indicates that no string is specified.
The symbolicId shall not contain StatusCodes. If the localizedText contains a translation for the description of a StatusCode, the symbolicId is -1.
The URI of the namespace in whose context the symbolicId is defined within.
This namespace is represented as a string and is conveyed to the Client in the stringTable parameter of the ResponseHeader parameter. The namespaceIndex parameter contains the index into the stringTable for this string. -1 indicates that no string is specified.
The namespaceUri shall not be the standard OPC UA namespace. There are no symbolicIds provided for standard StatusCodes.
The locale part of the vendor-specific localized text describing the symbolic id.
This localized text string is conveyed to the Client in the stringTable parameter of the ResponseHeader parameter. The localizedTextIndex parameter contains the index into the stringTable for this string. -1 indicates that no string is specified.
A vendor-specific localized text string describes the symbolic id.
The maximum length of this text string is 256 characters.
This localized text string is conveyed to the Client in the stringTable parameter of the ResponseHeader parameter. The localizedTextIndex parameter contains the index into the stringTable for this string. -1 indicates that no string is specified.
The localizedText refers to the symbolicId if present or the string that describes the standard StatusCode if the server provides translations. If the index is -1, the server has no translation to return and the client should use the invariant StatusCode description from the specification.
The StatusCode from the inner operation.
Many applications will make calls into underlying systems during OPC UA request processing. An OPC UA Server has the option of reporting the status from the underlying system in the diagnostic info.
A value with an associated timestamp and quality.
PicoSeconds
Some applications require high resolution timestamps. The PicoSeconds fields allow applications to specify timestamps with a resolution of 10 picoseconds. The actual size of the PicoSeconds field depends on the resolution of the DataType. For example, if the UtcTime DataType has a resolution of 100 nanoseconds, the PicoSeconds field would have to store values up to 10 000 in order to provide the resolution of 10 picoseconds.
SourceTimestamp
The sourceTimestamp is used to reflect the timestamp that was applied to a Variable value by the data source. Once a value has been assigned a source timestamp, the source timestamp for that value instance never changes. In this context, “value instance” refers to the value received, independent of its actual value.
The sourceTimestamp shall be UTC time and should indicate the time of the last change of the value or statusCode.
The sourceTimestamp should be generated as close as possible to the source of the value but the timestamp needs to be set always by the same physical clock. In the case of redundant sources, the clocks of the sources should be synchronised.
If the OPC UA Server receives the variable value from another OPC UA Server, then the OPC UA Server shall always pass the source timestamp without changes. If the source that applies the timestamp is not available, the source timestamp is set to null. For example, if a value could not be read because of some error during processing like invalid arguments passed in the request then the sourceTimestamp shall be null.
In the case of a bad or uncertain status sourceTimestamp is used to reflect the time that the source recognized the non-good status or the time the Server last tried to recover from the bad or uncertain status.
The sourceTimestamp is only returned with a Value attribute. For all other attributes the returned sourceTimestamp is set to null.
ServerTimestamp
The serverTimestamp is used to reflect the time that the Server received a variable value or knew it to be accurate.
In the case of a bad or uncertain status, serverTimestamp is used to reflect the time that the Server received the status or that the Server last tried to recover from the bad or uncertain status. In the case where the OPC UA Server subscribes to a value from another OPC UA Server, each Server applies its own serverTimestamp. This is in contrast to the sourceTimestamp in which only the originator of the data is allowed to apply the sourceTimestamp.
If the Server subscribes to the value from another Server every ten seconds and the value changes, then the serverTimestamp is updated each time a new value is received. If the value does not change, then new values will not be received on the Subscription. However, in the absence of errors, the receiving Server applies a new serverTimestamp every ten seconds because not receiving a value means that the value has not changed. Thus, the serverTimestamp reflects the time at which the Server knew the value to be accurate.#
This concept also applies to OPC UA Servers that receive values from exception-based data sources. For example, suppose that a Server is receiving values from an exception-based device, and that
In this case, the Server value would be 1,234 and the serverTimestamp would be updated every 0,5 seconds after the receipt of the value.
StatusCode assigned to a value
The StatusCode is used to indicate the conditions under which a variable value was generated, and thereby can be used as an indicator of the usability of the value.
Rules:
Field | DataType | ValueRank | Description |
---|---|---|---|
ValueSpecified | Bit | Scalar | |
StatusCodeSpecified | Bit | Scalar | |
SourceTimestampSpecified | Bit | Scalar | |
SourcePicosecondsSpecified | Bit | Scalar | |
ServerTimestampSpecified | Bit | Scalar | |
ServerPicosecondsSpecified | Bit | Scalar | |
Reserved1 | Bit | Scalar | |
Value | Variant | Scalar | The data value; if the StatusCode indicates an error, the value is to be ignored and the Server shall set it to null. |
StatusCode | StatusCode | Scalar | The StatusCode that defines with the Server’s ability to access/provide the value. |
SourceTimestamp | DateTime | Scalar | The source timestamp for the value. |
SourcePicoseconds | UInt16 | Scalar | Specifies the number of 10 picoseconds (1,0 e-11 seconds) intervals which shall be added to the sourceTimestamp. |
ServerTimestamp | DateTime | Scalar | The Server timestamp for the value. |
ServerPicoseconds | UInt16 | Scalar | Specifies the number of 10 picoseconds (1,0 e-11 seconds) intervals which shall be added to the serverTimestamp. |
The type of application
Enum String | Enum Value | Description |
---|---|---|
Server | 0 | The application is a Server. |
Client | 1 | The application is a Client. |
ClientAndServer | 2 | The application is a Client and a Server. |
DiscoveryServer | 3 | The application is a DiscoveryServer. |
Specifies an application that is available.
Field | DataType | ValueRank | Description |
---|---|---|---|
ApplicationUri | String | Scalar | The globally unique identifier for the application instance. More... |
ProductUri | String | Scalar | The globally unique identifier for the product. |
ApplicationName | LocalizedText | Scalar | A localized descriptive name for the application. |
ApplicationType | ApplicationType | Scalar | The type of application More... |
GatewayServerUri | String | Scalar | A URI that identifies the Gateway Server associated with the DiscoveryUrls. More... |
DiscoveryProfileUri | String | Scalar | A URI that identifies the discovery profile supported by the URLs provided. More... |
DiscoveryUrls | String | Array | A list of URLs for the discovery Endpoints provided by the application. More... |
The globally unique identifier for the application instance.
This URI is used as ServerUri in Services if the application is a Server.
The type of application
See ApplicationType
A URI that identifies the Gateway Server associated with the DiscoveryUrls.
This value is not specified if the Server can be accessed directly.
This field is not used if the ApplicationType is Client.
A URI that identifies the discovery profile supported by the URLs provided.
This field is not used if the ApplicationType is client.
A list of URLs for the discovery Endpoints provided by the application.
If the ApplicationType is Client, this field shall contain an empty list.
Common parameters for all requests submitted on a Session.
Field | DataType | ValueRank | Description |
---|---|---|---|
AuthenticationToken | NodeId | Scalar | The secret Session identifier used to verify that the request is associated with the Session. |
Timestamp | DateTime | Scalar | The time the Client sent the request. More... |
RequestHandle | UInt32 | Scalar | A requestHandle associated with the request. More... |
ReturnDiagnostics | UInt32 | Scalar | A bit mask that identifies the types of vendor-specific diagnostics to be returned in diagnosticInfo response parameters. More... |
AuditEntryId | String | Scalar | An identifier that identifies the Client’s security audit log entry associated with this request. More... |
TimeoutHint | UInt32 | Scalar | This timeout in milliseconds is used in the Client side Communication Stack to set the timeout on a per-call base. More... |
AdditionalHeader | ExtensionObject | Scalar | Reserved for future use. More... |
The time the Client sent the request.
The parameter is only used for diagnostic and logging purposes in the server.
A requestHandle associated with the request.
This client defined handle can be used to cancel the request. It is also returned in the response.
A bit mask that identifies the types of vendor-specific diagnostics to be returned in diagnosticInfo response parameters.
The value of this parameter may consist of zero, one or more of the following values. No value indicates that diagnostics are not to be returned.
Bit Value | Diagnostics to return |
---|---|
0x0000 0001 | ServiceLevel/SymbolicId |
0x0000 0002 | ServiceLevel/LocalizedText |
0x0000 0004 | ServiceLevel/AdditionalInfo |
0x0000 0008 | ServiceLevel/Inner StatusCode |
0x0000 0010 | ServiceLevel/Inner Diagnostics |
0x0000 0020 | OperationLevel/SymbolicId |
0x0000 0040 | OperationLevel/LocalizedText |
0x0000 0080 | OperationLevel/AdditionalInfo |
0x0000 0100 | OperationLevel/Inner StatusCode |
0x0000 0200 | OperationLevel/Inner Diagnostics |
Each of these values is composed of two components, level and type, as described below. If none are requested, as indicated by a 0 value, or if no diagnostic information was encountered in processing of the request, then diagnostics information is not returned.
Level:
Type:
An identifier that identifies the Client’s security audit log entry associated with this request.
An empty string value means that this parameter is not used.
The AuditEntryId typically contains who initiated the action and from where it was initiated. The AuditEventId is included in the AuditEvent to allow human readers to correlate an Event with the initiating action.
More details of the Audit mechanisms are defined in 6.2 and in Part 3.
This timeout in milliseconds is used in the Client side Communication Stack to set the timeout on a per-call base.
For a Server this timeout is only a hint and can be used to cancel long running operations to free resources. If the Server detects a timeout, he can cancel the operation by sending the Service result Bad_Timeout. The Server should wait at minimum the timeout after he received the request before cancelling the operation.
The value of 0 indicates no timeout.
Reserved for future use.
applications that do not understand the header should ignore it.
Common parameters for all responses.
Field | DataType | ValueRank | Description |
---|---|---|---|
Timestamp | DateTime | Scalar | The time the Server sent the response. |
RequestHandle | UInt32 | Scalar | The requestHandle given by the Client to the request. |
ServiceResult | StatusCode | Scalar | OPC UA-defined result of the Service invocation. |
ServiceDiagnostics | DiagnosticInfo | Scalar | Diagnostic information for the Service invocation. More... |
StringTable | String | Array | There is one string in this list for each unique namespace, symbolic identifier, and localized text string contained in all of the diagnostics information parameters contained in the response DiagnosticInfo. Each is identified within this table by its zero-based index. |
AdditionalHeader | ExtensionObject | Scalar | Reserved for future use. More... |
Diagnostic information for the Service invocation.
This parameter is empty if diagnostics information was not requested in the request header.
Reserved for future use.
applications that do not understand the header should ignore it.
An enumeration that specifies what security should be applied to messages exchanges during a Session.
Enum String | Enum Value | Description |
---|---|---|
Invalid | 0 | The MessageSecurityMode is invalid. More... |
None | 1 | No security is applied. |
Sign | 2 | All messages are signed but not encrypted. |
SignAndEncrypt | 3 | All messages are signed and encrypted. |
The MessageSecurityMode is invalid.
This value is the default value to avoid an accidental choice of no security is applied. This choice will always be rejected.
Enum String | Enum Value | Description |
---|---|---|
Anonymous | 0 | No token is required. |
UserName | 1 | A username/password token. |
Certificate | 2 | An X509v3 Certificate token. |
IssuedToken | 3 | Any WS-Security defined token. |
Kerberos | 4 |
Specifies a UserIdentityToken that a Server will accept.
Field | DataType | ValueRank | Description |
---|---|---|---|
PolicyId | String | Scalar | An identifier for the UserTokenPolicy assigned by the Server. More... |
TokenType | UserTokenType | Scalar | The type of user identity token required. More... |
IssuedTokenType | String | Scalar | A URI for the type of token. More... |
IssuerEndpointUrl | String | Scalar | An optional URL for the token issuing service. More... |
SecurityPolicyUri | String | Scalar | The security policy to use when encrypting or signing the UserIdentityToken when it is passed to the Server in the ActivateSession request. More... |
An identifier for the UserTokenPolicy assigned by the Server.
The Client specifies this value when it constructs a UserIdentityToken that conforms to the policy.
This value is only unique within the context of a single Server.
The type of user identity token required.
A tokenType of ANONYMOUS indicates that the Server does not require any user identification. In this case the Client application instance certificate is used as the user identification.
A URI for the type of token.
Part 6 of the OPC UA Specification defines URIs for common issued token types. Vendors may specify their own token.
This field may only be specified if TokenType is IssuedToken.
An optional URL for the token issuing service.
The meaning of this value depends on the IssuedTokenType.
The security policy to use when encrypting or signing the UserIdentityToken when it is passed to the Server in the ActivateSession request.
The security policy for the SecureChannel is used if this value is omitted.
Describes an Endpoint for a Server
Field | DataType | ValueRank | Description |
---|---|---|---|
EndpointUrl | String | Scalar | The URL for the Endpoint described. |
Server | ApplicationDescription | Scalar | The description for the Server that the Endpoint belongs to. |
ServerCertificate | ByteString | Scalar | The application instance certificate issued to the Server. |
SecurityMode | MessageSecurityMode | Scalar | The type of security to apply to the messages. More... |
SecurityPolicyUri | String | Scalar | The URI for SecurityPolicy to use when securing messages. |
UserIdentityTokens | UserTokenPolicy | Array | The user identity tokens that the Server will accept. More... |
TransportProfileUri | String | Scalar | The URI of the Transport Profile supported by the Endpoint. |
SecurityLevel | Byte | Scalar | A numeric value that indicates how secure the EndpointDescription is compared to other EndpointDescriptions for the same Server. More... |
The type of security to apply to the messages.
A SecureChannel may have to be created even if the securityMode is NONE.
The user identity tokens that the Server will accept.
The Client shall pass one of the UserIdentityTokens in the ActivateSession request.
A numeric value that indicates how secure the EndpointDescription is compared to other EndpointDescriptions for the same Server.
A value of 0 indicates that the EndpointDescription is not recommended and is only supported for backward compatibility.
A higher value indicates better security.
The server to register
Field | DataType | ValueRank | Description |
---|---|---|---|
ServerUri | String | Scalar | The globally unique identifier for the Server instance. More... |
ProductUri | String | Scalar | The globally unique identifier for the Server product. |
ServerNames | LocalizedText | Array | A list of localized descriptive names for the Server. More... |
ServerType | ApplicationType | Scalar | The type of application. More... |
GatewayServerUri | String | Scalar | The URI of the Gateway Server associated with the DiscoveryUrls. More... |
DiscoveryUrls | String | Array | A list of Discovery Endpoints for the Server. More... |
SemaphoreFilePath | String | Scalar | The path to the semaphore file used to identify an automatically-launched server instance. More... |
IsOnline | Boolean | Scalar | True if the Server is currently able to accept connections from Clients. More... |
The globally unique identifier for the Server instance.
The serverUri matches the applicationUri from the ApplicationDescription.
A list of localized descriptive names for the Server.
The list shall have at least one valid entry.
The type of application.
The value “Client” (The application is a Client) is not allowed. The Service result shall be Bad_InvalidArgument in this case.
The URI of the Gateway Server associated with the DiscoveryUrls.
This value is only specified by Gateway Servers that wish to register the Servers that they provide access to.
For Servers that do not act as a Gateway Server this parameter shall be null.
A list of Discovery Endpoints for the Server.
The list shall have at least one valid entry.
The path to the semaphore file used to identify an automatically-launched server instance.
Manually-launched servers will not use this parameter.
If a Semaphore file is provided, the IsOnline flag is ignored.
If a Semaphore file is provided and exists, the LocalDiscoveryServer shall save the registration information in a persistent data store that it reads whenever the LocalDiscoveryServer starts.
If a Semaphore file is specified but does not exist, the Discovery Server shall remove the registration from any persistent data store.
If the Server has registered with a semaphoreFilePath, the DiscoveryServer shall check that this file exists before returning the ApplicationDescription to the client.
If the Server did not register with a semaphoreFilePath (it is null or empty), then the DiscoveryServer does not attempt to verify the existence of the file before returning the ApplicationDescription to the client.
True if the Server is currently able to accept connections from Clients.
The DiscoveryServer shall return ApplicationDescriptions to the Client.
The Server is expected to periodically re-register with the DiscoveryServer.
False if the Server is currently unable to accept connections from Clients. The DiscoveryServer shall NOT return ApplicationDescriptions to the Client.
This parameter is ignored if a semaphoreFilePath is provided.
An enumeration that is defined as the type of the requestType parameter of the OpenSecureChannel request.
Enum String | Enum Value | Description |
---|---|---|
Issue | 0 | Creates a new security token for a new secure channel. |
Renew | 1 | Creates a new security token for an existing secure channel. |
A ByteString containing an encoded certificate.
The encoding of a SignedSoftwareCertificate depends on the security technology mapping and is defined completely in Part 6 of the OPC UA Specification.
Field | DataType | ValueRank | Description |
---|---|---|---|
CertificateData | ByteString | Scalar | The certificate data serialized as a ByteString. |
Signature | ByteString | Scalar | The signature for the certificateData. |
Allows Clients to specify the identity of the user they are acting on behalf of.
The exact mechanism used to identify users depends on the system configuration. The different types of identity tokens are bas ed on the most common mechanisms that are used in systems today.
The Client shall always prove possession of a UserIdentityToken when it passes it to the Server. Some tokens include a secret such as a password which the Server will accept as proof. In order to protect these secrets the Token shall be encrypted before it is passed to the Server. Other types of tokens allow the Client to create a signature with the secret associated with the Token. In these cases, the Client proves possession of a UserIdentityToken by appending the last ServerNonce to the ServerCertificate and uses the secret to produce a Signature which is passed to the Server.
Each UserIdentityToken allowed by an Endpoint shall have a UserTokenPolicy specified in the EndpointDescription. The UserTokenPolicy specifies what SecurityPolicy to use when encrypting or signing. If this SecurityPolicy is omitted, the Client uses the SecurityPolicy in the EndpointDescription. If the matching SecurityPolicy is set to None, no encryption or signature is required. It is recommended that Applications never set the SecurityPolicy to None for UserTokens that include a secret because these secrets could be used by an attacker to gain access to the system.
Field | DataType | ValueRank |
---|---|---|
PolicyId | String | Scalar |
A structure that is defined as the type of the nodesToAdd parameter of the AddNodes Service.
Field | DataType | ValueRank | Description |
---|---|---|---|
ParentNodeId | ExpandedNodeId | Scalar | ExpandedNodeId of the parent node for the reference. |
ReferenceTypeId | NodeId | Scalar | NodeId of the hierarchical ReferenceType to use for the reference from the parent node to the new node. |
RequestedNewNodeId | ExpandedNodeId | Scalar | Client requested expanded NodeId of the node to add. The server index in the expanded NodeId shall be 0. More... |
BrowseName | QualifiedName | Scalar | The browse name of the node to add. |
NodeClass | NodeClass | Scalar | NodeClass of the node to add. |
NodeAttributes | ExtensionObject | Scalar | The attributes that are specific to the NodeClass. More... |
TypeDefinition | ExpandedNodeId | Scalar | NodeId of the TypeDefinitionNode for the node to add. More... |
Client requested expanded NodeId of the node to add. The server index in the expanded NodeId shall be 0.
If the Server cannot use this NodeId, it rejects this node and returns the appropriate error code.
If the Client does not want to request a NodeId, it sets the value of this parameter to the null expanded NodeId.
If the node to add is a ReferenceType node, its NodeId should be a numeric id. See Part 3 of the OPC UA specification for a description of ReferenceType NodeIds.
The attributes that are specific to the NodeClass.
A Client is allowed to omit values for some or all attributes. If an attribute value is omitted, the Server shall use the default values from the TypeDefinitionNode. If a TypeDefinitionNode was not provided, the Server shall choose a suitable default value.
The Server may still add an optional attribute to the node with an appropriate default value even if the Client does not specify a value.
NodeId of the TypeDefinitionNode for the node to add.
This parameter shall be null for all node classes other than object and Variable, in which case it shall be provided.
A structure that is defined as the type of the results parameter of the AddNodes Service.
Field | DataType | ValueRank | Description |
---|---|---|---|
StatusCode | StatusCode | Scalar | StatusCode for the node to add. |
AddedNodeId | NodeId | Scalar | Server assigned NodeId of the added node. More... |
Server assigned NodeId of the added node.
Null NodeId if the operation failed.
A structure that is defined as the type of the referencesToAdd parameter of the AddReferences Service.
Field | DataType | ValueRank | Description |
---|---|---|---|
SourceNodeId | NodeId | Scalar | NodeId of the node to which the reference is to be added. More... |
ReferenceTypeId | NodeId | Scalar | NodeId of the ReferenceType that defines the reference. |
IsForward | Boolean | Scalar | If the value is TRUE, the Server creates a forward reference; if the value is FALSE, the Server creates an inverse Reference. |
TargetServerUri | String | Scalar | URI of the remote Server. More... |
TargetNodeId | ExpandedNodeId | Scalar | Expanded NodeId of the target node. |
TargetNodeClass | NodeClass | Scalar | NodeClass of the target node. More... |
NodeId of the node to which the reference is to be added.
The source node shall always exist in the Server to add the reference. The IsForward parameter can be set to FALSE if the target node is on the local Server and the source node on the remote Server.
URI of the remote Server.
If this parameter is not null, it overrides the serverIndex in the TargetNodeId.
NodeClass of the target node.
The Client shall specify this since the target node might not be accessible directly by the Server.
A structure that is defined as the type of the nodesToDelete parameter of the DeleteNodes Service.
Field | DataType | ValueRank | Description |
---|---|---|---|
NodeId | NodeId | Scalar | NodeId of the node to delete. |
DeleteTargetReferences | Boolean | Scalar | A boolean parameter indicating whether to delete references for which the node to delete is the target node. More... |
A boolean parameter indicating whether to delete references for which the node to delete is the target node.
It has the following values:
The Server cannot guarantee that it is able to delete all references from target nodes if this parameter is TRUE.
A structure that is defined as the type of the referencesToDelete parameter of the DeleteReferences service.
Field | DataType | ValueRank | Description |
---|---|---|---|
SourceNodeId | NodeId | Scalar | NodeId of the node that contains the reference to delete. |
ReferenceTypeId | NodeId | Scalar | NodeId of the ReferenceType that defines the reference to delete. |
IsForward | Boolean | Scalar | If the value is TRUE, the Server deletes a forward Reference. More... |
TargetNodeId | ExpandedNodeId | Scalar | NodeId of the target node of the reference. More... |
DeleteBidirectional | Boolean | Scalar | A boolean parameter indicating whether the opposite reference from the target node should be deleted together with the node to delete. More... |
If the value is TRUE, the Server deletes a forward Reference.
If the value is FALSE, the Server deletes an inverse Reference.
NodeId of the target node of the reference.
If the Server index indicates that the target node is a remote node, then the nodeId shall contain the absolute namespace URI. If the target node is a local node the nodeId shall contain the namespace index.
A boolean parameter indicating whether the opposite reference from the target node should be deleted together with the node to delete.
It has the following values:
An enumeration that specifies the direction of References to follow.
Enum String | Enum Value | Description |
---|---|---|
Forward | 0 | select only forward References |
Inverse | 1 | select only inverse References |
Both | 2 | select forward and inverse References |
Specifies a View.
Field | DataType | ValueRank | Description |
---|---|---|---|
ViewId | NodeId | Scalar | NodeId of the View to Query. A null value indicates the entire AddressSpace. |
Timestamp | DateTime | Scalar | The time date desired. More... |
ViewVersion | UInt32 | Scalar | The version number for the View desired. More... |
The time date desired.
The corresponding version is the one with the closest previous creation timestamp. Either the Timestamp or the viewVersion parameter may be set by a Client, but not both. If ViewVersion is set this parameter shall be null.
The version number for the View desired.
When Nodes are added to or removed from a View, the value of a View’s ViewVersion Property is updated. Either the Timestamp or the viewVersion parameter may be set by a Client, but not both. The ViewVersion Property is defined in Part 3. If timestamp is set this parameter shall be 0. The current view is used if timestamp is null and viewVersion is 0.
A structure defined as the type of the parameter nodesToBrowse of the Browse service.
Field | DataType | ValueRank | Description |
---|---|---|---|
NodeId | NodeId | Scalar | NodeId of the Node to be browsed. More... |
BrowseDirection | BrowseDirection | Scalar | An enumeration that specifies the direction of References to follow. More... |
ReferenceTypeId | NodeId | Scalar | Specifies the NodeId of the ReferenceType to follow. More... |
IncludeSubtypes | Boolean | Scalar | Indicates whether subtypes of the ReferenceType should be included in the browse. More... |
NodeClassMask | UInt32 | Scalar | Specifies the NodeClasses of the TargetNodes. More... |
ResultMask | UInt32 | Scalar | Specifies the fields in the ReferenceDescription structure that should be returned. More... |
NodeId of the Node to be browsed.
If a view is provided, it shall include this Node.
An enumeration that specifies the direction of References to follow.
The returned references do indicate the direction the Server followed in the isForward parameter of the ReferenceDescription.
Symmetric references are always considered to be in forward direction, therefore the isForward flag is always set to TRUE and symmetric references are not returned if browseDirection is set to INVERSE_1.
Specifies the NodeId of the ReferenceType to follow.
Only instances of this ReferenceType or its subtypes are returned.
If not specified, all References are returned and includeSubtypes is ignored.
Indicates whether subtypes of the ReferenceType should be included in the browse.
If TRUE, then instances of referenceTypeId and all of its subtypes are returned.
Specifies the NodeClasses of the TargetNodes.
Only TargetNodes with the selected NodeClasses are returned. The NodeClasses are assigned the following bits:
Bit | Node Class |
---|---|
0 | Object |
1 | Variable |
2 | Method |
3 | ObjectType |
4 | VariableType |
5 | ReferenceType |
6 | DataType |
7 | View |
If set to zero, then all NodeClasses are returned.
Specifies the fields in the ReferenceDescription structure 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 |
Reference parameters returned for the Browse Service.
Field | DataType | ValueRank | Description |
---|---|---|---|
ReferenceTypeId | NodeId | Scalar | NodeId of the ReferenceType that defines the Reference. |
IsForward | Boolean | Scalar | If the value is TRUE, the Server followed a forward Reference. If the value is FALSE, the Server followed an inverse Reference. |
NodeId | ExpandedNodeId | Scalar | NodeId of the TargetNode as assigned by the Server identified by the Server index. More... |
BrowseName | QualifiedName | Scalar | The BrowseName of the TargetNode. |
DisplayName | LocalizedText | Scalar | The DisplayName of the TargetNode. |
NodeClass | NodeClass | Scalar | NodeClass of the TargetNode. |
TypeDefinition | ExpandedNodeId | Scalar | Type definition NodeId of the TargetNode. More... |
NodeId of the TargetNode as assigned by the Server identified by the Server index.
If the serverIndex indicates that the TargetNode is a remote Node, then the nodeId shall contain the absolute namespace URI. If the TargetNode is a local Node the nodeId shall contain the namespace index.
Type definition NodeId of the TargetNode.
Type definitions are only available for the NodeClasses object and Variable. For all other NodeClasses a null NodeId shall be returned.
The results of a Browse operation.
Field | DataType | ValueRank | Description |
---|---|---|---|
StatusCode | StatusCode | Scalar | The status for the BrowseDescription. More... |
ContinuationPoint | ByteString | Scalar | A Server defined opaque value that identifies the continuation point. |
References | ReferenceDescription | Array | The set of references that meet the criteria specified in the BrowseDescription. More... |
The status for the BrowseDescription.
This value is set to Good if there are still references to return for the BrowseDescription.
The set of references that meet the criteria specified in the BrowseDescription.
Empty if no references met the criteria.
A sequence of References and BrowseNames to follow.
Each element in the sequence is processed by finding the targets and then using those targets as the starting nodes for the next element. The targets of the final element are the target of the RelativePath.
Field | DataType | ValueRank | Description |
---|---|---|---|
ReferenceTypeId | NodeId | Scalar | The type of reference to follow from the current node. More... |
IsInverse | Boolean | Scalar | Indicates whether the inverse Reference should be followed. The inverse reference is followed if this value is TRUE. |
IncludeSubtypes | Boolean | Scalar | Indicates whether subtypes of the ReferenceType should be followed. Subtypes are included if this value is TRUE. |
TargetName | QualifiedName | Scalar | The BrowseName of the target node. More... |
The type of reference to follow from the current node.
The current path cannot be followed any further if the referenceTypeId is not available on the Node instance.
If not specified, then all References are included and the parameter includeSubtypes is ignored.
The BrowseName of the target node.
The final element may have an empty targetName. In this situation all targets of the references identified by the referenceTypeId are the targets of the RelativePath.
The targetName shall be specified for all other elements.
The current path cannot be followed any further if no targets with the specified BrowseName exist.
Defines a sequence of References and BrowseNames to follow.
Field | DataType | ValueRank | Description |
---|---|---|---|
Elements | RelativePathElement | Array | A sequence of References and BrowseNames to follow. |
A structure that is defined as the type of the browsePaths parameter of the TranslateBrowsePathsToNodeIds service.
Field | DataType | ValueRank | Description |
---|---|---|---|
StartingNode | NodeId | Scalar | NodeId of the starting Node for the browse path. |
RelativePath | RelativePath | Scalar | The path to follow from the startingNode. More... |
The path to follow from the startingNode.
The last element in the relativePath shall always have a targetName specified. This further restricts the definition of the RelativePath type. The Server shall return Bad_BrowseNameInvalid if the targetName is missing.
A structure that is defined as the type of the targets parameter of the results parameter of the TranslateBrowsePathsToNodeIds service.
A Server may encounter a reference to a node in another Server which it cannot follow while it is processing the RelativePath. If this happens, the Server returns the NodeId of the external node and sets the remainingPathIndex parameter to indicate which RelativePath elements still need to be processed. To complete the operation the Client shall connect to the other Server and call this service again using the target as the startingNode and the unprocessed elements as the relativePath.
Field | DataType | ValueRank | Description |
---|---|---|---|
TargetId | ExpandedNodeId | Scalar | The identifier for a target of the RelativePath. |
RemainingPathIndex | UInt32 | Scalar | The index of the first unprocessed element in the RelativePath. More... |
The index of the first unprocessed element in the RelativePath.
This value shall be equal to the maximum value of Index data type if all elements were processed.
A structure that is defined as the type of the results parameter of the TranslateBrowsePathsToNodeIds service.
Field | DataType | ValueRank | Description |
---|---|---|---|
StatusCode | StatusCode | Scalar | StatusCode for the browse path. |
Targets | BrowsePathTarget | Array | List of targets for the relativePath from the startingNode. |
A structure that is defined as the type of the dataToReturn parameter of the nodeTypes parameter of the Query service.
Field | DataType | ValueRank | Description |
---|---|---|---|
RelativePath | RelativePath | Scalar | Browse path relative to the originating node that identifies the node which contains the data that is being requested, where the originating node is an instance node of the type defined by the type definition node. More... |
AttributeId | UInt32 | Scalar | The ID of the attribute. More... |
IndexRange | String | Scalar | Used to identify a single element of a structure or an array, or a single range of indexes for arrays. More... |
Browse path relative to the originating node that identifies the node which contains the data that is being requested, where the originating node is an instance node of the type defined by the type definition node.
The instance nodes are further limited by the filter provided as part of this call.
This relative path could end on a reference, in which case the ReferenceDescription of the reference would be returned as its value.
The targetName field of the relativePath may contain a type NodeId. This is done by setting the namespaceIndex of the targetName to zero and the name part of the targetName to the XML representation of the NodeId.
When matching instances are returned as the target node, the target node shall be an instance of the specified type or subtype of the specified type.
The ID of the attribute.
This shall be a valid attribute ID. If the RelativePath ended in a reference, this parameter is 0 and ignored by the server.
Used to identify a single element of a structure or an array, or a single range of indexes for arrays.
If a range of elements is specified, the values are returned as a composite. The first element is identified by index 0 (zero). This parameter is null if the specified attribute is not an array or a structure. However, if the specified attribute is an array or a structure and this parameter is null, all elements are to be included in the range.
A structure that is defined as the type of the nodeTypes parameter of the Query service.
Field | DataType | ValueRank | Description |
---|---|---|---|
TypeDefinitionNode | ExpandedNodeId | Scalar | NodeId of the originating TypeDefinitionNode of the instances for which data is to be returned. |
IncludeSubTypes | Boolean | Scalar | A flag that indicates whether the Server should include instances of subtypes of the TypeDefinitionNode in the list of instances of the node type. |
DataToReturn | QueryDataDescription | Array | Specifies an attribute or reference from the originating typeDefinitionNode along a given relativePath for which to return data. |
Defines the basic operators that can be used in a ContentFilter.
Enum String | Enum Value | Description |
---|---|---|
Equals | 0 | TRUE if operand[0] is equal to operand[1]. More... |
IsNull | 1 | TRUE if operand[0] is a null value. |
GreaterThan | 2 | TRUE if operand[0] is greater than operand[1]. More... |
LessThan | 3 | TRUE if operand[0] is less than operand[1]. More... |
GreaterThanOrEqual | 4 | TRUE if operand[0] is greater than or equal to operand[1]. More... |
LessThanOrEqual | 5 | TRUE if operand[0] is less than or equal to operand[1]. More... |
Like | 6 | TRUE if operand[0] matches a pattern defined by operand[1]. More... |
Not | 7 | TRUE if operand[0] is FALSE. More... |
Between | 8 | TRUE if operand[0] is greater or equal to operand[1] and less than or equal to operand[2]. More... |
InList | 9 | TRUE if operand[0] is equal to one or more of the remaining operands. More... |
And | 10 | TRUE if operand[0] and operand[1] are TRUE. More... |
Or | 11 | TRUE if operand[0] or operand[1] are TRUE. More... |
Cast | 12 | Converts operand[0] to a value with a data type with a NodeId identified by operand[1]. More... |
InView | 13 | TRUE if the target Node is contained in the View defined by operand[0]. More... |
OfType | 14 | TRUE if the target Node is of type operand[0] or of a subtype of operand[0]. More... |
RelatedTo | 15 | TRUE if the target Node is of type Operand[0] and is related to a NodeId of the type defined in Operand[1] by the Reference type defined in Operand[2]. More... |
BitwiseAnd | 16 | The result is an integer which matches the size of the largest operand and contains a bitwise And operation of the two operands where both have been converted to the same size (largest of the two operands). More... |
BitwiseOr | 17 | The result is an integer which matches the size of the largest operand and contains a bitwise Or operation of the two operands where both have been converted to the same size (largest of the two operands). More... |
TRUE if operand[0] is equal to operand[1].
If the operands are of different types, the system shall perform any implicit conversion to a common type. This operator resolves to FALSE if no implicit conversion is available and the operands are of different types. This operator returns FALSE if the implicit conversion fails.
TRUE if operand[0] is greater than operand[1].
The following restrictions apply to the operands:
The same conversion rules as defined for Equals apply.
TRUE if operand[0] is less than operand[1].
The same conversion rules and restrictions as defined for GreaterThan apply.
TRUE if operand[0] is greater than or equal to operand[1].
The same conversion rules and restrictions as defined for GreaterThan apply.
TRUE if operand[0] is less than or equal to operand[1].
The same conversion rules and restrictions as defined for GreaterThan apply.
TRUE if operand[0] matches a pattern defined by operand[1].
The following restrictions apply to the operands:
This operator resolves to FALSE if no operand can be resolved to a string.
TRUE if operand[0] is FALSE.
The following restrictions apply to the operands:
If the operand cannot be resolved to a Boolean, the result is a NULL.
TRUE if operand[0] is greater or equal to operand[1] and less than or equal to operand[2].
The following restrictions apply to the operands:
If the operands are of different types, the system shall perform any implicit conversion to match all operands to a common type. If no implicit conversion is available and the operands are of different types, the particular result is FALSE.
TRUE if operand[0] is equal to one or more of the remaining operands.
The Equals Operator is evaluated for operand[0] and each remaining operand in the list. If any Equals evaluation is TRUE, InList returns TRUE.
TRUE if operand[0] and operand[1] are TRUE.
The following restrictions apply to the operands:
If any operand cannot be resolved to a Boolean it is considered a NULL.
TRUE if operand[0] or operand[1] are TRUE.
The following restrictions apply to the operands:
If any operand cannot be resolved to a Boolean it is considered a NULL.
Converts operand[0] to a value with a data type with a NodeId identified by operand[1].
The following restrictions apply to the operands:
If there is any error in conversion or in any of the parameters then the Cast Operation evaluates to a NULL.
TRUE if the target Node is contained in the View defined by operand[0].
The following restrictions apply to the operands:
If operand[0] does not resolve to a NodeId that identifies a View Node, this operation shall always be False.
TRUE if the target Node is of type operand[0] or of a subtype of operand[0].
The following restrictions apply to the operands:
If operand[0] does not resolve to a NodeId that identifies an ObjectType or VariableType Node, this operation shall always be False.
TRUE if the target Node is of type Operand[0] and is related to a NodeId of the type defined in Operand[1] by the Reference type defined in Operand[2].
Operand[0] or Operand[1] can also point to an element Reference where the referred to element is another RelatedTo operator. This allows chaining of relationships (e.g. A is related to B is related to C), where the relationship is defined by the ReferenceType defined in Operand[2]. In this case, the referred to element returns a list of NodeIds instead of TRUE or FALSE. In this case if any errors occur or any of the operands cannot be resolved to an appropriate value, the result of the chained relationship is an empty list of nodes.
Operand[3] defines the number of hops for which the relationship should be followed. If Operand[3] is 1, then objects shall be directly related. If a hop is greater than 1, then a NodeId of the type described in Operand[1] is checked for at the depth specified by the hop. In this case, the type of the intermediate Node is undefined, and only the Reference type used to reach the end Node is defined. If the requested number of hops cannot be followed, then the result is FALSE, i.e., an empty Node list. If Operand[3] is 0, the relationship is followed to its logical end in a forward direction and each Node is checked to be of the type specified in Operand[1]. If any Node satisfies this criterion, then the result is TRUE, i.e., the NodeId is included in the sublist.
Operand [4] defines if Operands [0] and [1] should include support for subtypes of the types defined by these operands. A TRUE indicates support for subtypes Operand [5] defines if Operand [2] should include support for subtypes of the reference type. A TRUE indicates support for subtypes.
The following restrictions apply to the operands:
If none of the operands [0],[1],[2],[3] resolves to an appropriate value then the result of this operation shall always be False (or an Empty set in the case of a nested RelatedTo operand).
The result is an integer which matches the size of the largest operand and contains a bitwise And operation of the two operands where both have been converted to the same size (largest of the two operands).
The following restrictions apply to the operands:
If any operand cannot be resolved to an integer, it is considered a NULL.
The result is an integer which matches the size of the largest operand and contains a bitwise Or operation of the two operands where both have been converted to the same size (largest of the two operands).
The following restrictions apply to the operands:
If any operand cannot be resolved to an integer, it is considered a NULL.
A structure that is defined as the type of the elements parameter of the ContentFilter structure.
Field | DataType | ValueRank | Description |
---|---|---|---|
FilterOperator | FilterOperator | Scalar | Filter operator to be evaluated. |
FilterOperands | ExtensionObject | Array | Operands used by the selected operator. More... |
Operands used by the selected operator.
The number and use depend on the operators (see FilterOperator). This array needs at least one entry.
Defines a collection of elements that define filtering criteria.
Each element in the collection describes an operator and an array of operands to be used by the operator. See FilterOperator for a description of the operators that can be used in a ContentFilter. The filter is evaluated by evaluating the first entry in the element array starting with the first operand in the operand array. The operands of an element may contain References to subelements resulting in the evaluation continuing to the referenced elements in the element array. If an element cannot be traced back to the starting element it is ignored. Extra operands for any operator shall result in an error.
Field | DataType | ValueRank | Description |
---|---|---|---|
Elements | ContentFilterElement | Array | List of operators and their operands that compose the filter criteria. More... |
List of operators and their operands that compose the filter criteria.
The filter is evaluated by starting with the first entry in this array.
Provides the linking to subelements within a ContentFilter.
The link is in the form of an integer that is used to index into the array of elements contained in the ContentFilter. An index is considered valid if its value is greater than the element index it is part of and it does not reference a non-existent element. Clients shall construct filters in this way to avoid circular and invalid references. Servers should protect against invalid indexes by verifying the index prior to using it.
Field | DataType | ValueRank | Description |
---|---|---|---|
Index | UInt32 | Scalar | Index into the element array. |
Field | DataType | ValueRank | Description |
---|---|---|---|
Value | Variant | Scalar | A literal value. |
Attribute of a node in the address space.
Field | DataType | ValueRank | Description |
---|---|---|---|
NodeId | NodeId | Scalar | NodeId of a Node from the type system. |
Alias | String | Scalar | An optional parameter used to identify or refer to an alias. More... |
BrowsePath | RelativePath | Scalar | Browse path relative to the node identified by the nodeId parameter. |
AttributeId | UInt32 | Scalar | ID of the attribute. More... |
IndexRange | String | Scalar | This parameter is used to identify a single element of an array or a single range of indexes for an array. More... |
An optional parameter used to identify or refer to an alias.
An alias is a symbolic name that can be used to alias this operand and use it in other locations in the filter structure.
ID of the attribute.
This shall be a valid.
This parameter is used to identify a single element of an array or a single range of indexes for an array.
The first element is identified by index 0 (zero). This parameter is not used if the specified attribute is not an array. However, if the specified attribute is an array and this parameter is not used, then all elements are to be included in the range. The parameter is null if not used.
A simplified form of the AttributeOperand.
All of the rules that apply to the AttributeOperand also apply to the SimpleAttributeOperand.
Field | DataType | ValueRank | Description |
---|---|---|---|
TypeDefinitionId | NodeId | Scalar | NodeId of a TypeDefinitionNode. More... |
BrowsePath | QualifiedName | Array | A relative path to a Node. More... |
AttributeId | UInt32 | Scalar | ID of the Attribute. More... |
IndexRange | String | Scalar | This parameter is used to identify a single element of an array, or a single range of indexes for an array. More... |
NodeId of a TypeDefinitionNode.
This parameter restricts the operand to instances of the TypeDefinitionNode or one of its subtypes.
A relative path to a Node.
This parameter specifies a relative path using a list of browse names instead of the RelativePath structure used in the AttributeOperand. The list of browse names is equivalent to a relative path that specifies forward references which are subtypes of the HierarchicalReferences reference type.
All nodes followed by the browsePath shall be of the NodeClass object or variable.
If this list is empty, the node is the instance of the TypeDefinition.
ID of the Attribute.
The Value attribute shall be supported by all Servers. The support of other attributes depends on requirements set in Profiles or other parts of this specification.
This parameter is used to identify a single element of an array, or a single range of indexes for an array.
The first element is identified by index 0 (zero).
This parameter is ignored if the selected node is not a variable or the value of a variable is not an array.
The parameter is null if not specified.
All values in the array are used if this parameter is not specified.
A structure that is defined as the type of the elementResults parameter of the ContentFilterResult structure.
The size and order of the list matches the size and order of the elements in the ContentFilter parameter.
Field | DataType | ValueRank | Description |
---|---|---|---|
StatusCode | StatusCode | Scalar | The status code for a single element. |
OperandStatusCodes | StatusCode | Array | A list of status codes for the operands in an element. More... |
OperandDiagnosticInfos | DiagnosticInfo | Array | A list of diagnostic information for the operands in an element. More... |
A list of status codes for the operands in an element.
The size and order of the list matches the size and order of the operands in the ContentFilterElement. This list is empty if no operand errors occurred.
A list of diagnostic information for the operands in an element.
The size and order of the list matches the size and order of the operands in the ContentFilterElement. 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 operands. A list of diagnostic information for individual
A structure that contains any errors associated with the filter.
Field | DataType | ValueRank | Description |
---|---|---|---|
ElementResults | ContentFilterElementResult | Array | A list of results for individual elements in the filter. More... |
ElementDiagnosticInfos | DiagnosticInfo | Array | A list of diagnostic information for individual elements in the filter. More... |
A list of results for individual elements in the filter.
See ContentFilterElementResult.
A list of diagnostic information for individual elements in the filter.
The size and order of the list matches the size and order of the elements in the filter request 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 elements.
A structure that is defined as the type of the parsingResults parameter of the Query service.
Field | DataType | ValueRank | Description |
---|---|---|---|
StatusCode | StatusCode | Scalar | Parsing result for the requested NodeTypeDescription. |
DataStatusCodes | StatusCode | Array | List of results for dataToReturn. More... |
DataDiagnosticInfos | DiagnosticInfo | Array | List of diagnostic information dataToReturn. More... |
List of results for dataToReturn.
The size and order of the list matches the size and order of the dataToReturn request parameter. The array can be empty if no errors were encountered.
List of diagnostic information dataToReturn.
The size and order of the list matches the size and order of the dataToReturn request 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 query request.
An enumeration that specifies the Timestamp Attributes to be transmitted for MonitoredItems or Nodes in Read and HistoryRead.
OPC UA defines two timestamps, the source and the server timestamp. This parameter allows the client to define which timestamps the server should return with the value.
The source timestamp is only available for Value Attributes. The source timestamp is used to reflect the timestamp that was applied to a Variable value by the data source. It should indicate the last change of the value or status code. The source timestamp must be always generated by the same physical clock. This timestamp type was added for OPC UA to cover the use case to get the timestamp of the last value change which is different than the server timestamp definition.
The server timestamp is used to reflect the time that the server received a Variable value or knew it to be accurate if the changes are reported by exception and the connection to the data source is operating. This is the behavior expected by Classic OPC.
Enum String | Enum Value | Description |
---|---|---|
Source | 0 | Return the source timestamp. |
Server | 1 | Return the Server timestamp. |
Both | 2 | Return both the source and Server timestamps. |
Neither | 3 | Return neither timestamp. More... |
Return neither timestamp.
This is the default value for MonitoredItems if a Variable value is not being accessed.
For HistoryRead this is not a valid setting.
Identifier for an item to read or to monitor.
Field | DataType | ValueRank | Description |
---|---|---|---|
NodeId | NodeId | Scalar | NodeId of a Node. |
AttributeId | UInt32 | Scalar | Id of the Attribute. This shall be a valid Attribute id. More... |
IndexRange | String | Scalar | This parameter is used to identify a single element of an array, or a single range of indexes for arrays. More... |
DataEncoding | QualifiedName | Scalar | This parameter specifies the BrowseName of the DataTypeEncoding that the Server should use when returning the Value Attribute of a Variable. It is an error to specify this parameter for other Attributes. More... |
Id of the Attribute. This shall be a valid Attribute id.
The IntegerIds for the Attributes are defined in NodeAttributesMask.
This parameter is used to identify a single element of an array, or a single range of indexes for arrays.
If a range of elements is specified, the values are returned as a composite. The first element is identified by index 0 (zero).
This parameter is null if the specified Attribute is not an array. However, if the specified Attribute is an array, and this parameter is null, then all elements are to be included in the range.
This parameter specifies the BrowseName of the DataTypeEncoding that the Server should use when returning the Value Attribute of a Variable. It is an error to specify this parameter for other Attributes.
A Client can discover what DataTypeEncodings are available by following the HasEncoding Reference from the DataType Node for a Variable.
OPC UA defines BrowseNames which Servers shall recognize even if the DataType Nodes are not visible in the Server address space. These BrowseNames are:
Each DataType shall support at least one of these encodings. DataTypes that do not have a true binary encoding (e.g. they only have a non-XML text encoding) should use the DefaultBinary name to identify the encoding that is considered to be the default non-XML encoding. DataTypes that support at least one XML-based encoding shall identify one of the encodings as the DefaultXML encoding. Other standards bodies may define other well-known data encodings that could be supported.
If this parameter is not specified then the Server shall choose either the DefaultBinary or DefaultXML encoding according to what Message encoding (see Part 6 of the OPC UA Specification) is used for the Session. If the Server does not support the encoding that matches the Message encoding then the Server shall choose the default encoding that it does support.
If this parameter is specified for a MonitoredItem, the Server shall set the StructureChanged bit in the StatusCode if the DataTypeEncoding changes. The DataTypeEncoding changes if the DataTypeVersion of the DataTypeDescription or the DataTypeDictionary associated with the DataTypeEncoding changes.
A structure that is defined as the type of the nodesToRead parameter of the HistoryRead Service.
Field | DataType | ValueRank | Description |
---|---|---|---|
NodeId | NodeId | Scalar | The nodeId to be read depends on HistoryReadDetails. More... |
IndexRange | String | Scalar | This parameter is used to identify a single element of an array, or a single range of indexes for arrays. More... |
DataEncoding | QualifiedName | Scalar | A QualifiedName that specifies the data encoding to be returned for the Value to be read. More... |
ContinuationPoint | ByteString | Scalar | For each NodeToRead this parameter specifies a continuation point returned from a previous HistoryRead call, allowing the Client to continue that read from the last value received. More... |
The nodeId to be read depends on HistoryReadDetails.
If HistoryReadDetails is
If the Node does not support the requested access for historical values or historical events, the appropriate error response for the given node shall be generated.
This parameter is used to identify a single element of an array, or a single range of indexes for arrays.
If a range of elements is specified, the values are returned as a composite. The first element is identified by index 0 (zero).
This parameter is null if the value is not an array. However, if the value is an array, and this parameter is null, then all elements are to be included in the range.
A QualifiedName that specifies the data encoding to be returned for the Value to be read.
See ReadValueId for a definition on how to specify the data encoding.
The parameter is ignored when reading history of Events.
For each NodeToRead this parameter specifies a continuation point returned from a previous HistoryRead call, allowing the Client to continue that read from the last value received.
The HistoryRead is used to select an ordered sequence of historical values or events. A continuation point marks a point in that ordered sequence, such that the Server returns the subset of the sequence that follows that point.
A null value indicates that this parameter is not used.
This continuation point is described in more detail in Part 11 of the OPC UA Specification.
A structure that is defined as the type of the results parameter of the HistoryRead Service.
Field | DataType | ValueRank | Description |
---|---|---|---|
StatusCode | StatusCode | Scalar | StatusCode for the nodesToRead item. |
ContinuationPoint | ByteString | Scalar | This parameter is used only if the number of values to be returned is too large to be returned in a single response or if the timeout provided as hint by the Client is close to expiring and not all nodes have been processed. More... |
HistoryData | ExtensionObject | Scalar | The history data returned for the node. More... |
This parameter is used only if the number of values to be returned is too large to be returned in a single response or if the timeout provided as hint by the Client is close to expiring and not all nodes have been processed.
If this parameter is not used, its value is null.
Servers shall support at least one continuation point per Session. Servers specify a maximum number of history continuation points per Session in the Server capabilities object defined in Part 5 of the OPC UA specification. A continuation point shall remain active until the Client passes the continuation point to HistoryRead or the Session is closed. If the maximum number of continuation points have been reached, the oldest continuation point shall be reset.
The history data returned for the node.
The HistoryData parameter type is an extensible parameter type formally defined in Part 11 of the OPC UA Specification. It specifies the types of history data that can be returned.
A structure that is defined as the type of the nodesToWrite parameter of the Write service.
Field | DataType | ValueRank | Description |
---|---|---|---|
NodeId | NodeId | Scalar | NodeId of the node that contains the attributes. |
AttributeId | UInt32 | Scalar | Id of the attribute. More... |
IndexRange | String | Scalar | This parameter is used to identify a single element of an array, or a single range of indexes for arrays. More... |
Value | DataValue | Scalar | The node’s attribute value. More... |
Id of the attribute.
This shall be a valid attribute id.
The IntegerIds for the Attributes are defined in NodeAttributesMask.
This parameter is used to identify a single element of an array, or a single range of indexes for arrays.
The first element is identified by index 0 (zero).
This parameter is not used if the specified attribute is not an array. However, if the specified attribute is an array and this parameter is not used, then all elements are to be included in the range. The parameter is null if not used.
The node’s attribute value.
If the indexRange parameter is specified, the Value shall be an array even if only one element is being written.
If the SourceTimestamp or the ServerTimestamp is specified, the Server shall use these values. The Server returns a Bad_WriteNotSupported error if it does not support writing of timestamps.
A Server shall return a Bad_TypeMismatch error if the data type of the written value is not the same type or subtype as the attribute’s DataType. Based on the DataType hierarchy, subtypes of the attribute DataType shall be accepted by the Server. For the value attribute the DataType is defined through the DataType attribute. A ByteString is structurally the same as a one dimensional array of Byte. A Server shall accept a ByteString if an array of Byte is expected.
The Server returns a Bad_DataEncodingUnsupported error if it does not support writing of the passed data encoding.
A structure that is defined as the type of the results parameter of the HistoryUpdate Service.
The size and order of the list matches the size and order of the details element of the historyUpdateDetails parameter specified in the request.
Field | DataType | ValueRank | Description |
---|---|---|---|
StatusCode | StatusCode | Scalar | StatusCode for the update of the node. |
OperationResults | StatusCode | Array | List of StatusCodes for the operations to be performed on a node. More... |
DiagnosticInfos | DiagnosticInfo | Array | List of diagnostic information for the operations to be performed on a node. More... |
List of StatusCodes for the operations to be performed on a node.
The size and order of the list matches the size and order of any list defined by the details element being reported by this updateResults entry.
List of diagnostic information for the operations to be performed on a node.
The size and order of the list matches the size and order of any list defined by the details element being reported by this updateResults entry. 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.
A structure that is defined as the type of the methodsToCall parameter of the Call service.
Field | DataType | ValueRank | Description |
---|---|---|---|
ObjectId | NodeId | Scalar | The NodeId shall be that of the object or ObjectType that is the source of a HasComponent Reference (or subtype of HasComponent Reference) to the method specified in methodId. More... |
MethodId | NodeId | Scalar | NodeId of the method to invoke. More... |
InputArguments | Variant | Array | List of input argument values. More... |
The NodeId shall be that of the object or ObjectType that is the source of a HasComponent Reference (or subtype of HasComponent Reference) to the method specified in methodId.
See Part 3 of the OPC UA Specification for a description of objects and their methods.
NodeId of the method to invoke.
If the objectId is the NodeId of an object, it is allowed to use the NodeId of a method that is the target of a HasComponent Reference from the ObjectType of the object.
List of input argument values.
An empty list indicates that there are no input arguments. The size and order of this list matches the size and order of the input arguments defined by the input InputArguments Property of the method.
The name, a description and the data type of each argument are defined by the Argument structure in each element of the method’s InputArguments Property.
A structure that is defined as the type of the results parameter of the Call service.
Field | DataType | ValueRank | Description |
---|---|---|---|
StatusCode | StatusCode | Scalar | StatusCode of the method executed in the server. More... |
InputArgumentResults | StatusCode | Array | List of StatusCodes for each inputArgument. |
InputArgumentDiagnosticInfos | DiagnosticInfo | Array | List of diagnostic information for each inputArgument. More... |
OutputArguments | Variant | Array | List of output argument values. More... |
StatusCode of the method executed in the server.
This StatusCode is set to the Bad_InvalidArgument StatusCode if at least one input argument broke a constraint (e.g. wrong data type, value out of range).
This StatusCode is set to a bad StatusCode if the method execution failed in the server, e.g. based on an exception or an HRESULT.
List of diagnostic information for each inputArgument.
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.
List of output argument values.
An empty list indicates that there are no output arguments. The size and order of this list matches the size and order of the output arguments defined by the OutputArguments Property of the method.
The name, a description and the data type of each argument are defined by the Argument structure in each element of the methods OutputArguments Property.
An enumeration that specifies whether sampling and reporting are enabled or disabled for a MonitoredItem.
The value of the publishing enabled parameter for a Subscription does not affect the value of the monitoring mode for a MonitoredItem of the Subscription.
Enum String | Enum Value | Description |
---|---|---|
Disabled | 0 | The item being monitored is not sampled or evaluated, and Notifications are not generated or queued. Notification reporting is disabled. |
Sampling | 1 | The item being monitored is sampled and evaluated, and Notifications are generated and queued. Notification reporting is disabled. |
Reporting | 2 | The item being monitored is sampled and evaluated, and Notifications are generated and queued. Notification reporting is enabled. |
A value that defines the Deadband type and behaviour.
Enum String | Enum Value | Description |
---|---|---|
None | 0 | No Deadband calculation should be applied. |
Absolute | 1 | An AbsoluteDeadband is used. More... |
Percent | 2 | A PercentDeadband is used. More... |
An AbsoluteDeadband is used.
For this type the deadbandValue contains the absolute change in a data value that shall cause a Notification to be generated. This parameter applies only to Variables with any Number data type.
An exception that causes a DataChange Notification based on an AbsoluteDeadband is determined as follows:
Generate a Notification if (absolute value of (last cached value - current value) > AbsoluteDeadband)
The last cached value is defined as the last value pushed to the queue.
If the item is an array of values, the entire array is returned if any array element exceeds the AbsoluteDeadband, or the size or dimension of the array changes.
A PercentDeadband is used.
For this type of deadband the deadbandValue is defined as the percent age of the EURange. That is, it applies only to AnalogItems with an EURange Property that defines the typical value range for the item. This range shall be multiplied with the deadbandValue and then compared to the actual value change to determine the need for a data change notification. The following pseudo code shows how the deadband is calculated:
DataChange if (absolute value of (last cached value - current value) > (deadbandValue/100.0) * ((high–low) of EURange)))
The range of the deadbandValue is from 0.0 to 100.0 Percent. Specifying a deadbandValue outside of this range will be rejected and reported with the StatusCode Bad_DeadbandFilterInvalid.
If the Value of the MonitoredItem is an array, then the deadband calculation logic shall be applied to each element of the array. If an element that requires a DataChange is found, then no further deadband checking is necessary and the entire array shall be returned.
Provides for the filtering and content selection of Event Subscriptions.
Field | DataType | ValueRank | Description |
---|---|---|---|
SelectClauses | SimpleAttributeOperand | Array | List of the values to return with each event in a notification. More... |
WhereClause | ContentFilter | Scalar | Limit the Notifications to those events that match the criteria defined by this ContentFilter. More... |
List of the values to return with each event in a notification.
At least one valid clause shall be specified.
Limit the Notifications to those events that match the criteria defined by this ContentFilter.
The AttributeOperand structure may not be used in an EventFilter.
A structure that is defined as the type of the aggregateConfiguration parameter of the AggregateFilter structure.
Field | DataType | ValueRank | Description |
---|---|---|---|
UseServerCapabilitiesDefaults | Boolean | Scalar | A Boolean parameter indicating whether to use default aggregate configuration settings. More... |
TreatUncertainAsBad | Boolean | Scalar | Indicates how the server treats data returned with a StatusCode severity Uncertain with respect to Aggregate calculations. More... |
PercentDataBad | Byte | Scalar | Indicates the minimum percentage of bad data in a given interval required for the StatusCode for the given interval for processed data request to be set to Bad. More... |
PercentDataGood | Byte | Scalar | Indicates the minimum percentage of Good data in a given interval required for the StatusCode for the given interval for the processed data requests to be set to Good. More... |
UseSlopedExtrapolation | Boolean | Scalar | Indicates how the server interpolates data when no boundary value exists (i.e. extrapolating into the future from the last known value). More... |
A Boolean parameter indicating whether to use default aggregate configuration settings.
Indicates how the server treats data returned with a StatusCode severity Uncertain with respect to Aggregate calculations.
It has the following values:
A value of True indicates the server
The default value is True. Note that the value is still treated as Uncertain when the StatusCode for the result is calculated.
Indicates the minimum percentage of bad data in a given interval required for the StatusCode for the given interval for processed data request to be set to Bad.
Uncertain is treated as defined in TreatUncertainAsBad. For details on which Aggregates use the PercentDataBad Variable, see the definition of each Aggregate. The default value is 100.
The PercentDataGood and PercentDataBad must follow the following relationship
PercentDataGood >= (100 – PercentDataBad).
If they are equal, the result of the PercentDataGood calculation is used.
Indicates the minimum percentage of Good data in a given interval required for the StatusCode for the given interval for the processed data requests to be set to Good.
For details on which Aggregates use the PercentDataGood Variable, see the definition of each Aggregate. The default value is 100.
The PercentDataGood and PercentDataBad must follow the following relationship
PercentDataGood >= (100 – PercentDataBad).
If they are equal, the result of the PercentDataGood calculation is used.
Indicates how the server interpolates data when no boundary value exists (i.e. extrapolating into the future from the last known value).
The default value is False. For SimpleBounds this value is ignored.
This is the MonitoringFilterResult associated with the EventFilter MonitoringFilter.
Field | DataType | ValueRank | Description |
---|---|---|---|
SelectClauseResults | StatusCode | Array | List of status codes for the elements in the select clause. More... |
SelectClauseDiagnosticInfos | DiagnosticInfo | Array | A list of diagnostic information for individual elements in the select clause. More... |
WhereClauseResult | ContentFilterResult | Scalar | Any results associated with the whereClause request parameter. |
List of status codes for the elements in the select clause.
The size and order of the list matches the size and order of the elements in the selectClauses request parameter. The Server returns null for unavailable or rejected Event fields.
A list of diagnostic information for individual elements in the select clause.
The size and order of the list matches the size and order of the elements in the selectClauses request 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 select clauses.
Parameters that define the monitoring characteristics of a MonitoredItem.
Field | DataType | ValueRank | Description |
---|---|---|---|
ClientHandle | UInt32 | Scalar | Client-supplied id of the MonitoredItem. More... |
SamplingInterval | Double | Scalar | The interval in milliseconds that defines the fastest rate at which the MonitoredItem(s) should be accessed and evaluated. More... |
Filter | ExtensionObject | Scalar | A filter used by the Server to determine if the MonitoredItem should generate a Notification. More... |
QueueSize | UInt32 | Scalar | The requested size of the MonitoredItem queue. More... |
DiscardOldest | Boolean | Scalar | A boolean parameter that specifies the discard policy when the queue is full and a new Notification is to be enqueued. More... |
Client-supplied id of the MonitoredItem.
This id is used in Notifications generated for the list Node.
The interval in milliseconds that defines the fastest rate at which the MonitoredItem(s) should be accessed and evaluated.
The value 0 indicates that the Server should use the fastest practical rate.
The value -1 indicates that the default sampling interval defined by the publishing interval of the Subscription is requested. A different sampling interval is used if the publishing interval is not a supported sampling interval. Any negative number is interpreted as -1. The sampling interval is not changed if the publishing interval is changed by a subsequent call to the ModifySubscription Service.
The Server uses this parameter to assign the MonitoredItems to a sampling interval that it supports.
The assigned interval is provided in the revisedSamplingInterval parameter. The Server shall always return a revisedSamplingInterval that is equal or higher than the requested samplingInterval. If the requested samplingInterval is higher than the maximum sampling interval supported by the Server, the maximum sampling interval is returned.
A filter used by the Server to determine if the MonitoredItem should generate a Notification.
If not used, this parameter is null. The MonitoringFilter parameter type is an extensible parameter type. It specifies the types of filters that can be used.
The requested size of the MonitoredItem queue.
The following values have special meaning for data monitored items:
For values larger than one a first-in-first-out queue is to be used. The Server may limit the size in revisedQueueSize. In the case of a queue overflow, the Overflow bit (flag) in the InfoBits portion of the DataValue statusCode is set in the new value.
The following values have special meaning for event monitored items:
If a Client chooses a value between the minimum and maximum settings of the Server the value shall be returned in the revisedQueueSize. If the requested queueSize is outside the minimum or maximum, the Server shall return the corresponding bounding value.
In the case of a queue overflow, an Event of the type EventQueueOverflowEventType is generated.
A boolean parameter that specifies the discard policy when the queue is full and a new Notification is to be enqueued.
It has the following values:
A structure that is defined as the type of the results parameter of the CreateMonitoredItems service.
Field | DataType | ValueRank | Description |
---|---|---|---|
StatusCode | StatusCode | Scalar | StatusCode for the MonitoredItem to create. |
MonitoredItemId | UInt32 | Scalar | Server-assigned ID for the MonitoredItem. More... |
RevisedSamplingInterval | Double | Scalar | The actual sampling interval that the Server will use. More... |
RevisedQueueSize | UInt32 | Scalar | The actual queue size that the Server will use. |
FilterResult | ExtensionObject | Scalar | Contains any revised parameter values or error results associated with the MonitoringFilter specified in the request. More... |
Server-assigned ID for the MonitoredItem.
This ID is unique within the Subscription, but might not be unique within the Server or Session. This parameter is present only if the statusCode indicates that the MonitoredItem was successfully created.
The actual sampling interval that the Server will use.
This value is based on a number of factors, including capabilities of the underlying system. The Server shall always return a revisedSamplingInterval that is equal or higher than the requestedSamplingInterval. If the requested samplingInterval is higher than the maximum sampling interval supported by the Server, the maximum sampling interval is returned.
Contains any revised parameter values or error results associated with the MonitoringFilter specified in the request.
This parameter may be omitted if no errors occurred. The MonitoringFilterResult parameter type is an extensible parameter type.
A structure that is defined as the type of the itemsToModify parameter of the ModifyMonitoredItems service.
Field | DataType | ValueRank | Description |
---|---|---|---|
MonitoredItemId | UInt32 | Scalar | Server-assigned ID for the MonitoredItem. |
RequestedParameters | MonitoringParameters | Scalar | The requested values for the monitoring parameters. More... |
The requested values for the monitoring parameters.
If the number of notifications in the queue exceeds the new queue size, the notifications exceeding the size shall be discarded following the configured discard policy.
A structure that is defined as the type of the results parameter of the ModifyMonitoredItems service.
Field | DataType | ValueRank | Description |
---|---|---|---|
StatusCode | StatusCode | Scalar | StatusCode for the MonitoredItem to be modified. |
RevisedSamplingInterval | Double | Scalar | The actual sampling interval that the Server will use. More... |
RevisedQueueSize | UInt32 | Scalar | The actual queue size that the Server will use. |
FilterResult | ExtensionObject | Scalar | Contains any revised parameter values or error results associated with the MonitoringFilter specified in the request. More... |
The actual sampling interval that the Server will use.
The Server returns the value it will actually use for the sampling interval. This value is based on a number of factors, including capabilities of the underlying system.
The Server shall always return a revisedSamplingInterval that is equal or higher than the requested samplingInterval. If the requestedSamplingInterval is higher than the maximum sampling interval supported by the Server, the maximum sampling interval is returned.
Contains any revised parameter values or error results associated with the MonitoringFilter specified in the request.
This parameter may be omitted if no errors occurred. The MonitoringFilterResult parameter type is an extensible parameter type.
A structure that is defined as the type of the subscriptionAcknowledgements parameter of the Publish service.
Field | DataType | ValueRank | Description |
---|---|---|---|
SubscriptionId | UInt32 | Scalar | The Server assigned identifier for a Subscription. |
SequenceNumber | UInt32 | Scalar | The sequence number being acknowledged. More... |
The sequence number being acknowledged.
The Server may delete the message with this sequence number from its retransmission queue.
A structure that is defined as the type of the results parameter of the TransferSubscriptions service.
Field | DataType | ValueRank | Description |
---|---|---|---|
StatusCode | StatusCode | Scalar | StatusCode for each Subscription to be transferred. |
AvailableSequenceNumbers | UInt32 | Array | A list of sequence number ranges that identify NotificationMessages that are in the Subscription’s retransmission queue. More... |
A list of sequence number ranges that identify NotificationMessages that are in the Subscription’s retransmission queue.
This parameter is null if the transfer of the Subscription failed.