The remainder of 8 defines DataTypes. Their representation in the AddressSpace and the DataType hierarchy is specified in OPC 10000-5. Other parts of this series of standards may specify additional DataTypes.

This Built-in DataType is composed of three elements that identify a Node within a Server. They are defined in Table 22.

Table 22 – NodeId Definition

Name

Type

Description

NodeId

structure

namespaceIndex

UInt16

The index for a namespace URI (see 8.2.2).

identifierType

Enum

The format and data type of the identifier (see 8.2.3).

identifier

*

The identifier for a Node in the AddressSpace of an OPC UA Server (see 8.2.4).

See OPC 10000-6 for a description of the encoding of the identifier into OPC UA Messages.

The namespace is a URI that identifies the naming authority responsible for assigning the identifier element of the NodeId. Naming authorities include the local Server, the underlying system, standards bodies and consortia. It is expected that most Nodes will use the URI of the Server or of the underlying system.

Using a namespace URI allows multiple OPC UA Servers attached to the same underlying system to use the same identifier to identify the same Object. This enables Clients that connect to those Servers to recognise Objects that they have in common.

Namespace URIs, like Server names, are identified by numeric values in OPC UA Services to permit more efficient transfer and processing (e.g. table lookups). The numeric values used to identify namespaces correspond to the index into the NamespaceArray. The NamespaceArray is a Variable that is part of the Server Object in the AddressSpace (see OPC 10000-5 for its definition).

The URI for the OPC UA namespace is:

http://opcfoundation.org/UA/”

Its corresponding index in the namespace table is 0.

The namespace URI is case sensitive.

The IdType element identifies the type of the NodeId, its format and its scope. Its values are defined in Table 23.

Table 23 – IdType Values

Value

Description

NUMERIC_0

Numeric value

STRING_1

String value

GUID_2

Globally Unique Identifier

OPAQUE_3

Namespace specific format

Normally the scope of NodeIds is the Server in which they are defined. For certain types of NodeIds, NodeIds can uniquely identify a Node within a system, or across systems (e.g. GUIDs). System-wide and globally-unique identifiers allow Clients to track Nodes, such as work orders, as they move between OPC UA Servers as they progress through the system.

Opaque identifiers are identifiers that are free-format byte strings that might or might not be human interpretable.

String identifiers are case sensitive. That is, Clients shall consider them case sensitive. Servers are allowed to provide alternative NodeIds (see 5.2.2) and using this mechanism severs can handle NodeIds as case insensitive.

The identifier value element is used within the context of the first three elements to identify the Node. Its data type and format is defined by the IdType.

Identifier values of IdType STRING_1 are restricted to 4 096 characters. Identifier values of IdType OPAQUE_3 are restricted to 4 096 bytes.

A null NodeId has special meaning. For example, many services defined in OPC 10000-4 define special behaviour if a null NodeId is passed as a parameter. Each IdType has a set of identifier values that represent a null NodeId. These values are summarised in Table 24.

Table 24 – NodeId Null Values

IdType

Identifier

NUMERIC_0

0

STRING_1

A null or Empty String (“”)

GUID_2

A Guid initialised with zeros (e.g. 00000000-0000-0000-0000-000000)

OPAQUE_3

A ByteString with Length=0

A null NodeId always has a NamespaceIndex equal to 0.

A Node in the AddressSpace shall not have a null as its NodeId.

This Built-in DataType contains a qualified name. It is, for example, used as BrowseName. Its elements are defined in Table 25. The name part of the QualifiedName is restricted to 512 characters.

Table 25 – QualifiedName Definition

Name

Type

Description

QualifiedName

structure

namespaceIndex

UInt16

Index that identifies the namespace that defines the name.

This index is the index of that namespace in the local Server’s NamespaceArray.

The Client may read the NamespaceArray Variable to access the string value of the namespace.

name

String

The text portion of the QualifiedName.

This Simple DataType is specified as a string that is composed of a language component and a country/region component as specified by IETF RFC 5646. The <country/region> component is always preceded by a hyphen. The format of the LocaleId string is shown below:

