Null oder Nix

Sie wollen die durchschnittliche Förderleistung einer Pumpe ermitteln, wenn die Pumpe läuft. Oder Sie wollen den durchschnittlichen Stromverbrauch eines Motors ermitteln, aber nur wenn dieser auch in Betrieb ist.
Würden Sie einfach einen Mittelwert über den Zeitraum bilden, dann würden natürlich auch alle Zeiträume mit betrachtet an denen die Förderung oder im anderen Fall die Stromaufnahme gleich null ist. Das Bild würde also vollkommen verfälscht.
Es ist also notwendig nur solche Werte in die Berechnung einfließen zu lassen, deren Wert >0 ist. Sie müssen also der Mittelwertberechnung einen Filter vorschalten.
In dem folgenden Beispiel aus PI AF Analysis wird dies gezeigt:

Die Funktion TimeGT() gibt in Sekunden aus, wie lange im angegebenen Zeitraum der Wert größer als, in diesem Fall 0, war.

Time weighted und Event weighted

Immer wieder taucht in Seminaren die Frage auf, worin der Unterschied zwischen zeitlich gewichteten und ereignisgewichteten Berechnungen besteht.

Ereignisgewichtete Berechnungen (Event weighted), d.h. Mittelwerte und Summen, addieren einfach die Werte in einem Zeitraum und beim Mittelwert werden diese durch die Anzahl der Werte geteilt.

Zeitlich gewichtete Berechnungen (Time weighted) berücksichtigen hingegen, wie lange ein Wert Gültigkeit hatte. Dies ist bei PI Daten deswegen von besonderer Bedeutung, weil Werte, die sich nicht, oder nur marginal verändert haben, ausgefiltert werden. Ein weiteres Beispiel könnten Zinsberechnungen sein, wenn sich der Zinssatz in dem betrachteten Zeitraum mehrfach geändert hat. Hier kann man ebenfalls nicht mit dem arithmetischen Mittelwert arbeiten.
Bei zeitlich gewichteten Berechnungen spielt die Fläche unter der Kurve eine entscheidende Rolle.

wobei yi der Ereigniswert zum Zeitpunkt ti ist und n die Anzahl der gemittelten Werte.

In DataLink Berechnungen aktualisieren

Die einzige DataLink-Funktion, die sich automatisch aktualisiert, ist der „Aktuelle Wert“ oder im Englischen „CurrentValue“. Die Funktion zeigt den frischesten Wert an. Wenn Sie die automatische Update Funktion angewählt haben, dann frischt sich die Anzeige im voreingestellten Fall alle 5 Sekunden, oder wenn in den Einstellungen etwas anderes angegeben, in längeren Zyklen automatisch auf. Durch Drücken der F9 Taste kann eine Aktualisierung auch erzwungen werden. Auch alle Berechnungen, die mit dieser DataLink-Funktion referenziert sind, also darauf basieren, werden automatisch aufgefrischt. Man sagt, dass die „CurrentValue“-Funktion volatile ist.

Ist das Eingabefenster der Funktion geöffnet, oder wird eine Zelle editiert, so pausiert die Update-Funktion. Schreibgeschützte Tabellen können sich ebenfalls nicht aktualisieren.
Die Neuberechnung großer Workbooks, möglicherweise mit mehreren Tabellenblättern, kann sehr lange dauern. Mit der ESC-Taste kann diese abgebrochen werden. In den nicht aktualisierten Zellen erscheint dann „Calculation aborted“ und die automatische Update-Funktion wird verlassen.

Alle anderen DataLink-Funktionen sind nicht volatile, d.h. frischen sich nicht automatisch auf. Mit der Tastenkombination Strg+Alt+Shift+F9 können Sie die Neuberechnung aller Formeln erzwingen. Eine Aktualisierung eines Ergebnisbereichs kann auch im Kontextmenü (rechte Maustaste) mit dem Menüpunkt „Resize (Recalculate) to show all values“ bewirkt werden. Dabei vergrößert sich u.U. der Ergebnisbereich.

Es gibt einen Trick mit dem man auch andere DataLink-Funktionen volatile machen kann. Kommt im Zeitstempel der Funktion ein Sternchen * (Asterisk) vor, so ersetzen Sie dieses durch die Excel-Funktion „=NOW()“ oder im deutschen Excel durch „=Jetzt()“. Diese Excel Funktion ist volatile und aktualisiert automatisch. Verweisen Sie also z.B. in einer „PIArcVal“-Funktion (Archivwert) auf eine Zelle mit einem „=NOW()“, so wird sich auch diese Funktion automatisch aktualisieren.
Übrigens ist auch die Excel-Funktion „=today()“ oder „=heute()“ volatile und „=heute()+1/3“ entspricht „heute um 8 Uhr“.

 

 

 

