VariableType
In OPC UA, a VariableType defines the shape of Variables: the DataType, ValueRank and ArrayDimensions its instances take, and the Properties they carry. Every Variable has a HasTypeDefinition reference to one. The two roots are BaseDataVariableType for process data and PropertyType for metadata.
The standard roots
BaseVariableType at i=62 is abstract and splits into BaseDataVariableType at i=63, the type of ordinary process Variables, and PropertyType at i=68, the type of metadata Variables reached by HasProperty. Choosing between them is a modelling decision, not a cosmetic one: Properties are leaves and are expected to be static, DataVariables may have children and are expected to change.
What a VariableType constrains
A VariableType fixes the DataType, ValueRank and ArrayDimensions its instances must be compatible with, and may declare Properties that every instance carries. AnalogItemType, for example, requires EURange and EngineeringUnits, which is why a client meeting an AnalogItemType Variable knows it can render units and a range without probing. A subtype may narrow the DataType to a subtype of the parent's, never widen it.
The Part 8 family in practice
DataItemType adds Definition and ValuePrecision. AnalogItemType adds EURange, InstrumentRange and EngineeringUnits; AnalogUnitType and AnalogUnitRangeType refine it. TwoStateDiscreteType carries TrueState and FalseState texts, MultiStateDiscreteType an EnumStrings array, MultiStateValueDiscreteType an EnumValues array of value-to-text mappings. Using these instead of a bare Double or Int32 is the cheapest way to make a PLC address space self-describing.
Example
Standard VariableTypes and what they add
BaseVariableType (i=62, abstract)
+- BaseDataVariableType (i=63) process data, may have children
| +- DataItemType + Definition, ValuePrecision
| +- AnalogItemType + EURange, InstrumentRange, EngineeringUnits
| | +- AnalogUnitType
| | +- AnalogUnitRangeType
| +- DiscreteItemType (abstract)
| +- TwoStateDiscreteType + TrueState, FalseState
| +- MultiStateDiscreteType + EnumStrings
| +- MultiStateValueDiscreteType + EnumValues, ValueAsText
+- PropertyType (i=68) metadata, must be a leaf
Defined in: Part 3 - Address Space Model, VariableType NodeClass; Part 5 - Information Model for the standard types; Part 8 - Data Access for the analogue and discrete item types.
Last verified 7 September 2026 against OPC UA 1.05.07. OPC UA Connect is an educational resource and is not affiliated with the OPC Foundation.