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.
Ich hoffe, ihr habt eine Idee! Bitte helft mir.
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
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.
hey leute, hat denn keiner von euch ne idee?
ich bin noch nicht so lange dabei, bitte halft mir doch...
' schrieb:hey leute, hat denn keiner von euch ne idee?
ich bin noch nicht so lange dabei, bitte halft mir doch...
Liefere mal mehr Infos, soll heißen, VIs hochladen und was über die verwendete DAQ-Hardware erzählen.
Gruß, Jens
' 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...)
[
attachment=16585]
[
attachment=16586]
' 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...)
[attachment=44245:teste_ev...response.vi]
[attachment=44246:Event_Response.vi]
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=16601]
Ansonsten, schau dir halt mal im Highlight Modus die verschiedene Werte, wie z.B. "Event Response" o.ä. an.
Gruß, Jens
' 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!
' 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!
lg, susanne