Glossary · Data

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
The mistake people make: Treating displayName as the unit of record. Only unitId is machine-comparable; a pipeline that groups or converts on the display string will treat degC, C and Celsius as three different units, and will silently mix them in one aggregation.

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.

Free download
OPC UA Server Acceptance Test Pack
A 40-check acceptance test you run against a vendor's server before commissioning sign-off. Weighted scoring, three hard gates, and a one-page verdict for the supplier meeting.
Get the free test pack →
Free, no course, no login