Bietet eine Möglichkeit zur Abfrage aggregierter Kanaldaten für zeitbasierte Kanäle. Sie können die Anzahl der Messwerte festlegen, die für einen bestimmten Zeitbereich gesendet werden sollen, sowie für äquidistante Signale die Minimal-, Maximal- und Durchschnittsaggregationen und für nicht-äquidistante Signale den Flankenzählwert und den anfänglichen Rohwert auswählen.

Standardmäßig nutzt die API die Architektur von ibaHD-Server, bei der jeder Kanal in mehreren Aggregationsstufen gespeichert wird, um einen schnellen und effizienten Abruf der Daten über längere Zeiträume zu ermöglichen. Mögliche Anwendungsfälle sind Client-Visualisierungen (z. B. eine Monatsübersicht), bei denen die Bildschirmgröße die Menge der gleichzeitig darstellbaren Daten begrenzt, sowie die Bereitstellung voraggregierter Daten für nachfolgende Aggregationen, bei denen Min/Max/Durchschnittsdaten als Quelle anwendbar sind.

Der Aggregationsalgorithmus kann von dem Standardalgorithmus "Min/Max/Avg downsampling" auf den alternativen Algorithmus "Linear interpolation downsampling" umgestellt werden. Dieser Algorithmus versucht, Rohdatenpunkte in äquidistanten Abständen (geforderter Zeitbereich / geforderter Messwert) auszuwählen und wendet eine lineare Interpolation zwischen benachbarten Messwerten an, wenn die gespeicherten Messwerte nicht genau mit den Zeitstempeln der Zielwerte übereinstimmen.

Message "GetAggregatedChannelDataRequest"

Struktur

Zum Kopieren in die Zwischenablage auf das Icon klicken ->

GetAggregatedChannelDataRequest{

}

Parameter

Pos.

Parameter

Datentyp

Bedeutung

1

time_range_from

int64

Anfangszeit des angeforderten Zeitbereichs im Unix-Zeitstempelformat in Mikrosekunden

2

time_range_to

int64

Endzeit des angeforderten Zeitbereichs im Unix-Zeitstempelformat in Mikrosekunden

3

channel_ids

string

Kanal-ID im gleichen Format, wie sie in der Response-Liste von GetHdStoreSchema() zurückgegeben wurde, siehe GetHdStoreSchema().

4

sample_count

int64

Anzahl der Messwerte, die zurückgegeben werden.

Der Wert muss > 0 sein.

5

min_aggregation

bool

Auswahl der aggregierten Werte, die mit der Antwort gesendet werden sollen

6

max_aggregation

bool

7

avg_aggregation

bool

8

aggregation_algorithm_type

enum (AggregationAlgorithmType)

Algorithmus für das Downsampling der Daten,

Standardwert MIN_MAX_AVG_DOWNSAMPLING, wenn keine Angabe gemacht wird

9

add_extra_sample_out_of_time_range

bool

Wenn True, wird zusätzlich wird vor und nach dem gewünschten Zeitbereich ein zusätzlicher Messwert angefordert.

Bei digitalen Kanälen werden keine zusätzlichen Werte hinzugefügt, sondern der erste Wert liegt vor time_range_from.

Diese Option ist nur für den Algorithmus MIN_MAX_AVG_DOWNSAMPLING verfügbar.

Message "GetAggregatedChannelDataResponse"

Liste der Zeitstempel für die aggregierten Messwerte, aufgeteilt in die verschiedenen Kanalformate.

Struktur

Zum Kopieren in die Zwischenablage auf das Icon klicken ->

GetAggregatedChannelDataResponse{

   AggregatedChannel{

      FloatValues{…}

      DoubleValues{…}

      StringValues{…}

      DigitalValues{…}

   }

}

Parameter

Pos.

Parameter

Datentyp

Bedeutung

1

timestamps

int64

Zeitstempel für die Kanäle DATA_TYPE_FLOAT_VALUES und DATA_TYPE_DOUBLE_VALUES als Unix-Zeitstempel in Mikrosekunden

2

aggregated_channels

-

Kanäle, die Werte für die ausgewählten Aggregationen enthalten (min, max, avg)

Pro Kanal wird eine Message AggregatedChannel zurückgegeben, siehe Message "AggregatedChannel".

Message "AggregatedChannel"

Pos.

Parameter

Datentyp

Bedeutung

1

channel_id

string

Kanal-ID im Format <HD store name>\<channel id>