<language>[-<country/region>], where <language> is the two letter ISO 639 code for a language, <country/region> is the two letter ISO 3166 code for the country/region.

The rules for constructing LocaleIds defined by IETF RFC 5646 are restricted as follows:

  1. this specification permits only zero or one <country/region> component to follow the <language> component;
  2. this specification also permits the “-CHS” and “-CHT” three-letter <country/region> codes for “Simplified” and “Traditional” Chinese locales;
  3. this specification also allows the use of other <country/region> codes as deemed necessary by the Client or the Server.

Table 26 shows examples of OPC UA LocaleIds. Clients and Servers always provide LocaleIds that explicitly identify the language and the country/region.

Table 26 – LocaleId Examples

Locale

OPC UA LocaleId

English

en

English (US)

en-US

German

de

German (Germany)

de-DE

German (Austrian)

de-AT

An empty or null string indicates that the LocaleId is unknown.

This Built-in DataType defines a structure containing a String in a locale-specific translation specified in the identifier for the locale. Its elements are defined in Table 27.

Table 27 – LocalizedText Definition

Name

Type

Description

LocalizedText

structure

locale

LocaleId

The identifier for the locale (e.g. “en-US”).

text

String

The localized text.

This Structured DataType defines a Method input or output argument specification. It is for example used in the input and output argument Properties for Methods. Its elements are described in Table 28.

Table 28 – Argument Definition

Name

Type

Description

Argument

structure

name

String

The name of the argument.

dataType

NodeId

The NodeId of the DataType of this argument.

valueRank

Int32

Indicates whether the dataType is an array and how many dimensions the array has.

It may have the following values:

n > 1: the dataType is an array with the specified number of dimensions.

OneDimension (1): The dataType is an array with one dimension.

OneOrMoreDimensions (0): The dataType is an array with one or more dimensions.

Scalar (−1): The dataType is not an array.

Any (−2): The dataType can be a scalar or an array with any number of dimensions.

ScalarOrOneDimension (−3): The dataType can be a scalar or a one dimensional array.

NOTE All DataTypes are considered to be scalar, even if they have array-like semantics like ByteString and String.

arrayDimensions

UInt32[]

This field specifies the maximum supported length of each dimension. If the maximum is unknown the value shall be 0.

The number of elements shall be equal to the value of the valueRank field. This field shall be null if valueRank ≤ 0.

The maximum number of elements of an array transferred on the wire is 2147483647 (max Int32).

description

LocalizedText

A localised description of the argument.

This abstract DataType defines a value that can have any valid DataType.

It defines a special value null indicating that a value is not present.

This Built-in DataType defines a value that is either TRUE or FALSE.

This Built-in DataType defines a value in the range of 0 to 255.

This Built-in DataType defines a value that is a sequence of Byte values.

This Built-in DataType defines a Gregorian calendar date. Details about this DataType are defined in OPC 10000-6.

This Built-in DataType defines a value that adheres to the ISO/IEC/IEEE 60559:2011 double precision data type definition.

This Simple DataType is a Double that defines an interval of time in milliseconds (fractions can be used to define sub-millisecond values). Negative values are generally invalid but may have special meanings where the Duration is used.

This abstract DataType is the base DataType for all enumeration DataTypes like NodeClass defined in 8.30. All DataTypes inheriting from this DataType have special handling for the encoding as defined in OPC 10000-6. All enumeration DataTypes shall inherit from this DataType.

Some special rules apply when subtyping enumerations. Any enumeration DataType not directly inheriting from the Enumeration DataType can only restrict the enumeration values of its supertype. That is, it shall neither add enumeration values nor change the text associated to the enumeration value. As an example, the enumeration Days having {‘Mo’, ‘Tu’, ‘We’, ‘Th’, ‘Fr’, ‘Sa’, ‘Su’} as values can be subtyped to the enumeration Workdays having {‘Mo’, ‘Tu’, ‘We’, ‘Th’, ‘Fr’}. The other direction, subtyping Workdays to Days would not be allowed as Days has values not allowed by Workdays (‘Sa’ and ‘Su’).

