04.03.2022, 09:10
Hallo liebe LFVler.
Ich hab mal ne Frage zu timings auf DAQmx Geräten. Konkret:
Ich habe NI USB 6001 und 6002 die ich anspreche. Meine Externe Hardware ist dumm ausgelegt (aber da komm ich nicht drumrum), so dass ich dem Schrittmotortreiber gleichzeitig Highs in FWD und REV senden könnte, was vermutlich zu allem zwischen unerwartetem Verhalten bis frühen Tod führen kann.
Ich bin mir einigermaßen sicher, dass ich das auf der HW Ebene ebenfalls blocken könnte, so dass ich mich um LV timings nicht scheeren müsste, aber das wäre aktuell erheblicher Mehraufwand. Daher meine Frage:
Wenn ich an einem NI USB 6001 oder 6002 auf zwei verschiedene Kanäle desselben Ports schreibe (derzeit als verschiedene Tasks angelegt aus strukturellen Gründen und nicht als Schreiben auf den Port oder in einem Befehl auf denselben Task). Garantiert mir Labview dann eine sequentielle Ausführung in der Ausführungsreihenfolge oder nicht? Oder zumindest (durch den gemeinsamen Port) eine gleichzeitige Ausführung die ebenfalls akzeptabel wäre.
Spricht: Haltet ihr es für hinreichend sicher hier einfach nur ein Wait (100ms?) zwischen den Befehlen einzufügen?
Ist das bei Zusammenfassen in einem Task hinreichend sicher (also eine Schreiboperation für beide Kanäle)?
Ist die Ausführungsreihenfolge überhaupt vom Port abhängig? Ich frage weil ich erwarten würde, dass der Port hardwareseitig immer - auch bei Einzelkanaloperationen - komplett beschrieben wird und Labview das lediglich für mich als Nutzer maskiert. Dementsprechend würde ich hier am ehesten erwarten, dass das irgendwo auf eine Befehlsqueue geht dir mir die Ausführungsreihenfolge garantiert.
Spätestens auf Geräteebene ist die Ausführung ja vermutlich quasiparallel.
Viele Grüße,
Kiesch
Ich hab mal ne Frage zu timings auf DAQmx Geräten. Konkret:
Ich habe NI USB 6001 und 6002 die ich anspreche. Meine Externe Hardware ist dumm ausgelegt (aber da komm ich nicht drumrum), so dass ich dem Schrittmotortreiber gleichzeitig Highs in FWD und REV senden könnte, was vermutlich zu allem zwischen unerwartetem Verhalten bis frühen Tod führen kann.
Ich bin mir einigermaßen sicher, dass ich das auf der HW Ebene ebenfalls blocken könnte, so dass ich mich um LV timings nicht scheeren müsste, aber das wäre aktuell erheblicher Mehraufwand. Daher meine Frage:
Wenn ich an einem NI USB 6001 oder 6002 auf zwei verschiedene Kanäle desselben Ports schreibe (derzeit als verschiedene Tasks angelegt aus strukturellen Gründen und nicht als Schreiben auf den Port oder in einem Befehl auf denselben Task). Garantiert mir Labview dann eine sequentielle Ausführung in der Ausführungsreihenfolge oder nicht? Oder zumindest (durch den gemeinsamen Port) eine gleichzeitige Ausführung die ebenfalls akzeptabel wäre.
Spricht: Haltet ihr es für hinreichend sicher hier einfach nur ein Wait (100ms?) zwischen den Befehlen einzufügen?
Ist das bei Zusammenfassen in einem Task hinreichend sicher (also eine Schreiboperation für beide Kanäle)?
Ist die Ausführungsreihenfolge überhaupt vom Port abhängig? Ich frage weil ich erwarten würde, dass der Port hardwareseitig immer - auch bei Einzelkanaloperationen - komplett beschrieben wird und Labview das lediglich für mich als Nutzer maskiert. Dementsprechend würde ich hier am ehesten erwarten, dass das irgendwo auf eine Befehlsqueue geht dir mir die Ausführungsreihenfolge garantiert.
Spätestens auf Geräteebene ist die Ausführung ja vermutlich quasiparallel.
Viele Grüße,
Kiesch