Skip to main content

Verdichtung von Zeitreihen

Messquellen liefern Werte oft dichter, als sie fachlich gebraucht werden. Die Verdichtung legt fest, welche dieser Werte gespeichert werden. Sie wird beim Speichern angewendet und ist eingestellt

Gespeichert werden nur die verdichteten Werte; die Rohwerte gehen verloren. Eine Änderung gilt ab dem Speichern, bereits gespeicherte Werte bleiben, wie sie sind.

Verdichtung ist nicht Aggregation

Davon zu unterscheiden ist die Aggregation beim Lesen: Ein Diagramm mit grober Aggregation, ein Export mit Aggregationsintervall oder eine Kennzahl fassen die gespeicherten Werte für die Anzeige zusammen, ohne etwas zu verändern. Sie rechnet anders – siehe Abgrenzung am Ende dieser Seite.

Einstellungen​

EinstellungBedeutung
Verdichtungdie Art: Rohdaten, Wert am Rasterpunkt, Mittelwert, Minimum, Maximum oder Bei Änderung
Verdichtungsintervalldie Länge eines Intervalls: 1, 5, 10, 15 oder 30 Minuten, 1, 2, 4, 6 oder 12 Stunden, 1 Tag. Bei einer OPC-UA-Variable mit PULL ist es das Abrufintervall.
Lebenszeichennur bei Bei Änderung: nach wie vielen Minuten ohne Änderung der aktuelle Wert erneut gespeichert wird; ersetzt dort das Verdichtungsintervall
Totbandnur bei Bei Änderung: um wie viel sich ein Wert mindestens ändern muss, damit er gespeichert wird – in der Einheit des Werts. 0 speichert jede Änderung.

Einen weiteren Wert stellt der Betrieb für die ganze Installation ein; er steht nicht im Dialog:

EinstellungGrundeinstellungBedeutung
Karenzzeit (MQTT_COMPRESSION_GRACE, nur MQTT)30 Sekundenwie lange nach Intervallende auf verspätete Nachrichten gewartet wird

Das Raster​

Die Intervalle beginnen um Mitternacht in der Zeitzone des Mandanten und folgen lückenlos aufeinander: bei 15 Minuten also 00:00, 00:15, 00:30 …, bei einem Tag von Mitternacht bis Mitternacht. Deshalb stehen nur Intervalle zur Wahl, die in einem Tag aufgehen.

  • Ein verdichteter Wert trägt den Beginn seines Intervalls als Zeitstempel, auch wenn er erst nach dessen Ende gespeichert wird. Der Mittelwert von 10:00 bis 10:15 steht also bei 10:00.
  • Gespeichert werden nur abgeschlossene Intervalle. Der neueste verdichtete Wert ist deshalb immer mindestens ein Intervall alt.
  • Bereits gespeicherte verdichtete Werte bleiben, wie sie sind. Ändert ein Administrator die Zeitzone des Mandanten, gilt das neue Raster ab der Änderung; bei MQTT wird das gerade offene Intervall mit den Werten bis zur Änderung gespeichert (siehe Umstellen der Verdichtung unten).
  • An Tagen der Zeitumstellung zählt das Raster in echter Zeit ab Mitternacht weiter, und das letzte Intervall des Tages endet um Mitternacht. Mehrstündige Intervalle liegen an diesem Tag eine Stunde neben der gewohnten Uhrzeit, das letzte ist eine Stunde kürzer oder länger.

Gemeinsame Regeln​

Ein Wert gilt, bis der nächste kommt. Zwischen zwei Rohwerten gilt der ältere unverändert weiter (Halten des letzten Werts); es wird nicht linear interpoliert. Das ist auch die Annahme, die OPC-UA-Server ihren eigenen Verdichtungen zugrunde legen.

Nur Good-Werte gehen in eine Rechnung ein. Jeder Wert trägt einen Status nach OPC UA (Good, Uncertain, Bad, siehe Status je Datenpunkt). Uncertain zählt dabei wie Bad – die Voreinstellung der Norm OPC UA Part 13 (TreatUncertainAsBad). Ein Wert ohne Zahl zählt ebenfalls nicht mit.

