Prinzipielles zur Datenerfassung - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ) +---- Thema: Prinzipielles zur Datenerfassung (/Thread-Prinzipielles-zur-Datenerfassung) |
Prinzipielles zur Datenerfassung - dragonos - 05.06.2007 16:06 Hi, demnächst muss ich meine erste Datenerfassung mittels DAQmx programmieren. Ich muss kontinuierlich Daten einlesen und alle Daten in einem Graphen (XY) darstellen. Kann ich innerhalb einer Whileschleife ein Schieberegister verwenden, in dem ich ein expandierendes Array weitergebe? Gibt es Nachteile in Bezug auf Zeitbedarf der Whileschleife? Welche anderen Möglichkeiten gibt es? (Ich benötige ALLE erfassten Daten - zum Schluss muss ich z.B. alle Daten in eine Messdatei schreiben) Gruß, Alex Prinzipielles zur Datenerfassung - Achim - 05.06.2007 16:13 Ich würde nicht zum Schluss alle Daten auf einmal schreiben und solange in nem Array sammeln...stattdessen würde ich entweder bei jedem Durchlauf schreiben ("append to file"), oder zumindest nur ne Weile sammeln (soundso viele Schleifeniterationen, je nach Datenmenge) und dann nen ganzen Block an die Datei anhängen. Das sammeln in nem Array über ein Schieberegister ist quasi ein "Muss", alternativ könntest du die Messdaten auch in nem (evtl. unsichtbaren) Waveform-Chart (mit entsprechend großer History Size) sammeln. Wenn du ewig in nem Array sammelst, muss mit jedem Schleifendurchlauf eine komplette Reorganisation des Speichers (durch "BuildArray") stattfinden, und das kostet Zeit...je größer das Array, desto mehr. Außerdem sind bei nem Absturz etc. dann alle Daten weg, wohingegen sie bei kontinuierlichem Schreiben schon mal im File gesichert sind! Evtl. musst du beim Schreiben einer Text-Datei nach jedem Schreibvorgang ein "Flush File" durchführen, nur so werden die Daten nämlich wirklich physikalisch geschrieben. Ansonsten werden Sie nämlich bis zur Beendigung der Schreib-Schleife auch nur im RAM "geschrieben" und erst am Ende auf die HD! Gruss Achim Prinzipielles zur Datenerfassung - dragonos - 05.06.2007 16:48 Ich bin leider gezwungen alle Werte erst am Schluss zu schreiben, da das Messfile eine gewisse Struktur aufweisen muss. z.B.: Anzahl der Werte (x) Skalenfaktor Äquidistanz Startwert Messwert 1 . . Anzahl der Werte (y) Skalenfaktor Äquidistanz Startwert Messwert 1 . . Prinzipielles zur Datenerfassung - jg - 05.06.2007 17:52 ' schrieb:Hi,Ein paar weitere Fragen/Tips zusätzlich zu dem, was Achim schon gesagt hat.[list] [*]Um wieviele Daten geht es denn so größenordungsmäßig? Oder weist du genau die Menge, dann bietet sich ein "Replace Array Subset" statt "Build Array"/expandierendes Array an.<> [*]Wielange dauert die Messung?<> [*]Welche Messhardware/Messkarte hast du?<> [*]Wie planst du die Datenerfassung? Hardware-getaktet (sehr zu empfehlen)? Dann ist der Software-Zeitbedarf deiner Whileschleife "relativ" egal, da du dich auf den FIFO-Puffer der Karte "verlassen" kannst.<> [st]MfG, Jens Prinzipielles zur Datenerfassung - cb - 05.06.2007 18:30 ' schrieb:Um wieviele Daten geht es denn so größenordungsmäßig? Oder weist du genau die Menge, dann bietet sich ein "Replace Array Subset" statt "Build Array"/expandierendes Array an. immer wieder gern genommen: --> RINGSPEICHER Prinzipielles zur Datenerfassung - dc6xs - 05.06.2007 19:07 ' schrieb:Ich bin leider gezwungen alle Werte erst am Schluss zu schreiben, da das Messfile eine gewisse Struktur aufweisen muss. Spezielles Format hin oder her, da die Daten ja typischerweise im (Cluster)-Arrray vorliegen, warum nicht erst das Array in einer Datei zwischenspeichern und dann nach Beendung der Messung in das gewünschte Ausgabe-Format umkonvertieren? Oder sind es soviele Daten das die Umkonvertieung zuviel Zeit benötigen würde ( mehrere Min.)? Dann würd ich doch irgendwann das Speichern nach dem speziellen Fomat über Bord werfen und das ganze per TCP/IP an ne SQL-Datenbank pumpen. Aber da Du (noch) nicht erzählt hast genau was Du messen willst und welche Datenmengen da entstehen, können wir viel mit Kanonen auf Spatzen schiessen Gruß, Rob Prinzipielles zur Datenerfassung - dragonos - 06.06.2007 07:30 ' schrieb:Ein paar weitere Fragen/Tips zusätzlich zu dem, was Achim schon gesagt hat.[list] Hi Jens, die genauen Daten habe ich noch nicht. Ich bin gelernter Dipl. Informatiker und habe mit Messkarten, ... wenig Erfahrung. Alle Spezifikationen erhalte ich von einem "Spezialisten" *g* Es handelt sich um 1000 - 10000 Daten/s. Die Messung wird durch den Bediener gestartet und beendet - d.h. die Messung kann wenige Sekunden aber auch mal mehrere Minuten (Stunden) dauern. Der Bediener betätigt eine Lenkung und in Abhängigkeit von der Auslenkung soll das Spiel der Lenkung erfasst werden. Als Hardware soll die Zählerkarte PCI-6601 verwendet werden. Die Datenerfassung soll hardware-getriggert werden. Hierzu habe ich mir bereits einige Beispiele im Example Finder angeschaut und hoffe sie verstanden zu haben ;-) Gibt es eine einfache Möglichkeit nur bei einer Änderung der Daten diese zu speichern? Beispiel: Lenkung wird nicht betätigt -> Daten ändern sich nicht. Anstatt 1000 gleiche Werte zu schreiben soll nur ein Punkt geschrieben werden. Falls die Datensätze von Hand bereinigt werden müssen: Ist diese Auswertung besser beim Schreiben der Messdatei aufgehoben oder gleich bei der Datenerfassung? Die Daten sollen ggf. geglättet werden. Gibt es hier schon eine Möglichkeit dies von der Hardware machen zu lassen oder muss ich bei der Datenerfassung z.B. immer den "neuen" gleitenden Mittelwert berechnen (Zeitbedarf der Whileschleife würde sich dann natürlich immer erhöhen)? Liebe Grüße, Alex |