LabVIEWForum.de - wert in der lokalen Variablen stimmt nicht

LabVIEWForum.de

Normale Version: wert in der lokalen Variablen stimmt nicht
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo

ich hab da mal ein problem ....

ich werd noch irre ...VI als bild siehe unten in den roten Kreisen die beiden dinger die mich zum verzweifeln bringen ...

ein einfacher String indicator und dessen lokale Variable ...

wenn nun meine state maschine zu diesem punkt kommt(grosser kreis mitte) und in der zweiten while schleife etwas von dem notifier eingelesen wird und angezeigt wird (in dem Sensor-Status indikator) ... meint die lokale variable aber noch einen komplett alten inhalt auslesen zu müssen ...

was mach ich hier falsch ? ich mein ich mach das in anderen Prgrammen auch so oder so in der art ....
ich hab auch schon den notifier an der stelle auslesen lassen wo die lokale variable sitzt .. da kommt auch der alte inhalt raus ... nur unten in der zweiten while schleife wird richtig ausgelesen ....

Toaran


[attachment=10432]
' schrieb:Hallo

ich hab da mal ein problem ....

ich werd noch irre ...VI als bild siehe unten in den roten Kreisen die beiden dinger die mich zum verzweifeln bringen ...

ein einfacher String indicator und dessen lokale Variable ...

wenn nun meine state maschine zu diesem punkt kommt(grosser kreis mitte) und in der zweiten while schleife etwas von dem notifier eingelesen wird und angezeigt wird (in dem Sensor-Status indikator) ... meint die lokale variable aber noch einen komplett alten inhalt auslesen zu müssen ...

was mach ich hier falsch ? ich mein ich mach das in anderen Prgrammen auch so oder so in der art ....
ich hab auch schon den notifier an der stelle auslesen lassen wo die lokale variable sitzt .. da kommt auch der alte inhalt raus ... nur unten in der zweiten while schleife wird richtig ausgelesen ....

Toaran
[attachment=37449:verr_ckt.JPG]

Schon mal was gehört von Race Conditions???? Wie stellst Du denn sicher das der Notifier unten aktiviert wird UND die Variable in die lokale Variable geschrieben wird, BEVOR Du in der oberen Loop diese liest. Da man nicht das ganze Programm sehen kann, lässt sich schwer sagen wo und wie es falsch geht, aber falsch geht es eben schon.

Ich nehme mal an dass Du in der oberen Schlaufe irgendwo den Notifier aktivierst und dann den State auf NMD abwarten setzt. Bis der Notifier dann reagiert und die Variable gesetzt wird, hat die obere Schlaufe halt schon lange eine neue Iteration begonnen, und Auswertung von Terminals und Lokals ist immer so ziemlich das erste was LabVIEW macht wenn es ein neues Subdiagramm abzuarbeiten beginnt.

Im Übrigen ist die Verwendung von Lokals als Statevariable nicht gerade schön. Ein Schieberegister wäre da viel besser geeignet und macht es auch etwas deutlicher was da passiert.

Rolf Kalbermatter
hi

also der notifier wird von nem hintergrund VI gesetzt...
in der unteren schleife wir dann alle 50 ms der notifier abgefragt und das ergebniss im frontpanal angezeigt .... und was dort angezeigt wird ist das richtige ...

wenn dann irgendwann der state auf NMD abwarten kommt sollte doch eigentlich das was im terminal (der lokalen)angezeigt wird und das was in der lokalen Variable drinn steht das selbe sein ... isses aber nicht ...

ich lad mal das vi hoch ... laufen wirds nicht da subvis fehlen ...

LabVIEW 7.1
[attachment=10438]

Toaran
Referenz-URLs