This model supplements the information of EngineeringUnit Properties, providing comprehensive ObjectTypes for quantities and units and their linkage. See 5.6.3 how EngineeringUnit Properties reference instances of these ObjectTypes. It is also possible to specify AlternativeUnits and the conversion factors.
Furthermore, the model provides a powerful way to relate quantities and units to established works of other organizations (see Syntax References in 6.3).
Figure 6 Illustrates the model.
Figure 6 – Quantity model overview
Quantities is a standardized entry point to access all Quantities and their Units managed in the Server. It is formally defined in Table 32. All Objects of the QuantityType defined in clause 6.4.1, that are managed in the Server, shall be referenced directly from this Object with Organizes or a subtype of Organizes.
Table 32 – Quantities definition
Attribute |
Value |
|||
BrowseName |
Quantities |
|||
Description |
This Object is the entry point to quantities and their units managed in the Server. |
|||
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
OrganizedBy by the Server Object defined in OPC 10000-5 |
||||
HasTypeDefinition |
ObjectType |
FolderType |
|
|
Conformance Units |
||||
Data Access Quantities Base |
Syntax References represent established works of other organizations. Such works – among others – can define semantic information, topologies, a language for a code set, or dictionaries and facilitate the programmatic evaluation or the lookup of a quantity or unit e.g. in a dictionary or ontology. They can be publicly defined by standard bodies such as IEC or proprietary (e.g. vendor-specific dictionaries).
The Quantities and Unit Model provides a powerful way to relate quantities and units to such Syntax References using the Dictionary References model defined in OPC 10000-19.
Table 33 lists Syntax References that are applied in certain markets. This list can be extended in future versions. Vendors or organizations can also specify additional Syntax References.
An overview for each Syntax Reference in this table is provided in Annex C.
Table 33 – List of Syntax References
Common Name |
Syntax Reference URI |
Full Name |
UCUM |
Unified Code for Units of Measure |
|
QUDT |
Quantities, Units, Dimensions and Types Ontology |
|
IEC CDD |
Common Data Dictionary |
|
UNECE |
Codes for Units of Measure Used in International Trade |
|
LATEX_SIUNITX |
LaTeX SI Unit Extension |
HasDictionaryEntry is used to define the relationship to a Syntax Reference by referencing from quantity or unit Nodes to an instance of a SyntaxReferenceEntryType. Each quantity or unit instance can have zero, one or more such references.
Instances of SyntaxReferenceEntryType have a well-defined NodeId as defined in Table 34.
Table 34 – Definition of NodeId for instances of the SyntaxReferenceEntryType
Name |
Type |
Definition for instances of the SyntaxReferenceEntryType |
NodeId |
structure |
|
namespaceIndex |
UInt16 |
The NamespaceTable index for the Syntax Reference URI (see Table 33). |
IdType |
Enum |
String |
identifier |
* |
The Syntax Reference identifier (SyntaxReferenceId), see 6.3.3 |
When calling the Browse Service for a Quantity or Unit Node, the response includes the HasDictionaryEntry Reference together with the well-defined NodeId for the SyntaxReferenceEntryType instance. The actual instance therefore is not required in the AddressSpace.
Figure 7 provides an example of References to external works.
Figure 7 – References to external works
Table 35 defines the identifiers for each Syntax Reference.
Table 35 – List of Syntax Reference Identifiers
Common Name |
Identifier |
UCUM |
QuantityType instances: The UCUM Syntax ReferenceID for quantities shall include the prefix “quantityKind:” followed by the name of the quantity. |
UnitType instances: The UCUM SyntaxReferenceId for units shall include an expression based on the UCUM syntax making use of the symbols named in the “C/S” entry of the UCUM spec (https://ucum.org/ucum.html). Codes (expressions) for common units are defined in Annex B. |
QUDT |
QuantityType instances: The QUDT Syntax ReferenceID for quantities shall include the prefix “quantityKind:” followed by the name of the quantity as in . Example quantities are in C.2 |
UnitType instances: The QUDT Syntax ReferenceID for units shall include the prefix “unit:” followed by the name of the unit as in . Example units are in |
IEC CDD |
QuantityType instances: The IEC CDD SyntaxReferenceId shall include the IRDI of the respective quantity. Example quantities are in C.4. |
UnitType instances: The IEC CDD SyntaxReferenceId shall include the IRDI of the respective unit. Example units are in C.4. |
UNECE |
QuantityType instances: There are no UNECE Syntax References for quantities. |
UnitType instances: The UNECE SyntaxReferenceId shall include the common code from “Codes for Units of Measurement” published by the “United Nations Centre for Trade Facilitation and Electronic Business” (see REF UNECE \h \* MERGEFORMAT UNECE).
Example units are in C.3. |
LATEX_SIUNITX |
QuantityType instances: There are no LATEX_SIUNITX Syntax References for quantities. |
UnitType instances: The LATEX_SIUNITX SyntaxReferenceId shall include the leading slash, the keyword of the macro as well as the entire argument.
Example units are in C.5. |
The QuantityType defines a model for physical quantities. These are listed in the Quantites Folder. Each quantity has a ServerUnits Folder in which the units, referenced by EngineeringUnit Properties with HasEngineeringUnitDetails, are listed. Each ServerUnit can have a list of alternative units to which the Variable value can be converted.
It is illustrated in Figure 8 and formally defined in Table 36.
Table 36 – QuantityType definition
Attribute |
Value |
||||
BrowseName |
QuantityType |
||||
IsAbstract |
False |
||||
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
Other |
Subtype of the BaseObjectType defined in OPC 10000-5 |
|||||
HasProperty |
Variable |
Symbol |
LocalizedText |
PropertyType |
O |
|
|
|
|
|
|
HasProperty |
Variable |
Annotation |
AnnotationDataType[] |
PropertyType |
O |
HasProperty |
Variable |
ConversionService |
UriString |
PropertyType |
O |
HasProperty |
Variable |
Dimension |
QuantityDimension |
PropertyType |
M |
HasComponent |
Object |
ServerUnits |
|
BaseObjectType |
M |
Conformance Units |
|||||
Data Access Quantities Base |
The DisplayName Attribute of each instance shall provide the name of the quantity, e.g. “acceleration”, “battery capacity” or “pressure in relation to volume flow rate”.
The Description Attribute should be used to expose a more verbose explanation of the QuantityType instance.
The Symbol Property is used for the symbol of the quantity (e.g. ‘l’ for length, ‘t’ for time, or ‘T’ for temperature).
Annotation allows naming annotations for a physical quantity. These Annotations are explanations of the physical quantity such as "relative" for a relative velocity. The AnnotationDataType is described in chapter 6.6.1.
For example, a VAC RMS measurement is the quadratic mean measurement of an AC voltage. We are using two annotation elements to represent it. Its Instance would contain the following values:
Annotation |
Discipline |
uri |
AC |
Electrical Engineering |
|
RMS |
Electrical Engineering |
ConversionService allows to name an external conversion service for the unit in which the client can have a conversion to a target unit performed.
Dimension describes the dimension of a physical quantity in power representation. Its DataType is described in chapter 6.6.4.
ServerUnits allows listing ServerUnits for a physical quantity. The ServerUnits are of ServerUnitType which is described in 6.4.2.
Syntax References: Instances of the QuantityType can identify the physical quantity in a specific external reference work using HasDictionaryEntry References – see 6.3.2.
The components of the QuantityType have additional subcomponents which are defined in Table 37.
Table 37 – QuantityType Additional Subcomponents
BrowsePath |
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
Others |
ServerUnits |
HasComponent |
Object |
<ServerUnit> |
|
ServerUnitType |
MP |
The Units model describes the relations between UnitType, ServerUnitType and AlternativeUnitType.
The UnitType is the base class and defines details that are relevant of all derived types.
It is formally defined in Table 38.
Table 38 – UnitType definition
Attribute |
Value |
||||
BrowseName |
UnitType |
||||
IsAbstract |
True |
||||
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
Other |
Subtype of the BaseObjectType defined in OPC 10000-5 |
|||||
HasProperty |
Variable |
Symbol |
LocalizedText |
PropertyType |
M |
|
|
|
|
|
|
HasProperty |
Variable |
UnitSystem |
String |
PropertyType |
M |
HasProperty |
Variable |
Discipline |
String |
PropertyType |
O |
Conformance Units |
|||||
Data Access Quantities Base |
The DisplayName Attribute of each instance shall provide the name of the unit, e.g. “second”, “degree Celsius” or “square metre”. This matches the “description” field of the EUInformation structure (see 5.6.3.3).
The Description Attribute should be used to expose a more verbose explanation of the UnitType instance.
The Symbol Property is used for the symbol of the unit (e.g. "h" for hour or "m/s" for meter per second). If no symbol is defined for the unit, the DisplayName Attribute shall be used as symbol. Symbol matches the “displayName” field of the EUInformation structure (see 5.6.3.3).
The UnitSystem Property describes the system of units (e.g. ISQ) in which the unit is specified. If any of the well-known systems defined in Table 39 is used, the acronym in the column “UnitSystem” shall be used for the value of this Property.
Table 39 – Non-exhaustive list of well-known systems of units
UnitSystem |
System of units |
ISQ |
International System of Quantities (ISO/IEC 80000) Fully covers and thus replaces SI (ISO 1000) |
USCS |
US Customary Unit System |
ISU |
British imperial system of units |
MSU |
Myanmar Units of measurement |
TROY |
Troy units of weight |
CGS |
centimetre–gram–second system of units |
GAUSS |
Gaussian System of units |
FPS |
foot–pound–second system of units |
Syntax References: Instances of the UnitType can identify the unit in a specific external reference work using HasDictionaryEntry References – see 6.3.2.
Instances of ServerUnitType define the units utilizes in the Server. They are assigned to the proper Quantities. EngineeringUnit Properties can refer to it. It is formally defined in Table 40.
Table 40 – ServerUnitType definition
Attribute |
Value |
||||
BrowseName |
ServerUnitType |
||||
IsAbstract |
False |
||||
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
Other |
Subtype of the UnitType |
|||||
HasComponent |
Object |
AlternativeUnits |
|
BaseObjectType |
O |
HasProperty |
Variable |
ConversionLimit |
ConversionLimitEnum |
PropertyType |
M |
HasComponent |
Object |
CoherentUnit |
|
UnitType |
O |
Conformance Units |
|||||
Data Access Quantities Base |
The optional Object AlternativeUnits contains Objects of the AlternativeUnitsType. These explicitly specify the units into which the conversion can be made.
The mandatory Property ConversionLimit indicates whether the ServerUnit can be converted. A distinction is made between NO_CONVERSION, LIMITED and UNLIMITED.
UNLIMITED means the client can perform conversions based on the rules defined by the given UnitSystem.
LIMITED conversion means that a conversion can not be performed by simply applying the rules defined by the given UnitSystem. Either only the conversions mentioned in the AlternativeUnits are to be used or the client requires application specific know-how for a conversion on his own.
NO_CONVERSION means that no conversion is allowed (e.g. for statistical values).
The CoherentUnit of a value is a derived unit that, for a given system of quantities and for a chosen set of base units, is a product of powers of base units, with the proportionality factor being one. Therefore it shall share the same UnitSystem as the ServerUnit.
The components of the ServerUnitType have additional subcomponents which are defined in Table 41.
Table 41 – ServerUnitType Additional Subcomponents
BrowsePath |
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
Other |
AlternativeUnits |
HasComponent |
Object |
<AlternativeUnit> |
|
AlternativeUnitType |
MP |
The AlternativeUnitType describes alternative units to a ServerUnit. It is required to specify a conversion method for a value from the ServerUnit to this AlternativeUnit. It is formally defined in Table 42.
The use of conversions enables that a server and a client can work with different units and even in different systems of units. E.g. a server works with imperial units and a client uses metric units.
As a single server can distribute values to a number of clients with different needs the actual conversion has to be performed at client side.
Table 42 – AlternativeUnitType definition
Attribute |
Value |
||||
BrowseName |
AlternativeUnitType |
||||
IsAbstract |
False |
||||
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
Other |
Subtype of the UnitType |
|||||
HasProperty |
Variable |
LinearConversion |
LinearConversionDataType |
PropertyType |
O |
HasProperty |
Variable |
MathMLConversion |
String |
PropertyType |
O |
HasProperty |
Variable |
MathMLInverseConversion |
String |
PropertyType |
O |
Conformance Units |
|||||
Data Access Alternative Units |
The Server shall provide either a LinearConversion or a MathMLConversion together with a corresponding MathMLInverseConversion. It can provide Linear and MathML conversions in parallel.
The optional Property LinearConversion represents a simple conversion according to the following formula. The values (a, b, c, d) are given in a Structure as defined in the LinearConversionDataType in chapter 6.6.2. The value x is published by the Server in the named server unit and y is the value converted into the named alternative unit.
Figure 10 – MathML example linear conversion
This also defines the inverse conversion to be used if a Client wants to write a value to the Server. The values (a, b, c, d) are given in a Structure as defined in the LinearConversionDataType in chapter 6.6.2. The value y1 is the value that the Client wants to write to the Server in the named alternative unit and x1 is the value the Client actually has to write to the Server instead
Figure 11 – MathML example inverse linear conversion
The optional Property MathMLConversion allows the specification of all kinds of conversion methods. The MathML syntax is used for this. Within the MathML expression X always stands for the value at the server side and Y for the value at the client side. An example (formula of the LinearConversion) looks as follows.
The SyntaxReferenceEntryType defined in Table 43 is used to represent Syntax References that use Syntax Reference specific IDs as unique identifiers.
Because of their well-defined NodeIds (see 6.3.2), instances of this type are not required in the AddressSpace.
Table 43 – SyntaxReferenceEntryType Definition
Attribute |
Value |
|||||
BrowseName |
SyntaxReferenceEntryType |
|||||
IsAbstract |
False |
|||||
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
Other |
|
Subtype of the DictionaryEntryType defined in OPC 10000-19 |
||||||
HasProperty |
Variable |
CommonName |
String |
PropertyType |
M |
|
Conformance Units |
||||||
Data Access Quantity Syntax Reference |
CommonName shall be the corresponding field in Table 33.
The namespace for the NodeId and the BrowseName Attributes of instances of the SyntaxReferenceEntryType shall be the URI of the Syntax Reference as defined in Table 33.
The HasEngineeringUnitDetails is a concrete ReferenceType and can be used directly. It is a subtype of NonHierarchicalReferences.
The semantics of this ReferenceType is to link a Variable with EUInformation DataType to its more detailed AddressSpace representation Instance of the ServerUnitType ObjectType.
The SourceNode of References of this type shall be a Variable with EUInformation DataType.
The TargetNode of this ReferenceType shall be an Instance of the ServerUnitType ObjectType.
The Reference has to change if the value (the concrete EngineeringUnit) is changing. Clients can subscribe to the value and then need to rebrowse.
The HasEngineeringUnitDetails is formally defined in Table 44.
Table 44 – HasEngineeringUnitDetails definition
Attributes |
Value |
||
BrowseName |
HasEngineeringUnitDetails |
||
InverseName |
EngineeringUnitDetailsOf |
||
Symmetric |
False |
||
IsAbstract |
False |
||
References |
NodeClass |
BrowseName |
Comment |
Subtype of NonHierarchicalReferences defined in OPC 10000-5. |
|||
Conformance Units |
|||
Data Access Quantities Base |
The HasQuantity is a concrete ReferenceType and can be used directly. It is a subtype of NonHierarchicalReferences.
The semantics of this ReferenceType is to link a Variable with EUInformation DataType to an Instance of the QuantityType ObjectType.
The SourceNode of References of this type shall be a Variable with EUInformation DataType (typically the EngineeringUnits Property).
The TargetNode of this ReferenceType shall be an Instance of the QuantityType ObjectType.
The HasQuantity is formally defined in Table 45.
Table 45 – HasQuantity definition
Attributes |
Value |
||
BrowseName |
HasQuantity |
||
InverseName |
QuantityOf |
||
Symmetric |
False |
||
IsAbstract |
False |
||
References |
NodeClass |
BrowseName |
Comment |
Subtype of NonHierarchicalReferences defined in OPC 10000-5. |
|||
Conformance Units |
|||
Data Access Quantities Base |
This structure contains additions as explanation and specification of the physical quantity such as "relative" for a relative velocity. The structure is defined in Table 46.
Table 46 – AnnotationDataType Structure
Name |
Type |
Description |
AnnotationDataType |
structure |
Subtype of Structure defined in OPC 10000-5 |
Annotation |
String |
Names the annotation to give further information about value like how it is measured or where it originates from. |
Discipline |
String |
Gives a human readable classification of the physical quantity according to its field of application to allow grouping of values. These can be, for example, “Engineering”, “Finance” or similar. |
Uri |
String |
Names a source for deeper description of the annotation. |
Examples are given in Table 47.
Table 47 – AnnotationDataType examples
Name |
Values for a linear acceleration |
Values for AC voltage |
Values for DC voltage |
Values for AC RMS voltage |
AnnotationDataType |
|
|
|
|
Annotation |
linear |
AC |
DC |
RMS |
Discipline |
- |
Electrical Engineering |
Electrical Engineering |
Electrical Engineering |
Uri |
- |
Its representation in the AddressSpace is defined in Table 48.
Table 48 – AnnotationDataType definition
Attribute |
Value |
|||||
BrowseName |
AnnotationDataType |
|||||
IsAbstract |
False |
|||||
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
Other |
|
Subtype of the Structure defined in OPC 10000-5 |
||||||
Conformance Units |
||||||
Data Access Quantities Base |
This structure contains a simple conversion according to the following formula. The factors (a = inititialAddend, b = multiplicand, c = divisor, d = finalAddend) are given in a Structure. X is the source value (in source unit) and f(x) the target value (in target unit). The structure is defined in Table 49.
The values of the structure can also be used for a simple inverse conversion. It can be used if a Client wants to write a value to the Server. The value y1 is the value that the Client wants to write to the Server in the named alternative unit and x1 is the value the Client actually has to write to the Server instead.
Table 49 – LinearConversionDataType Structure
Name |
Type |
Description |
LinearConversionDataType |
Structure |
Subtype of Structure defined in OPC 10000-5 |
InitialAddend |
Float |
The initial addend of linear conversion. |
Multiplicand |
Float |
The multiplicand of linear conversion. |
Divisor |
Float |
The divisor of linear conversion. |
FinalAddend |
Float |
The final addend of linear conversion. |
Its representation in the AddressSpace is defined in Table 48.
Table 50 – LinearConversionDataType Definition
Attribute |
Value |
|||||
BrowseName |
LinearConversionDataType |
|||||
IsAbstract |
False |
|||||
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
Other |
|
Subtype of the Structure defined in OPC 10000-5 |
||||||
Conformance Units |
||||||
Data Access Alternative Units |
ConversionLimitEnum indicates whether the ServerUnit can be converted. A distinction is made between NO_CONVERSION, LIMITED and UNLIMITED. NO_CONVERSION means that no conversion is allowed (e.g. for statistical values). LIMITED conversion means that either only the conversions mentioned in the AlternativeUnits are to be used or the client requires specific know-how for the conversion. UNLIMITED means the conversion is simple and possible if the client knows the UnitSystem. The enumeration is defined in Table 51.
Table 51 – ConversionLimitEnum Items
Name |
Value |
Description |
NO_CONVERSION |
0 |
No conversion of the value allowed (e.g. statistical value). |
LIMITED |
1 |
Conversion only permitted on the basis of the conversions specified by the server, or if the client has the appropriate domain knowledge to perform an independent conversion. |
UNLIMITED |
2 |
Conversion on the basis of the specified unit according to the rules of the source system of units (e.g. SI / ISQ) and the coding system (e.g. UCUM) is permitted. |
Its representation in the AddressSpace is defined in Table 52.
Table 52 – ConversionLimitEnum Definition
Attribute |
Value |
|||||
BrowseName |
ConversionLimitEnum |
|||||
IsAbstract |
False |
|||||
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
Other |
|
Subtype of the Enumeration type defined in OPC 10000-5 |
||||||
HasProperty |
Variable |
EnumStrings |
LocalizedText [] |
PropertyType |
|
|
Conformance Units |
||||||
Data Access Alternative Units |
The QuantityDimension Structure DataType describes the dimensionality of a kind of quantity in the context of a system of units. In the SI system of units, the dimensions of a kind of quantity are expressed as a product of the basic physical dimensions length (L), mass (M), time (T), current (I), absolute temperature (θ), amount of substance (N) and luminous intensity (J) as
.
The rational powers of the dimensional exponents (α, β, γ, δ, ε, η, v), are positive, negative, or zero.
An additional dimensionless exponent is used for countable things that have no physical quantity assigned.
The QuantityDimension elements are defined in Table 53.
Table 53 – QuantityDimension DataType structure
Name |
Type |
Description |
QuantityDimension |
Structure |
|
MassExponent |
SByte |
Exponent of the dimension mass for the physical quantity. |
LengthExponent |
SByte |
Exponent of the dimension length for the physical quantity. |
TimeExponent |
SByte |
Exponent of the dimension time for the physical quantity. |
ElectricCurrentExponent |
SByte |
Exponent of the dimension electric current for the physical quantity. |
AmountOfSubstanceExponent |
SByte |
Exponent of the dimension amount of substance for the physical quantity. |
LuminousIntensityExponent |
SByte |
Exponent of the dimension luminous intensity for the physical quantity. |
AbsoluteTemperatureExponent |
SByte |
Exponent of the dimension absolute temperature for the physical quantity. |
DimensionlessExponent |
SByte |
Exponent for dimensionless quantities. |
Its representation in the AddressSpace is defined in Table 54.
Table 54 – QuantityDimension definition
Attribute |
Value |
|||||
BrowseName |
QuantityDimension |
|||||
IsAbstract |
False |
|||||
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
Other |
|
Subtype of Structure defined in OPC 10000-5. |
||||||
Conformance Units |
||||||
Data Access Quantities Base |
For example, the dimension of the physical quantity kind
,
the dimension of the physical quantity kind force is
,
and the dimension of the physical quantity kind “things (e.g., screws) per time” is
.
Table 55 – QuantityDimension examples
Name |
Values for speed |
Values for force |
Values for “things per time” |
QuantityDimension |
|
|
|
MassExponent |
0 |
1 |
0 |
LengthExponent |
1 |
1 |
0 |
TimeExponent |
-1 |
-2 |
-1 |
ElectricCurrentExponent |
0 |
0 |
0 |
AmoutOfSubstanceExponent |
0 |
0 |
0 |
LuminousIntensityExponent |
0 |
0 |
0 |
AbsoluteTemperatureExponent |
0 |
0 |
0 |
DimensionlessExponent |
0 |
0 |
1 |
The extended SI System of units includes derived units that are built as a product of base units. That makes it difficult to compare units as SI allows an unlimited number of “SI unit strings” to describe the same quantity.
All 3 are valid SI representations of the quantity “speed” and therefore share the same quantity dimensions. A specific representation of a unit is often used to express details how the unit was measured. The dimension structure makes it much easier to identify and compare the kind of quantity of EU values.