NI-USB 6008, konstante Ausgangsspannung einstellen und abschalten
Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
NI-USB 6008, konstante Ausgangsspannung einstellen und abschalten
Hallo Leute,
ich habe einen NI - USB 6008 und Labview Version 8.6.
Am Analogen Eingang habe ich einige Signale die in Labview weiterverarbeite. Darunter einen Reset - Taster der wenn er gedrückt wird am Eingang von 0 auf 3V geht. Die Eingangssingale werden mit dem Peak - Detector VI auf sprunghafte änderungen abgefragt.
Wenn auf einem der Eingänge der Pegel von 5V auf unter 4V fällt dann wird am Ausgang mithilfe des DAQ-Assitenten 2,5V generiert so dass eine LED leuchtet.
Wenn der RESET Taster gedrückt wird dann steigt ein anderer Eingang von 0 auf 3V und die Ausgangsspannung des DAQ - Assistenten wird wieder auf 0V gesetzt.
Nun meine frage:
ich habe um das zu lösen jeweils 2 DAQ-Assistent verwendet für die Ausgangspannung, einmal in einer case um 2,5V zu setzten und ein anderes mal um 0 V zu sezten. Es war mir nicht möglicht das in einem DAQ - Assistent zu lösen. Weiters wenn ich auf beenden drücke (roter knopp oben in labview) dann bleibt trotzdem der zuletzt gesetzte pegel erhalten, kann man das verhindern?!)
Gibt es hierfür eine elegantere Lösung?! habe auch probiert mit daq-mx zu arbeiten hier konnte ich aber keine ausgangsspannung erzeugen, der daq-assistent lässt sich auch nicht mit dem befehlt "in NI-DAQ-mx Tast umwandeln" zumindest nicht ganz da kommt die fehlermeldung:
"This task enables the "use waveform Timing" option, which is valid only for express tasks. The option ist not available in the converted task......"
meine zweite Frage:
ich habe recht umständlich (mit einigen bool variablen) einen Zähler realisiert, der hat die aufgabe zu zählen wie oft der eingang von 5V unter 4V fällt, dabei soll aber ein prellen nicht mehrfach gezählt werden. Diese version jetzt funktioniert ist wie gesagt aber sicher nicht sehr "schön" gelöst.
kann eine boolvarable (die in einer case drinnen ist) nur einmal True werden und dann gleich wieder false obwohl weiterhin nocht true in der case ist?
Vielen dank für eure hilfe!
lg
16.09.2010, 13:08 (Dieser Beitrag wurde zuletzt bearbeitet: 16.09.2010 13:17 von GerdW.)
NI-USB 6008, konstante Ausgangsspannung einstellen und abschalten
Hallo,
"Weiters wenn ich auf beenden drücke (roter knopp oben in labview)"
So beendet man kein Programm: "Using abort is like using a tree to stop a car." Dein VI bricht ab, alles bleibt auf dem letzten Stand...
"Gibt es hierfür eine elegantere Lösung?"
Keine DAQ-Assis verwenden!
"ich habe recht umständlich (mit einigen bool variablen) einen Zähler realisiert, ... dabei soll aber ein prellen nicht mehrfach gezählt werden."
Wo hast du das denn versteckt? Bis jetzt zählst du jeden Wert... Ich hab mal die Array-Konstante durch einen Skalar ersetzt!
Edit:
Jetzt erst habe ich diese boolsche Logik gesehen (durchschaut habe ich sie nicht). Und mal durch Shiftregister ersetzt...
NI-USB 6008, konstante Ausgangsspannung einstellen und abschalten
Hallo Gerdw,
Vielen dank für deine schnelle antwort.
Mir ist schon klar, dass der rote knopf nicht dafür da ist um zukünftig ein bestehendes programm zu beenden, ich dachte nur das trotzdem dann alle task damit beendet werden so auch die Ausgangssapnnung am ni usb 6008.
Wie bereits geschrieben habe ich bereits versucht den NI-DAQ assistenten beim generieren der Ausgangsspannung durch eine daq-mx kette zu ersetzten. Leider hat das nicht funktioniert, auch nicht mit dem umwandlungsbefehel. Habe mir dann selbst versucht eine erfassungskette zu basteln die mir am AO0 2,5V liefern sollte (1.Ausgang des ni usb) siehe anhang. Nur leider bekomme ich dann follgende fehlermeldung:
Possible reason(s):
"Measurements: Requested multiple virtual channels that correspond to the same physical channel within a task. A task cannot contain multiple physical channels of a specified type.
Use different physical channels for each virtual channel.
zu deiner überarbeitung, die funktioniert genauso (bis auf das zählen - aber da war ein fehler in meinem programm: die Zählvariable war in der Case "true" auf false statt auf true gesetzt) wie mein programm DANKE nur ist sie wohl etwas "programmiertechnisch schöner" realisiert.
Sollte man die inititialisierung von boolvariablen (also den Anfangswert setzten) eher mit shift-registern machen so wie du es gemacht hast und nicht mit logischen variablen? ich weiß logische Variable sollten verhindert werden, ich denke nur für die übersichtlichkeit ist es nicht schlecht diese vor der while schleife mit den jeweiligen anfangswerten zu belegen.
kurz zur erklärung meines programmes (da ich denke das ich auf ein paar bools wohl verzichten könnte)
Eingang 1 wird abgefragt ob der pegel unter 4 V fällt, wenn ja ist der ausgang true, detected true und die Ausgangsspannugn wird auf 2,5V gesetzt. Gleihzeitig ist die Flankenvariable true und detected true (mit der UND verknüpfung der Ausgang auch true) somit wird die zählvariable auf true gesetzt und es wird einmal gezhält, gleichzeitig die flankenvariable auf false damit das prellen nicht eine weitere zählung verursacht....
im Anhang der DAQmx - Code versuch für die Ausgangsspannung
und mein programm mit dem kleinen ausgebesserten fehler
lg
NI-USB 6008, konstante Ausgangsspannung einstellen und abschalten
Hallo,
"Use different physical channels for each virtual channel."
Du hast da einen TaskName angeschlossen, den du wahrscheinlich schon in MAX definiert hast und versuchst nun, per TaskInit einen schon vorhandenen phys. Kanal hinzuzufügen... Probier mal den Anhang aus.
"ich weiß logische Variable sollten verhindert werden"
Logische kannst du verwenden, solange du auf lokale verzichtest.
NI-USB 6008, konstante Ausgangsspannung einstellen und abschalten
Hallo,
die USB6008 haben wohl keine interne Clock, die sind rein softwaregesteuert. Also kannst du auch kein "SampleClock" vorgeben - einfach der Fehlermeldung Folge leisten...