.NET Based OPC UA Client/Server SDK  2.6.1.422
Object Types

BaseObjectType

The BaseObjectType is used as type definition whenever there is an object having no more concrete type definitions available.

Servers should avoid using this ObjectType and use a more specific type, if possible. This ObjectType is the base ObjectType and all other ObjectTypes shall either directly or indirectly inherit from it. However, it might not be possible for Servers to provide all HasSubtype References from this ObjectType to its subtypes, and therefore it is not required to provide this information.

FolderType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype ObjectType BaseObjectType  

Instances of this Type are used to organise the AddressSpace into a hierarchy of Nodes.

They represent the root Node of a subtree, and have no other semantics associated with them. However, the DisplayName of an instance of the FolderType, such as “ObjectTypes”, should imply the semantics associated with the use of it. There are no References specified for this ObjectType.

DataTypeSystemType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype ObjectType BaseObjectType  

Used as type for DataTypeSystems.

See Part 3 of the OPC UA Specification for a definition of DataTypeSystems.

DataTypeEncodingType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype ObjectType BaseObjectType  

Used as type for DataTypeEncodings.

Different kinds of DataTypes are handled differently regarding their encoding and whether this encoding is represented in the AddressSpace.

Built-in DataTypes are a fixed set of DataTypes (see Part 6 of the OPC UA Specification for a complete list of Built-in DataTypes). They have no encodings visible in the AddressSpace since the encoding should be known to all OPC UA products. Examples of Built-in DataTypes are Int32 and Double.

Simple DataTypes are subtypes of the Built-in DataTypes. They are handled on the wire like the Built-in DataType, i.e. they cannot be distinguished on the wire from their Built-in supertypes. Since they are handled like Built-in DataTypes regarding the encoding they cannot have encodings defined in the AddressSpace. Clients can read the DataType Attribute of a Variable or VariableType to identify the Simple DataType of the Value Attribute. An example of a Simple DataType is Duration. It is handled on the wire as a Double but the Client can read the DataType Attribute and thus interpret the value as defined by Duration.

Structured DataTypes are DataTypes that represent structured data and are not defined as Built-in DataTypes. Structured DataTypes inherit directly or indirectly from the DataType Structure. Structured DataTypes may have several encodings and the encodings are exposed in the AddressSpace. How the encoding of Structured DataTypes is handled on the wire is defined in Part 6 of the OPC UA Specification. The encoding of the Structured DataType is transmitted with each value, thus Clients are aware of the DataType without reading the DataType Attribute. The encoding has to be transmitted so the Client is able to interpret the data. An example of a Structured DataType is Argument.

Enumeration DataTypes are DataTypes that represent discrete sets of named values. Enumerations are always encoded as Int32 on the wire as defined in Part 6 of the OPC UA Specification. Enumeration DataTypes inherit directly or indirectly from the DataType Enumeration. Enumerations have no encodings exposed in the AddressSpace. To expose the human-readable representation of an enumerated value the DataType Node may have the EnumStrings Property that contains an array of LocalizedText. The Integer representation of the enumeration value points to a position within that array. The EnumValues Property can be used instead of the EnumStrings to support integer representation of enumerations that are not zero-based or have gaps. It contains an array of a Structured DataType containing the integer representation as well as the human-readable representation. An example of an enumeration DataType containing a sparse list of Integers is NodeClass.

In addition to the DataTypes described above, abstract DataTypes are also supported, which do not have any encodings and cannot be exchanged on the wire. Variables and VariableTypes use abstract DataTypes to indicate that their Value may be any one of the subtypes of the abstract DataType. An example of an abstract DataType is Integer.

ModellingRuleType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype ObjectType BaseObjectType  
HasProperty Variable NamingRule NamingRuleType Scalar PropertyType Mandatory

Used as the type for ModelingRules.

ModellingRules are defined in Part 3 of the OPC UA Specification.

Variable NamingRule

Identifies the NamingRule of a ModellingRule.

The NamingRule is defined in Part 3 of the OPC UA Specification.

ServerType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype ObjectType BaseObjectType  
HasProperty Variable Auditing Boolean Scalar PropertyType Mandatory
HasProperty Variable EstimatedReturnTime DateTime Scalar PropertyType Optional
HasComponent Method GetMonitoredItems Optional
HasProperty Variable NamespaceArray String OneDimension PropertyType Mandatory
HasComponent Object Namespaces NamespacesType Optional
HasComponent Method RequestServerStateChange Optional
HasComponent Method ResendData Optional
HasProperty Variable ServerArray String OneDimension PropertyType Mandatory
HasComponent Object ServerCapabilities ServerCapabilitiesType Mandatory
HasComponent Object ServerDiagnostics ServerDiagnosticsType Mandatory
HasComponent Object ServerRedundancy ServerRedundancyType Mandatory
HasComponent Variable ServerStatus ServerStatusDataType Scalar ServerStatusType Mandatory
HasProperty Variable ServiceLevel Byte Scalar PropertyType Mandatory
HasComponent Method SetSubscriptionDurable Optional
HasComponent Object VendorServerInfo VendorServerInfoType Mandatory

Defines the capabilities supported by the OPC UA Server.

Variable ServerArray

Defines an array of Server URIs.

This Variable is also referred to as the server table. Each URI in this array represents a globally-unique logical name for a Server within the scope of the network in which it is installed. Each OPC UA Server instance has a single URI that is used in the server table of other OPC UA Servers. Index 0 is reserved for the URI of the local Server. Values above 0 are used to identify remote Servers and are specific to a Server. Part 4 of the OPC UA Specification describes discovery mechanism that can be used to resolve URIs into URLs. The Server URI is case sensitive.

The URI of the ServerArray with index 0 shall be identical to the URI of the NamespaceArray with index 1, since both represent the local Server. The indexes into the server table are referred to as server indexes or server names. They are used in OPC UA Services to identify target nodes of references that reside in remote Servers.