Beispiel: store_1\[0:0]

2

data_type

enum (DataType)

Datentyp der zurückgegebenen Werte, siehe Enum "DataType".

3

float_values

-

Werte für DATA_TYPE_FLOAT_VALUES-Kanäle, ansonsten leer, siehe Message "FloatValues".

Zeitstempel und Werte werden anhand des Array-Index abgeglichen.

4

double_values

-

Werte für DATA_TYPE_DOUBLE_VALUES-Kanäle, ansonsten leer, siehe Message "DoubleValues".

Zeitstempel und Werte werden anhand des Array-Index abgeglichen.

5

string_values

-

Nicht-äquidistante Werte für DATA_TYPE_STRING_VALUES-Kanäle, sonst leer, siehe Message "StringValues".

Zeitstempel und Werte werden nach Array-Index abgeglichen.

6

digital_values

-

Nicht-äquidistante steigende/fallende Flanken oder Lücken für DATA_TYPE_DIGITAL_VALUES-Kanäle, sonst leer, siehe Message "DigitalValues".

Die Werte sind bis zum nächsten Flankenwechsel gültig, Zeitstempel und Werte werden durch den Array-Index aufeinander abgestimmt.

Message "FloatValues"

Pos.

Parameter

Datentyp

Bedeutung

1

min_values

float

Optional: Mindestwerte eines aggregierten Kanals

Standardmäßig leer, wenn nicht angefordert

2

max_values

float

Optional: Maximalwerte eines aggregierten Kanals

Standardmäßig leer, wenn nicht angefordert

3

avg_values

float

Optional: Durchschnittswerte eines aggregierten Kanals

Standardmäßig leer, wenn nicht angefordert

Message "DoubleValues"

Pos.

Parameter

Datentyp

Bedeutung

1

min_values

double

Optional: Mindestwerte eines aggregierten Kanals

Standardmäßig leer, wenn nicht angefordert

2

max_values

double

Optional: Maximalwerte eines aggregierten Kanals

Standardmäßig leer, wenn nicht angefordert

3

avg_values

double

Optional: Durchschnittswerte eines aggregierten Kanals

Standardmäßig leer, wenn nicht angefordert

Message "StringValues"

Pos.

Parameter

Datentyp

Bedeutung

1

timestamp

int64

Nicht-äquidistante Unix-Zeitstempel in Mikrosekunden

2

value

value

Nicht-äquidistante String-Werte

Message "DigitalValues"

Pos.

Parameter

Datentyp

Bedeutung

1

timestamp

int64

Nicht-äquidistante Unix-Zeitstempel in Mikrosekunden

2

value

float

Nicht-äquidistante Flankenwechsel (0 oder 1) oder Lücken (NaN) des digitalen Kanals

3

edgeCount

float

Nicht-äquidistante Flankenzählung des digitalen Kanals.

Gibt an, wie oft sich der Signalwert im aggregierten Zeitintervall geändert hat.

4

min

float

Nicht-äquidistanter Minimalwert des digitalen Kanals

5

max

float

Nicht-äquidistanter Maximalwert des digitalen Kanals

Enum "AggregationAlgorithmType"

Wert

Bedeutung

0

AGGR_ALGO_TYPE_UNSPECIFIED

nicht spezifiziert

1

AGGR_ALGO_TYPE_MIN_MAX_AVG_DOWNSAMPLING

Min/Max/Avg Downsampling

2

AGGR_ALGO_TYPE_LINEAR_INTERPOLATION_DOWNSAMPLING

Lineare Interpolation

Enum "DataType"

Folgende Werte stehen für DataType zur Verfügung.

Wert

Bedeutung

0

DATA_TYPE_UNSPECIFIED

nicht spezifiziert

1

DATA_TYPE_FLOAT_VALUES

Wert vom Typ "float"

2

DATA_TYPE_DOUBLE_VALUES

Wert vom Typ "double"

3

DATA_TYPE_STRING_VALUES

Wert vom Typ "string"

4

DATA_TYPE_DIGITAL_VALUES

Digitaler Wert

5

DATA_TYPE_NE_FLOAT_VALUES

Wert vom Typ "float", der nicht-äquidistant gespeichert wurde

6

DATA_TYPE_NE_DOUBLE_VALUES

Digitaler Wert, det nicht-äquidistant gespeichert wurde

7

DATA_TYPE_DIGITAL_EDGE_VALUES

Anzahl der Wechsel eines digitalen nicht-äquidistanten Werts