.NET Based OPC UA Client/Server SDK  2.6.0.418
Variable Types

DataItemType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype VariableType BaseDataVariableType  
HasProperty Variable Definition String Scalar PropertyType Optional
HasProperty Variable ValuePrecision Double Scalar PropertyType Optional

This VariableType defines the general characteristics of a DataItem.

All other DataItem Types derive from it. It defines the optional properties Definition and ValuePrecision. The DataItemType derives from the BaseDataVariableType.

Variable Definition

A vendor-specific, human readable string that specifies how the value of this DataItem is calculated.

Definition is non-localized and will often contain an equation that can be parsed by certain clients. Example: Definition::= "(TempA - 25) + TempB"

Variable ValuePrecision

Specifies the maximum precision that the server can maintain for the item based on restrictions in the target environment.

ValuePrecision can be used for the following DataTypes:

  • For Float and Double values it specifies the number of digits after the decimal place.
  • For DateTime values it indicates the minimum time difference in nanoseconds. For example, a ValuePrecision of 20 000 000 defines a precision of 20 ms.

The ValuePrecision Property is an approximation that is intended to provide guidance to a Client. A Server is expected to silently round any value with more precision that it supports. This implies that a Client may encounter cases where the value read back from a Server differs from the value that it wrote to the Server. This difference shall be no more than the difference suggested by this Property.

AnalogItemType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype VariableType DataItemType  
HasProperty Variable EngineeringUnits EUInformation Scalar PropertyType Optional
HasProperty Variable EURange Range Scalar PropertyType Mandatory
HasProperty Variable InstrumentRange Range Scalar PropertyType Optional

This VariableType defines the general characteristics of an AnalogItem.

The AnalogItemType derives from the DataItemType.

The StatusCode delivered with the value also contains an informational bit called SemanticsChanged. Servers that implement Data Access shall set this Bit in notifications if EURange (could change the behaviour of a Subscription if a PercentDeadband filter is used) or EngineeringUnits (could create problems if the client uses the value to perform calculations) Properties are changed. Clients that use any of these Properties should re-read them before they process the data value.

In addition a server can send SemanticChangeEvents if the value of the properties EURange and EngineeringUnits are changed. To indicate this capability, the SemanticChange flag must be set in the AccessLevel and UserAccessLevel attributes of this variable.

Variable EURange

Defines the value range likely to be obtained in normal operation.

It is intended for such use as automatically scaling a bar graph display. Sensor or instrument failure or deactivation can result in a returned item value which is actually outside of this range. Client software must be prepared to deal with this possibility. Similarly a client may attempt to write a value that is outside of this range back to the server. The exact behaviour (accept, reject, clamp, etc.) in this case is server-dependent. However, in general servers shall be prepared to handle this.

The EURange is also used as base for the calculation of the PercentDeadband.

Variable InstrumentRange

Defines the value range that can be returned by the instrument.

Although defined as optional, it is strongly recommended for Servers to support this Property. Without an InstrumentRange being provided, Clients will commonly assume the full range according to the DataType.

Variable EngineeringUnits

Specifies the units for the AnalogItem value (e.g., DEGC, hertz, seconds).

Understanding the units of a measurement value is essential for a uniform system. In an open system in particular where servers from different cultures might be used, it is essential to know what the units of measurement are. Based on such knowledge, values can be converted if necessary before being used. Therefore, although defined as optional, support of the EngineeringUnits Property is strongly advised.

To facilitate interoperability, OPC UA specifies how to apply the widely accepted “Codes for Units of Measurement (Recommendation No. 20)” published by the “United Nations Centre for Trade Facilitation and Electronic Business” (see UN/CEFACT). It uses and is based on the International System of Units (SI Units) but in addition provides a fixed code that can be used for automated evaluation. This recommendation has been accepted by many industries on a global basis.

The class UaEUInformation provides helper functions to create the unit information from a unitId provided as enumeration. The methods are UaEUInformation::fromUnitId and UaEUInformation::setEUInformation.

DiscreteItemType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype VariableType DataItemType  

This VariableType is an abstract type. Only derived types like MultiStateDiscreteType or TwoStateDiscreteType can be instantiated. However, it might be used in a filter when browsing or querying.

TwoStateDiscreteType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype VariableType DiscreteItemType  
HasProperty Variable FalseState LocalizedText Scalar PropertyType Mandatory
HasProperty Variable TrueState LocalizedText Scalar PropertyType Mandatory

This VariableType defines the general characteristics of a DiscreteItem that can have two states.

The value of the DiscreteItem is delivered as boolean but the TrueState and FalseState properties defined by the TwoStateDiscreteType provides display strings for the two possible states.

The StatusCode delivered with the value also contains an informational bit called SemanticsChanged. Servers that implement Data Access shall set this Bit in notifications if any of the FalseState or TrueState (changes can cause misinterpretation by users or (scripting) programs) Properties are changed. Clients that use any of these Properties should re-read them before they process the data value.

In addition a server can send SemanticChangeEvents if the value of the Property EnumStrings is changed. To indicate this capability, the SemanticChange flag must be set in the AccessLevel and UserAccessLevel attributes of this variable.

