The DataType Model is used to define simple and structured data types. Data types are used to describe the structure of the Value Attributeof Variables and their VariableTypes. Therefore each Variableand VariableTypeis pointing with its DataType Attributeto a Nodeof the DataType NodeClassas shown in Figure 17.


Figure 17– Variables, VariableTypes and their DataTypes

In many cases, the NodeIdof the DataType Node– the DataTypeId– will be well-known to Clientsand Servers. Clause 7.23defines DataTypesand OPC 10000-6defines their DataTypeIds. In addition, other organizations may define DataTypesthat are well-known in the industry. Well-known DataTypeIdsprovide for commonality across OPC UA Serversand allow Clientsto interpret values without having to read the type description from the Server. Therefore, Serversmay use well-known DataTypeIdswithout representing the corresponding DataType Nodesin their AddressSpaces.

In other cases, DataTypesand their corresponding DataTypeIdsmay be vendor-defined. Serversshould attempt to expose the DataType Nodesand the information about the structure of those DataTypesfor Clientsto read, although this information might not always be available to the Server.

Figure 18illustrates the Nodesused in the AddressSpaceto describe the structure of a DataType. The DataTypepoints to an Objectof type DataTypeEncodingType. Each DataTypecan have several DataTypeEncoding, for example “Default”, “UA Binary” and “XML” encoding. Services in OPC 10000-4allow Clientsto request an encoding or choosing the “Default” encoding. Each DataTypeEncodingis used by exactly one DataType, that is, it is not permitted for two DataTypesto point to the same DataTypeEncoding.


Figure 18– DataType Model

Since the NodeIdof the DataTypeEncodingwill be used in some Mappings to identify the DataTypeand it’s encoding as defined in OPC 10000-6, those NodeIdsmay also be well-known for well-known DataTypeIds.