EUInformation contains information about the EngineeringUnits.
The intention of the OPC UA standard is not to define a set of units but a way to expose units based on existing systems. Since there is not a single worldwide set of units used in all industries, the EUInformation structure includes a separate field (the namespaceUri) to identify the system on which the exposed unit is based.
The default OPC UA mapping is based on UN/CEFACT as defined in clause 5.6.3.4, because it can be programmatically interpreted by generic OPC UA Clients. However, the EUInformation structure has been defined such that other standards bodies can incorporate their engineering unit definitions into OPC UA. If Servers use such an approach then they shall identify this standards body by using a proper URI in EUInformation.namespaceUri.
Servers can enhance EUInformation by providing the Quantity and Unit model (see 0) and referencing from EUInformation instances to the appropriate instances for quantity and unit. See Figure 5 for an example.
Figure 5 – Enhanced EUInformation example
The EUInformation elements are defined in Table 19.
Table 19 – EUInformation DataType structure
Name |
Type |
Description |
EUInformation |
structure |
|
namespaceUri |
String |
Identifies the organization (company, standards organization) that defines the EUInformation. |
unitId |
Int32 |
Identifier for programmatic lookup. −1 is used if a unitId is not available. |
displayName |
LocalizedText |
The displayName of the engineering unit is typically the abbreviation of the engineering unit, for example "h" for hour or "m/s" for meter per second. |
description |
LocalizedText |
Contains the full name of the engineering unit such as "hour" or "meter per second". |
Its representation in the AddressSpace is defined in Table 20.
Table 20 – EUInformation definition
Attribute |
Value |
|||||
BrowseName |
EUInformation |
|||||
IsAbstract |
False |
|||||
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
Other |
|
Subtype of Structure defined in OPC 10000-5. |
||||||
Conformance Units |
||||||
Base Info EUInformation |
This clause specifies how to apply the “Codes for Units of Measurement” published by the “United Nations Centre for Trade Facilitation and Electronic Business” (see https://www.unece.org/cefact/codesfortrade/codes_index.html). This recommendation establishes a single list of code elements to represent units of the International System of Units (SI Units) like units of measure for length, mass (weight), volume and other quantities and in addition covers administration, commerce, transport, science, technology, industry etc. It provides a fixed code that can be used for automated evaluation.
Table 21 contains a small excerpt of the relevant columns in the UNECE recommendation:
Table 21 – Examples from the UNECE Recommendation
Excerpt from Recommendation N°. 20, Annex 1 |
||
Common Code |
Name |
Symbol |
C81 |
radian |
rad |
C25 |
milliradian |
mrad |
MMT |
millimetre |
mm |
HMT |
hectometre |
hm |
KMT |
kilometre |
km |
KMQ |
kilogram per cubic metre |
kg/m3 |
FAH |
degree Fahrenheit |
°F |
The UNECE recommendation in several cases defines multiple instances of the same unit (same name and symbol) for different quantities. Therefore, the relevant information for EUInformation.unitId, EUInformation.displayName, and EUInformation.description has been extracted by eliminating duplicates. This extract is available here:
http://www.opcfoundation.org/UA/EngineeringUnits/UNECE/UNECE_to_OPCUA.csv
This mapping has been generated as follows:
- The namespaceUri shall be http://www.opcfoundation.org/UA/units/un/cefact
- The Common Code (represented as an alphanumeric variable length of up to 3 characters) has been converted into a 32 Bit Integer and is used for the unitId. The following pseudo code specifies the conversion algorithm:
Int32 unitId = 0; Int32 c; for (i=0; i<=3;i++) {
c = CommonCode[i]; if (c == 0) break; // end of Common Code unitId = unitId << 8; unitId = unitId | c;}
- The Symbol field shall be used as invariant locale for displayName. Servers may configure multiple additional locales for each displayName. However, if none of the LocaleIds specified by the Client for the Session matches these additional locales, the Server shall return the invariant locale.
- The Name field shall be used as invariant locale for description. Servers may configure multiple additional locales for each description. However, if none of the LocaleIds specified by the Client for the Session matches these additional locales, the Server shall return the invariant locale.