Hallo,
als labview Anfänger stehe ich vor folgendem Problem:
Ich möchte nach einer fallenden Flanke (kann jede Sekunde kommen, aber auch nur alle 10 Sekunden) eine AD-Wandlung durchführen.
Wichtig dabei ist, dass sofort nach der Flanke gemessen wird. Dafür habe ich mir das DAQmx Trigger.vi reingeladen und auf die fallende Flanke gestellt.
Soweit funktioniert das ganze auch wie es soll.
Allerdings möchte ich während das Programm auf die Flanke wartet, etwas anderes machen können. Leider "hängt" das Programm, bis die Flanke kommt.
Hat jemand einen Tipp für mich?
Besten Dank im voraus
labvii
Verwendet wird Labview 8.6 und eine NI-USB-6229
Hallo,
dann schau dir mal an, wie man mit parallelen Schleifen umgeht. Da gibt es so einige Beispiele in LabVIEW...
Hallo GerdW und danke für deine Unterstützung
,
ich habe das Programm jetzt geändert und die Tasks in zwei While-Schleifen gepackt.
Jetzt kann ich zwar, während auf die Flanke gewartet wird, andere Dinge tun, allerdings kann ich das Programm nicht
sofort beenden, bzw. ich muss immer warten, bis die Schleife einmal durchgelaufen ist.
Also habe ich mir überlegt, die Task zu beenden, so dass nicht mehr auf die fallende Flanke gewartet werden muss.
Leider wird immer noch die letzte fallende Flanke abgewartet.
irgendwie klappt das editieren der Beiträge nicht, jedenfalls ist hier das richtige Bild
Das haben Whileschleifen so an sich, dass sie zuerst einmal durchlaufen, bevor sie beendet werden.
Aber ich verstehe ehrlich gesagt das Problem noch nicht so ganz.
Gruß Markus
P.S.: Das mit dem Editieren geht für "normale" User nur eine gewisse Zeit (ich glaub' 15 min). Dauerhaft editieren kann nur das Team. Trotzdem Danke, dass Du es versucht hast.
Hallo,
wenn du den Teil mit dem DAQ-Abbruch im Event selbst erledigen würdest, hättest du dir mehrere lokale Variablen, 2 Bedienelemente und eine Whileschleife sparen können...
Probier doch mal aus, vor dem DAQ-Stop noch die Triggerbedingung zu ändern (oder ganz abzuschalten?)!
Hallo und erstmal Danke für die Unterstützung,
das Problem, dass ich währen der Whileschleife nichts machen kann, ist gelöst.
Das Problem, dass ich jetzt habe ist, dass wenn das Vi auf die fallende Flanke wartet, ein Notaus Signal kommt,
ich das Programm nicht beenden kann. Es wird immer noch gewartet, bis die Flanke kommt, was bis zu 10s dauern kann.
Was ich versucht habe, wenn Notaus gedrück wurde ein "DAQmx Reset Device" zu starten, was ich aber nicht als saubere Lösung halte.
Aber selbst so wird auf die fallende Flanke gewartet.
Zitat:Probier doch mal aus, vor dem DAQ-Stop noch die Triggerbedingung zu ändern (oder ganz abzuschalten?)!
werde ich versuchen, Danke.
' schrieb:ich das Programm nicht beenden kann. Es wird immer noch gewartet, bis die Flanke kommt, was bis zu 10s dauern kann.
Eine Lösung ist: Den Timeout von DAQmx Read, welches auf die fallende Flanke wartet, auf z.B. 0.1 sek setzen und DAQmx Read in eine While-Schleife packen. Bei Timeoutfehler wird die While-Schleife fortgesetzt, und zwar solange, bis entweder die fallende Flanke kommt, - oder aber ein lokale Variable des Stop-Kopfes, die man innerhalb der Schliefe abfragt, true ist.
' schrieb:Eine Lösung ist: Den Timeout von DAQmx Read, welches auf die fallende Flanke wartet, auf z.B. 0.1 sek setzen und DAQmx Read in eine While-Schleife packen. Bei Timeoutfehler wird die While-Schleife fortgesetzt, und zwar solange, bis entweder die fallende Flanke kommt, - oder aber ein lokale Variable des Stop-Kopfes, die man innerhalb der Schliefe abfragt, true ist.
Hi Lucki,
habe es programmiert und es scheint auch zu funktionieren. Bin nicht sicher ob ich es ganz verstanden habe, daher folgende Frage:
Ist mit dieser Lösung gewährleistet, dass ich unmittelbar nach der fallenden Flanke die Messung starte? Wie oben geschrieben, ist für mich
die Zeit (die ersten 500µs) nach der fallenden Flanke interessant.
' schrieb:Ist mit dieser Lösung gewährleistet, dass ich unmittelbar nach der fallenden Flanke die Messung starte? Wie oben geschrieben, ist für mich
die Zeit (die ersten 500µs) nach der fallenden Flanke interessant.
Das DAQmx Read wartet eigentlich nicht auf die Flanke, sondern darauf, daß die 250 Werte im Empfangsbuffer sind.
Um aber ganz sicher zu gehen, daß die Datenerfassung unabhängig von DAQmx Read genau mit der Flanke beginnt, würde ich hinter dem Trigger-VI noch das "DAQmx Start Task .vi" einfügen.