Clients may read the entire table or they may read individual entries in the table. The Server shall not modify or delete entries of this table while any client has an open session to the Server, because clients may cache the server table. A Server may add entries to the server table even if clients are connected to the Server.

Variable NamespaceArray

Defines an array of namespace URIs.

This variable is also referred as namespace table. The indexes into the namespace table are referred to as namespace indexes. Namespace indexes are used in NodeIds in OPC UA Services, rather than the longer namespace URI. Index 0 is reserved for the OPC UA namespace, and index 1 is reserved for the local Server. Clients may read the entire namespace table or they may read individual entries in the namespace table. The Server shall not modify or delete entries of the namespace table while any client has an open session to the Server, because clients may cache the namespace table. A Server may add entries to the namespace table even if clients are connected to the Server. It is recommended that Servers not change the indexes of the namespace table but only add entries, because the client may cache NodeIds using the indexes.

Nevertheless, it might not always be possible for Servers to avoid changing indexes in the namespace table. Clients that cache namespace indexes of NodeIds should always check when starting a session to verify that the cached namespace indexes have not changed.

Variable ServerStatus

Contains elements that describe the status of the Server.

See ServerStatusDataType for a description of its elements.

Variable ServiceLevel

Describes the ability of the Server to provide its data to the client.

The value range is from 0 to 255, where 0 indicates the worst and 255 indicates the best. Part 4 of the OPC UA Specification defines required sub-ranges for different scenarios. The intent is to provide the clients an indication of availability among redundant Servers.

Object ServerCapabilities

Defines the capabilities supported by the OPC UA Server.

See ServerCapabilitiesType for its description.

Object ServerDiagnostics

Defines diagnostic information about the OPC UA Server.

See ServerDiagnosticsType for its description.

Object VendorServerInfo

Represents the browse entry point for vendor-defined Server information.

This object is required to be present even if there are no vendor-defined objects beneath it. See VendorServerInfoType for its description.

Object ServerRedundancy

Describes the redundancy capabilities provided by the Server.

This object is required even if the Server does not provide any redundancy support. If the Server supports redundancy, then a subtype of ServerRedundancyType is used to describe its capabilities. Otherwise, it provides an object of type ServerRedundancyType with the property RedundancySupport set to none. See also the description of ServerRedundancyType.

Variable Auditing

A Boolean specifying if the Server is currently generating audit events.

It is set to TRUE if the Server generates audit events, otherwise to false. The profiles defined in Part 7 of the OPC UA Specification specify what kind of audit events are generated by the Server.

Method GetMonitoredItems

Used to identify the monitored items of a subscription.

The intended usage is defined in Part 4 of the OPC UA Specification.

Method Result Codes:

Result Code Description
Bad_SubscriptionIdInvalid The subscription id is not valid.
Bad_UserAccessDenied User does not have permission to perform the requested operation. The Method was not called in the context of the Session that owns the Subscription.

Input Arguments

Argument DataType ValueRank Description
SubscriptionId UInt32 Scalar Identifier of the subscription.

Output Arguments

Argument DataType ValueRank Description
ServerHandles UInt32 OneDimension Array of server handles for all monitored items of the subscription identified by SubscriptionId.
ClientHandles UInt32 OneDimension Array of client handles for all monitored items of the subscription identified by SubscriptionId

Object Namespaces

Provides a list of NamespaceMetadataType objects with additional information about the namespaces used in the Server.

See also the description of NamespaceMetadataType.

Method SetSubscriptionDurable

Used to set a subscription into a mode where monitored item data and event queues are stored and delivered even if an OPC UA Client was disconnected for a longer time or the OPC UA Server was restarted.

The intended usage is defined in Part 4 of the OPC UA Specification.

Method Result Codes:

Result Code Description
Bad_SubscriptionIdInvalid The subscription id is not valid.
Bad_InvalidState The operation cannot be completed because the object is closed, uninitialized or in some other invalid state. This is returned when a Subscription already contains MonitoredItems.
Bad_UserAccessDenied User does not have permission to perform the requested operation. The Method was not called in the context of the Session that owns the Subscription.

Input Arguments

Argument DataType ValueRank Description
SubscriptionId UInt32 Scalar Identifier of the subscription.
LifetimeInHours UInt32 Scalar The requested lifetime in hours for the durable subscription.

Output Arguments

Argument DataType ValueRank Description
RevisedLifetimeInHours UInt32 Scalar The revised lifetime in hours the server applied to the durable subscription.

Method ResendData

Used to get the latest values of the data monitored items of a Subscription.

The intended usage is defined in Part 4 of the OPC UA Specification.

Method Result Codes:

Result Code Description
Bad_SubscriptionIdInvalid The subscription id is not valid.
Bad_UserAccessDenied User does not have permission to perform the requested operation. The Method was not called in the context of the Session that owns the Subscription.

Input Arguments

Argument DataType ValueRank Description
SubscriptionId UInt32 Scalar Identifier of the subscription to refresh.

Variable EstimatedReturnTime

Indicates the time at which the Server is expected to have a ServerStatus.State of RUNNING_0.

A Client that observes a shutdown or a ServiceLevel of 0 should either wait until after this time to attempt to reconnect to this Server or enter into slow retry logic. For example, most Clients will attempt to reconnect after a failure immediately and then progressively increase the delay between attempts until some maximum delay. This time can be used to trigger the Client to start its reconnect logic with some delay.

Method RequestServerStateChange

Allows a Client to request a state change in the Server.

The intended usage is defined in Part 4 of the OPC UA Specification.

The Client shall provide credentials with administrative rights when invoking this method on the Server.

Method Result Codes:

Result Code Description
Bad_UserAccessDenied The current user is not authorized to invoke the method.
Bad_InvalidState The requested state was not accepted by the server.

