The AggregateFilterdefines the Aggregatefunction that should be used to calculate the values to be returned. See OPC 10000-13for details on possible Aggregatefunctions. It specifies a startTime of the first Aggregateto be calculated. The samplingIntervalof the MonitoringParameters(see 7.21) defines how the Servershould internally sample the underlying data source. The processingInterval specifies the size of a time-period where the Aggregateis calculated. The queueSize from the MonitoringAttributes specifies the number of processed values that should be kept.

The intention of the AggregateFilteris not to read historical data, the HistoryRead service should be used for this purpose. However, it is allowed that the startTime is set to a time that is in the past when received from the Server. The number of Aggregatesto be calculated in the past should not exceed the queueSize defined in the MonitoringAttributes since the values exceeding the queueSize would directly be discharged and never returned to the Client.

The startTime and the processingInterval can be revised by the Server, but the startTime should remain in the same boundary (startTime + revisedProcessingInterval * n = revisedStartTime). That behaviour simplifies accessing historical values of the Aggregatesusing the same boundaries by calling the HistoryRead service. The extensible Parameter AggregateFilterResult is used to return the revised values for the AggregateFilter.

Some underlying systems may poll data and produce multiple samples with the same value. Other systems may only report changes to the values. The definition for each Aggregatetype explains how to handle the two different scenarios.

The MonitoredItemonly reports values for intervals that have completed when the publish timer expires. Unused data is carried over and used to calculate a value returned in the next publish.

The ServerTimestampfor each interval shall be the time of the end of the processing interval.

The AggregateFilteris defined in Table 150.

Table 150– AggregateFilter structure

Name

Type

Description

AggregateFilter

structure

startTime

UtcTime

Beginning of period to calculate the Aggregatethe first time. The size of each period used to calculate the Aggregateis defined by the samplingInterval of the MonitoringParameters(see 7.21).

aggregateType

NodeId

The NodeId of the AggregateFunctionType Objectthat indicates the Aggregateto be used when retrieving processed data. See OPC 10000-13for details.

processingInterval

Duration

The period be used to compute the Aggregate.

aggregateConfiguration

Aggregate

Configuration

This parameter allows Clientsto override the Aggregateconfiguration settings supplied by the AggregateConfiguration Objecton a per monitored item basis. See OPC 10000-13for more information on Aggregateconfigurations. If the Serverdoes not support the ability to override the Aggregateconfiguration settings it shall return a StatusCodeof Bad_AggregateListMismatch. This structure is defined in-line with the following indented items.

useServerCapabilities

Defaults

Boolean

If value = TRUE use Aggregate configuration settings as outlined by the AggregateConfiguration object.

If value=FALSE use configuration settings as outlined in the following aggregateConfiguration parameters.

Default is TRUE.

treatUncertainAsBad

Boolean

As described in OPC 10000-13.

percentDataBad

Byte

As described in OPC 10000-13.

percentDataGood

Byte

As described in OPC 10000-13.

useSloped

Extrapolation

Boolean

As described in OPC 10000-13.

The AggregateFilterResultdefines the revised AggregateFilterthe Servercan return when an AggregateFilteris defined for a MonitoredItemin the CreateMonitoredItemsor ModifyMonitoredItems Services. The AggregateFilterResultis defined in Table 151. This is the MonitoringFilterResult associated with the AggregateFilter MonitoringFilter.

Table 151– AggregateFilterResult structure

Name

Type

Description

AggregateFilterResult

structure

revisedStartTime

UtcTime

The actual StartTime interval that the Servershall use.

This value is based on a number of factors, including capabilities of the Serverto access historical data. The revisedStartTime should remain in the same boundary as the startTime (startTime + samplingInterval * n = revisedStartTime).

revisedProcessingInterval

Duration

The actual processingInterval that the Servershall use.

The revisedProcessingInterval shall be at least twice the revisedSamplingInterval for the MonitoredItem.

revisedAggregateConfiguration

Aggregate

Configuration

The actual aggregateConfiguration that the Servershall use.

The structure is defined in Table 150.