USB-6001: Eingangssignal (digital) als Event in State Machine auswerten
Hallo Freunde,
Ich möchte gerne ein Reed- Relais an entweder einen digitalen oder analogen Eingang der USB-6001 anschließen und wenn dieses schaltet, dann soll in der state machine dasselbe passieren, als wenn, wie jetzt noch - ein Button gedrückt wird.
Ich brauche also ein Event vom DAQAssistant.
Wenn ich in in der case- Struktur ein Event-Case hinzufügen möchte, so taucht dort aber nichts vom DAQ- Assistant auf.
Ich habe deshalb den DAQ-Assistant in eine eigene while Schleife gepackt und er liest auf einem Digital Kanal immer 1 mal mit 1 Sample.
Dann greife ich auf den Data Ausgang vom DAQ-Assistant zu, schicke den ersten Wert aus dem 1D-Array zu einer Boolean-Anzeige. Diese taucht dann auch in der Case Struktur als auswertbares Element auf.
Frage: Ist diese Vorgehensweise, dieser "Workaround" von mir einigermaßen "korrekt", oder sollte man das lieber nicht machen?
Ich hatte vorher bereits anhand eines Beispiel VI's aus einem anderen Forums Thread ein User created Event studiert. Dort war die Erzeugung, Registrierung, Anwendung, Deregistrierung zusammen mit einer Event Case Struktur programmiert.
Ich habe diese dann in die Projekt- Vorlage "simple - state -Machine" von Labview eingebaut.
Aber obwohl ich den Event dann auswählen konnte, es hat nicht funktioniert, deshalb bin ich dann auf diesen Workaround zurückgegangen.
An sich funktioniert das Ganze so bereits für mich. Problem ist jedoch, dass der DAQmx regelmäßig nur mit Pollen beschäftigt ist und man keine Eingaben machen kann.
Es ist ja möglich, sogenannte Tasks zu erstellen, in der Hilfe steht, dass man diese dann auch im "MAX" speichern kann. Im Measurement Automation Explorer wird der Task dann "so angezeigt", dass ich davon ausgehe, dass der Task auf der Hardware selbst, also dem Device USB-6001 gespeichert wird, nicht auf dem Computer / im Projektverzeichnis.
Ist meine Vermutung richtig?
Ist so ein Task dann eine Lösung dafür, um ein ständiges Pollen auf die Hardware abzuwälzen, sodass man im Programm dann bequem ein Event Empfangen kann?
EDIT:
Ich habe gerade nochmal die Hilfe studiert, und kann mir vorstellen, dass ein Trigger wahrscheinlich besser geeignet wäre. Dieser taucht jedoch auch nicht als Event auf, bzw. habe ich dort ein Task-out und task in.
Wäre dann die richtige Vorgehensweise einen Task zu setzen, dann den Trigger daran, an dessen Ausgang dann wiederum ein Task und dann daran ein DAQmx Event registrieren, der Event Struktur zuzuführen, verwenden, deregistrieren, destroy.. .?
Vielen Dank schonmal,
wallice
|