This Built-in DataType defines a value that adheres to the ISO/IEC/IEEE 60559:2011 single precision data type definition.

This Built-in DataType defines a value that is a 128-bit Globally Unique Identifier. Details about this DataType are defined in OPC 10000-6.

This Built-in DataType defines a value that is a signed integer between −128 and 127 inclusive.

This DataType is an enumeration that identifies the IdType of a NodeId. Its values are defined in Table 23. See 8.2.3 for a description of the use of this DataType in NodeIds.

This abstract DataType defines a ByteString representing an image.

This Simple DataType defines a ByteString representing an image in BMP format.

This Simple DataType defines a ByteString representing an image in GIF format.

This Simple DataType defines a ByteString representing an image in JPG format.

This Simple DataType defines a ByteString representing an image in PNG format.

This abstract DataType defines an integer whose length is defined by its subtypes.

This Built-in DataType defines a value that is a signed integer between −32 768 and 32 767 inclusive.

This Built-in DataType defines a value that is a signed integer between −2 147 483 648 and 2 147 483 647 inclusive.

This Built-in DataType defines a value that is a signed integer between −9 223 372 036 854 775 808 and 9 223 372 036 854 775 807 inclusive.

This Structured DataType defines the local time that may or may not take daylight saving time into account. Its elements are described in Table 29.

Table 29 – TimeZoneDataType Definition

Name

Type

Description

TimeZoneDataType

structure

offset

Int16

The offset in minutes from UtcTime

daylightSavingInOffset

Boolean

If TRUE, then daylight saving time (DST) is in effect and offset includes the DST correction. If FALSE then the offset does not include the DST correction and DST may or may not have been in effect.

This DataType is an enumeration that identifies the NamingRule (see 6.4.4.2.1). Its values are defined in Table 30.

Table 30 – NamingRuleType Values

Name

MANDATORY_1

OPTIONAL_2

CONSTRAINT_3

This DataType is an enumeration that identifies a NodeClass. Its values are defined in Table 31.

Table 31 – NodeClass Values

Name

OBJECT_1

VARIABLE_2

METHOD_4

OBJECT_TYPE_8

VARIABLE_TYPE_16

REFERENCE_TYPE_32

DATA_TYPE_64

VIEW_128

This abstract DataType defines a number. Details are defined by its subtypes.

This Built-in DataType defines a Unicode character string that should exclude control characters that are not whitespaces.

This abstract DataType is the base DataType for all Structured DataTypes like Argument defined in 8.6. All DataTypes inheriting from this DataType have special handling for the encoding as defined in OPC 10000-6.

This abstract DataType defines an unsigned integer whose length is defined by its subtypes.

This Built-in DataType defines a value that is an unsigned integer between 0 and 65 535 inclusive.

This Built-in DataType defines a value that is an unsigned integer between 0 and 4 294 967 295 inclusive.

This Built-in DataType defines a value that is an unsigned integer between 0 and 18 446 744 073 709 551 615 inclusive.

This simple DataType is a DateTime used to define Coordinated Universal Time (UTC) values. All time values conveyed between OPC UA Servers and Clients are UTC values. Clients shall provide any conversions between UTC and local time.

UTC has the concept of leap seconds. Leap seconds can lead to repeating seconds. Therefore applications are allowed to use TAI (International Atomic Time) instead of UTC in any place where UtcTime is used. Details on time synchronization are discussed in OPC 10000-6.

It should be noted that the Source and Server Timestamps may originate from different clocks that have no synchronization. It is also possible that one may use UTC while the other uses TAI.

This Built-in DataType is used to define XML elements. OPC 10000-6 defines details about this DataType.

XML data can always be modelled as a subtype of the Structure DataType with a single DataTypeEncoding that represents the XML complexType that defines the XML element (it is not necessary to have access to the XML Schema to define a DataTypeEncoding). For this reason a Server should never define Variables that use the XmlElement DataType unless the Server has no information about the XML elements that might be in the Variable Value.