Input Arguments

Argument DataType ValueRank Description
State ServerState Scalar The requested target state for the Server.
If the new state is accepted by the Server, the state in the ServerStatus is updated with the new value.
EstimatedReturnTime DateTime Scalar Indicates the time at which the Server is expected to be available in the state RUNNING_0.
If no estimate is known, a null DateTime shall be provided. This time will be available in the EstimatedReturnTime property. This parameter shall be ignored by the Server and the property EstimatedReturnTime shall be set to null if the new state is RUNNING_0.
SecondsTillShutdown UInt32 Scalar The number of seconds until a Server shutdown.
This parameter is ignored unless the state is set to SHUTDOWN_4 or restart is set to true.
Reason LocalizedText Scalar A localized text string that describes the reason for the state change request.
Restart Boolean Scalar A flag indicating if the Server should be restarted before it attempts to change into the requested change.
If restart is true, the server changes its state to SHUTDOWN_4 before the restart if secondsTillShudown is not 0.

ServerCapabilitiesType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype ObjectType BaseObjectType  
HasComponent Variable <VendorCapability> BaseDataType Scalar ServerVendorCapabilityType OptionalPlaceholder
HasComponent Object AggregateFunctions FolderType Mandatory
HasProperty Variable LocaleIdArray LocaleId OneDimension PropertyType Mandatory
HasProperty Variable MaxArrayLength UInt32 Scalar PropertyType Optional
HasProperty Variable MaxBrowseContinuationPoints UInt16 Scalar PropertyType Mandatory
HasProperty Variable MaxByteStringLength UInt32 Scalar PropertyType Optional
HasProperty Variable MaxHistoryContinuationPoints UInt16 Scalar PropertyType Mandatory
HasProperty Variable MaxQueryContinuationPoints UInt16 Scalar PropertyType Mandatory
HasProperty Variable MaxStringLength UInt32 Scalar PropertyType Optional
HasProperty Variable MinSupportedSampleRate Duration Scalar PropertyType Mandatory
HasComponent Object ModellingRules FolderType Mandatory
HasComponent Object OperationLimits OperationLimitsType Optional
HasProperty Variable ServerProfileArray String OneDimension PropertyType Mandatory
HasProperty Variable SoftwareCertificates SignedSoftwareCertificate OneDimension PropertyType Mandatory

Defines the capabilities supported by the OPC UA Server.

Variable ServerProfileArray

Lists the profiles that the Server supports.

See Part 7 of the OPC UA Specification for the definitions of Server profiles. This list should be limited to the profiles the Server supports in its current configuration.

Variable LocaleIdArray

An array of LocaleIds that are known to be supported by the Server.

The Server might not be aware of all LocaleIds that it supports, because it may provide access to underlying servers, systems or devices that do not report the LocaleIds that they support.

Variable MinSupportedSampleRate

Defines the minimum supported sample rate, including 0, which is supported by the Server.

Object ModellingRules

ModellingRules is an entry point to browse to all ModellingRules supported by the Server.

All ModellingRules supported by the Server should be able to be browsed starting from this Object.

Variable MaxBrowseContinuationPoints

An integer specifying the maximum number of parallel continuation points of the Browse service that the Server can support per session.

The value specifies the maximum the Server can support under normal circumstances, so there is no guarantee that the Server can always support the maximum. The client should not open more Browse calls with open continuation points than exposed in this variable. The value 0 indicates that the Server does not restrict the number of parallel continuation points the client should use.

Variable MaxQueryContinuationPoints

An integer specifying the maximum number of parallel continuation points of the QueryFirst services that the Server can support per session.

The value specifies the maximum the Server can support under normal circumstances, so there is no guarantee that the Server can always support the maximum. The client should not open more QueryFirst calls with open continuation points than exposed in this Variable. The value 0 indicates that the Server does not restrict the number of parallel continuation points the client should use.

Variable MaxHistoryContinuationPoints

An integer specifying the maximum number of parallel continuation points of the HistoryRead services that the Server can support per session.

The value specifies the maximum the Server can support under normal circumstances, so there is no guarantee the Server can always support the maximum. The client should not open more HistoryRead calls with open continuation points than exposed in this Variable. The value 0 indicates that the Server does not restrict the number of parallel continuation points the client should use.

Object AggregateFunctions

AggregateFunctions is an entry point to browse to all AggregateFunctions supported by the Server.

All AggregateFunctions supported by the server should be able to be browsed starting from this object. AggregateFunctions are objects of AggregateFunctionType.

Variable SoftwareCertificates

An array of SignedSoftwareCertificates containing all SoftwareCertificates supported by the Server.

A SoftwareCertificate identifies capabilities of the Server. It contains the list of profiles supported by the Server. Profiles are described in Part 7 of the OPC UA Specification.

Variable MaxArrayLength

Indicates the maximum length of a one or multidimensional array supported by variables of the Server.

In a multidimensional array it indicates the overall length. For example, a three-dimensional array of 2x3x10 has the array length of 60. The Server might further restrict the length for individual variables without notice to the client. Servers may use the property MaxArrayLength defined in Part 3 of the OPC UA Specification on individual DataVariables to specify the size on individual values. The individual property may have a larger or smaller value than MaxArrayLength.

Variable MaxStringLength

Indicates the maximum number of characters in strings supported by variables of the Server.

The Server might further restrict the string length for individual variables without notice to the client. Servers may use the property MaxStringLength defined in Part 3 of the OPC UA Specification on individual DataVariables to specify the length on individual values. The individual property may have larger or smaller values than MaxStringLength.

Object OperationLimits

OperationLimits is an entry point to access information on operation limits of the Server, for example the maximum length of an array in a read service call.

Variable <VendorCapability>

Vendor specific variables of a subtype of the ServerVendorCapabilityType.