Jeder verdichtete Wert trägt einen Status. Er sagt, ob das Intervall vollständig aus Good-Werten bestand. Welcher Status bei welcher Verdichtung entsteht, steht bei den einzelnen Arten.

Die Verdichtungsarten im Einzelnen​

Rohdaten​

Jeder eintreffende Wert wird mit seinem eigenen Zeitstempel und Status gespeichert. Es gibt kein Raster.

Wert am Rasterpunkt​

Gespeichert wird der Wert, der zu Beginn des Intervalls gilt – eine Stichprobe, keine Rechnung. Das entspricht StartBound aus OPC UA Part 13.

  • Liegt ein Rohwert genau auf dem Rasterpunkt, wird er genommen, sonst der letzte Rohwert davor – auch einer aus einem früheren Intervall.
  • Werte innerhalb des Intervalls spielen für dieses Intervall keine Rolle; sie bestimmen erst den nächsten Rasterpunkt. Spitzen zwischen zwei Rasterpunkten gehen deshalb verloren.
  • Status: Schweregrad und Unterstatus des Rohwerts, dazu der Herkunftsvermerk Raw, wenn der Rohwert genau auf dem Rasterpunkt lag, sonst Interpolated. Ist der Rohwert Bad, entsteht ein Punkt ohne Zahl.

Beispiel, 5 Minuten, Rohwerte 10:01 = 20,0 · 10:04 = 21,0 · 10:05 = 22,0 · 10:08 = 23,0:

RasterpunktWertStatuswarum
10:00––erstes Intervall, der Wert um 10:00 ist unbekannt (siehe Sonderfälle)
10:0522,0Good, RawRohwert liegt genau auf 10:05
10:1023,0Good, Interpolatedletzter Wert vor 10:10, von 10:08

Geeignet für Zähler, Betriebsstunden, Sollwerte und Zustände – überall, wo ein Mittelwert Zwischenwerte erfände, die es nie gab.

Mittelwert​

Gespeichert wird der zeitgewichtete Mittelwert des Intervalls (TimeAverage2 aus OPC UA Part 13). Jeder Wert zählt so lange, wie er gilt, nicht einmal pro Messung.

  1. Das Intervall wird an jedem Rohwert in Abschnitte geteilt. Der Wert, der beim Intervallbeginn gilt, zählt ab dem Intervallbeginn mit.
  2. Je Abschnitt mit einem Good-Wert gehen Wert × Dauer in die Summe und die Dauer in die Good-Zeit ein. Abschnitte mit Uncertain, Bad oder ohne Zahl zählen weder in der Summe noch in der Good-Zeit.
  3. Mittelwert = Summe (Wert × Dauer) ÷ Good-Zeit.
Lage im IntervallgespeichertStatus
nur Good-ZeitMittelwertGood, Calculated
Good-Zeit und andere ZeitMittelwert über die Good-ZeitUncertain_DataSubNormal, Calculated
keine Good-ZeitPunkt ohne ZahlBad_NoData
kein Wert bekanntnichts–

Beispiel, Intervall 10:00–10:05; vor 10:00 gilt 20,0; 10:01 = 22,0; 10:04 = Bad ohne Zahl; 10:04:30 = 21,0:

AbschnittDauergiltzählt
10:00–10:0160 s20,0Good
10:01–10:04180 s22,0Good
10:04–10:04:3030 sBadnicht
10:04:30–10:0530 s21,0Good

(20 · 60 + 22 · 180 + 21 · 30) ÷ 270 = 5790 ÷ 270 ≈ 21,44, Status Uncertain_DataSubNormal, gespeichert bei 10:00. Der einfache Durchschnitt der Messwerte läge daneben; zeitgewichtet hängt das Ergebnis nicht davon ab, wie oft eine Quelle sendet.

Geeignet für Durchfluss, Temperatur, Füllstand – stetige Größen.

Minimum und Maximum​

