LabVIEWForum.de - Datenerfassung cDAQ + NI9203 keine synchrone Datenerfassung

LabVIEWForum.de

Normale Version: Datenerfassung cDAQ + NI9203 keine synchrone Datenerfassung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebes Forum,

gerade verwende ich ein ComactDAQ mit 8 Strommesseingängen. Nun möchte ich alle Kanäle auslesen. Dies im Bereich 1-10000 Hz.
Zusätzlich soll jeder Messpunkt einen Zeitstempel erhalten.

Also idealerweise ein Messdatenarray:

Zeitstempel (Millisekunden nach Start der Messung) | Stromwert 1 | Stromwert 2 | Stromwert 3 | ... Stromwert 8
[Messung 2]
[Messung 3]
[Messung 4]
[Messung 5]

Jetzt verwende ich NKanäle 1Sample. Wenn ich aber den Baustein DAQmx - Lesen aufrufe und mir einen Zeitstempel selber mit anhänge, funktioniert die Zuordnung meiner berechnetet Zeit und den eingelesenen Werten nicht richtig.

Also der DAQmx ruft sehr oft ab, ob etwas im Puffer liegt. Der Task schreibt hier mit 10kHz oder 1kHz Werte in den Puffer.

Die Werte aus DAQmx - Lesen werden aber nicht richtig zyklisch aus dem Puffer gelesen. Beispielsweise mal mit 2 ms Abstand und dann wieder sehr schell hintereinander (0,001ms?!). Also meine Schleifenzuordnung der Zeit funktioniert so nicht, ich bin ja davon ausgegangen, dass man einfach sehr schnell den Puffer lesen kann und das compactDAQ schon nach Zyklusvorgabe (Bsp.:1000Hz) sauber in den Puffer schreibt?!

Wäre super wenn mir hier jemand helfen könnte
Warum liest du nicht NKanäle NSampls. Dann hast du alle Messwerte und der Zeit unterschied zwischen den Werten ist bekannt. Dann musst du nur den Anfang der Messung bestimmen und dann kannst du immer den Zeitunterschied zwischen den Messwerten auf addieren.
Als erstes verwendet man natürlich nur einen Messwert, wenn man das erste mal darüber nachdenkt.

Im Beispielprogramm von Labview werden auch n-Samples (5 Stück) auf einmal gelesen. Wieso man das macht erschließt sich mir aber nicht wirklich... Auch könnte ich mir ja die Zeitumrechnung sparen und einfach die Waveform-Ausgabe umrechnen. Auch hier ist ja der Zeitpunkt t0 plus die "dt s" angegeben.

Aber woher weiß ich denn, dass die Werte wirklich vom Gerät in den Abständen (Bsp.: 10kHz -> 0,1ms) aufgezeichnet werden? Meine Idee war einfach den Takt vorzugeben und zu warten, bis DAQmx einen Wert liefert (was ja dann eigentlich durch meine Samplerate definiert wird...)
Hallo dunst,

Zitat:Aber woher weiß ich denn, dass die Werte wirklich vom Gerät in den Abständen (Bsp.: 10kHz -> 0,1ms) aufgezeichnet werden?
NI hat da jetzt einige Jahre/Jahrzehnte Entwicklungsarbeit in den DAQmx-Treiber und die Hardware gesteckt - und du fragst dich, ob die Hardware wirklich mit der vorgegebenen Samplerate arbeitet?
Wirklich?

Ernste Antwort: Es gibt eine DAQmx-Property, die dir die tatsächliche Samplerate zurückgibt. Die kann nämlich von der vorgegebenen abweichen, wenn die Vorgabe nicht zum Taktgeber der Hardware passt. Aber sowas steht ja auch in den Manuals zur Hardware, die du sicher schon gelesen hast…

Zitat:Meine Idee war einfach den Takt vorzugeben und zu warten, bis DAQmx einen Wert liefert (was ja dann eigentlich durch meine Samplerate definiert wird...)
Und womit willst du diesen Takt vorgeben?
Etwa per Software? Mit welchem Jitter?
Oder per externer Hardware? Mit welchem Jitter im Verhältnis zum Preis der Hardware?
Das Beizweifel ich ja nicht. Ich gehe davon aus, dass wenn ich 1000 Hz eingestellt habe, dass das cDAQ das auch so umsetzt.

Nehmen wir mal an es macht das (1000 Hz). Dann kommt pro 1 ms ein Wert in den Puffer.

Wenn ich jetzt mit der PC-Software den Puffer auslese (DAQmx - Lesen), wird doch gewartet bis ein Wert vorhanden ist und dieser sofort übernommen werden kann.

Woher kommt es nun, dass manchmal zwei Werte ganz dicht hintereinander kommen (Abstand < 1ms) und manchmal dauert es länger (Abstand > 1ms)? Die Software sollte in einem ungebremsten Loop (MHz?) / (getriggert durch DAQmx - Lesen) doch schnell genug den Wert erkennen und übertragen. Woher kommt dann die Abweichung?
Weil da eine ganze Menge FIFOs, DMAs, Puffer etc. pp. (oder anders gesagt mehrere Treiber-Lagen) dazwischen liegen!!! Die Messhardware sorgt für die zuverlässige hardwaregetakte Erfassung, wann und in welchen Paketgrößen das dann in der Windows-Oberfläche ankommt, das kann dir doch eigentlich egal sein.

Gruß, Jens
Referenz-URLs