These components of the ServerCapabilitiesType define the server-specific capabilities of the Server. Each is defined using a HasComponent reference whose target is an instance of a vendor-defined subtype of the abstract ServerVendorCapabilityType. Each subtype of this type defines a specific Server capability. The NodeIds for these variables and their variable types are server-defined.

Variable MaxByteStringLength

Indicates the maximum number of bytes in a ByteString supported by variables or FileType objects of the Server.

The Server might further restrict the ByteString length for individual variables or FileType objects without notice to the Client. Servers may use the property MaxByteStringLength on individual data variables to specify the length on individual values or on FileType objects to specify the maximum size of read and write buffers. The individual property may have larger or smaller values than MaxByteStringLength.

ServerDiagnosticsType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype ObjectType BaseObjectType  
HasProperty Variable EnabledFlag Boolean Scalar PropertyType Mandatory
HasComponent Variable SamplingIntervalDiagnosticsArray SamplingIntervalDiagnosticsDataType OneDimension SamplingIntervalDiagnosticsArrayType Optional
HasComponent Variable ServerDiagnosticsSummary ServerDiagnosticsSummaryDataType Scalar ServerDiagnosticsSummaryType Mandatory
HasComponent Object SessionsDiagnosticsSummary SessionsDiagnosticsSummaryType Mandatory
HasComponent Variable SubscriptionDiagnosticsArray SubscriptionDiagnosticsDataType OneDimension SubscriptionDiagnosticsArrayType Mandatory

This ObjectType defines diagnostic information about the OPC UA Server.

Variable ServerDiagnosticsSummary

Contains diagnostic summary information for the Server.

See ServerDiagnosticsSummaryDataType.

Variable SamplingIntervalDiagnosticsArray

An array of diagnostic information per sampling rate (see SamplingIntervalDiagnosticsDataType).

There is one entry for each sampling rate currently used by the Server. Its type definition node is the variable type SamplingIntervalDiagnosticsArrayType, providing a Variable for each entry in the array (see SamplingIntervalDiagnosticsArrayType).

The sampling interval diagnostics are only collected by Servers which use a fixed set of sampling intervals. In these cases, length of the array and the set of contained variables will be determined by the Server configuration and the NodeId assigned to a given sampling interval diagnostics variable shall not change as long as the Server configuration does not change. A Server may not expose the SamplingIntervalDiagnosticsArray if it does not use fixed sampling rates.

Variable SubscriptionDiagnosticsArray

An array of subscription diagnostic information per subscription (see SubscriptionDiagnosticsDataType).

There is one entry for each notification channel actually established in the Server. Its type definition node is the variable type SubscriptionDiagnosticsArrayType, providing a variable for each entry in the array (see SubscriptionDiagnosticsArrayType). Those variables are also used as variables referenced by other variables.

Variable EnabledFlag

Identifies whether or not diagnostic information is collected by the Server.

It can also be used by a client to enable or disable the collection of diagnostic information of the Server. The following settings of the boolean value apply: TRUE indicates that the Server collects diagnostic information, and setting the value to TRUE leads to re setting and enabling the collection. FALSE indicates that no statistic information is collected, and setting the value to FALSE disables the collection without resetting the statistic values.

Static diagnostic Nodes that always appear in the address space will return Bad_NotReadable when the Value attribute of such a Node is read or subscribed to and diagnostics are turned off. Dynamic diagnostic nodes (such as the Session nodes) will not appear in the address space when diagnostics are turned off.

Object SessionsDiagnosticsSummary

Contains diagnostic information per session (see SessionsDiagnosticsSummaryType).

SessionsDiagnosticsSummaryType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype ObjectType BaseObjectType  
HasComponent Object <SessionPlaceholder> SessionDiagnosticsObjectType OptionalPlaceholder
HasComponent Variable SessionDiagnosticsArray SessionDiagnosticsDataType OneDimension SessionDiagnosticsArrayType Mandatory
HasComponent Variable SessionSecurityDiagnosticsArray SessionSecurityDiagnosticsDataType OneDimension SessionSecurityDiagnosticsArrayType Mandatory

Defines diagnostic information about the sessions of the OPC UA Server.

Variable SessionDiagnosticsArray

Provides an array with an entry for each session in the Server having general diagnostic information about a session.

Variable SessionSecurityDiagnosticsArray

For each session of the Server, this Object also provides an object representing the session, indicated by <ClientName>.

The BrowseName could be derived from the sessionName defined in the CreateSession service (Part 4 of the OPC UA Specification) or some other server-specific mechanisms. It is of the object type SessionDiagnosticsObjectType.

SessionDiagnosticsObjectType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype ObjectType BaseObjectType  
HasComponent Variable SessionDiagnostics SessionDiagnosticsDataType Scalar SessionDiagnosticsVariableType Mandatory
HasComponent Variable SessionSecurityDiagnostics SessionSecurityDiagnosticsDataType Scalar SessionSecurityDiagnosticsType Mandatory
HasComponent Variable SubscriptionDiagnosticsArray SubscriptionDiagnosticsDataType OneDimension SubscriptionDiagnosticsArrayType Mandatory

This object type defines diagnostic information about a session of the OPC UA Server.

Variable SessionDiagnostics

Contains general diagnostic information about the session

Variable SessionSecurityDiagnostics

Contains security-related diagnostic information.

Because the information of this variable is security-related, it should not be made accessible to all users, but only to authorised users.

Variable SubscriptionDiagnosticsArray

An array of subscription diagnostic information per opened subscription, (see).

Its type definition node is the variable type SubscriptionDiagnosticsArrayType providing a variable for each entry in the array.

VendorServerInfoType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype ObjectType BaseObjectType  

This object type defines a placeholder object for vendor-specific information about the OPC UA Server.

This object type defines an empty object type that has no components. It shall be subtyped by vendors to define their vendor-specific information.