Vermeiden unnötiger DataLink-Funktionsaufrufe

Jeder DataLink-Funktionsaufruf bedeutet für das DataArchive, dass ein oder mehrere Archive geöffnet werden müssen und die Werte herauszufiltern sind. Zahlreiche DataLink-Funktionen erlauben aber, in einem Schritt mehrere Data Items (Tags) oder mehrere Zeitstempel in einem Eingabe-Bereich anzugeben. Diese Vorgehensweise vermindert die Belastung des Servers und ist daher als „Best Practice“ vorzuziehen. Anstatt also im gezeigten Negativbeispiel eine Funktion auf alle darunterliegenden Zellen herunter zu kopieren, sollte in der Eingabe der Bereich angegeben werden, wie das Positivbeispiel zeigt.

Total oder ungenau

Das PI System ist effizient und leistungsstark. Archiviert werden längst nicht alle gemessenen Werte. Zwei Filtertechniken, der Exception Filter und der Compression Test sorgen dafür, dass nur solche Werte im Archiv abgelegt werden, die für den Kurvenverlauf von Bedeutung sind. Konstante Werte oder solche, deren Veränderung unterhalb der Toleranzgrenze liegt, werden von den Filtertechnologien entfernt.
Dies ist einerseits Speicherplatz schonend und sorgt andererseits dafür, dass das System auch bei großen Roh-Datenmengen performant bleibt.

Wer nun aber Verbräuche, oder Produktionsmengen errechnen will, der stellt fest, dass dies zu Ungenauigkeiten führt. Verbräuche pro Stunde oder Tag lassen sich aus den Archivwerten der Durchflüsse pro Minute nicht exakt ermitteln. Gleiches gilt auch für Durchschnittswerte.

Das PI System bietet hier als Ausweg die sogenannten Totalizer-Tags an. Auf dem PI Data Archive Rechner (früher PI Server genannt) findet sich das Totalizer Subsystem. Dieses Programm kann die ungefilterten (Snapshot)-Werte aufsummieren und am Ende des vorher festgelegten Intervalls wird das Ergebnis in das Archiv geschrieben, der Totalizer wieder auf Null gesetzt und der Vorgang beginnt von vorne. Verbräuche pro Stunde oder Tag oder die Produktion pro Schicht lassen sich so exakt ermitteln. In der Regel gehören Totalizer Tags zur Pointsource T.

 

Bedingte Formatierung: Erweitern/Editieren

Wenn eine Regel für die Bedingte Formatierung für einen Zellbereich festgelegt wurde, so können Sie weitere Bereiche hinzufügen.
Dazu markieren Sie eine Zelle in dem bedingt formatierten Bereich. Rufen Sie die Bedingte Formatierung auf –>Regeln verwalten.
Klicken Sie hinter „Wird angewendet auf „auf die Schaltfläche und Sie können den Bereich editieren. Fügen Sie ein Semikolon hinter den existierenden Bereich und markieren Sie dann den zusätzlichen Bereich. Dieser wird der Auflistung hinzu gefügt. Mit Enter und Übernehmen wird dann die erweiterte Regel angewendet.

Bedingte Formatierung: Leselinien

Leselinien machen die Orientierung in einer Tabelle einfacher, besonders wenn es sich um lange Zeilen handelt in denen man schnell mal verrutscht.
Bei jeder zweiten Zeile wird der Hintergrund entsprechend der Regel gefärbt.

Markieren Sie den Zellbereich für den die Regel gelten soll. Rufen Sie dann im Menü die Bedingte Formatierung auf und erstellen Sie eine neue Regel.
Die Bedingungsformel lautet =REST(ZEILE();2)=1
Hier wird die Zeilennummer ermittelt und geprüft ob sich beim ganzzahligen Teilen durch 2 ein Divisionsrest ergibt. Im Beispiel werden alle ungeraden Zeilennummern des Bereichs gelb gefärbt.

Wenn Sie die Formel umändern in =REST(ZEILE();2)=0 , dann werden die gerade Zeilen gelb.