Engineering unit (UNECE)
In OPC UA, engineering units are carried by an EUInformation structure on an AnalogItemType variable, using the code list from UNECE Recommendation 20. It holds a namespace URI, a numeric unitId derived from the Rec 20 code, a display name such as degree Celsius, and a description, so units travel as data rather than as a tag-name convention.
How a unit is expressed
AnalogItemType variables carry an EngineeringUnits property of type EUInformation and normally an EURange property of type Range. EUInformation has four fields: namespaceUri identifying the code list, unitId as an Int32, displayName as LocalizedText, and description. For UNECE Recommendation 20 the unitId is the three-character common code interpreted as its ASCII bytes, so CEL for degree Celsius becomes 0x43454C. The OPC Foundation ships the mapping tables in its nodeset repository, including UNECE_to_OPCUA.csv and the rec20 CSV files, plus IEC62720_to_OPCUA.csv.
What tooling does with it
A client that reads EngineeringUnits and EURange can render a value correctly without any per-project configuration. opcua-commander does exactly this, showing a value as 42.5 degrees Celsius and its range as 0 to 100. This is the practical argument for populating units in your model: any conformant browser, dashboard or historian picks them up, whereas a unit encoded in the BrowseName as Temp_degC is only readable by code that knows your naming rule.
Where it goes wrong in the field
Three failure modes recur. Units are simply absent, because the vendor modelled plain Double variables rather than AnalogItemType. Units are present but wrong, typically a copy-paste of the wrong Rec 20 code, so pressure arrives labelled as bar when the device reports kPa. Or the displayName is populated with a free-text string while unitId is left at zero, which is human-readable but not machine-comparable, defeating the point. Validate units during commissioning against a known physical value rather than trusting the model.
Example
An EUInformation for degree Celsius, showing where the unitId comes from
EngineeringUnits (EUInformation)
namespaceUri = http://www.opcfoundation.org/UA/units/un/cefact
unitId = 4408652 # ASCII bytes of "CEL" -> 0x43 0x45 0x4C
displayName = degC
description = degree Celsius
EURange (Range)
low = 0.0 high = 100.0
Defined in: Part 8 - Data Access, AnalogItemType and EUInformation.
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.