Das externe Logging beschreibt die Möglichkeit, ein Datenabbild zu erstellen. Man kann sowohl in eine Datenbank als auch in ein Filesystem loggen.
Das externe Logging ist immer auf die gesamte Datenquelle, mit allen darin enthaltenen Variablen festgelegt. Es gibt 2 Möglichkeiten für das externe Logging:
- Datenimage
Es wird ein Abzug des aktuellen Wertes der Variablen aus der Datenquelle erstellt.
- Datenlog
Es wird ein Protokoll erstellt, welches die Änderungen der Variablen zeigt.
Externes Logging in die Datenbank
Mit wenigen Klicks können Sie Ihrem QuickHMI-System zusätzliche Schnittstellen hinzufügen.
Die Schnittstelle bietet QuickHMI-Entwicklern eine einfache Möglichkeit, dem Anwender über eine vorhandene Datenbank eine Schnittstelle mit folgenden Features zur Verfügung zu stellen:
- Daten-Archivierer
Hier werden alle im QuickHMI auflaufenden Daten der Endgeräte in Tabellen der Datenbank geschrieben.
- Daten-Abbild
Komplettes Abbild der Variablen mit aktuellem Wert und Zeitpunkt der letzten Änderung.
Für welche Zwecke kann ich die Datenbank-Schnittstelle einsetzen?
Für die Benutzung der Schnittstelle gibt es unzählige Einsatzmöglichkeiten.
Sie steht Ihnen immer dann zur Verfügung, wenn Sie von „Außerhalb“ auf QuickHMI oder die angeschlossenen Geräte wie SPS, MODBUS-Teilnehmer oder ähnlichem zugreifen möchten. Außerdem können Sie die Daten für externe Auswertungen, Charts, Reports oder einfach für Archivierungszwecke nutzen.
Was benötige ich zum Betreiben einer Datenbank-Schnittstelle?
Bevor eine Datenbank-Schnittstelle betrieben werden kann, muss eine Datenbankverbindung angelegt werden.
Wie das geht, erfahren Sie im Kapitel „Anlegen von Datenbankverbindungen“.
Zum Betreiben der QuickHMI-Datenbank-Schnittstelle benötigen Sie eine kundenseitig vorhandene und administrierte Datenbank und einen entsprechenden JDBC Treiber.
Je nach aufkommender Datenmenge sowie unter Berücksichtigung der Aufbewahrungszeit ist auch der Einsatz der kostenlosen Express-Versionen möglich.
Die Datenbank muss von den QuickHMI-Prozessen erreichbar sein, die Kommunikation darf nicht durch Firewalls oder ähnlichem unterbrochen sein.
Die Netzwerkverbindung zwischen QuickHMI-System und Datenbank sollte mit einer Geschwindigkeit von 100Mbit/s realisiert sein. Niedrigere Übertragungswerte können eventuell dazu führen, dass die Archiv-Daten nicht in der gewünschten Performance geschrieben werden können.
Bitte beachten Sie: QuickHMI stellt keinen Datenbank-Server und auch keine Datenbanklizenzen zur Verfügung, sondern bietet die Anbindung einer bereits vorhandenen Datenbank an. Hierzu notwendige Datenbank- und/oder Zugriffslizenzen, müssen beim Benutzer/Kunden vorhanden sein.
Sollte aus unterschiedlichen Gründen das Problem auftreten, dass das QuickHMI-System höhere Datenmengen bereitstellt, als in das Archiv geschrieben werden können, so speichert das System diese Daten im Arbeitsspeicher zwischen und arbeitet diese Daten nacheinander ab. Wenn allerdings diese intern gespeicherte Datenmenge einen Schwellwert von 50000 Datensätze pro Datenquelle übersteigt, werden keine neuen Datensätze angenommen, sondern verworfen.
Das geschilderte Problem kann z.B. bei anderweitig ausgelasteter Hardware oder zu wenig bereitgestellten Ressourcen (z.B. virtueller Server) auftreten.
Bitte überprüfen Sie aus diesen Gründen vor produktiver Nutzung die Auslastung und Performance des Server-Zielsystems.
Außerdem ist auf der Zieldatenbank eine ausreichende Menge an freiem Speicherplatz zur Verfügung zu stellen. Eine allgemeine Empfehlung kann nur insoweit getroffen werden, dass bei Aktivierung der Archivfunktionalität, 20GB freier Speicherplatz zur Verfügung stehen sollte. Eine genaue Angabe hängt von der Anzahl benutzter Variablen sowie der Intensität und Menge von Wechselvorgängen der Variablenwerte ab.
Einstellungen für die Datenbank-Schnittstelle vornehmen
Sie können für die Schnittstelle folgende Einstellungen vornehmen:
- Verbindung zur Zieldatenbank
- Ein- oder Ausschalten der Archiv-Funktionalität
- Ein- oder Ausschalten der Bereitstellung eines Variablenabbildes (Image)
Um Datenquellen anzulegen und zu archivieren, klicken Sie im Projekt Explorer unter Kommunikation auf
„Datenquellen“ und wählen Sie „Datenquelle hinzufügen“ oder „Datenquelle bearbeiten“ aus.
Anschließend wählen Sie nach dem Bestimmen der Spezifikationen „Externes Logging“.

