LabVIEWForum.de - DAQ Write Zeitverzögerung

LabVIEWForum.de

Normale Version: DAQ Write Zeitverzögerung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo!

Ich arbeite an einem-Datenerfassungsprojekt, bei dem ich die NI 6025E - Karte zur Erfassung verwende und mit LabVIEW 8.6 programmiere.

Bei meinem Programm kann man in einem Startfenster eine Funktion (Messen/Bearbeiten/Anzeigen/...) auswählen, die dann über eine Ereignisstruktur das jeweilige SubVI öffnet. In meinem Mess-VI habe ich zu Beginn 2 DAQ-Assistenten (Read + Write) verwendet. Programm hat soweit funktioniert, bis man das Mess-VI zum zweiten Mal aufgerufen hat, da trat dann ein Fehler bzgl. automat. Pufferkonfig..... auf. Daraufhin wollte ich den Write-DAQ-Assistenten durch DAQ-Code ersetzen......

Soweit auch ok. Als Ausgabedaten wird ein Sinus erzeugt. Der Sinus wird soweit auch ausgegeben, jedoch verstreicht zwischen jedem Writezyklus etwas Zeit, sodass das kontinuierliche Ausgangssignal immer eine kleine Zeitverzögerung beinhaltet. Anbei ein Screenshot der Anzeige und meines Test-VIs...

Ich weiß nicht wirklich wo diese Verzögerung herkommen und würde mich freuen, wenn jemand weiß wie ich dies vermeiden kann oder aber Ideen zur Ausmerzung einbringen kann!!!

Vielen Dank! JK



[attachment=25338]

[attachment=25340]
' schrieb:Der Sinus wird soweit auch ausgegeben, jedoch verstreicht zwischen jedem Writezyklus etwas Zeit, sodass das kontinuierliche Ausgangssignal immer eine kleine Zeitverzögerung beinhaltet. Anbei ein Screenshot der Anzeige und meines Test-VIs...
Naja, immerhin wird zwischen zwei Write-Befehlen die Task gestoppt, geschlossen, neu created und gestartet. Das kostet natürlich etwas Zeit.

Versuch mal das Createn/Starten und Stoppen/Schließen außerhalb der Schleife zu machen.
Danke schon mal für den Hinweis!

Hatte ich so auch schon mal probiert, dann wird einmal eine Kurve ausgegeben und dann kommt nichts mehr... Zudem bekomme ich dann eine Fehlermeldung beim Beenden.... Was genau muss denn alles in die Whileschleife? Nur Starte Task und Wait??
' schrieb:Was genau muss denn alles in die Whileschleife?
So auf die Ferne würde ich sagen: DAQmx-Write (beachte: AutoStart=true!) und das rote Dreieck (Wait?) nach unten.
Habe nun mal ein bisschen in meinem Blockdiagramm aufgeräumt und es wieder angehängt. Ich kann wiederum nur einmal einen Sinus lesen und dann ist der Wert ~0.... Fehler (-200288) kommt immer noch beim Beenden....

Das kann doch nicht so schwierig sein *selbst ärger*

[attachment=25355]
Das Thema Synchronisation von AI und AO ist ein besonderes Kapitel, und so einfach parallel die beiden Tasks starten ist nicht das Gelbe von Ei.
Schau Dir mal die Beispiele unter
Signalerfassung.. mittels Hardware -->DAQmx -->Synchronisation --> mehrere Funktionen
an, suche das Passendste für Dich heraus, versuche es ganz zu verstehen.
Es gibt auch einige Beispiele von mir hier im Forum, eines z.B hier.
Bei Fragen melde Dich.
Werde ich machen. Danke!

Wobei ich das hier nicht das Problem sehe, denn dieses versetzte Signal sehe ich auch auf dem Oszi, welches ich gleich am AO-Ausgang abgreife...
Ich habe nun das angegebene Beispiel angeschaut und ausprobiert. Funktioniert generell, aber ich verstehe noch nicht ganz wo die Synchronistation herkommt. Wird dies durch den Digitaltrigger gemacht oder (meine Vermutung) über den Fehlercluster?


Habe das Beispiel so abgeändert, dass ein Sinus erzeugt und ausgegeben wird. Leider ist da immer noch der Versatz drin. Persiodendauer ist ca 1s, Pause zwischen den Signalen ca. 10ms, vereinzelt bis zu 50ms......(gemessen an Oszi) Habe nun in meinem LV-Buch [Georgi/Metin: Einführung in LabVIEW S. 314 (Kap. 16.2.3)] gelesen, dass diese Unterbrechungen durch die Kombination Angabe von Anzahl zu lesender/schreibender Samples und der Whileschleife kommen kann...... Kann ich hier irgendwas machen, damit das Signal kontinuierlich ausgegeben wird?

Vielen Dank nochmals für die Hilfe! JK
Problem akzeptiert.... gelöst will ich mal nicht sagen..... ;-)

Habe das Prinzip der Synchronisierung übernommen, beide DAQ-Assistenten sind nun durch manuellen Code ersetzt. Ein Sinussignal wird kontinuierlich geschrieben, bei jeder dritten Periode ist ein kleiner Versatz drin, der für meine Anwendung momentan noch akzeptabel ist. Falls jemand trotzdem eine Idee hat wie ich den Versatz losbekomme - immer her damit...

Vielen Dank nochmal für Eure Unterstützung! JK
Referenz-URLs