18.11.2011, 12:33
Hallo zusammen!
Der Hintergrund:
Das VI soll mit möglichst exakt 1kHz die innerhalb der letzten 1ms gezählten Flanken einer PCI 6602 Karte auslesen.
Mein Ansatz ist eine zeitgesteuerte Schleife mit DAQmx-Lesebefehl, sowie programmgesteuerter I/O am DAQmx Kanal.
Zur Kontrolle ist momentan ein Funktionsgenerator mit 1MHz angeschlossen.
Theoretisch sollte das VI in "data" einen Vektor gefüllt mit Werten = 1000 ausspucken.
Der Zeitdifferenz "x-y" (vgl. Screenshot) sollte bei 10.000 ms liegen.
Was klappt:
- "x-y" ist gleich 10.000 ms
- 99,99% der Flanken werden gezählt
Jetzt zum Problem:
Leider wird der DAQmx-Befehl "Lesen" nicht immer im Abstand 1ms aufgerufen.
Das Histogramm der Werte in "data" (siehe Screenshot) deutet darauf hin.
Im Histogramm stören die beiden Nebenmaxima bei 0 und 2000.
Meine Interpretation ist, dass der Befehl "Lesen" bei Iteration i zu spät ausgeführt wurde
-> bis zum Lesen zu viele Pulse gezählt
und "Lesen" bei Iteration i+1 wieder pünktlich ausgeführt werden konnte
-> weniger als 1 ms seit dem letzten "Lesen" und deshalb weniger gezählte Flanken
Meine Frage:
Wie kann man den Zeitpunkt zum ausführen des "Lesen"-Befehls zuverlässiger festnageln - ohne Hardware Trigger bzw. Gate-Signal.
Gibts vielleicht bei dem Modus für verspätete Iterationen der zeitgesteuerten Schleife noch potential?
Ich habe alle Modi mal ausprobiert und ohne den Unterschied wirklich zu verstehen keine Verbesserung festgestellt.
Vielen Dank!
EDIT jg: Externer Bildlink gelöscht
Der Hintergrund:
Das VI soll mit möglichst exakt 1kHz die innerhalb der letzten 1ms gezählten Flanken einer PCI 6602 Karte auslesen.
Mein Ansatz ist eine zeitgesteuerte Schleife mit DAQmx-Lesebefehl, sowie programmgesteuerter I/O am DAQmx Kanal.
Zur Kontrolle ist momentan ein Funktionsgenerator mit 1MHz angeschlossen.
Theoretisch sollte das VI in "data" einen Vektor gefüllt mit Werten = 1000 ausspucken.
Der Zeitdifferenz "x-y" (vgl. Screenshot) sollte bei 10.000 ms liegen.
Was klappt:
- "x-y" ist gleich 10.000 ms
- 99,99% der Flanken werden gezählt
Jetzt zum Problem:
Leider wird der DAQmx-Befehl "Lesen" nicht immer im Abstand 1ms aufgerufen.
Das Histogramm der Werte in "data" (siehe Screenshot) deutet darauf hin.
Im Histogramm stören die beiden Nebenmaxima bei 0 und 2000.
Meine Interpretation ist, dass der Befehl "Lesen" bei Iteration i zu spät ausgeführt wurde
-> bis zum Lesen zu viele Pulse gezählt
und "Lesen" bei Iteration i+1 wieder pünktlich ausgeführt werden konnte
-> weniger als 1 ms seit dem letzten "Lesen" und deshalb weniger gezählte Flanken
Meine Frage:
Wie kann man den Zeitpunkt zum ausführen des "Lesen"-Befehls zuverlässiger festnageln - ohne Hardware Trigger bzw. Gate-Signal.
Gibts vielleicht bei dem Modus für verspätete Iterationen der zeitgesteuerten Schleife noch potential?
Ich habe alle Modi mal ausprobiert und ohne den Unterschied wirklich zu verstehen keine Verbesserung festgestellt.
Vielen Dank!
EDIT jg: Externer Bildlink gelöscht