Hier haben Sie jetzt die Optionen „Datenprotokoll schreiben“ und „Datenabbild schreiben“.
Datenprotokoll
Das Datenprotokoll hält jede Änderung einer Variable fest. Bei einer hohen Anzahl von Variablen und Variablenänderungen können somit für das Protokoll sehr schnell sehr viele Speicher-Ressourcen benötigt werden. Braucht man das Datenprotokoll nicht, lassen sich Speicher-Ressourcen einsparen indem man das Protokoll deaktiviert.
Datenabbild
Das Datenabbild hat immer nur einen Eintrag, nämlich den letzten Wert der Variable.

Auswahl von Variablen
Sie haben zudem die Möglichkeit zu entscheiden, welche Variablen geloggt werden und welche nicht.
Hierzu stehen Ihnen die Modi „Blacklist“ und die „Whitelist“ zur Verfügung, die Sie im externen Logging im Bereich „Variablen“ finden.
Mit der „Blacklist“ können Sie über den rechts-stehenden Button via Checkbox die im Projekt verfügbaren Variablen auswählen.
Die ausgewählten Variablen werden dann NICHT geloggt. Stellen Sie den Modus auf „Whitelist“, bleibt die Auswahl der Variablen zwar erhalten, jedoch werden diese dann geloggt. Selbstverständlich können Sie auch über die Whitelist Variablen aus- und abwählen.

Nachdem Sie alle relevanten Eingaben getätigt haben, klicken Sie auf „OK“, um fortzufahren.
Datenarchivierung Datenbank-Schnittstelle
Mit der Daten-Archivierer-Funktionalität werden alle Datenänderungen in die Archiv-Tabellen protokolliert. Sie können diese Daten für beliebige Zwecke nutzen.
Hierzu werden die Daten in die Tabelle QHMI_DATALOG abgelegt.

Für jede Variablenänderung existiert eine Zeile innerhalb der Tabelle.
Tabellenstruktur:
| Spaltenname | Spaltentyp | Primärschlüssel | Information |
| ID | NUMBER(*, 0) Not Null | ✓ | Fortlaufende ID (muss automatisch von Datenbanksystem erzeugt werden (AUTO_INCREMENT)) |
| TS | TIMESTAMP(6) Not Null | Zeitpunkt, Zeitstempel | |
| DATASOURCE | VARCHAR2(50) Not Null | Name der Datenquelle | |
| DATATYPE | VARCHAR2(50) Not Null | Datentyp | |
| VARNAME | VARCHAR2(100) Not Null | Name der Variable | |
| VALUE | VARCHAR2(2048) Null | Wert der Variable | |
| QUALITY | VARCHAR2(50) Null | Qualität („GOOD„, wenn die QuickHMI-Anbindung zum Zielgerät vorschriftsmäßig arbeitet oder „BAD„, wenn Probleme, z.B. Timeouts auftreten.) | |
| MESSAGE | VARCHAR2(1024) Null | Nachricht |
Aktuelles Datenbild Datenbank-Schnittstelle
Wird nur benötigt, wenn Option „Image erzeugen“ aktiviert ist.
Mithilfe des Datenabbildes können Sie über externe Applikationen auf den Variablenvorrat des QuickHMI-Systems zugreifen und aktuelle Zustände auslesen.
Hierzu werden die Daten in die Tabelle QHMI_DATAIMAGE abgelegt.