Gespeichert wird der kleinste bzw. größte Good-Wert, der innerhalb des Intervalls gemeldet wurde.

  • Es zählen nur Werte mit einem Zeitstempel im Intervall, sein Beginn eingeschlossen, sein Ende nicht. Ein Wert von vor dem Intervall zählt nicht mit – sonst wäre das Maximum eines Zählers nach seinem Nullstellen der Stand des Vortags.
  • Ein Intervall ohne eigenen Wert wird nicht gespeichert.
im Intervall gemeldetgespeichertStatus
nur Good-WerteMinimum bzw. MaximumGood, Calculated
Good-Werte und andereMinimum bzw. Maximum der Good-WerteUncertain_DataSubNormal, Calculated
keine Good-WertePunkt ohne ZahlBad_NoData
kein Wertnichts–

Geeignet für Druck, Pegel, Strom – wo Spitzen zählen.

Bei Änderung​

Gespeichert wird jeder Wert, der sich vom zuletzt gespeicherten um mehr als das Totband unterscheidet, mit seinem eigenen Zeitstempel und sofort, nicht erst am Intervallende. Als Änderung gilt außerdem

  • ein Wechsel des Status (etwa von Good nach Bad) – auch bei gleichem Wert,
  • ein Wechsel von „Zahl“ zu „keine Zahl“ oder zurück.

Das Lebenszeichen spannt ein Raster wie das Verdichtungsintervall. Wurde in einem Intervall nichts gespeichert, wird an dessen Ende der Wert vom Intervallbeginn gespeichert – mit dem Zeitstempel des Intervallbeginns und den Herkunftsvermerken wie beim Wert am Rasterpunkt. So ist auch bei einem unveränderten Wert erkennbar, dass die Quelle noch lebt.

Beispiel, Totband 0,5, Lebenszeichen 15 Minuten, letzter gespeicherter Wert 20,0: Ein Rohwert 20,3 wird verworfen (Abweichung 0,3), 20,6 wird gespeichert (0,6), danach misst 20,9 gegen 20,6 und wird verworfen. Kommt bis zum Intervallende keine weitere Änderung, wird kein Lebenszeichen gespeichert, denn im Intervall wurde ja schon ein Wert gespeichert.

Geeignet für Zustände und träge Messwerte. Bei OPC UA nur mit PUSH möglich.

Wann ein Wert gespeichert wird​

Quelleein Intervall wird geschlossen …
MQTTsobald der erste Wert des nächsten Intervalls eintrifft, spätestens nach Ablauf der Karenzzeit (30 s) nach Intervallende
OPC UA, PUSHnach der Uhr des OPC-UA-Servers, wenn das Intervallende vorbei ist – geprüft alle 5 Sekunden, auch wenn keine neue Meldung kommt
OPC UA, PULLbeim nächsten Abruf: Er liest die seit dem letzten Abruf abgeschlossenen Intervalle aus der Historie des Servers

Bei PULL rechnet der OPC-UA-Server Wert am Rasterpunkt und Mittelwert selbst; die Plattform übernimmt dessen Ergebnis und Status, verwirft aber Intervalle, für die der Server Bad meldet. Minimum und Maximum rechnet die Plattform aus den Rohwerten der Historie nach den Regeln oben. Führt der Server für die Variable keine Historie, ist nur der Wert am Rasterpunkt möglich: Gespeichert wird dann der beim Abruf gelesene Wert mit dem Rasterpunkt als Zeitstempel.

Sonderfälle​

Das erste Intervall nach dem Einschalten oder Umstellen der Verdichtung beginnt, bevor ein Wert bekannt ist.

  • MQTT: Mittelwert, Minimum und Maximum werden trotzdem gespeichert, gerechnet ab dem ersten Wert. Beim Mittelwert zählt die unbekannte Zeit davor als „keine Good-Zeit“, das erste Intervall ist deshalb meist Uncertain_DataSubNormal. Wert am Rasterpunkt und das Lebenszeichen von Bei Änderung fehlen im ersten Intervall: Der Wert am Rasterpunkt ist unbekannt.
  • OPC UA: Das erste Intervall wird nicht aus dem Abonnement gespeichert. Der Historienabruf füllt es, sofern er für den Server eingeschaltet ist und der Server eine Historie führt.

