About quality states
- Last UpdatedMar 01, 2024
- 3 minute read
Quality states for data in sample stream
Each data sample stream carries a current classification on whether the data sample is deemed to be of good, bad, or uncertain quality. There are two labels Quality and Substatus that are combined in the same field to give a quality status and an accompanying reason.


Possible Quality/Substatus values
The possible values for the combined Quality and SubStatus properties are:
|
Quality |
Substatus |
Description |
|---|---|---|
|
Good |
Nonspecific |
The quality is good. |
|
Uncertain |
Nonspecific |
The quality is neither good nor bad. |
|
Bad |
Nonspecific |
There is no specific reason why the value is of this quality. |
|
Bad |
ConfigurationError |
There is some server specific problem with the configuration. For example the item in question is deleted from the configuration. |
|
Bad |
NotConnected |
The input is required to be logically connected to something but is not. This quality may reflect that no value is available at this time, for reasons like the value is not provided by the data source. |
|
Bad |
DeviceFailure |
|
|
Bad |
SensorFailure |
A sensor malfunction is detected. The Limit can provide additional diagnostic information in some situations. |
|
Bad |
LastKnownValue |
Communications were interrupted. However, the last known value is available. Note that the age of the value may be determined from the Timestamp. |
|
Bad |
CommFailure |
Communications were interrupted. There is no last known value available. |
|
Bad |
OutOfService |
The block is off scan or otherwise locked. This quality is also used when the active state of the item or the group containing the item is inactive. |
|
Bad |
Overflow |
Occurs when an arithmetic, casting, or conversion operation results in an overflow. |
|
Bad |
LastUsableValue |
Whatever was writing this value has stopped doing so. The returned value should be regarded as stale. Note that this differs from LastKnownValue. That status is associated specifically with a detectable communications error on a fetched value. This error is associated with the malfunction of some external source to put something into the value in an acceptable period of time. Note that the age of the value can be determined from the Timestamp |
|
Bad |
SensorNotAccurate |
Either the value has pegged at one of the sensor limits (in which case the Limit should be set to LowLimited or HighLimited) or the sensor is otherwise known to be out of calibration through some form of internal diagnostics (in which case the Limit should be NotLimited). |
|
Bad |
EngineeringUnitsExceeded |
The returned value is outside the limits defined for this parameter. Note that in this case the Limit indicates which limit is exceeded but does NOT necessarily imply that the value cannot move farther out of range. |
|
Bad |
Subnormal |
The value is derived from multiple sources and has less than the required number of Good sources. |
|
Bad |
LocalOverride |
The value was overridden. Typically this is means the input is disconnected and a manually entered value is "forced". |
|
Bad |
DataNotAvailable |
Data was not available to create a boundary sample. |
|
Bad |
DBNull |
The returned value was DBNull, so the last known good value is retained with its quality and substatus reset. |
|
Bad |
Disabled |
The value is disabled. |
|
Bad |
InvalidTypeConversion |
Cannot convert a value from one type to another |
|
Bad |
Stopped |
The value is stopped. |
|
Bad |
Uninitialized |
The value is not initialized. |