Variable FalseState

FalseState contains a string to be associated with this DataItem when it is FALSE.

This is typically used for a contact when it is in the open (zero) state. for example: "STOP", "OPEN", "DISABLE", "UNSAFE", etc.

If the item contains an array then this lookup table shall apply to all elements in the array.

Variable TrueState

TrueState contains a string to be associated with this DataItem when it is TRUE.

This is typically used for a contact when it is in the closed (non-zero) state. for example: "RUN", "CLOSE", "ENABLE", "SAFE", etc.

If the item contains an array then this lookup table shall apply to all elements in the array.

MultiStateDiscreteType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype VariableType DiscreteItemType  
HasProperty Variable EnumStrings LocalizedText OneDimension PropertyType Mandatory

Defines the general characteristics of a DiscreteItem that can have more than two states.

The value of the DiscreteItem is delivered as UInteger but the EnumStrings Property defined by the MultiStateDiscreteType provides display strings for every possible state value.

The EnumStrings Property is also used for Enumeration DataTypes.

The StatusCode delivered with the value also contains an informational bit called SemanticsChanged. Servers that implement Data Access shall set this Bit in notifications if the EnumStrings (changes can cause misinterpretation by users or (scripting) programs) Property is changed. Clients that use any of these Properties should re-read them before they process the data value.

In addition a server can send SemanticChangeEvents if the value of the Property EnumStrings is changed. To indicate this capability, the SemanticChange flag must be set in the AccessLevel and UserAccessLevel attributes of this variable.

Variable EnumStrings

EnumStrings is a string lookup table corresponding to sequential numeric values of the variable (0, 1, 2, etc.).

Example: "OPEN" "CLOSE" "IN TRANSIT" etc. Here the string "OPEN" corresponds to 0, "CLOSE" to 1 and "IN TRANSIT" to 2.

If the item contains an array then this lookup table shall apply to all elements in the array.

The EnumStrings Property is also used for Enumeration DataTypes.

MultiStateValueDiscreteType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype VariableType DiscreteItemType  
HasProperty Variable EnumValues EnumValueType OneDimension PropertyType Mandatory
HasProperty Variable ValueAsText LocalizedText Scalar PropertyType Mandatory

This VariableType defines the general characteristics of a DiscreteItem that can have more than two states and where the state values (the enumeration) do not consist of consecutive numeric values (may have gaps) or where the enumeration is not zero-based.

The MultiStateValueDiscreteType derives from the DiscreteItemType. MultiStateValueDiscrete Variables can have any numeric Data Type; this includes signed and unsigned integers from 8 to 64 Bit length.

The numeric representation of the current enumeration value is provided via the Value Attribute of the MultiStateValueDiscrete Variable.

Variable EnumValues

An array of EnumValueType where each entry of the array represents one enumeration value with its integer notation, a human-readable representation, and help information.

This represents enumerations with integers that are not zero-based or have gaps (e.g. 1, 2, 4, 8, 16). See EnumValueType for the definition of this type. MultiStateValueDiscrete Variables expose the current integer notation in their Value Attribute. Clients will often read the EnumValues Property in advance and cache it to look up a name or help whenever they receive the numeric representation.

Variable ValueAsText

Provides the localized text representation of the enumeration value.

It can be used by Clients only interested in displaying the text to subscribe to the Property instead of the Value Attribute.

ArrayItemType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype VariableType DataItemType  
HasProperty Variable AxisScaleType AxisScaleEnumeration Scalar PropertyType Mandatory
HasProperty Variable EngineeringUnits EUInformation Scalar PropertyType Mandatory
HasProperty Variable EURange Range Scalar PropertyType Mandatory
HasProperty Variable InstrumentRange Range Scalar PropertyType Optional
HasProperty Variable Title LocalizedText Scalar PropertyType Mandatory

Abstract VariableType defining the general characteristics of an ArrayItem.

Values are exposed in an array, but the content of the array represents a single entity like an image. Other DataItems might contain arrays that represent for example several values of several temperature sensors of a boiler. ArrayItemType or its subtypes shall only be used when the Title and AxisScaleType Properties can be filled with reasonable values. If this is not the case, DataItemType and subtypes like AnalogItemType , which also support arrays, shall be used.

For additional information about InstrumentRange, EURange, and EngineeringUnits see the description of AnalogItemType

The StatusCode SemanticsChanged bit shall be set if any of the InstrumentRange, EURange, EngineeringUnits or Title Properties are changed

Variable InstrumentRange

Defines the range of the Value of the ArrayItem.

Variable EURange

Defines the value range of the ArrayItem likely to be obtained in normal operation.

It is intended for such use as automatically scaling a bar graph display.

Variable EngineeringUnits

Holds the information about the engineering units of the Value of the ArrayItem.

Variable Title

Holds the user readable title of the Value of the ArrayItem.

Variable AxisScaleType

Defines the scale to be used for the axis where the Value of the ArrayItem shall be displayed.