This Structured DataType is used to represent a human-readable representation of an Enumeration. Its elements are described in Table 32. When this type is used in an array representing human-readable representations of an enumeration, each Value shall be unique in that array.

Table 32 – EnumValueType Definition

Name

Type

Description

EnumValueType

structure

value

Int64

The Integer representation of an Enumeration.

displayName

LocalizedText

A human-readable representation of the Value of the Enumeration.

description

LocalizedText

A localized description of the enumeration value. This field can contain an empty string if no description is available.

Note that the EnumValueType has been defined with an Int64 Value to meet a variety of usages. When it is used to define the string representation of an Enumeration DataType, the value range is limited to Int32, because the Enumeration DataType is a subtype of Int32. OPC 10000-8 specifies other usages where the actual value might be between 8 and 64 Bit.

This abstract DataType is the base DataType for all DataTypes representing a bit mask. All OptionSet DataTypes representing bit masks shall inherit from this DataType. Its elements are described in Table 33.

Table 33 – OptionSet Definition

Name

Type

Description

OptionSet

structure

value

ByteString

Array of bytes representing the bits in the option set. The length of the ByteString depends on the number of bits. The number of bytes may be larger than needed for the valid bits in the case of a spare allocation.

validBits

ByteString

Array of bytes with same size as value representing the valid bits in the value parameter.

When the Server returns the value to the Client, the validBits provides information of which bits in the bit mask have a meaning. If a bit is 1 then the corresponding bit in the value is used by the Server. If it is set to a 0 it should be ignored as it has no meaning. When the Client passes the value to the Server, the validBits defines which bits should be written. Only those bits defined in validBits are changed in the bit mask, all others are not written.

The DataType Nodes representing concrete subtypes of the OptionSet shall have an OptionSetValues Property defined in Table 16.

This abstract DataType is the base DataType for all union DataTypes. The DataType is a subtype of Structure DataType. All DataTypes inheriting from this DataType have special handling for the encoding as defined in OPC 10000-6. All union DataTypes shall inherit directly from this DataType.

This Simple DataType defines a value which is a day in the Gregorian calendar in string. Lexical representation of the string shall conform to calendar date defined in ISO 8601-2000.

NOTE: According to ISO 8601-2000, ‘calendar date representations are in the form [YYYY-MM-DD]. [YYYY] indicates a four-digit year, 0000 through 9999. [MM] indicates a two-digit month of the year, 01 through 12. [DD] indicates a two-digit day of that month, 01 through 31. For example, "the 5th of April 1981" may be represented as either "1981-04-05" in the extended format or "19810405" in the basic format.’

NOTE: ISO 8601-2000 also allows for calendar dates to be written with reduced precision. For example, one may write "1981-04" to mean "1981 April", and one may simply write "1981" to refer to that year or "19" to refer to the century from 1900 to 1999 inclusive.

NOTE: Although ISO 8601-2000 allows both the YYYY-MM-DD and YYYYMMDD formats for complete calendar date representations, if the day [DD] is omitted then only the YYYY-MM format is allowed. By disallowing dates of the form YYYYMM, ISO 8601-2000 avoids confusion with the truncated representation YYMMDD (still often used).

This Simple DataType defines a value that represents a decimal number as a string. Lexical representation of the string shall conform to decimal type defined in W3C XML Schema Definition Language (XSD) 1.1 Part 2: DataTypes.

The DecimalString is a numeric string with an optional sign and decimal point.

This Simple DataType defines a value that represents a duration of time as a string. It shall conform to duration as defined in ISO 8601-2000.

NOTE: According to ISO 8601-2000 ‘Durations are represented by the format P[n]Y[n]M[n]DT[n]H[n]M[n]S or P[n]W as shown to the right. In these representations, the [n] is replaced by the value for each of the date and time elements that follow the [n]. Leading zeros are not required, but the maximum number of digits for each element should be agreed to by the communicating parties. The capital letters P, Y, M, W, D, T, H, M, and S are designators for each of the date and time elements and are not replaced.

P is the duration designator (historically called "period") placed at the start of the duration representation.

Y is the year designator that follows the value for the number of years.

