LabVIEWForum.de
DAQmx: Zwei Kanäle lesen und speichern - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ)
+---- Thema: DAQmx: Zwei Kanäle lesen und speichern (/Thread-DAQmx-Zwei-Kanaele-lesen-und-speichern)



DAQmx: Zwei Kanäle lesen und speichern - _Markus_ - 01.01.2019 20:53

Hallo zusammen,

ich lese zweikanalig Daten ein und plotte diese in einem XY-Graph. Parallel dazu sollen die Messwerte in einer Datei gespeichert werden. Leider bekomme ich es nicht hin, dass neben den Daten auch die Zeit (z.B. beginnend bei 0) in einer separaten Spalte gespeichert wird. Anbei mal ein Screenshot des Programms. Auf die Nutzung des DAQ-Assistenten habe ich bewusst verzichtet, mit diesem würde ich es wahrscheinlich dann hinbekommen. Es muss ja aber auch so gehen.
[attachment=59665]


RE: DAQmx: Zwei Kanäle lesen und speichern - GerdW - 01.01.2019 22:39

Hallo Markus,

wenn du 3 Spalten speichern willst, solltest du das auch tun!
Du musst noch eine dritte Spalte erzeugen, in der du einfach die Samples Durchzähler und mit dt skalierst...


RE: DAQmx: Zwei Kanäle lesen und speichern - _Markus_ - 02.01.2019 00:10

Hallo Gerd,

so ganz ist mir noch nicht klar, wie die Lesefunktion des DAQmx Lesen arbeitet. Ich habe das bei "Sample Takt" ja auf kontinuierlich gestellt. Angenommen, ich gebe dem "Sample-Takt" eine Abtastfrequenz von 1 kHz an. Dann wird mit einer Rate von 1 kHz ein Puffer mit Abtastwerten gefüllt (wie groß ist der Puffer eigentlich?), der dann in meiner While-Schleife durch die Lesen-Funktion geleert wird, und zwar immer um die Anzahl "samples per channel". Korrekt? Das heißt, die Lesen-Funktion wartet mit dem Auslesen immer, bis mindestens die Anzahl von "samples per channel" im Puffer ist? Weil die While Schleife an sich wiederholt sich in dieser Zeit ja viel häufiger.

Jetzt nochmal zum eigentlichen Problem: Die Nummerierung der Samples fängt ja immer wieder von 0 bzw 1 an und geht dann bis "samples per channel". Also wenn ich jeweils 1000 Samples hole, dann eben von 1 bis 1000, und beim nächsten Durchlauf wieder von 1 ab. Meine Zeitspalte soll ja aber kontinuierlich durchlaufen mit Inkrement dt. Ich könnte natürlich den jeweils letzten Zeitwert speichern und diesen als Anfangswert für die nächste Charge an Daten nehmen. Das wäre dann halt etwas aufwendig zu programmieren, aber wenn das der Weg ist, wie man es macht, dann mach ich es so. Ich hab halt immer noch das Problem, dass ich nicht weiß, was guter Code in LV ist, und ich will nicht irgendwas hinfrickeln.

Gruß
Markus


RE: DAQmx: Zwei Kanäle lesen und speichern - GerdW - 02.01.2019 00:54

Hallo Markus,

du weißt ja die Anzahl der Iterationen deiner Schleife und kannst so also auch bequem berechnen, ob du das 100. oder 5100. Sample hast...
Du könntest aber auch Waveforms vom DAQmxRead lesen, da ist die Zeitinformationen schon enthalten!


RE: DAQmx: Zwei Kanäle lesen und speichern - _Markus_ - 02.01.2019 12:31

(02.01.2019 00:54 )GerdW schrieb:  du weißt ja die Anzahl der Iterationen deiner Schleife und kannst so also auch bequem berechnen, ob du das 100. oder 5100. Sample hast...
Klar. Da hätte ich eigentlich selbst drauf kommen können ;-)

(02.01.2019 00:54 )GerdW schrieb:  Du könntest aber auch Waveforms vom DAQmxRead lesen, da ist die Zeitinformationen schon enthalten!
Das hatte ich auch schon versucht, aber dann weiß ich nicht, wie man die Daten aufbereiten muss, um den XY-Graph damit zu füttern (also je ein Kanal der Messdaten auf X und Y Achse legen).
[attachment=59666]


RE: DAQmx: Zwei Kanäle lesen und speichern - GerdW - 02.01.2019 17:06

Hallo Markus,

Zitat:Das hatte ich auch schon versucht, aber dann weiß ich nicht, wie man die Daten aufbereiten muss, um den XY-Graph damit zu füttern (also je ein Kanal der Messdaten auf X und Y Achse legen).
So z.B.:
[attachment=59667]
Im Bild ist auch eine Methode enthalten, um aus einem Waveform ein Zeitarray zu erhalten. Musst du für dich noch etwas anpassen!
(Es geht auch anders und z.T. deutlich effizienter…)