LabVIEWForum.de
Massendatenspeicherung - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenbank & File IO (/Forum-Datenbank-File-IO)
+---- Thema: Massendatenspeicherung (/Thread-Massendatenspeicherung)



Massendatenspeicherung - Maximilian - 29.01.2013 22:05

Hallo zusammen,

ich hätte da meine eine Frage zur Abspeicherung von Messdaten in großer Anzahl

Ich sollte über ein Wago-Modul ca. 60 Analogwerte und ca. 60 Binärsignale mit einer Zykluszeit von 10ms aufzeichnen und über einen Zeitraum von 24 Stunden ablegen und dies möglichst für mehrere Tage, Wochen, Monate.

Wie kann ich eine Masse von Daten am besten handeln. Welches Datenformat ist das geeigneste.

Ich habe ein Muster VI angehängt (LV8.5) ich der ich über TDMS files und über EXcel die Daten ablege. Genauso könnte die Speicherung über eine Datenbank zu realisieren sein

Gibt es aus eurer Erfahrung eine bessere kompaktere Lösung???

Über einen Tipp würde ich mich freuen

Gruß Max


RE: Massendatenspeicherung - Trinitatis - 29.01.2013 22:14

Hallo Max,

ein einfacher Weg wäre sicher ein Binärfile. Wenn du dir eine Datei erstellst und die Referenz offen lässt, dann kannst du die Daten sicher auch in dieser Zykluszeit schreiben.
Da du ja immer dieselbe Anzahl an Daten schreibst, kannst du später auch, gezielt durch vorheriges Setzen des Read-Pointers der Datei einzelne Datensätze auslesen.

Ich weiß nicht, ob man in Datenbanken überhaupt so schnell schreiben kann.

Gruß, marko


RE: Massendatenspeicherung - jg - 29.01.2013 22:25

Auch wenn es nur ein Bsp. ist, zum Einstieg ein paar Kritikpunkte:

Wieso die Race-Condition mit dem "Zähler"? Wieso dafür das Datenformat DBL?

Du erstellst keine Excel-Files, sondern csv-Files!

Die Datenmenge schreit geradezu nach einer Datenbank im Hintergrund. Bei entsprechend optimierten INSERT-Befehlen, z.B. gleich mehrere Datensätze pro INSERT-Befehl, sollte das kein Problem sein.
TDMS mag auch eine gute Idee sein, allerdings müsstest du noch einiges optimieren, wie z.B. ebenfalls immer wieder mal neue Files anlegen und nicht Einzelwerte wegschreiben - das bläht den File unnötig auf.

Gruß, Jens


RE: Massendatenspeicherung - Maximilian - 29.01.2013 22:44

Danke für eure Antworten

Mit dem Binärfile kann ich nichts anfangen, kenn ich nicht. Gibt es dafür ein Beispiel??

Die Daten kann ich auch in einem Array sammeln und mehrer Datensätze übertragen, aber mein Problem ist auch das genaue Timeing der Abspeicherung der Messdaten. Desto größer das Array umsogrößer die Übertragungszeit. Sollte ich vielleicht mit zwei parallelen While schleifen arbeiten??
Ich sollte auch eine exakte Abspeichenrate hinbekommen. Wenn es mit 10ms nicht geht kann ich auch auf max. 50ms erhöhen.

Ich sollte parallel erfassen, aufzeichen und übertragen und das ohne Unterbrechungen.

Kennt dafür jemand ein Muster vi??


RE: Massendatenspeicherung - Maximilian - 29.01.2013 22:44

Danke für eure Antworten

Mit dem Binärfile kann ich nichts anfangen, kenn ich nicht. Gibt es dafür ein Beispiel??

Die Daten kann ich auch in einem Array sammeln und mehrer Datensätze übertragen, aber mein Problem ist auch das genaue Timeing der Abspeicherung der Messdaten. Desto größer das Array umsogrößer die Übertragungszeit. Sollte ich vielleicht mit zwei parallelen While schleifen arbeiten??
Ich sollte auch eine exakte Abspeichenrate hinbekommen. Wenn es mit 10ms nicht geht kann ich auch auf max. 50ms erhöhen.

Ich sollte parallel erfassen, aufzeichen und übertragen und das ohne Unterbrechungen.

Kennt dafür jemand ein Muster vi??


RE: Massendatenspeicherung - Trinitatis - 29.01.2013 22:50

Hallo Max,

die Idee mit parallelen Schleifen ist sicher keine schlechte.
Ich würde eine Schreibschleife, die in eine Queue schreibt und eine, die aus dieser wieder ausliest verwenden.
Dann kannst du noch hin und wieder den Füllstand der Queue prüfen und ggf. meckern.


Gruß, Marko

Edit:
Da du Zufallswerte zw 0 und 1 mit 255 multiplizierst, gehe ich von zu schreibenden bytes aus. Im Binärfile könnte man dann pro Wert ein Zeichen = 1 byte schreiben. Gegen die Tatsache, dass das file irgendwann vor Größe platzen würde sollte man sicher auch was tun, also hin und wieder ein neues anlegen - aber dieses Problem hast du sowieso.
Im Binärfile müsste man sich dann nur etwas für den Zeitstempel überlegen, dort also Low/High-Bytes bzw. eben dann noch mehrere Ebenen für den Zeitstempel generieren.


RE: Massendatenspeicherung - jg - 30.01.2013 09:47

Ein "selbstdefinierter" Binärfile hat eine Reihe von Nachteilen, für einen Langzeitversuch würde ich davon abraten.

1) Du kannst das nur mit deiner eigenen Software wieder auslesen.
2) Wenn nur 1 Byte falsch ist / verschoben wird / o.ä., kannst du deinen kompletten Datensatz ab dieser Stelle wegschmeißen.
3) Erweiterungen (z.B. mehr oder weniger Messkanäle) bedeuten immer eine Änderung des Fileformats.
etc. pp.

Gruß, Jens


RE: Massendatenspeicherung - Trinitatis - 30.01.2013 11:08

Hallo Jens,

die Tatsache, dass das Auslesen nur mit eigener Software geht, ist sicher ein Nachteil. Ich bin nur wegen der nötigen Schreibgeschwindigkeit auf diese Idee gekommen.

Und die spätere Erweiterbarkeit ließe sich in Grenzen sicher durch das Schreiben von Füllbytes realisieren, was das file natürlich aufbläht.

Wenn es denn mit Datenbanken ginge, wäre dies sicher der bessere Weg.


Gruß, Marko