M is the month designator that follows the value for the number of months.

W is the week designator that follows the value for the number of weeks.

D is the day designator that follows the value for the number of days.

T is the time designator that precedes the time components of the representation.

H is the hour designator that follows the value for the number of hours.

M is the minute designator that follows the value for the number of minutes.

S is the second designator that follows the value for the number of seconds.

For example, "P3Y6M4DT12H30M5S" represents a duration of "three years, six months, four days, twelve hours, thirty minutes, and five seconds". Date and time elements including their designator may be omitted if their value is zero, and lower order elements may also be omitted for reduced precision. For example, "P23DT23H" and "P4Y" are both acceptable duration representations.’

This Simple DataType defines a string value that shall be normalized according to Unicode Annex 15, Version 7.0.0, Normalization Form C.

NOTE: Some Unicode characters have multiple equivalent binary representations consisting of sets of combining and/or composite Unicode characters. Unicode defines a process called normalization that returns one binary representation when given any of the equivalent binary representations of a character. The Win32 and the .NET Framework currently support normalization forms C, D, KC, and KD, as defined in Annex 15 of Unicode. NormalizedString uses Normalization Form C for all content, because this form avoids potential interoperability problems caused by the use of canonically equivalent, yet different, character sequences in document formats.

This Simple DataType defines a value that represents a time as a string. It shall conform to time of day as defined in ISO 8601-2000.

NOTE: ISO 8601-2000 uses the 24-hour clock system. The basic format is [hh][mm][ss] and the extended format is [hh]:[mm]:[ss].

[hh] refers to a zero-padded hour between 00 and 24 (where 24 is only used to notate midnight at the end of a calendar day).

[mm] refers to a zero-padded minute between 00 and 59.

[ss] refers to a zero-padded second between 00 and 60 (where 60 is only used to notate an added leap second).

So a time might appear as either "134730" in the basic format or "13:47:30" in the extended format.

It is also acceptable to omit lower order time elements for reduced accuracy: [hh]:[mm], [hh][mm] and [hh] are all used.

Midnight is a special case and can be referred to as both "00:00" and "24:00". The notation "00:00" is used at the beginning of a calendar day and is the more frequently used. At the end of a day use "24:00"

This abstract DataType is the base type for all DataTypes used to provide the meta data for custom DataTypes like Structures and Enumerations.

This Structured DataType is used to provide the meta data for a custom Structure DataType. It is derived from the DataType DataTypeDefinition. The StructureDefinition is formally defined in Table 34.

Table 34 – StructureDefinition Structure

Name

Type

Description

StructureDefinition

Structure

defaultEncodingId

NodeId

The NodeId of the default DataTypeEncoding for the DataType. The default depends on the message encoding, Default Binary for UA Binary encoding, Default JSON for JSON encoding and Default XML for XML encoding.

If the DataType is only used inside nested Structures and is not directly contained in an ExtensionObject, the encoding NodeId is null.

baseDataType

NodeId

The NodeId of the direct supertype of the DataType. This might be the abstract Structure or the Union DataType.

structureType

Enum

StructureType

An enumeration that specifies the type of Structure defined by the DataType. It has the following values

Structure_0 A Structure without optional fields.

StructureWithOptionalFields_1A Structure with optional fields.

Union_2 A Union DataType

Only one of the fields defined for the data type is encoded into a value if the data type is a Union.

fields

StructureField []

The list of fields that make up the data type.

This definition assumes the structure has a sequential layout.

The StructureField DataType is defined in 8.51.

For Structures derived from another Structure DataType this list shall begin with the fields of the baseDataType followed by the fields of this StructureDefinition.

This Structured DataType is used to provide the metadata for a custom Enumeration or OptionSet DataType. It is derived from the DataType DataTypeDefinition. The EnumDefinition is formally defined in Table 35.

Table 35 – EnumDefinition Structure

Name

Type

Description

EnumDefinition

Structure

fields

EnumField []

The list of fields that make up the data type.

The EnumField DataType is defined in 8.52.