YArrayItemType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype VariableType ArrayItemType  
HasProperty Variable XAxisDefinition AxisInformation Scalar PropertyType Mandatory

Represents a single-dimensional array of numerical values used to represent spectra or distributions where the x axis intervals are constant.

The Value of the YArrayItem contains the numerical values for the Y-Axis. Engineering units and range for the Value are defined by corresponding Properties inherited from the ArrayItemType.

The DataType of this VariableType is restricted to SByte, Int16, Int32, Int64, Float, Double, ComplexNumberType and DoubleComplexNumberType.

The StatusCode SemanticsChanged bit shall be set if any of the following five Properties are changed: InstrumentRange, EURange, EngineeringUnits, Title or XAxisDefinition.

Variable XAxisDefinition

Holds the information about the engineering units and range for the X-Axis.

XYArrayItemType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype VariableType ArrayItemType  
HasProperty Variable XAxisDefinition AxisInformation Scalar PropertyType Mandatory

Represents a vector of XVType values, like a list of peaks, where XVType.x is theposition of the peak and XVType.value is its intensity.

The Value of the XYArrayItem contains an array of structures (XVType) where each structure specifies the position for the X-Axis (XVType.x) and the value itself (XVType.value), used for the Y-Axis. Engineering units and range for the Value are defined by corresponding Properties inherited from the ArrayItemType.

The StatusCode SemanticsChanged bit shall be set if any of the InstrumentRange, EURange, EngineeringUnits, Title or XAxisDefinition Properties are changed.

Variable XAxisDefinition

Holds the information about the engineering units and range for the X-Axis.

The axisSteps of XAxisDefinition shall be set to NULL because it is not used.

ImageItemType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype VariableType ArrayItemType  
HasProperty Variable XAxisDefinition AxisInformation Scalar PropertyType Mandatory
HasProperty Variable YAxisDefinition AxisInformation Scalar PropertyType Mandatory

Defines the general characteristics of an ImageItem which represents a matrix of values, like an image, where the pixel position is given by X which is the column and Y the row.

The value is the pixel intensity.

Engineering units and range for the Value are defined by corresponding Properties inherited from the ArrayItemType.

The DataType of this VariableType is restricted to SByte, Int16, Int32, Int64, Float, Double, ComplexNumberType and DoubleComplexNumberType.

The ArrayDimensions Attribute for Variables of this type or subtypes shall use the first entry in the array ([0]) to define the number of columns and the second entry ([1]) to define the number of rows, assuming the size of the matrix is not dynamic.

The StatusCode.SemanticsChanged bit shall be set if any of the InstrumentRange, EURange, EngineeringUnits, Title, XAxisDefinition or YAxisDefinition Properties are changed.

Variable XAxisDefinition

Holds the information about the engineering units and range for the X-Axis.

Variable YAxisDefinition

Holds the information about the engineering units and range for the Y-Axis.

CubeItemType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype VariableType ArrayItemType  
HasProperty Variable XAxisDefinition AxisInformation Scalar PropertyType Mandatory
HasProperty Variable YAxisDefinition AxisInformation Scalar PropertyType Mandatory
HasProperty Variable ZAxisDefinition AxisInformation Scalar PropertyType Mandatory

Represents a cube of values like a spatial particle distribution, where the particle position is given by X which is the column, Y the row and Z the depth.

In the example of a spatial partical distribution, the value is the particle size.

Engineering units and range for the Value are defined by corresponding Properties inherited from the ArrayItemType.

The DataType of this VariableType is restricted to SByte, Int16, Int32, Int64, Float, Double, ComplexNumberType and DoubleComplexNumberType.

The ArrayDimensions Attribute for Variables of this type or subtypes should use the first entry in the array ([0]) to define the number of columns, the second entry ([1]) to define the number of rows, and the third entry ([2]) define the number of steps in the Z axis, assuming the size of the matrix is not dynamic.

The StatusCode SemanticsChanged bit shall be set if any of the InstrumentRange, EURange, EngineeringUnits, Title, XAxisDefinition, YAxisDefinition or ZAxisDefinition Properties are changed.

Variable XAxisDefinition

Holds the information about the engineering units and range for the X-Axis.

Variable YAxisDefinition

Holds the information about the engineering units and range for the Y-Axis.

Variable ZAxisDefinition

Holds the information about the engineering units and range for the Z-Axis.

NDimensionArrayItemType

Reference NodeClass BrowseName DataType ValueRank TypeDefinition ModellingRule
HasSupertype VariableType ArrayItemType  
HasProperty Variable AxisDefinition AxisInformation OneDimension PropertyType Mandatory

This VariableType defines a generic multi-dimensional ArrayItem.

This approach minimizes the number of types, however it may be proved more difficult to utilize for control system interactions.

The DataType of this VariableType is restricted to SByte, Int16, Int32, Int64, Float, Double, ComplexNumberType and DoubleComplexNumberType.

The StatusCode SemanticsChanged bit shall be set if any of the InstrumentRange, EURange, EngineeringUnits, Title or AxisDefinition Properties are changed

Variable AxisDefinition

Holds the information about the engineering units and range for all axes.