Für jede Variable existiert eine Zeile innerhalb der Tabelle.
Tabellenstruktur:
| Spaltenname | Spaltentyp | Primärschlüssel | Information |
| TS | TIMESTAMP(6) Not Null | Zeitpunkt, Zeitstempel | |
| DATASOURCE | VARCHAR2(50) Not Null | Name der Datenquelle | |
| DATATYPE | VARCHAR2(50) Not Null | Datentyp | |
| VARNAME | VARCHAR2(100) Not Null | Name der Variable | |
| VALUE | VARCHAR2(2048) Null | Wert der Variable | |
| QUALITY | VARCHAR2(50) Null | Qualität („GOOD“ wenn die QuickHMI-Anbindung zum Zielgerät vorschriftsmäßig arbeitet oder „BAD“ wenn Probleme, z.B. Timeouts auftreten.) |
Zurückschreiben Datenbank-Schnittstelle
Wird nur benötigt, wenn Option „Zurückschreiben“ aktiviert ist.
Mit Hilfe der „Zurückschreiben“ Tabelle, können Daten aus der Tabelle (QHMI_DATAWRITEBACK) zurück in die Datenquelle geschrieben werden.
Wird ein neuer Datensatz in dieser Tabelle erzeugt, wird dieser vom QuickHMI System verarbeitet und nach Bearbeitung aus dieser Tabelle entfernt.
Das QuickHMI System schreibt dabei den aus dem Datensatz entnommenen Wert zurück in die zugrunde liegende Datenquelle.
Tabellenstruktur:
| Spaltenname | Spaltentyp | Primärschlüssel | Information |
| DATASOURCE | VARCHAR2(50) Not Null | ✓ | Name der Datenquelle |
| VARNAME | VARCHAR2(100) Not Null | ✓ | Name der Variablen |
| VALUE | VARCHAR2(2048) Not Null | Zu schreibender Wert |
Externes Logging in das Filesystem
Die Schnittstelle in das Filesystem, bietet QuickHMI-Entwicklern eine einfache Möglichkeit, dem Anwender über das Dateisystem, eine Schnittstelle mit folgenden Features zur Verfügung zu stellen:
- Daten-Archivierer
Hier werden alle im QuickHMI auflaufenden Daten der Endgeräte, in fortlaufende Dateien tageweise in das Filesystem geschrieben.
Die maximale Dateigröße sowie die max. Anzahl der Dateien sind einstellbar.
- Daten-Abbild
Komplettes Abbild der Variablen mit aktuellem Wert und Zeitpunkt der letzten Änderung in einer Datei pro Datenquelle.
- Optionale Verschlüsselung
Auflaufende Daten werden verschlüsselt abgelegt. Tools zur einfachen Entschlüsselung sind beigefügt.
- Automatische Reorganisation der Daten
Zum Beispiel kann über diese Schnittstelle eine externe Applikation auf den Datenbestand des Systems zugreifen.
Für einen optimalen Schutz können sämtliche Daten auch 256-Bit AES-verschlüsselt abgelegt werden. Hier hat dann nur der Anwender/Applikation Zugriff, der auch über den frei festlegbaren Verschlüsselungs-Key verfügt.
Für welche Zwecke kann ich die Filesystem-Schnittstelle einsetzen?
Für die Benutzung der Schnittstelle gibt es unzählige Einsatzmöglichkeiten. Sie steht Ihnen immer dann zur Verfügung, wenn Sie von „Außerhalb“ auf QuickHMI oder die angeschlossenen Geräte wie SPS, MODBUS-Teilnehmer oder ähnliche zugreifen möchten. Außerdem können Sie die Daten für externe Auswertungen, Charts, Reports oder einfach für Archivierungszwecke nutzen.
Zum Beispiel kann über diese Schnittstelle eine selbst programmierte Applikation auf den Datenbestand des Systems zugreifen.
Durch die Universalität brauchen Sie sich auch nicht mehr in diverse Scripting-Sprachen einarbeiten, sondern benutzen eine Programmierumgebung Ihrer Wahl.
Wie muss ich die Filesystem-Schnittstelle vorbereiten?
Sie müssen dem QuickHMI-System einen festen erreichbaren Ordner im Dateisystem bereitstellen. Der Ordner muss vorhanden sein. Das System wird aber auch versuchen,
den Ziel-Ordner anzulegen, wenn er nicht vorhanden ist. Die Prozesse benötigen innerhalb dieses Ordners Lese-, Schreib- und Löschrechte. Stehen diese Rechte
nicht zur Verfügung, können Fehlfunktionen bzgl. der Schnittstellenprozesse auftreten.
Im Besonderen müssen die Löschrechte vorhanden sein. Ansonsten können die Reorganisationsfunktionen alte Dateien nicht wegräumen und das kann dann durch vollständigen Ausnutzung des Speicherplatzes von dem Datenträger Probleme bis hin zum Absturz des Betriebssystems nach sich ziehen. Das gleich gilt, wenn die Dateien von externen Prozessen dauerhaft gesperrt werden. Bitte prüfen Sie auch während des Betriebes, dass ausreichend Speicherplatz auf dem Zieldatenträger zur Verfügung steht.
Die Rechte müssen während der Entwicklungszeit für aktuellen Windows-Benutzer vorhanden sein, sodass im Laufzeitmodus des Editors die Daten geschrieben und gelesen werden können.
Außerdem sind die oben genannten Rechte während des Runtime- Betriebes für den Benutzer, unter dem die Datenquellendienste laufen, notwendig.
Bitte beachten Sie bei Vorbereitung des Zielsystems:
Die Archivierung in das Dateisystem ist hoch performant und wurde mit handelsüblicher Hardware und einer Datenmenge von 1000 Variablenänderungen pro 100ms problemlos getestet.
Sollte aber aus unterschiedlichen Gründen das Problem auftreten, dass das QuickHMI-System höhere Datenmengen bereitstellt, als in das Archiv geschrieben werden können, so speichert das System diese Daten im Arbeitsspeicher zwischen und arbeitet diese Daten nacheinander ab.
Wenn allerdings diese intern gespeicherte Datenmenge einen Schwellwert von 50000 Datensätze pro Datenquelle übersteigt, werden keine neuen Datensätze angenommen, sondern verworfen.
Das geschilderte Problem kann z.B. bei einer anderweitig ausgelasteten Hardware oder zu wenig bereitgestellten Ressourcen (z.B. virtueller Server) auftreten. Bitte überprüfen Sie aus diesem Grunde vor produktiver Nutzung die Auslastung des Zielsystems. Außerdem ist auf dem Zieldatenträger eine ausreichende Menge an freiem Speicherplatz zur Verfügung zu stellen.
Eine allgemeine Empfehlung kann nur insoweit getroffen werden, dass 20GB freier Speicherplatz zur Verfügung stehen sollte. Eine genaue Angabe hängt von der Anzahl benutzter Variablen sowie der Intensität und Menge von Wechselvorgängen der Variablenwerte ab.
Einstellungen für die Filesystem-Schnittstelle vornehmen
Sie können für die Files-System-Schnittstelle folgende Einstellungen vornehmen:
- Zielpfad (Es gilt zu beachten, dass der Zielpfad auf dem Server auch vorhanden ist.)
- Ein- oder Ausschalten der Archiv-Funktionalität
- (Option) Maximale Anzahl Archiv-Dateien innerhalb des Zielordners. Wird die maximale Anzahl überschritten, werden die ältesten Archiv-Dateien automatisch gelöscht.
- (Option) Das maximale Alter der Archiv-Dateien nach der Erstellung in Stunden. Wird das angegebene Alter der Archiv-Dateien überschritten, so werden diese Dateien automatisch gelöscht.
- Maximale Größe der Archiv-Dateien in MB. Wenn die angegebene Größe erreicht wurde, wird eine neue Datei mit nachfolgender Sequence-Nummer geschrieben. Sollten keine Größen angegeben werden, liegt die maximale Dateigröße bei 2GB.
- Ein- oder Ausschalten der automatischen Reorganisation innerhalb des Archivs. Bei Deaktivierung werden die aufgeführten Löschfunktionen nicht ausgeführt. In diesem Falle muss der Benutzer die Dateien selbst löschen.
- Ein- oder Ausschalten der Bereitstellung eines Variablenabbildes (Image), wahlweise im CSV- oder XML-Format.
- Ein- oder Ausschalten der Entgegennahme von Schreibbefehlen über das Dateisystem
- Ein- oder Ausschalten der Dateiverschlüsselung
- (Option) Übergabe eines Passwortes zur Verschlüsselung. Bei Einschalten der Verschlüsselung ist die Passwort-Übergabe Pflicht. Bitte heben Sie das Passwort für andere unzugänglich auf und geben Sie es nicht weiter.
Um Datenquellen anzulegen und zu archivieren, klicken Sie im Projekt Explorer unter Kommunikation auf
„Datenquellen“, und wählen anschließend „Datenquelle hinzufügen“ oder „Datenquelle bearbeiten“ aus.
Anschließend wählen Sie nach dem Bestimmen der Spezifikationen „Externes Logging“.