This Structured DataType is used to provide the metadata for a field of a custom Structure DataType. The StructureField is formally defined in Table 36.

Table 36 – StructureField Structure

Name

Type

Description

StructureField

Structure

name

String

A name for the field that is unique within the StructureDefinition.

description

LocalizedText

A localized description of the field

dataType

NodeId

The NodeId of the DataType for the field.

valueRank

Int32

The value rank for the field.

It shall be Scalar (-1) or a fixed rank Array (>=1).

arrayDimensions

UInt32[]

This field specifies the maximum supported length of each dimension. If the maximum is unknown the value shall be 0.

The number of elements shall be equal to the value of the valueRank field. This field shall be null if valueRank ≤ 0.

The maximum number of elements of an array transferred on the wire is 2147483647 (max Int32).

maxStringLength

UInt32

If the dataType field is a String or ByteString then this field specifies the maximum supported length. If the maximum is unknown the value shall be 0.

If the dataType field is not a String or ByteString the value shall be 0.

If the valueRank is greater than 0 this field applies to each element of the array.

isOptional

Boolean

The field indicates if a data type field in a Structure is optional. If the structureType is Union_2 this field shall be ignored. If the structureType is Structure_0 this field shall be false.

StructureFields can be exposed as DataVariables that are children of the Variable that contains the Structure Value. In this case the BrowseName of the DataVariable shall be the same as the StructureField name and the NamespaceIndex of the BrowseName shall be the same as the Structure DataType Node NamespaceIndex.

This Structured DataType is used to provide the metadata for a field of a custom Enumeration or OptionSet DataType. It is derived from the DataType EnumValueType. If used for an OptionSet, the corresponding Value in the base type contains the number of the bit associated with the field. The EnumField is formally defined in Table 37.

Table 37 – EnumField Structure

Name

Type

Description

EnumField

Structure

name

String

A name for the field that is unique within the EnumDefinition.

This abstract DataType defines a ByteString representing audio data. The audio stored in the ByteString could be formats like WAV or MP3 or any number of other audio formats. These formats are self-describing as part of the ByteString and are not specified in this specification.

This Simple DataType defines a high-precision signed number. It consists of an arbitrary precision integer unscaled value and an integer scale. The scale is the inverse power of ten that is applied to the unscaled value.

This is a subtype of the UInt32 DataType with the OptionSetValues Property defined. It is used to define the permissions of a Node. The PermissionType is formally defined in Table 38.

Table 38 – PermissionType Definition

Name

Bit

Description

Browse

0

The Client is allowed to see the references to and from the Node.

This implies that the Client is able to Read to Attributes other than the Value or the RolePermissions Attribute.

This Permission is valid for all NodeClasses.

ReadRolePermissions

1

The Client is allowed to read the RolePermissions Attribute.

This Permission is valid for all NodeClasses.

WriteAttribute

2

The Client is allowed to write to Attributes other than the Value, Historizing or RolePermissions Attribute if the WriteMask indicates that the Attribute is writeable.

This bit affects the value of a UserWriteMask Attribute.

This Permission is valid for all NodeClasses.

WriteRolePermissions

3

The Client is allowed to write to the RolePermissions Attribute if the WriteMask indicates that the Attribute is writeable.

This bit affects the value of the UserWriteMask Attribute.

This Permission is valid for all NodeClasses.

WriteHistorizing

4

The Client is allowed to write to the Historizing Attributes if the WriteMask indicates that the Attribute is writeable.

This bit affects the value of the UserWriteMask Attribute.

This Permission is only valid for Variables.

Read

5

The Client is allowed to read the Value Attribute.

This bit affects the CurrentRead bit of the UserAccessLevel Attribute.

This Permission is only valid for Variables.

Write

6

The Client is allowed to write the Value Attribute.

This bit affects the CurrentWrite bit of the UserAccessLevel Attribute.

This Permission is only valid for Variables.

ReadHistory

7

The Client is allowed to read the history associated with a Node.

This bit affects the HistoryRead bit of the UserAccessLevel Attribute.

This Permission is only valid for Variables, Objects or Views.

InsertHistory

8

