LabVIEWForum.de - Analogerfassung mit Ringpuffer -> Versatz im Signal

LabVIEWForum.de

Normale Version: Analogerfassung mit Ringpuffer -> Versatz im Signal
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich lese mit dem USB6211 über 3 analoge Kanäle gleichzeitig Werte ein. Obwohl ich mir einbilde den Ablauf verstanden zu haben, ergeben sich Probleme beim zusammengesetzten Signal. Es werden scheinbar Samples verschluckt. Es wird mit 40 kHz abgetastet und jeweils 500 Samples in den Ringpuffer mit einer Größe von 3s getan. Die Anzahl der auszulesenden Samples habe ich auch schon erhöht. Selbst bei 20.000 Samples ergibt sich das Problem - jedoch erst im Ringpuffer, wenn die einzelnen Blöcke aneinander geraten. Ich habe deshalb schon den internen Buffer der Hardware manuell angepasst. Mein aktueller Ansatzpunkt ist die Umsetzung des Ringpuffers. Aber es scheint nur andere, jedoch keine bessere/einfachere Lösung zu geben...
Ergänzung: Ich habe jetzt die Anzahl der auszulesenden Abtastwerte variabel eingestellt (-1). Nun werden in jedem Schleifendurchlauf die Samples abgeholt, die bis dahin aufgelaufen sind -> Dennoch ergibt sich ein Versatz der aufeinander folgenden Sampleblöcke. Ich möchte daher mal die Umsetzung des Ringpuffers ausschließen und die Hardware näher ansehen. Ich kann mir das nur im Zusammenhang mit den 3 Kanälen erklären, aber dafür ist die Karte doch ausgelegt...
Es ist zum Auswachsen.... seit einem Tag beschäftigt mich dieses Problem und hier die Lösung:

Das letzte Element im ausgelesenen Array ist das neuste -> also muss das Array natürlich beginnend mit dem ersten Element in den Ringpuffer eingefügt werden, nicht umgekehrt! Blink

Aber immerhin habe ich jetzt tiefer gehende Kenntnisse was DAQmx und Ringpuffer angeht und erneut die Erkenntnis gewonnen, dass das Niederschreiben der Probleme eine Struktur in die Problematik bringt und zur Lösungsfindung beiträgt....
kleiner Hinweis: Der Eingang "Samples pro Kanal" des VI Sample Takt hat im Modus "kontinuierlich" eine ganz andere Funktion (Puffergröße) und kann in der Regel offen gelassen werden. (Und wenn nicht, dann sollte die Puffergröße höher sein als die pro Schleifenaufruf gelesene Anzahl von Samples.) Siehe die Hilfe zum VI.
Referenz-URLs