ServerRedundancyType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype ObjectType BaseObjectType  
HasProperty Variable RedundancySupport RedundancySupport Scalar PropertyType Mandatory

This object type defines the redundancy capabilities supported by the OPC UA Server.

Variable RedundancySupport

Indicates what redundancy is supported by the Server.

Its values are defined in RedundancySupport. It shall be set to NONE_0 for all instances of the ServerRedundancyType using the object type directly (no subtype).

StateMachineType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype ObjectType BaseObjectType  
HasComponent Variable CurrentState LocalizedText Scalar StateVariableType Mandatory
HasComponent Variable LastTransition LocalizedText Scalar TransitionVariableType Optional

The base ObjectType for all StateMachineTypes.

It defines a single Variable which represents the current state of the machine. An instance of this ObjectType shall generate an Event whenever a significant state change occurs. The Server decides which state changes are significant. Servers shall use the GeneratesEvent ReferenceType to indicate which Event(s) could be produced by the state machine.

Subtypes may add methods which affect the state of the machine. The Executable attribute is used to indicate whether the method is valid given the current state of the machine. The generation of AuditEvents for methods is defined in Part 4 of the OPC UA Specification. A state machine may not be active. In this case, the CurrentState and LastTransition variables shall have a status equal to Bad_StateNotActive.

Subtypes may add components which are instances of StateMachineTypes. These components are considered to be sub-states of the state machine. Sub-state machines are only active when the parent machine is in an appropriate state.

Events produced by sub-state machines may be suppressed by the parent machine. In some cases, the parent machine will produce a single Event that reflects changes in multiple sub-state machines.

FiniteStateMachineType is subtype of StateMachineType that provides a mechanism to explicitly define the states and transitions. A Server should use this mechanism if it knows what the possible states are and the state machine is not trivial.

Variable CurrentState

Stores the current state of an instance of the StateMachineType.

CurrentState provides a human readable name for the current state which may not be suitable for use in application control logic. Applications should use the Id property of CurrentState if they need a unique identifier for the state.

Variable LastTransition

Stores the last transition which occurred in an instance of the StateMachineType.

LastTransition provides a human readable name for the last transition which may not be suitable for use in application control logic. Applications should use the Id property of LastTransition if they need a unique identifier for the transition.

StateType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype ObjectType BaseObjectType  
HasProperty Variable StateNumber UInt32 Scalar PropertyType Mandatory

States of a FiniteStateMachine are represented as objects of the StateType.

Variable StateNumber

A number for the state that is unique across all states defined in the state machine.

InitialStateType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype ObjectType StateType  

An object of the InitialStateType represents the state that a FiniteStateMachine enters when it is activated.

Each FiniteStateMachine can have at most one state of type InitialStateType, but a FiniteStateMachine does not have to have a state of this type.

A sub-state machine goes into its initial state whenever the parent state is entered. However, a state machine may define a transition that goes directly to a state of the sub-state machine. In this case the sub-state machine goes into that state instead of the initial State.

If no initial state for a sub-state machine exists and the state having the sub-state machine is entered directly, then the state of the sub-state machine is server-specific.

TransitionType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype ObjectType BaseObjectType  
HasProperty Variable TransitionNumber UInt32 Scalar PropertyType Mandatory

Transitions of a FiniteStateMachine are represented as objects of the ObjectType TransitionType.

Each valid transition shall have exactly one FromState reference and exactly one ToState reference, each pointing to an object of the ObjectType StateType.

Each transition can have one or more HasCause references pointing to the cause that triggers the transition.

Each transition can have one or more HasEffect references pointing to the effects that occur when the transition was triggered.

Variable TransitionNumber

A number for the transition that is unique across all transitions defined in the state machine.

AggregateFunctionType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype ObjectType BaseObjectType  

Defines an AggregateFunction supported by a UA Server.

For the AggregateFunctionType, the Description Attribute is mandatory. The Description Attribute provides a localized description of the AggregateFunction.

FiniteStateMachineType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype ObjectType StateMachineType  
HasComponent Variable CurrentState LocalizedText Scalar FiniteStateVariableType Mandatory
HasComponent Variable LastTransition LocalizedText Scalar FiniteTransitionVariableType Optional

The FiniteStateMachineType is the base ObjectType for state machines that explicitly define the possible states and transitions.

Once the states are defined, subtypes shall not add new states.

The states of the machine are represented with instances of the StateType ObjectType. Each state shall have a BrowseName which is unique within the state machine and shall have a StateNumber which shall also be unique across all states defined in the state machine. Be aware that states in a sub-state machine may have the same StateNumber or BrowseName as states in the parent machine. A concrete subtype of FiniteStateMachineType shall define at least one state.

A state machine may define one state which is an instance of the InitialStateType. This state is the state that the machine goes into when it is activated.

The transitions that may occur are represented with instances of the TransitionType. Each transition shall have a BrowseName which is unique within the state machine and may have a TransitionNumber which shall also be unique across all transitions defined in the state machine.

The initial state for a transition is a StateType object which is the target of a FromState reference. The final state for a transition is a StateType object which is the target of a ToState reference. The FromState and ToState references shall always be specified.

A transition may produce an event. The event is indicated by a HasEffect reference to a subtype of BaseEventType. The StateMachineType shall have GeneratesEvent references to the targets of a HasEffect reference for each of its transitions.

A FiniteStateMachineType may define methods that cause a transition to occur. These methods are targets of HasCause references for each of the transitions that may be triggered by the method. The Executable attribute for a method is used to indicate whether the current state of the machine allows the method to be called.

A FiniteStateMachineType may have sub-state machines which are represented as instances of StateMachineType ObjectTypes. Each state shall have a HasSubStateMachine reference to the StateMachineType object which represents the child states. The SubStateMachine is not active if the parent state is not active. In this case the CurrentState and LastTransition variables of the sub-state machine shall have a status equal to Bad_StateNotActive.