Im sich öffnenden Fenster können Sie jetzt „Datei“ durch Aktivierung der zugehörigen Checkbox auswählen.
Wählen Sie dann den Pfad, in dem die Datei gespeichert werden soll und bestimmen Sie, ob ein Datenprotokoll geschrieben werden soll oder nicht.
Zudem können Sie ein Verschlüsselungs-Kennwort eingegeben und über die Modi „Blacklist“ und „Whitelist“ können Sie wählen, welche Variablen geloggt werden sollen und welche nicht.
Eine kurze Beschreibung zum Datenprotokoll und Datenabbild, sowie zur Blacklist und Whitelist finden Sie im Kapitel „Einstellungen für die Datenbank-Schnittstelle vornehmen“.
Klicken Sie auf „OK“, um fortzufahren.

Datenarchivierung Filesystem-Schnittstelle
Mit der Daten-Archivierer-Funktionalität werden alle Datenänderungen in das Dateisystem protokolliert. Sie können diese Daten für beliebige Zwecke nutzen.
Hierzu werden Dateien nach folgender Namenskonvention angelegt:
<datum>_<zähler 5-stellig>_<Datenquellenname>.log
z.B. 20140112_00001_DataSource1.log
Optional verschlüsselte Archivfiles tragen den gleichen Dateinamen mit der Endung *.logx. Wenn die Datei, die festgelegte max. Größe oder 2GB erreicht, wird eine neue Datei mit nachfolgendem Zähler angelegt.
Die Felder in den Dateien sind mit Semikolon separiert. In der ersten Zeile befinden sich die Spaltenbezeichnungen.

