Parameterswhich hold array data that may be acquired during normal analyser operation or used as inputs (e.g. background, calibration) are represented by VariableTypes which are direct subtypes of DataItemType.

They inherit all of the Properties of the DataItemType. Also, they inherit a set o Attributesfrom the VariableNodeClass that are common to all derived VariableTypes. Refer to Table 113for more information.

The decision to base the array types on the DataItemTyperather than the AnalogItemTypeis to allow a modification of the StatusCode.SemanticsChanged. In the AnalogItemType, this bit is set if and only if a change occurs in one or several of the Properties InstrumentRange, EURangeand EngineeringUnits. In the ADI array types; this bit changes if and only if a change occurs in one or several of the Properties InstrumentRange, EURange, EngineeringUnitsand the axis definitions. This also allows the implementation of the type where the Value.DataType is not a subclass of Number like in the XYArrayItemType.

To simplify the development of ADI Clients/Servers, the Properties InstrumentRange, EURangeand EngineeringUnits, that are part of the AnalogItemTypedefinition, are reused with exactly the same semantic as in the AnalogItemType:

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

Example: InstrumentRange ::= {-9999.9, 9999.9}

The Rangetype is specified in [OPC 10000-8].

EURangedefines 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 this range. Clientsoftware must be prepared to deal with this. Similarly a Clientmay attempt to write a value that is outside this range back to the Server. The exact behaviour (accept, reject, clamp, etc.) in this case is Server-dependent. However in general Servers must be prepared to handle this.

Example: EURange ::= {-200.0,1400.0}

EngineeringUnitsspecifies the units for the DataItem’s value (e.g., DEGC, hertz, seconds).

The EUInformationtype is specified in [OPC 10000-8].

If the item contains an array the Properties will apply to all elements in the array.

(informative) – Events, Alarms and Conditions

This specification does not introduce any standard types of Events, Alarmsor Conditions.

Transitions defined as part of the AnalyserDeviceStateMachineType, OperatingStateMachineType, their subtypes and sub-states shall produce events which are subtypes of TransitionEventTypedefined in [OPC 10000-5].

(informative) – Operation level result codes

Table 114provides additional ADI-specific guidelines for interpretation of the Uncertainoperation level result code defined in [OPC 10000-8].

Table 114- Uncertain operation level result codes

Symbolic Id


Uncertain_ NoCommunicationLastUsable

Communication to the data source has failed. The Variablevalue is the last value that had a good quality and it is uncertain whether this value is still current.

The Servertimestamp in this case is the last time that the communication status was checked. The time at which the value was last verified to be true is no longer available.

In ADI, this implies that the communication to the analyser has failed, but the Analyser Serveris still active and communicating with its Clients. The Clients need updates, so the Serveris responsible for maintaining the namespace and all the values.


Whatever was updating this value has stopped doing so. This happens when an input Variableis configured to receive its value from another Variableand this configuration is cleared after one or more values have been received.

This status/substatus is not used to indicate that a value is stale. Stale data can be detected by the Clientlooking at the timestamps.

In ADI, this differs from the Uncertain_NoCommunicationLastUsablecode only in that is does not explicitly state that there is no communication. For some undetermined reason, the analyser can no longer update the values. In the case of spectrographic analysers, there may be a significant error in the model that stops the collection and analysis (too many bad scans, divide by zero exception in the math model, etc.).


The value is an operational value that was manually overwritten.

This value is a placeholder value that is set by the user when the instrument cannot collect or update the data.


The value is an initial value for a Variablethat normally receives its value from another Variable. This status/substatus is set only during configuration while the Variableis not operational (while it is out-of-service).

In ADI, this bit is set for all Variables when the configuration is first loaded and started. The initial value is a preconfigured value defined when the instrument is first configured.


The value is at one of the sensor limits. The Limits bits define which limit has been reached. Also set if the device can determine that the sensor has reduced accuracy (e.g. degraded analyser), in which case the Limits bits indicate that the value is not limited.

In ADI, some internal diagnostic value in the analyser indicates that there is something inaccurate or untrustworthy in the data. For example, in FTIR, the interferogram peak center burst location or height may be beyond the acceptable threshold. Also, the internal temperature of the analyser may be out of specification. In both cases, spectra can be collected, but the accuracy of those spectra are in doubt.

Uncertain_ EngineeringUnitsExceeded

The value is outside of the range of values defined for this Parameter. The Limits bits indicate which limit has been reached or exceeded.

In ADI, there are multiple contexts where this code is applicable. In the instrument, it is possible that the analyser sensor or detector is close to saturated or overexposed. The analyser hardware itself is almost incapable of measuring the physical system, and thus any results from the analyser are untrustworthy. For example, if the detector saturates at 32767 counts, any readings over 28000 counts can be deemed uncertain. These limits are vendor specific.

Another example involves the mathematical modelling that occurs in the analysers. Analysers are typically calibrated and optimized to measure data and produce results in a particular range. If the inputs or calculated output exceeds that range, the validity of the mathematical calculations and results are uncertain.


The value is derived from multiple sources and has less than the required number of Good sources.

In the analyser, the data may be an accumulation or an averaging of many measurements. If any of those measurements is uncertain or bad, then the data is subnormal.

For example, spectra are typically a co-addition or an averaging of multiple scans of the system. It is possible that some, but not all of those scans, may be bad or unusable. A few unusable scans will not prevent the system from collecting and processing the data. However, the fact that some bad scans exist should not be ignored either. If the number of bad scans exceeds a vendor defined threshold, then the data is subnormal.

(informative) – ADI address space

This annex is intended to provide some guidelines on how to design the address space of an Analyser Server. It covers the following topics:

  • Main questions to answer before starting the address space design
  • Configuration process
  • Parameter definition
  • OPC UA key elements
  • General rules

This annex should be used as a check list of points to address during the design and the source of description of the rationale behind some elements of the ADI specification. The annex is written in the FAQ format.