Variable CurrentState

Stores the current state of an instance of the FiniteStateMachineType.

CurrentState provides a human readable name for the current state which may not be suitable for use in application control logic. Applications should use the Id property of CurrentState if they need a unique identifier for the state.

Variable LastTransition

Stores the last transition which occurred in an instance of the FiniteStateMachineType.

LastTransition provides a human readable name for the last transition which may not be suitable for use in application control logic. Applications should use the Id property of LastTransition if they need a unique identifier for the transition.

OperationLimitsType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype ObjectType BaseObjectType  
HasProperty Variable MaxMonitoredItemsPerCall UInt32 Scalar PropertyType Optional
HasProperty Variable MaxNodesPerBrowse UInt32 Scalar PropertyType Optional
HasProperty Variable MaxNodesPerHistoryReadData UInt32 Scalar PropertyType Optional
HasProperty Variable MaxNodesPerHistoryReadEvents UInt32 Scalar PropertyType Optional
HasProperty Variable MaxNodesPerHistoryUpdateData UInt32 Scalar PropertyType Optional
HasProperty Variable MaxNodesPerHistoryUpdateEvents UInt32 Scalar PropertyType Optional
HasProperty Variable MaxNodesPerMethodCall UInt32 Scalar PropertyType Optional
HasProperty Variable MaxNodesPerNodeManagement UInt32 Scalar PropertyType Optional
HasProperty Variable MaxNodesPerRead UInt32 Scalar PropertyType Optional
HasProperty Variable MaxNodesPerRegisterNodes UInt32 Scalar PropertyType Optional
HasProperty Variable MaxNodesPerTranslateBrowsePathsToNodeIds UInt32 Scalar PropertyType Optional
HasProperty Variable MaxNodesPerWrite UInt32 Scalar PropertyType Optional

Used to identify the operation limits of the OPC UA Server.

Variable MaxNodesPerRead

Indicates the maximum size of the nodesToRead array when a Client calls the Read service.

Variable MaxNodesPerWrite

Indicates the maximum size of the nodesToWrite array when a Client calls the Write service.

Variable MaxNodesPerMethodCall

Indicates the maximum size of the methodsToCall array when a Client calls the Call service.

Variable MaxNodesPerBrowse

Indicates the maximum size of the nodesToBrowse array when calling the Browse service or the continuationPoints array when a Client calls the BrowseNext service.

Variable MaxNodesPerRegisterNodes

Indicates the maximum size of the nodesToRegister array when a Client calls the RegisterNodes service and the maximum size of the nodesToUnregister when calling the UnregisterNodes service.

Variable MaxNodesPerTranslateBrowsePathsToNodeIds

Indicates the maximum size of the browsePaths array when a Client calls the TranslateBrowsePathsToNodeIds service.

Variable MaxNodesPerNodeManagement

Indicates the maximum size of the nodesToAdd array when a Client calls the AddNodes service, the maximum size of the referencesToAdd array when a Client calls the AddReferences service, the maximum size of the nodesToDelete array when a Client calls the DeleteNodes service, and the maximum size of the referencesToDelete array when a Client calls the DeleteReferences service.

Variable MaxMonitoredItemsPerCall

Indicates the maximum size of the itemsToCreate array when a Client calls the CreateMonitoredItems service, the maximum size of the itemsToModify array when a Client calls the ModifyMonitoredItems service, the maximum size of the monitoredItemIds array when a Client calls the SetMonitoringMode service or the DeleteMonitoredItems service, the maximum size of the linksToAdd and the linksToRemove arrays when a Client calls the SetTriggering service.

Variable MaxNodesPerHistoryReadData

Indicates the maximum size of the nodesToRead array when a Client calls the HistoryRead service using the histroyReadDetails RAW, PROCESSED, MODIFIED or ATTIME.

Variable MaxNodesPerHistoryReadEvents

Indicates the maximum size of the nodesToRead array when a client calls the HistoryRead Service using the historyReadDetails EVENTS.

Variable MaxNodesPerHistoryUpdateData

Indicates the maximum size of the historyUpdateDetails array supported by the Server when a Client calls the HistoryUpdate service.

Variable MaxNodesPerHistoryUpdateEvents

Indicates the maximum size of the historyUpdateDetails array when a Client calls the HistoryUpdate service.

FileType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype ObjectType BaseObjectType  
HasComponent Method Close Mandatory
HasComponent Method GetPosition Mandatory
HasProperty Variable MimeType String Scalar PropertyType Optional
HasComponent Method Open Mandatory
HasProperty Variable OpenCount UInt16 Scalar PropertyType Mandatory
HasComponent Method Read Mandatory
HasComponent Method SetPosition Mandatory
HasProperty Variable Size UInt64 Scalar PropertyType Mandatory
HasProperty Variable UserWritable Boolean Scalar PropertyType Mandatory
HasProperty Variable Writable Boolean Scalar PropertyType Mandatory
HasComponent Method Write Mandatory

This ObjectType defines a type for files.

Note that all methods on a file require a FileHandle, which is returned in the Open method.

Variable Size

Defines the size of the file in Bytes.

When a file is opened for writing the size might not be accurate.

Variable OpenCount

Indicates the number of currently valid file handles on the file.

Method Open

Opens a file represented by an object of FileType.

When a client opens a file, it gets a FileHandle that is valid while the session is open. Clients shall use the Close method to release the handle when they do not need access to the file anymore. Clients can open the same file several times for reading. A request to open for writing shall return Bad_NotWritable when the file is already opened.

Input Arguments

Argument DataType ValueRank Description
Mode Byte Scalar Indicates whether the file should be opened only for read operations or for read and write operations and where the initial position is set.
The mode is an 8-bit unsigned integer used as bit mask with the structure defined in the following table:

