5.3 Aggregates StatusCodes

5.3.1 Overview

Subclause 5.3 defines additional codes and rules that apply to the StatusCode when used for Aggregates.

The general structure of the StatusCode is specified in OPC 10000-4. It includes a set of common operational result codes which also apply to Aggregates.

5.3.2 Operation level result codes

In OPC UA Aggregates the StatusCode is used to indicate the conditions under which a value or Event was stored, and thereby can be used as an indicator of its usability. Due to the nature of aggregated data, additional information beyond the basic quality and call result code needs to be conveyed to the client. For example, whether or not the result was Interpolated, were all data inputs to a calculation of Good quality, etc.

In the following, Table 45 contains codes with Bad severity indicating a failure; Table 46 contains codes with Uncertain severity indicating that the value has been retrieved under sub-normal conditions. It is important to note, that these are the codes that are specific for
OPC UA Aggregates and that they supplement the codes that apply to all types of data; they are therefore defined in OPC 10000-4, OPC 10000-8 and OPC 10000-11.

Table 45 – Bad operation level result codes
Symbolic IdDescription
Bad_AggregateListMismatchThe requested number of Aggregates does not match the requested number of NodeIds. When multiple Aggregates are requested, a corresponding NodeId is required for each AggregateFunction.
Bad_AggregateNotSupportedThe requested AggregateFunction is not supported by the Server for the specified Node.
Bad_AggregateInvalidInputsThe Aggregate value could not be derived due to invalid data inputs, errors attempting to perform data conversions or similar situations.
Table 46 – Uncertain operation level result codes
Symbolic Id Description
Uncertain_DataSubNormalThe value is derived from raw values and has less than the required number of Good values.

5.3.3 Aggregate Information Bits

5.3.3.1 General

These bits are set only when obtaining Aggregate data. They indicate where the data value came from and provide information that affects how the client uses the data value. Table 47 lists the bit settings which indicate the data location (i.e. is the value stored in the underlying data repository, or is the value the result of data aggregation). These bits are mutually exclusive.

Table 47 – Data location
StatusCodeDescription
RawA Raw data value.
CalculatedA data value which was calculated.
InterpolatedA data value which was interpolated.

In the case where Interpolated data is requested, and there is an actual raw value for that timestamp, the Server should set the ‘Raw’ bit in the StatusCode of that value.

Table 48 lists the bit settings which indicate additional important information about the data values returned.

Table 48 – Additional information
StatusCodeDescription
Partial A calculated value that is not based on a complete interval. See 5.3.3.2.
Extra DataIf a Server chooses to set this bit, it indicates that a Raw data value supersedes other data at the same timestamp.
Multiple ValuesMultiple values match the Aggregate criteria (i.e. multiple minimum values or multiple worst quality at different timestamps within the same ProcessingInterval).

The conditions under which these information bits are set depend on how the data has been requested and state of the underlying data repository.

5.3.3.2 Partial Information bit

Partial bit is used to indicate that the interval is not a complete interval and that a client may receive a different value for the Aggregate if it re-fetches the interval with the same parameters.

The Partial bit will be set in the following examples:

Assume for these examples the first stored point in the collection is 1:01:10 and the last stored point in the collection is 1:31:20. Older data may exist but is unavailable or offline at the time of the query. Newer data may be available but has not yet been stored in the history collection.

The Partial bit may be set with the Calculated bit when the Calculated bit is always set for the specific Aggregate.