Es werden folgende Informationen geschrieben:
- Zeitpunkt mit Millisekunden
- Sender (Name der Datenquelle)
- Datentyp
- Name der Variable
- Aktueller Wert
- Qualität („GOOD“, wenn die QuickHMI-Anbindung zum Zielgerät vorschriftsmäßig arbeitet oder „BAD“, wenn Probleme, z.B. Timeouts auftreten.)
Aktuelles Datenbild Filesystem-Schnittstelle
Mithilfe des Datenabbildes können Sie über externe Applikationen auf den Variablenvorrat des QuickHMI-Systems zugreifen und aktuelle Zustände auslesen.
Es gibt zwei Möglichkeiten, das Datenabbild ausgeben zu lassen: im Textformat oder als XML-Datei.
Aufbau Datenbild im Textformat
Hierzu werden Dateien nachfolgender Namenskonvention angelegt:
<Datenquellenname>.dat
z.B. DataSource1.dat
Optional verschlüsselte Abbilddateien tragen den gleichen Namen mit der Endung *.datx.
Die Felder in den Dateien sind mit Semikolon separiert. In der ersten Zeile befinden sich die Spaltenbezeichnungen.

Für jede Variable existiert eine Zeile innerhalb der Datei. Es werden folgende Informationen geschrieben:
- Zeitpunkt mit Millisekunden
- Sender (Name der Datenquelle)
- Datentyp
- Name der Variable
- Aktueller Wert
- Qualität („GOOD“, wenn die QuickHMI-Anbindung zum Zielgerät vorschriftsmäßig arbeitet oder „BAD“, wenn Probleme, z.B. Timeouts auftreten.)
Aufbau Datenbild im XML-Format
Hierzu werden Dateien nachfolgender Namenskonvention angelegt:
<Datenquellenname>.xml
z.B. DataSource1.xml
Im xml-Format tragen optional verschlüsselte Abbilddateien den gleichen Dateinamen mit gleicher Endung *.xml.

