LabVIEWForum.de
Analog output getriggert - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ)
+---- Thema: Analog output getriggert (/Thread-Analog-output-getriggert)



Analog output getriggert - yoyo - 06.07.2012 17:05

Hallo zusammen

Ich hab nun schon eine Weile versucht die ganze Trigger-Geschichte mit DAQmx zu verstehen aber irgendwie steig ich da nicht so ganz durch, vielleicht könnt ihr mir ja weiterhelfen.

Eigentlich ist das Problem recht simpel: ich möchte bei jedem Trigger (also rising edge) einen neuen Wert ausgeben (siehe VI: bei jedem Trigger soll der output auf den aktuellen Wert in "value" gesetzt werden)
Leider macht der Code so wie er jetzt ist nicht das richtige. Meistens muss man ganz viele Trigger senden um einen neuen Wert zu bekommen (ich vermute irgendwelche Buffer Probleme, leider kenn ich mich damit überhaupt nicht aus...)
Das andere Problem ist, dass die ganze Sache schneller gehen sollte. Am liebsten würde ich die ganzen initialisierungs und die start & stop task VIs aus dem loop rausnehmen und nur noch das write im loop lassen. Ich weiss allerdings nicht ob dies im Zusammenhang mit den Triggern überhaupt möglich ist.

Ich freue mich sehr über jede Art von Hilfe!


RE: Analog output getriggert - GerdW - 06.07.2012 19:51

Hallo yoyo,

1) Init und DeInit sollte nie in der Schleife stehen, sondern davor und danach.
2) Reichen dir die variablen (!) 0-50ms wirklich für die Abarbeitung des Task, die du zwischen Start und Clear programmiert hast?
3) Bisher startest du nur den Task mit PFI0, ist das so gewollt?
4) Wenn du PFI0 als Trigger für die Samples nutzen willst, solltest du es dann nicht auch als Quelle für den Sampletakt anschleßen - statt wie bisher "Onboard Clock"?
5) Wenn du mehrere Samples per PFI0 takten willst, solltest du dann nicht ein Array/eine Waveform für den AO vorgeben statt nur einen skalaren Wert anzuschließen?