Eine stille Quelle

  • MQTT: Der letzte Wert wird nur ein Intervall lang fortgeschrieben – gespeichert werden das Intervall mit dem letzten Wert und das folgende, danach nichts mehr, bis wieder ein Wert eintrifft. Eine MQTT-Quelle meldet einen Ausfall nicht; ein ausgefallener Sensor würde sonst endlos gültige Werte erzeugen. Eine Lücke heißt deshalb: Es kam nichts an.
  • OPC UA: Der letzte Wert gilt weiter; Wert am Rasterpunkt, Mittelwert und das Lebenszeichen schreiben ihn fort, Minimum und Maximum speichern für Intervalle ohne eigenen Wert nichts. Einen Verbindungsverlust meldet der Server im Status.

Verspätete Werte. Ein Wert für ein bereits geschlossenes Intervall wird nicht mehr berücksichtigt; die Plattform zählt ihn und warnt höchstens einmal pro Stunde und Zeitreihe im Protokoll. Häufen sich solche Warnungen, geht die Uhr der Quelle nach oder die Karenzzeit ist zu knapp.

Werte aus der Zukunft (MQTT). Ein Wert mit einem Zeitstempel mehr als 5 Minuten in der Zukunft wird unverdichtet gespeichert; ebenso ein Wert, dessen Zeitstempel sich nicht lesen lässt.

Umstellen der Verdichtung. Die neue Einstellung gilt ab dem Speichern, bei MQTT innerhalb von etwa 30 Sekunden. Das gerade laufende Intervall der bisherigen Einstellung wird bei MQTT mit den Werten bis zur Umstellung abgeschlossen und gespeichert, auch beim Wechsel zu Rohdaten. Ein so verkürztes Intervall trägt bei Mittelwert, Minimum und Maximum im Status die Markierung Partial; Wert am Rasterpunkt und das Lebenszeichen stehen schon am Intervallbeginn fest und bleiben unmarkiert. Das erste Intervall der neuen Einstellung beginnt mit dem ersten Wert danach; liegt sein Rasterpunkt vor der Umstellung, überschneiden sich altes und neues Intervall zeitlich. Fällt sein Rasterpunkt mit dem des gekürzten Intervalls zusammen, wird es nicht gespeichert – der gekürzte Wert bleibt stehen. Ein Wert mit einem Zeitstempel vor der Umstellung, der erst danach eintrifft, gilt als verspätet.

Aggregation beim Lesen​

Zeigt ein Diagramm einen langen Zeitraum, exportieren Sie mit Aggregationsintervall oder fragt eine Kennzahl einen Zeitraum ab, fasst die Plattform die gespeicherten Punkte je Intervall zusammen – mit der Standard-Aggregationsmethode des Signals oder der Methode der Abfrage (siehe Signalverwaltung). Gespeichert wird dabei nichts. Die Regeln für Good-Werte und Status sind dieselben, die Rechnung ist eine andere:

Verdichtung beim SpeichernAggregation beim Lesen
Mittelwertzeitgewichtet: ein Wert zählt, solange er gilteinfacher Durchschnitt der gespeicherten Punkte im Intervall: jeder Punkt zählt einmal
Wert von vor dem Intervallzählt beim Rasterwert und Mittelwert mitzählt nicht
Status des Intervallsnach Zeitanteilen (Mittelwert) bzw. Werten (Min/Max)nach der Zahl der Good- und anderen Punkte, siehe Status verdichteter Werte

Ist eine Zeitreihe bereits gleichmäßig verdichtet (etwa Mittelwert je 15 Minuten), ist der einfache Durchschnitt beim Lesen über volle Stunden gleich dem zeitgewichteten, sofern alle Intervalle vorhanden und Good sind: Jeder Punkt steht dann für gleich viel Zeit.