FieldBitDescription
Read0The file is opened for reading. If this bit is not set the Read method cannot be executed.
Write1The file is opened for writing. If this bit is not set the Write method cannot be executed.
EraseExisting2This bit can only be set if the file is opened for writing (Write bit is set). The existing content of the file is erased and an empty file is provided.
Append3When the Append bit is set the file is opened at end of the file, otherwise at begin of the file. The SetPosition Method can be used to change the position.

Output Arguments

Argument DataType ValueRank Description
FileHandle UInt32 Scalar A handle for the file used in other method calls indicating not the file (this is done by the object of the method call) but the access request and thus the position in the file.
The FileHandle is generated by the server and is unique for the Session. Clients cannot transfer the FileHandle to another Session but need to get a new FileHandle by calling the Open method.

Method Close

Closes a file represented by a FileType.

When a client closes a file, the handle becomes invalid.

Input Arguments

Argument DataType ValueRank Description
FileHandle UInt32 Scalar A handle returned by the Open method, indicating the access request and thus indirectly the position inside the file.

Method Read

Reads a part of the file starting from the current file position.

The file position is advanced by the number of bytes read.

Input Arguments

Argument DataType ValueRank Description
FileHandle UInt32 Scalar A handle returned by the Open method, indicating the access request and thus indirectly the position inside the file.
Length Int32 Scalar Defines the length in bytes that should be returned in data, starting from the current position of the file handle.
If the end of file is reached, all data until the end of the file is returned. The Server is allowed to return less data than the specified length. Only positive values are allowed.

Output Arguments

Argument DataType ValueRank Description
Data ByteString Scalar Contains the returned data of the file.
If the ByteString is empty, it indicates that the end of the file is reached.

Method Write

Writes a part of the file starting from the current file position.

The file position is advanced by the number of bytes written

Input Arguments

Argument DataType ValueRank Description
FileHandle UInt32 Scalar A handle returned by the Open method, indicating the access request and thus indirectly the position inside the file.
Data ByteString Scalar Contains the data to be written at the position of the file.
It is server-dependent whether the written data are persistently stored if the session is ended without calling the Close method with the FileHandle.
Writing an empty or null ByteString returns a Good result code without any effect on the file.

Method GetPosition

Provides the current position of the FileHandle.

Input Arguments

Argument DataType ValueRank Description
FileHandle UInt32 Scalar A handle returned by the Open method, indicating the access request and thus indirectly the position inside the file.

Output Arguments

Argument DataType ValueRank Description
Position UInt64 Scalar The position of the FileHandle in the file.
If Read or Write is called, it starts at that position.

Method SetPosition

Sets the current position of the FileHandle.

Input Arguments

Argument DataType ValueRank Description
FileHandle UInt32 Scalar A handle indicating the access request and thus indirectly the position inside the file.
Position UInt64 Scalar The position to be set for the FileHandle in the file.
If Read or Write is called, it starts at that position. If the position is higher than the file size, the position is set to the end of the file.

Variable Writable

Indicates whether the file is writable.

It does not take any user access rights into account, i.e. although the file is writable this may be restricted to a certain user/user group. The Property does not take into account whether the file is currently opened for writing by another client and thus currently locked and not writable by others.

Variable UserWritable

Indicates whether the file is writable, taking user access rights into account.

The Property does not take into account whether the file is currently opened for writing by another client and thus currently locked and not writable by others.

Variable MimeType

Contains the media type of the file based on RFC 2046.

AddressSpaceFileType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype ObjectType FileType  
HasComponent Method ExportNamespace Optional

This object type defines the file for a namespace provided by the OPC UA Server.

It represents an XML address space file using the XML schema defined in Part 6 of the OPC UA Specification.

Servers might provide some vendor-specific mechanisms importing parts of an address space as subtype of this object type, for example by defining appropriate methods.

Method ExportNamespace

Provides a way to export the namespace from the Server address space to the XML file represented by the AddressSpaceFileType.

Value attributes are only exported if they represent static configuration information. The client is expected to call the ExportNamespace method first to update the XML file and then access the file with the methods defined in the FileType.

NamespaceMetadataType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype ObjectType BaseObjectType  
HasProperty Variable IsNamespaceSubset Boolean Scalar PropertyType Mandatory
HasComponent Object NamespaceFile AddressSpaceFileType Optional
HasProperty Variable NamespacePublicationDate DateTime Scalar PropertyType Mandatory
HasProperty Variable NamespaceUri String Scalar PropertyType Mandatory
HasProperty Variable NamespaceVersion String Scalar PropertyType Mandatory
HasProperty Variable StaticNodeIdIdentifierTypes IdType OneDimension PropertyType Mandatory
HasProperty Variable StaticNumericNodeIdRange NumericRange OneDimension PropertyType Mandatory
HasProperty Variable StaticStringNodeIdPattern String OneDimension PropertyType Mandatory

This object type defines the metadata for a namespace provided by the Server.

Instances of this object allow Servers to provide more information like version information in addition to the namespace URI. Important information for aggregating Servers is provided by the StaticNodeIdTypes, StaticNumericNodeIdRange and StaticStringNodeIdPattern properties.

The browse name of instances of this type shall be derived from the represented namespace. This can, for example, be done by using the index of the namespace in the namespace array as namespaceIndex of the QualifiedName and the namespace URI as name of the QualifiedName.

Variable NamespaceUri

Contains the namespace represented by an instance of the MetaDataType.

Variable NamespaceVersion

Provides version information for the namespace.

It is intended for display purposes and shall not be used to programmatically identify the latest version.

Variable NamespacePublicationDate

Provides the publication date of the namespace version.

This property value can be used by Clients to determine the latest version if different versions are provided by different Servers.

Variable IsNamespaceSubset

Provides a list of IdTypes used for static nodes.

All nodes in the address space of the namespace using one of the IdTypes in the array shall be static nodes.

Variable StaticNumericNodeIdRange

