Hallo GerdW
(23.02.2017 16:00 )GerdW schrieb: - wenn AO und AI mit der selben Samplerate arbeiten, solltest du einen festen Versatz zwischen beiden Kanälen haben. Diesen Versatz kannst du durch einen Starttrigger für beide Kanäle minimieren bzw. auf Null setzen.
- jetzt nur noch mitloggen, wieviele Samples du pro Waveform ausgibst und schon kannst du deine AI-Daten entsprechend auswerten…
vielen Dank für die Tips, das Ganze habe ich nun mal versucht umzusetzen:
-Starttrigger startet beide AI und AO -Task, die beide mit der gleichen Sample-Rate arbeiten
-Erfassungsschleife liest immer genauso viele Samples aus, die der aktuellen Samples pro Waveform des Analogausgangs entspricht
Driften die Schleifen dann nicht doch irgendwann auseinander, da sie ja nur gemeinsam gestartet werden und dann nie mehr synchronisiert werden?
Im angehängten Screeenshot habe ich mal den Ausgang direkt auf den Eingang gelegt. Im Idealfall müsste man ja dann auf dem Signalverlaufsdiagramm, das bei jedem Schleifendurchgang aktualisiert wird exakt das gleiche Signal ohne Phasenversatz sehen.
Dass das nicht geht ist mir klar, da ja der FIFO-Puffer von AO und AI auch noch dazwischen liegt. Im Beispiel ist das ganze einmal bei 45 Hz und 46 Hz Signalfrequenz dargestellt, und die Phasenverschiebung ist völlig unterschiedlich.
Aber wie kann man diese Verzögerung erkennen/messen/eliminieren?
Eventuell ist der Aufbau des Programms doch nicht für diesen Zweck geeignet. Wäre eine andere Möglichkeit, das Ausgabe-Array in einer For-Schleife Sample für Sample abzuarbeiten, dann könnte man diese for-Schleife mit der Messschleife synchronisieren?
Zur Info: Das ganze läuft auf einem PXI8840 mit Real-Time Modul und PXIe6363-Karte.
Viele Grüße