Für jede Variable existiert eine Zeile innerhalb der Datei. Es werden folgende Informationen geschrieben:
- Flag, ob Daten verschlüsselt sind
- Zeitpunkt mit Millisekunden
- Sender (Name der Datenquelle)
- Datentyp
- Name der Variable
- Aktueller Wert
- Qualität („GOOD“, wenn die QuickHMI-Anbindung zum Zielgerät vorschriftsmäßig arbeitet oder „BAD“, wenn Probleme, z.B. Timeouts auftreten.)
Bei verschlüsselten Dateien ist das XML-Format weiterhin erhalten geblieben, lediglich die Feldinhalte sind verschlüsselt.
Ver- und Entschlüsselung
Um eine optimale Datensicherheit bereitstellen zu können, sind die QuickHMI-Dateischnittstellen mit optionaler Verschlüsselung ausgerüstet.
Die Verschlüsselung wird direkt durchgeführt, wenn Sie die notwendigen Einstellungen innerhalb der Datenquellen eingerichtet haben.
Bitte beachten Sie: Sie müssen bei der Einrichtung zur Verschlüsselung ein Passwort vergeben. Bitte heben Sie dieses Passwort gut auf! Sollte es abhanden kommen, können die verschlüsselten Dateien nicht mehr geöffnet werden!
Auch wir können in diesem Fall nicht mehr helfen. Die Verschlüsselungsroutinen benötigen CPU-Ressourcen!
Planen Sie bei Verwendung die Bereitstellung etwas höherer Rechenleistung ein, besonders wenn in sehr kurzen Abständen viele Variablen geändert werden. Sie können die Auslastung aber vorab im Editor während des Laufzeitmodus testen.
Zur Ver- und Entschlüsselung liegt Ihrem QuickHMI-System ein Kommandozeilenprogramm bei.
Sie finden es unter [QuickHMI-Home]/qhmisecu.exe innerhalb der Editor- oder Serverinstallation.
Sie können folgende Aktionen durchführen:
Logdateien im logx-Format oder Abbilddateien im datx-Format entschlüsseln
Hierzu rufen Sie das Programm qhmisecu.exe mit folgenden Parametern auf:qhmisecu.exe -d <source file> <target file> <your password>
Die unverschlüsselte Zieldatei wird dann erstellt.

Abbilddateien im xml-Format entschlüsseln
Hierzu rufen Sie das Programm qhmisecu.exe mit folgenden Parametern auf:qhmisecu.exe -x <source file> <target file> <your password>
Die unverschlüsselte Zieldatei wird dann erstellt.

Externes Logging für interne Datenquellen
Sie haben in QuickHMI die Möglichkeit, externes Logging nicht nur für externe Datenquellen vorzunehmen, sondern auch für einige interne Datenquellen.
Über „Datenquellen“ im Editor gelangen Sie zur Übersicht aller bisher angelegten Datenquellen. Hier können Sie sich via Button auch die internen Datenquellen anzeigen lassen.

Das externe Logging funktioniert nun auch mit der internen Datenquelle und der Systemdatenquelle.
Diese sind via Doppelklick zu öffnen, um das externe Logging zu aktivieren.

Der weiterführende Vorgang des externen Loggings ist gleichermaßen wie in den vorherigen Kapiteln beschrieben.
