PLCnext Datalogger-Daten in CSV exportieren: Schritt-für-Schritt-Anleitung
Das Protokollieren von Werten aus einer industriellen Anwendung ist für viele Kunden ein Hauptmerkmal, und in manchen Anwendungen kann die Anzahl der Variablen sehr hoch sein, sodass eine native und einfache Konfiguration dieses Dataloggings erforderlich ist.
Im Folgenden tauchen wir in den nativen Datalogging Service Component ein und sehen, wie wir daraus eine CSV-Datei erzeugen können.
Weitere Informationen zu den Datalogging Service Components finden Sie in diesen Links:
- Datalogger konfigurieren und über OPC UA Historical Access nutzen
- Real-Time Datalogger – PLCnext Info Center
Sobald Sie die Datalogging-Sessions konfiguriert haben, erhalten Sie eine *.db-Datei, die alle geloggten Werte der Variablen enthält. Diese *.db-Datei ist eine Datenbankdatei, deren Format ein Tool wie Sqlite3 oder ein DB Browser erfordert, um die Werte durchzusehen.
Viele Kunden sind bereits mit *.csv-Dateien vertraut, daher zeigen wir, wie man einen Export dieser Datenbank in eine CSV-Datei durchführt. Das auf jedem PLCnext-Controller vorhandene Sqlite3-Tool stellt alle erforderlichen Werkzeuge für diesen Export bereit.
Wenn die Datenbank erstellt wird, können wir den gewünschten Namen für die Datenbank festlegen, aber wir können keinen spezifischen Namen für die Tabelle festlegen, die die Werte enthält. Glücklicherweise kann uns das Sqlite3-Tool helfen, indem es die in der Datenbank vorhandenen Tabellen anzeigt – mit dem Befehl „Sqlite3 <Datenbankname> .tables“. Alle spezifischen Befehle finden Sie in der Hilfeseite von Sqlite3 oder auf dieser Seite: Sqlite3.
Wenn wir den Tabellennamen kennen, können wir alle Daten aus dieser Tabelle auswählen und in eine CSV-Datei exportieren.
Um den Prozess etwas zu vereinfachen, verlinke ich Ihnen zwei Skripte für den Export aus einer Datenbank. Natürlich können Sie die Skripte für Ihre Bedürfnisse anpassen!
Leider können wir keine *.sh-Dateien hochladen, daher finden Sie unten den Inhalt der beiden Dateien.
Erstens die Datei für das ISO8601-Timestamp-Format:
ExportSQL2CSV_ISO.sh
#!/bin/bash
name_of_database="${1:?Missing database}"
name_of_database_no_ext=${name_of_database::-3}
# Tabellennamen ermitteln
name_of_table=$(sqlite3 $name_of_database .tables)
# DateTime des ersten Eintrags für Ausgabedateinamen
DateTime=$(sqlite3 $name_of_database "SELECT strftime('%Y_%m_%d_%H_%M_%S',Timestamp) from $name_of_table limit 1;")
# Dateiname erstellen
output_filename=${name_of_database_no_ext}_${DateTime}.csv
# Export in CSV-Datei
sqlite3 -header -csv -separator ";" $name_of_database "SELECT * from $name_of_table;" > $output_filename
Und die zweite Datei für das RAW-Timestamp-Format:
ExportSQL2CSV_RAW.sh
#!/bin/bash
name_of_database="${1:?Missing database}"
name_of_database_no_ext=${name_of_database::-3}
# Tabellennamen ermitteln
name_of_table=$(sqlite3 $name_of_database .tables)
# DateTime des ersten Eintrags für Ausgabedateinamen (RAW-Timestamp-Konvertierung)
DateTime=$(sqlite3 $name_of_database "SELECT strftime('%Y_%m_%d_%H_%M_%S',(Timestamp - 4611686018427387904)/10000000 - 62135596800,'unixepoch') from $name_of_table limit 1;")
# Dateiname erstellen
output_filename=${name_of_database_no_ext}_${DateTime}.csv
# Export in CSV-Datei mit konvertiertem Timestamp
sqlite3 -header -csv -separator ";" $name_of_database "SELECT \
strftime('%Y-%m-%d %H:%M:%f',(Timestamp - 4611686018427387904)/10000000 - 62135596800,'unixepoch') AS Time,\
* from $name_of_table;" > $output_filename
Da es sich um Skripte handelt, vergessen Sie nicht, das Ausführungsflag auf der Datei zu setzen:
chmod +x ExportSQL2CSV_*.sh
Dann können wir das Skript aufrufen. Hier ist der Aufruf:
./ExportSQL2CSV_ISO.sh <PfadZurDatenbank>
Wenn das Skript fertig ist, finden Sie eine CSV-Datei mit dem Namen Ihrer Datenbank und dem DateTime des ersten Eintrags der Datenbank, wie im folgenden Beispiel:
Sie haben nun eine CSV-Datei mit allen Daten, die Sie mit den nativen DataLogger Service Components aufgezeichnet haben.
Sie können sogar noch weitergehen, indem Sie die Erstellung dieser Datei stündlich oder täglich mit dem Tool cron automatisieren.
Bei Fragen oder Anmerkungen kontaktieren Sie uns gerne!
Industrietechnik
- SPICE über die Kommandozeile: Die Bedeutung des „<“-Operators
- C-Dateiverwaltung: I/O mit fopen, fprintf, fread & fseek meistern
- C-Header-Dateien verstehen: Typen, Verwendung und Best Practices
- Vom CM zu EMS zu MSP: Die Evolution der Elektronikfertigung nachzeichnen
- COVID-19 verdeutlicht die entscheidende Rolle des 3D-Drucks im Gesundheitswesen
- ROI Ihrer Lead-Generierungsinvestition maximieren
- Top 4 Branchen, die durch Machine Learning revolutioniert werden
- ISO 9001 in die Fertigungsstrategie integrieren: Qualität und Wachstum vorantreiben
- Feile (Schruppfeile) erklärt: Das unverzichtbare Werkzeug für Holz- und Metallbearbeitung
- Statische Dateien mit Go mühelos bereitstellen: Ein bewährter Ansatz