mehrmaliges Ausführen von "Erkennung digitaler Pegelwechsel" wartet nicht auf neuen Pegelwechsel
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!
mehrmaliges Ausführen von "Erkennung digitaler Pegelwechsel" wartet nicht auf neuen Pegelwechsel
hallo,
ich hab ein problem:
ich möchte durch einen pegelwechsel den nächsten schritt meines programmes steuern. dazu ist es nötig, den pegelwechsel mehrmals zu erkennen und erst dann solls weiter gehen. das funktioniert aber nicht. ich zeig euch da mal auf den VI's, wie ich das meine:
event response.vi (oben) ist das progrqamm, mit dem die pegeländerung erkannt werden soll. wenn ich das programm ausführe, warten es, bis ein trigger (pegeländerung) ankommt und gibt dann bei "trigger angekommen" JA aus. ende.
unbenannt1.vi (unten) ist das "hauptprogramm" (zur überprüfung). hier soll nur ausgegeben werden, ob gerade ein trigger (pegeländerung) empfangen wurde oder nicht. sobald aber ein trigger empfangen wurde, bleibt die anzeige "trigger empfangen" auf JA, dh. das event response.vi sendet weiterhin JA.
ich verstehe nicht, warum event response.vi weiterhin JA sendet, auch wenn kein neuer trigger empfanegn wurde, und was ich dagegen tun kann.
mehrmaliges Ausführen von "Erkennung digitaler Pegelwechsel" wartet nicht auf neuen Pegelwechsel
Typischer Fall von Race Condition!
LabVIEW arbeitet Programmteile parallel ab, wenn du nicht selber für einen deterministischen Ablauf sorgst, dann wird halt erst das Schreiben in den Indicator ausgeführt und danach erst das Schreiben in die lokale Variable.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
mehrmaliges Ausführen von "Erkennung digitaler Pegelwechsel" wartet nicht auf neuen Pegelwechsel
d.h. ein sequenzieller ablauf schafft deiner meinung nach abhilfe? hab ich probiert, funktioniert aber auch nicht. mir scheint, dass intern irgenwo gespeichert wird, dass bereits ein trigger empfangen wurde. der wartet einfach nichtauf einen neuen pegelunterschied... (sieht man auch in der highlight-funktion).
trotzdem danke für die idee. noch andere ideen?
ich wäre sehr dankbar.
mehrmaliges Ausführen von "Erkennung digitaler Pegelwechsel" wartet nicht auf neuen Pegelwechsel
' schrieb:Liefere mal mehr Infos, soll heißen, VIs hochladen und was über die verwendete DAQ-Hardware erzählen.
Gruß, Jens
also die DAQ ist von NI und heißt NI PCI-6221.
hier die VIs:
ich hab unbekannt1.vi umbenannt in teste_event-response.vi . hier soll augegeben werden, ob gerade ein trigger / pegelwechsel empfangen wird oder nicht. doch nachdem ein mal ein trigger empfange wurde, stellt sich das ganze nicht zurück - ich versteh leider immer noch nicht warum.
bitte bitte schreibt mir eure ideen.
lucky_s
(leider gerade nicht so glücklich - du kannst das vielleicht ändern...)
mehrmaliges Ausführen von "Erkennung digitaler Pegelwechsel" wartet nicht auf neuen Pegelwechsel
' schrieb:also die DAQ ist von NI und heißt NI PCI-6221.
hier die VIs:
ich hab unbekannt1.vi umbenannt in teste_event-response.vi . hier soll augegeben werden, ob gerade ein trigger / pegelwechsel empfangen wird oder nicht. doch nachdem ein mal ein trigger empfange wurde, stellt sich das ganze nicht zurück - ich versteh leider immer noch nicht warum.
bitte bitte schreibt mir eure ideen.
lucky_s
(leider gerade nicht so glücklich - du kannst das vielleicht ändern...)
2 Ideen habe ich, die ich aber ohne DAQ-Hardware nicht testen kann.
1. Ich würde mal für Rising und für Falling Line 2 unterschiedliche Lines verwenden. (Ist nur ein Versuch, kA, ob es das ist?)
2. Mglw. langt es, das Change-Detection Event nur beim ersten Aufruf anzulegen. Eine Änderung könnte so aussehen (Ist auch nur so eine Idee):
mehrmaliges Ausführen von "Erkennung digitaler Pegelwechsel" wartet nicht auf neuen Pegelwechsel
' schrieb:PCI-6221 hört sich schon mal gut an.
2 Ideen habe ich, die ich aber ohne DAQ-Hardware nicht testen kann.
1. Ich würde mal für Rising und für Falling Line 2 unterschiedliche Lines verwenden. (Ist nur ein Versuch, kA, ob es das ist?)
2. Mglw. langt es, das Change-Detection Event nur beim ersten Aufruf anzulegen. Eine Änderung könnte so aussehen (Ist auch nur so eine Idee):
[attachment=44261:Event_Re..._Versuch.vi]
Ansonsten, schau dir halt mal im Highlight Modus die verschiedene Werte, wie z.B. "Event Response" o.ä. an.
Gruß, Jens
danke, ich werde das austesten.
vielen dank auf jeden fal für deine mühe!
mehrmaliges Ausführen von "Erkennung digitaler Pegelwechsel" wartet nicht auf neuen Pegelwechsel
' schrieb:1. Ich würde mal für Rising und für Falling Line 2 unterschiedliche Lines verwenden. (Ist nur ein Versuch, kA, ob es das ist?)
ändert leider nichts
' schrieb:2. Mglw. langt es, das Change-Detection Event nur beim ersten Aufruf anzulegen. Eine Änderung könnte so aussehen (Ist auch nur so eine Idee)
gibt beim ersten mal diesen fehler aus: Timed structure(s): L35088<append> Timing source: [empty string]
und dann den: Timed structure(s): L35088<append> Timing source: _unnamedTask<5>
funktioniert also leider auch nicht.
naja, dann muss ich eben das programm zwischendurch beenden und dann noch mal starten, wenn ich wieder auf einen pegelwechsel warten muss. ist zwa nicht das, was ich wollte, aber naja...
danke trotzdem, jens!
und bei weiteren ideen einfach melden!