The Client is allowed to insert the history associated with a Node.

This bit affects the HistoryWrite bit of the UserAccessLevel Attribute.

This Permission is only valid for Variables, Objects or Views.

ModifyHistory

9

The Client is allowed to modify the history associated with a Node.

This bit affects the HistoryWrite bit of the UserAccessLevel Attribute.

This Permission is only valid for Variables, Objects or Views.

DeleteHistory

10

The Client is allowed to delete the history associated with a Node.

This bit affects the HistoryWrite bit of the UserAccessLevel Attribute.

This Permission is only valid for Variables, Objects or Views.

ReceiveEvents

11

A Client only receives an Event if this bit is set on the Node identified by the EventTypeId field and on the Node identified by the SourceNode field.

This Permission is only valid for EventType Nodes or SourceNodes.

Call

12

The Client is allowed to call the Method if this bit is set on the Object or ObjectType Node passed in the Call request and the Method Instance associated with that Object or ObjectType.

This bit affects the UserExecutable Attribute when set on Method Node.

This Permission is only valid for Objects, ObjectType or Methods.

AddReference

13

The Client is allowed to add references to the Node.

This Permission is valid for all NodeClasses.

RemoveReference

14

The Client is allowed to remove references from the Node.

This Permission is valid for all NodeClasses.

DeleteNode

15

The Client is allowed to delete the Node.

This Permission is valid for all NodeClasses.

AddNode

16

The Client is allowed to add Nodes to the Namespace.

This Permission is only used in the DefaultRolePermissions and DefaultUserRolePermissions Properties of a NamespaceMetadata Object

Reserved

17-31

These bits are reserved for use by OPC UA.

This is a subtype of the UInt16 DataType with the OptionSetValues Property defined. It is used to define the access restrictions of a Node. The AccessRestrictionsType is formally defined in Table 39.

Table 39 – AccessRestrictionsType Definition

Name

Bit

Description

SigningRequired

0

The Client can only access the Node when using a SecureChannel which digitally signs all messages.

EncryptionRequired

1

The Client can only access the Node when using a SecureChannel which encrypts all messages.

SessionRequired

2

The Client cannot access the Node when using SessionlessInvoke Service invocation.

This is a subtype of the Byte DataType with the OptionSetValues Property defined. It is used to indicate how the Value of a Variable can be accessed (read/write) and if it contains current and/or historic data. The AccessLevelType is formally defined in Table 40.

Table 40 – AccessLevelType Definition

Name

Bit

Description

CurrentRead

0

Indicates if the current value is readable. It also indicates if the current value of the Variable is available.(0 means not readable, 1 means readable).

CurrentWrite

1

Indicates if the current value is writable. It also indicates if the current value of the Variable is available (0 means not writable, 1 means writable).

HistoryRead

2

Indicates if the history of the value is readable. It also indicates if the history of the Variable is available via the OPC UA Server.(0 means not readable, 1 means readable).

HistoryWrite

3

Indicates if the history of the value is writable It also indicates if the history of the Variable is available via the OPC UA Server.

(0 means not writable, 1 means writable).

SemanticChange

4

This flag is set for Properties that define semantic aspects of the parent Node of the Property and where the Property Value, and thus the semantic, may change during operation.

(0 means is not a semantic, 1 means is a semantic).

StatusWrite

5

Indicates if the current StatusCode of the value is writable

(0 means only StatusCode Good is writable, 1 means any StatusCode is writable).

TimestampWrite

6

Indicates if the current SourceTimestamp is writable

(0 means only null timestamps are writable, 1 means any timestamp value is writeable).

Reserved

7

Reserved for future use. Shall always be zero.

This is a subtype of the UInt32 DataType with the OptionSetValues Property defined. It is used to indicate how the Value of a Variable can be accessed (read/write), if it contains current and/or historic data and its atomicity.

The AccessLevelExType DataType is an extended version of the AccessLevelType DataType and as such contains the 8 bits of the AccessLevelType as the first 8 bits.