Provides a list of NumericRanges used for numeric NodeIds of static nodes.

If the StaticNodeIdTypes property contains an entry for numeric NodeIds then this property is ignored.

Variable StaticStringNodeIdPattern

Provides a regular expression as defined for the Like operator defined in Part 4 of the OPC UA Specification to filter for string NodeIds of static nodes.

If the StaticNodeIdTypes property contains an entry for string NodeIds, this property is ignored.

Object NamespaceFile

Contains all nodes and references of the namespace in an XML file where the information model XML schema is defined in Part 6 of OPC UA Specification.

The XML file is provided through an AddressSpaceFileType object.

NamespacesType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype ObjectType BaseObjectType  
HasComponent Object <NamespaceIdentifier> NamespaceMetadataType OptionalPlaceholder
HasComponent Object AddressSpaceFile AddressSpaceFileType Optional

Defines a list of NamespaceMetadataType objects provided by the Server.

The object type contains a list of NamespaceMetadataType objects representing the namespaces in the Server. The browse name of an object shall be derived from the namespace represented by the object. This can, for example, be done by using the index of the namespace in the namespace array as namespaceIndex of the QualifiedName and the namespace URI as name of the QualifiedName.

FileDirectoryType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype ObjectType FolderType  
HasComponent Object <FileDirectoryName> FileDirectoryType OptionalPlaceholder
HasComponent Object <FileName> FileType OptionalPlaceholder
HasComponent Method CreateDirectory Mandatory
HasComponent Method CreateFile Mandatory
HasComponent Method Delete Mandatory
HasComponent Method MoveOrCopy Mandatory

Defines a type for the representation of file directories.

It is expected that OPC UA Servers will create vendor specific subtypes of the FileDirectoryType with additional functionalities like methods for creating symbolic links or setting access permissions. OPC UA Clients providing specialized file transfer user interfaces should be prepared to expose such additional methods to the user.

Instances of the ObjectType contain a list of FileDirectoryType objects representing the subdirectories of the file directory represented by the instance of this ObjectType.

Instances of the ObjectType contain a list of FileType objects representing the files in the file directory represented by the instance of this ObjectType.

Method CreateDirectory

Creates a new FileDirectoryType object organized by this object.

Method Result Codes

Result Code Description
Bad_BrowseNameDuplicated A directory with the name already exists.
Bad_UserAccessDenied The user does not have permission to perform the requested operation.

Input Arguments

Argument DataType ValueRank Description
DirectoryName String Scalar The name of the directory to create.
The name is used for the BrowseName and DisplayName of the directory object and also for the directory in the file system.
For the BrowseName, the directoryName is used for the name part of the QualifiedName. The namespace index is Server specific.
For the DisplayName, the directoryName is used for the text part of the LocalizedText. The locale part is Server specific.

Output Arguments

Argument DataType ValueRank Description
DirectoryNodeId NodeId Scalar The NodeId of the created directory object.

Method CreateFile

Creates a new FileType object organized by this object.

The created file can be written using the Write method of the FileType.

Method Result Codes

Result Code Description
Bad_BrowseNameDuplicated A file with the name already exists.
Bad_UserAccessDenied The user does not have permission to perform the requested operation.

Input Arguments

Argument DataType ValueRank Description
FileName String Scalar The name of the file to create.
The name is used for the BrowseName and DisplayName of the file object and also for the file in the file system.
For the BrowseName, the FileName is used for the name part of the QualifiedName. The namespace index is Server specific.
For the DisplayName, the FileName is used for the text part of the LocalizedText. The locale part is Server specific.
RequestFileOpen Boolean Scalar Flag indicating whether the new file should be opened with the Write and Read bits set in the open mode after the creation of the file.
If the flag is set to True, the file is created and opened for writing. If the flag is set to False, the file is just created.

Output Arguments

Argument DataType ValueRank Description
FileNodeId NodeId Scalar The NodeId of the created file object.
FileHandle UInt32 Scalar The FileHandle is returned if RequestFileOpen is set to True.
The FileNodeId and the FileHandle can be used to access the new file through the FileType object representing the new file.
If RequestFileOpen is set to False, the returned value shall be 0 and shall be ignored by the caller.

Method Delete

Deletes a file or directory organized by this object.

Method Result Codes

Result Code Description
Bad_NotFound A file or directory with the provided NodeId is not organized by this object.
Bad_InvalidState The file or directory is locked and thus cannot be deleted.
Bad_UserAccessDenied The user does not have permission to perform the requested operation.

Input Arguments

Argument DataType ValueRank Description
ObjectToDelete NodeId Scalar The NodeId of the file or directory to delete.
In the case of a directory, all file and directory objects below the directory to delete are deleted recursively.

Method MoveOrCopy

Moves or copies a file or directory organized by this object to another directory or renames a file or directory.

Method Result Codes

Result Code Description
Bad_BrowseNameDuplicated A file or directory with the name already exists.
Bad_NotFound A file or directory with the provided NodeId is not organized by this object.
Bad_InvalidState The file or directory is locked and thus cannot be moved or copied.
Bad_UserAccessDenied The user does not have permission to perform the requested operation.

Input Arguments

Argument DataType ValueRank Description
ObjectToMoveOrCopy NodeId Scalar The NodeId of the file or directory to move or copy.
TargetDirectory NodeId Scalar The NodeId of the target directory of the move or copy command.
If the file or directory is just renamed, the targetDirectory matches the ObjectId passed to the method call.
CreateCopy Boolean Scalar A flag indicating whether a copy of the file or directory should be created at the target directory.
NewName String Scalar The new name of the file or directory in the new location.
If the string is empty, the name is unchanged.

Output Arguments

Argument DataType ValueRank Description
NewNodeId NodeId Scalar The NodeId of the moved or copied object.
Even if the object is moved, the Server may return a new NodeId.