Historians are not required to be able to store arrays. Optional ConformanceUnits exist to indicate if they support storage of arrays. If a Historian does store arrays, it may not support returning an index range in an array, it may only provide the entire array. ConformanceUnits are provided to indicate if a Historian supports index ranges. For ReadProcessedDetails, some Aggregates do not support arrays (see 6.5.4 for details).

If the Historian does not support index ranges, but an indexRange parameter is provided, then the Server shall return Bad_NotSupported.

If a Historian supports index ranges, the size of the array may change over the time period being retrieved (see Figure 8 for an illustration). For retrieval of index ranges of values, all records that exist in the requested time period are returned. For any Value that does not have any values in the requested index range a status of Bad_IndexRangeNoData is returned. In the illustration the top table indicates the data that was collected by the Historian. The time interval covered by the historical ReadRawModifiedDetails request is labelled in the figure as well as the indexRange that was requested [not all parameters for the request are illustrated]. The results box indicates the timestamps, values and statuses that are returned. It is important to understand that a record is returned for all recorded timestamps, some just indicate a bad status. The status returned may be the bad status that was stored when the data was collected (e.g. Bad_CommunicationFailure) or it may be the result of processing the request for the index range (i.e. Bad_IndexRangeNoData).


Figure 8 - History Array example

Figure 9 provides a second illustration where a different time interval is selected as well as a different index range. This index range [1:2] contains more data and thus less Bad_IndexRangeNoData is returned.


Figure 9 - Historian Array Illustration 2

Historians that store strings may not be able to return substring of stored strings, they may restrict retrieval to the entire string. ConformanceUnits are provided to indicate if the Historian supports processing of substrings for historical retrieval.

All processing for substrings, follow the same rules as for arrays (see NumericRange in OPC 10000-4).