Errata exists for this version of the document.
OPC 10000-4 specifies the complete set of services. The services needed for the purpose of DataAccess are:
- The View service set and Query service set to detect DataItems, and their Properties.
- The Attribute service set to read or write Attributes and in particular the value Attribute.
- The MonitoredItem and Subscription service set to set up monitoring of DataItems and to receive data change notifications.
The DataChangeFilter in OPC 10000-4 defines the conditions under which a data change notification shall be reported. This filter contains a deadbandValue which can be of type AbsoluteDeadband or PercentDeadband. OPC 10000-4 already specifies the behaviour of the AbsoluteDeadband. This sub-clause specifies the behaviour of the PercentDeadband type.
DeadbandType = PercentDeadband
For this type of deadband the deadbandValue is defined as the percentage of the EURange. That is, it applies only to AnalogItems with an EURange Property that defines the typical value range for the item. This range shall be multiplied with the deadbandValue and then compared to the actual value change to determine the need for a data change notification. The following pseudo code shows how the deadband is calculated:
DataChange if (absolute value of (last cached value - current value) > (deadbandValue/100.0) * ((high–low) of EURange)))
The range of the deadbandValue is from 0.0 to 100.0 Percent. Specifying a deadbandValue outside of this range will be rejected and reported with the StatusCode Bad_DeadbandFilterInvalid (see Table 28).
If the Value of the MonitoredItem is an array, then the deadband calculation logic shall be applied to each element of the array. If an element that requires a DataChange is found, then no further deadband checking is necessary and the entire array shall be returned.
This subclause defines additional codes and rules that apply to the StatusCode when used for Data Access values.
The general structure of the StatusCode is specified in OPC 10000-4 and includes a set of common operational result codes that also apply to Data Access.
Certain conditions under which a Variable value was generated are only valid for automation data and in particular for device data; they are similar, but are slightly more generic than the description of data quality in the various fieldbus specifications.
In the following, Table 28 contains codes with BAD severity which indicates a failure.
Table 29 contains codes with UNCERTAIN severity which indicates that the value has been generated under sub-normal conditions
Table 30 contains GOOD (success) codes.
Note again, that these are the codes that are specific for Data Access and supplement the codes that apply to all types of data which are defined in OPC 10000-4.
Table 28 – Operation level result codes for BAD data quality
Symbolic Id |
Description |
Note - Bad is defined in OPC 10000-4. It shall be used when there is no special reason why the Value is bad. |
|
Bad_ConfigurationError |
There is a problem with the configuration that affects the usefulness of the value. |
Bad_NotConnected |
The variable should receive its value from some data source, but has never been configured to do so. |
Bad_DeviceFailure |
There has been a failure in the device/data source that generates the value that has affected the value. |
Bad_SensorFailure |
There has been a failure in the sensor from which the value is derived by the device/data source.The limits bits are used to define if the limits of the value have been reached. |
Note - Bad_NoCommunication is defined in OPC 10000-4. It shall be used when communications to the data source is defined, but not established, and there is no last known value available. |
|
Bad_OutOfService |
The source of the data is not operational. |
Bad_LastKnown |
OPC UA requires that the Server shall return a Null value when the Severity is Bad. Therefore, the Fieldbus code “Bad_LastKnown” shall be mapped to Uncertain_NoCommunicationLastUsable. |
Bad_DeadbandFilterInvalid |
The specified PercentDeadband is not between 0.0 and 100.0 or a PercentDeadband is not supported, since an EURange is not configured. |
Note - Bad_WaitingForInitialData is defined in OPC 10000-4. |
Table 29 – Operation level result codes for UNCERTAIN data quality
Symbolic Id |
Description |
Note - Uncertain is defined in OPC 10000-4. It shall be used when there is no special reason why the Value is uncertain. |
|
Uncertain_ NoCommunicationLastUsable |
Communication to the data source has failed. The variable value is the last value that had a good quality and it is uncertain whether this value is still current. The server timestamp 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. |
Uncertain_LastUsableValue |
Whatever was updating this value has stopped doing so. This happens when an input variable is configured to receive its value from another variable and 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 client looking at the timestamps. |
Uncertain_SubstituteValue |
The value is an operational value that was manually overwritten. |
Uncertain_InitialValue |
The value is an initial value for a variable that normally receives its value from another variable. This status/substatus is set only during configuration while the variable is not operational (while it is out-of-service). |
Uncertain_SensorNotAccurate |
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 analyzer), in which case the Limits bits indicate that the value is not limited. |
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. |
Uncertain_SubNormal |
The value is derived from multiple sources and has less than the required number of Good sources. |
Table 30 – Operation level result codes for GOOD data quality
Symbolic Id |
Description |
Note - Good is defined in OPC 10000-4. It shall be used when there are no special conditions. |
|
Good_LocalOverride |
The value has been Overridden. Typically this is means the input has been disconnected and a manually-entered value has been ”forced”. |
The bottom 16 bits of the StatusCode are bit flags that contain additional information, but do not affect the meaning of the StatusCode. Of particular interest for DataItems is the LimitBits field. In some cases, such as sensor failure it can provide useful diagnostic information.
Servers that do not support Limit have to set this field to 0.