Prozessdaten speichern, aber richtig
Messwerte bei sich, in der eigenen "Domain" abspeichern — wie macht man das am besten? Auf den Anlagen gibt es dafür die Betriebsdatenerfassung. Ausserhalb der Anlage (in Ingenieurbüros, Hochschulen, Zulieferern, Behörden usw.) wird häufig mit Dateien gearbeitet: im csv- oder Excel-Format, abgelegt nach Datum im jeweiligen Projektordner, vom Anlagenpersonal irgendwann mal exportiert aus eben jener Betriebsdatenerfassung.
Datei oder Datenbank?Messwerte und aus diesen berechnete Werte (kurz Prozessdaten) in Dateien zu speichern hat einen grossen Vorteil: jeder kann damit arbeiten, ohne besondere IT-Kenntnisse. Die Arbeit selbst hat aber gravierende Nachteile:
- die Ladezeiten sind lang,
- die Visualisierung ist mühsam,
- das Hinzufügen neuer Daten ist fehleranfällig und
- oft ist zusätzliche Software für bestimmte Auswertungen notwendig (VBA-Skripte, Python, R, Power BI, spezielle Modellierungsprogramme).
Insgesamt müssen sehr viele Dinge manuell gemacht werden, die zeitintensiv und fehleranfällig sind, die aber mit dem eigentlichen Zweck "Daten analysieren" gar nichts zu tun haben.
Dass Prozessdaten ausserhalb einer Betriebsdatenerfassung häufig in Dateien und selten in einer dafür viel besser geeigneten Datenbank abgelegt werden, liegt am vergleichsweise hohen Aufwand für Entwicklung und Pflege datenbank-basierter Lösungen. Das betrifft nicht nur den eigentlichen Datenspeicher = das "Backend", sondern auch die Visualisierung, die Import-Routinen, eventuell erforderliche Berechnungsmodule, die Business-Logik für Zugriffsrechte und vieles mehr.
Daten hinzufügenProzessdaten in Dateien zum Projekt hinzufügen ist eigentlich ganz einfach — Ordner auf, Datei hinein. Aufwendig und fehleranfällig ist dann alles weitere: Daten auf Fehler kontrollieren (fehlen Werte? stimmt die Reihenfolge/das Intervall überall? sehr häufig: stimmt die Zeitumstellung?), bei bereits vorhandenen Daten prüfen, ob die neuen Daten dazupassen, Daten anschreiben — was v.a. bei KKS-Nummern sehr sinnvoll ist, ggf. Analysen/Berechnungen auf die neuen Werte anwenden, die Visualisierung auf die neuen Daten anpassen, Reporting aktualisieren.
Diese Arbeitsschritte sind mit einer datenbank-basierten Lösung wie OpenPi sehr gut automatisierbar. Der Datenimport in OpenPi erfolgt
- über einen gesicherten Datenaustausch-Server (der z.B. Daten in regelmässigen Abständen aus einer Betriebsdatenerfassung holt) oder
- über PIs Import-Routine.
Zentraler Bestandteil der Import-Routine ist das "preprocessing". Alle Daten werden dabei auf Vollständigkeit und Fehler (v.a. beim Datum) überprüft. Dies um sicherzustellen, dass keine falschen Daten in die Datenbank gelangen. Interessant ist, dass in den Lehrbüchern das preprocessing dann anfängt, wenn die Daten schon in der Datenbank sind. Was wohl daran liegt, dass Tools wie Tableau, R & Co. in der Regel ohne Import-Routinen verwendet werden.
Werte datenbank-basiert speichernIm Vergleich zur datei-basierten Speicherung erfordern Datenbanken ganz andere Überlegungen zum Design der Ablage, was zu einer deutlich höheren Qualität führt.
So gehören in OpenPi Werte zu Kanälen und Kanäle zu Datenquellen (eine wichtige Voraussetzung für die Feinverteilung von Zugriffsrechten). Ein Kanal repräsentiert häufig eine Messung, z.B. eine Temperatur, eine Konzentration oder einen Volumenstrom. Kanäle können aber auch Berechnungsergebnisse sein, aus Formeln oder Umrechnungen. Jeder Kanal wird zudem durch ein Datums-Intervall gekennzeichnet, das regelmässig (oft Tage, Stunden oder Minuten) oder unregelmässig (Rohwerte, Einzelwerte, Konstanten) ist und — falls es sich um ein regelmässiges Intervall handelt — einen Sekunden-Offset zum nächsten vollen Intervall hat. Für dieselbe Messung kann es also mehrere Kanäle geben.
Werte werden in Tabellen gespeichert – eine Tabelle pro Kanal – mit vier Feldern: Datum, Wert, Einfüge-Datum und Herkunft. Weitere Felder (Flags oder andere Typen) werden temporär ergänzt. Hinzu kommen Tabellen-Indices, die zwar etwas mehr Speicherplatz brauchen (total ca. 1 MB pro 10'000 Werte), die Datenoperationen aber maximal beschleunigen und den Performance-Abstand zur datei-basierten Datenspeicherung noch grösser machen. In anderen, oft spezialisierteren Anwendungen werden verschiedene Werte bzw. Kanäle häufig in nur einer Tabelle gespeichert, was für PIs Einsatzbereich ein paar Vorteile hätte, insgesamt aber viel mehr Nachteile bringt.
Mit Prozessdaten in/aus Datenbanken arbeiten geht schnell, vermeidet Fehler und macht mit schlauen Frontends – "don't make me think" – richtig Spass. Datenbanken machen initial und in der Pflege Aufwand, skalieren aber und ermöglichen eine um Klassen höhere Qualität als eine datei-basierte Ablage. Mit OpenPi haben wir deshalb diesen Aufwand getrieben, mit dem Ziel, das Monitoring und die Optimierung technischer Prozesse für Ingenieure und Techniker so einfach wie möglich zu machen. Und das mindestens genauso gut, oft besser als mit einer Betriebsdatenerfassung.
Dr.-Ing. Martin Horeni, 01/2023