The NonatomicRead, and NonatomicWrite Fields represent the atomicity of a Variable. In general Atomicity is expected of OPC UA read and write operations. These Fields are used by systems, in particular hard-realtime controllers, which can not ensure atomicity.

The AccessLevelExType is formally defined in Table 41.

Table 41 – AccessLevelExType Definition

Name

Bit

Description

0:7

Formally defined by the AccessLevelType in Table 40.

NonatomicRead

8

Indicates non-atomicity for Read access(0 means that atomicity is assured).

NonatomicWrite

9

Indicates non-atomicity for Write access (0 means that atomicity is assured).

WriteFullArrayOnly

10

Indicates if Write of IndexRange is supported.

(0 means Write of IndexRange is supported)

11:31

Reserved for future use. Shall always be zero.

This is a subtype of the Byte DataType with the OptionSetValues Property defined. It is used to indicate if a Node can be used to subscribe to Events or read / write historic Events.

The EventNotifierType is formally defined in Table 42.

Table 42 – EventNotifierType Definition

Name

Bit

Description

SubscribeTo Events

0

Indicates if it can be used to subscribe to Events (0 means cannot be used to subscribe to Events, 1 means can be used to subscribe to Events).

1

Reserved for future use. Shall always be zero.

HistoryRead

2

Indicates if the history of the Events is readable.(0 means not readable, 1 means readable).

HistoryWrite

3

Indicates if the history of the Events is writable.(0 means not writable, 1 means writable).

4:7

Reserved for future use. Shall always be zero.

This is a subtype of the UInt32 DataType with the OptionSetValues Property defined. It is used to define the Attribute access restrictions of a Node. The AttributeWriteMask is formally defined in Table 43.

If a bit is set to 0, it means the Attribute is not writable. If a bit is set to 1, it means it is writable. If a Node does not support a specific Attribute, the corresponding bit has to be set to 0.

Table 43 – Bit mask for WriteMask and UserWriteMask

Field

Bit

Description

AccessLevel

0

Indicates if the AccessLevel Attribute is writable.

ArrayDimensions

1

Indicates if the ArrayDimensions Attribute is writable.

BrowseName

2

Indicates if the BrowseName Attribute is writable.

ContainsNoLoops

3

Indicates if the ContainsNoLoops Attribute is writable.

DataType

4

Indicates if the DataType Attribute is writable.

Description

5

Indicates if the Description Attribute is writable.

DisplayName

6

Indicates if the DisplayName Attribute is writable.

EventNotifier

7

Indicates if the EventNotifier Attribute is writable.

Executable

8

Indicates if the Executable Attribute is writable.

Historizing

9

Indicates if the Historizing Attribute is writable.

InverseName

10

Indicates if the InverseName Attribute is writable.

IsAbstract

11

Indicates if the IsAbstract Attribute is writable.

MinimumSamplingInterval

12

Indicates if the MinimumSamplingInterval Attribute is writable.

NodeClass

13

Indicates if the NodeClass Attribute is writable.

NodeId

14

Indicates if the NodeId Attribute is writable.

Symmetric

15

Indicates if the Symmetric Attribute is writable.

UserAccessLevel

16

Indicates if the UserAccessLevel Attribute is writable.

UserExecutable

17

Indicates if the UserExecutable Attribute is writable.

UserWriteMask

18

Indicates if the UserWriteMask Attribute is writable.

ValueRank

19

Indicates if the ValueRank Attribute is writable.

WriteMask

20

Indicates if the WriteMask Attribute is writable.

ValueForVariableType

21

Indicates if the Value Attribute is writable for a VariableType. It does not apply for Variables since this is handled by the AccessLevel and UserAccessLevel Attributes for the Variable. For Variables this bit shall be set to 0.

DataTypeDefinition

22

Indicates if the DataTypeDefinition Attribute is writable.

RolePermissions

23

Indicates if the RolePermissions Attribute is writable.

AccessRestrictions

24

Indicates if the AccessRestrictions Attribute is writable.

AccessLevelEx

25

Indicates if the AccessLevelEx Attribute is writable.

Reserved

26:31

Reserved for future use. Shall always be zero.