The DataType NodeClassdescribes the syntax of a Variable Value. DataTypesare defined using the DataType NodeClass, as specified in Table 16.

Table 16– DataType NodeClass

Name

Use

Data Type

Description

Attributes

Base NodeClass Attributes

M

--

Inherited from the Base NodeClass. See 5.2.

IsAbstract

M

Boolean

A boolean Attributewith the following values:

TRUEit is an abstract DataType.

FALSEit is not an abstract DataType.

DataTypeDefinition

O

DataTypeDefinition

The DataTypeDefinition Attributeis used to provide the meta data and encoding information for custom DataTypes. The abstract DataTypeDefinition DataTypeis defined in 8.47.

Structure and Union DataTypes

The Attributeis mandatory for DataTypesderived from Structureand Union. For such DataTypes, the Attributecontains a structure of the DataType StructureDefinition. The StructureDefinition DataTypeis defined in 8.48. It is a subtype of DataTypeDefinition.

Enumeration and OptionSet DataTypes

The Attributeis mandatory for DataTypesderived from Enumeration, OptionSetand subtypes of UInteger representing an OptionSet. For such DataTypes, the Attributecontains a structure of the DataType EnumDefinition. The EnumDefinition DataTypeis defined in 8.49. It is a subtype of DataTypeDefinition.

References

HasProperty

0..*

HasProperty Referencesidentify the Propertiesfor the DataType.

HasSubtype

0..*

HasSubtype References may be used to span a data type hierarchy.The inverse Referenceidentifies the parent type of this type.

HasEncoding

0..*

HasEncoding References identify the encodings of the DataTyperepresented as Objectsof type DataTypeEncodingType.

Only concrete Structured DataTypesmay use HasEncoding References. Abstract, Built-in, Enumeration,and Simple DataTypesare not allowed to be the SourceNodeof a HasEncoding Reference.

Each concrete Structured DataTypeshall point to at least one DataTypeEncoding Objectwith the BrowseName“Default Binary” or “Default XML” having the NamespaceIndex0. The BrowseNameof the DataTypeEncoding Objectsshall be unique in the context of a DataType, i.e. a DataTypeshall not point to two DataTypeEncodingshaving the same BrowseName.

Standard Properties

NodeVersion

O

String

The NodeVersion Propertyis used to indicate the version of a Node.

The NodeVersion Propertyis updated each time a Referenceis added or deleted to the Nodethe Propertybelongs to. Attributevalue changes do not cause the NodeVersionto change. Clients may read the NodeVersion Propertyor subscribe to it to determine when the structure of a Nodehas changed. Clientsshall not use the content for programmatic purposes except for equality comparisions.

EnumStrings

O

LocalizedText[]

Enumeration DataTypesshall have either an EnumStringsProperty or an EnumValuesProperty. They shall not be applied for other DataTypes.

Each entry of the array of LocalizedTextin this Propertyrepresents the human-readable representation of an enumerated value. The Integer representation of the enumeration value points to a position of the array.

EnumValues

O

EnumValueType[]

Enumeration DataTypesshall have either an EnumStrings Propertyor an EnumValues Property. They shall not be applied for other DataTypes.

The EnumValues Propertyshall be used to represent Enumerations with integers that are not zero-based or have gaps (e.g. 1, 2, 4, 8, and 16).

Each entry of the array of EnumValueTypein this Propertyrepresents one enumeration value with its integer notation, human-readable representation and help information.

OptionSetValues

O

LocalizedText[]

The OptionSetValues Propertyshall be applied to OptionSet DataTypes and UInteger DataTypes representing bit masks.

An OptionSet DataTypeor UInteger DataTypeis used to represent a bit mask and the OptionSetValues Propertycontains the human-readable representation for each bit of the bit mask.

The OptionSetValues Propertyshall provide an array of LocalizedTextcontaining the human-readable representation for each bit.

OptionSetLength

O

UInt32

The OptionSetLength Propertyshall only be applied to subtypes of the OptionSet DataType.

It optionally provides the length, in bytes,of the OptionSet.

The provided length shall at least provide enough bytes that all bits defined in the OptionSetValuescan be managed. For example, if 18 bits are defined by the OptionSetValues, the OptionSetLengthshall be at least 3 bytes.

The DataType NodeClassinherits the base Attributesfrom the Base NodeClassdefined in 5.2. The IsAbstract Attribute specifies if the DataTypeis abstract or not. Abstract DataTypescan be used in the AddressSpace, i.e. Variablesand VariableTypescan point with their DataType Attributeto an abstract DataType. However, concrete values can never be of an abstract DataTypeand shall always be of a concrete subtype of the abstract DataType.

HasProperty Referencesare used to identify the Propertiesof a DataType. The Property NodeVersionis used to indicate the version of the DataType. The Property EnumStringscontains human-readable representations of enumeration values and is only applied to Enumeration DataTypes. Instead of the EnumStrings Propertyan Enumeration DataTypecan also use the EnumValues Propertyto represent Enumerationswith integer values that are not zero-based or containing gaps. There are no additional Propertiesdefined for DataTypesin this standard. Additional parts of this series of standards may define additional Propertiesfor DataTypes.

HasSubtype Referencesmay be used to expose a data type hierarchy in the AddressSpace. The semantic of subtyping is only defined to the point, that a Server may provide instances of the subtype instead of the DataType. Clientsshould not make any assumptions about any other semantic with that information. For example, it might not be possible to cast a value of one data type to its base data type. Serversneed not provide HasSubtype References, even if their DataTypesspan a type hierarchy, however it is required that the subtype provides the inverse Referenceto its supertype. Some restrictions apply for subtyping enumeration DataTypes as defined in 8.14.

HasEncoding Referencespoint from the DataTypeto its DataTypeEncodings. Each concrete Structured DataTypecan point to many DataTypeEncodings, but each DataTypeEncodingshall belong to one DataType, that is, it is not permitted for two DataType Nodesto point to the same DataTypeEncoding Objectusing HasEncoding References. The DataTypeEncoding Nodeshall provide the inverse HasEncoding Referenceto its DataType.

An abstract DataTypeis not the SourceNodeof a HasEncoding Reference. The DataTypeEncodingof an abstract DataTypeis provided by its concrete subtypes.

DataType Nodesshall not be the SourceNodeof other types of References. However, they may be the TargetNodeof other References.