LabVIEWForum.de
True und True = False?? - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: True und True = False?? (/Thread-True-und-True-False)

Seiten: 1 2


True und True = False?? - natasia - 02.10.2013 12:52

Hallo ich habe ein größeres Programm, in dem eine UND Verknüpfung ausgewertet werden soll.
Laut Sonden (siehe Bild) sind die beiden Werte vor der UND Verknüpfung TRUE. Dem entsprechend sollte die UND Verknüpfung auch gleich TRUE sein. Dem ist allerdings nicht so.
Die Schleife wird anschließend auch nicht mehr aufgerufen, daher bleibt das Programm beim beenden immer hängen Sad

Ich vermute, dass die UND-Verknüpfung ausgewertet wird, bevor die Eingänge "neu gesetzt" werden. Hat jemand eine Idee wie man Labview dazu zwingen kann zuerst die Eingänge der UND Verknüpfung zu akutalisieren und anschließend die UND Verknüpfung auszuwerten?

Viele Grüße
Natasia


RE: True und True = False?? - VDB - 02.10.2013 13:01

Ich vermute es gibt irgend eine Race-Condition mit der lokalen Variable "Stop (F)".
Lösche diese mal und schließe das Control direkt per Wire and die And-Funktion.

VDB


RE: True und True = False?? - Trinitatis - 02.10.2013 13:53

Hallo Natasia,

du könntest auch mal auf die Sonde 31 mal einen Haltepunkt setzen.


Gruß, Marko


RE: True und True = False?? - THL - 02.10.2013 13:58

(02.10.2013 12:52 )natasia schrieb:  Hat jemand eine Idee wie man Labview dazu zwingen kann zuerst die Eingänge der UND Verknüpfung zu akutalisieren und anschließend die UND Verknüpfung auszuwerten?
Pack die Eingänge in eine Sequenz rein. Dann kannst du mal die Datenleitung deiner lokalen Variablen innerhalb und ausserhalb der Sequenz checken und sehen, ob sich der Wert (aufgrund race condition) ändert.


RE: True und True = False?? - natasia - 02.10.2013 14:00

Was ist eine Race-Condition?

Ich habe auf deinen Vorschlag hin die lokale Variable durch den Knopf ersetzt. Hilft nix (siehe Bild).

Kleine Randbemerkung noch: Es handelt sich um eine Verbraucherschleife, Elemente einer Queue werden gespeichert, die Erzeugerschleife ist wenns hängen bleibt beendet und schreibt keine neuen Werte, deswegen wird die Verbaucherschleife nicht mehr aufgerufen.

lg
Jenny
(02.10.2013 13:53 )Trinitatis schrieb:  Hallo Natasia,

du könntest auch mal auf die Sonde 31 mal einen Haltepunkt setzen.


Gruß, Marko



Wenn ich das tue, tut das Labview Programm genau das was ich erwarte TRUE + TRUE = TRUE Smile
Nur wenn es normal durchläuft nicht... Sad


RE: True und True = False?? - Trinitatis - 02.10.2013 14:40

(02.10.2013 14:00 )natasia schrieb:  
(02.10.2013 13:53 )Trinitatis schrieb:  Hallo Natasia,

du könntest auch mal auf die Sonde 31 mal einen Haltepunkt setzen.


Gruß, Marko



Wenn ich das tue, tut das Labview Programm genau das was ich erwarte TRUE + TRUE = TRUE Smile
Nur wenn es normal durchläuft nicht... Sad

Da siehste schonmal, dass die Funktion nicht lügt Smile

Eine Race-Condition ist eine Wettlaufbedingung, bei der du nicht vorhersagen kannst, dass z.B. eine Variable erst ausgelesen oder erst neu beschrieben wird. Und das wird bei dir auch das Problem sein.

Gruß, Marko


RE: True und True = False?? - natasia - 02.10.2013 15:38

(02.10.2013 14:40 )Trinitatis schrieb:  Eine Race-Condition ist eine Wettlaufbedingung, bei der du nicht vorhersagen kannst, dass z.B. eine Variable erst ausgelesen oder erst neu beschrieben wird. Und das wird bei dir auch das Problem sein.


Hmm ja, klingt logisch (ich meine auch dass es schon mal funktioniert hat). Aber wie löse ich das Problem jetzt ?

lg
natasia


RE: True und True = False?? - Trinitatis - 02.10.2013 15:45

Hallo natasia,

die einzige Möglichkeit, wie dein Sondenfenster überhaupt so hinzukriegen ist, ist dass beim n. Durchlauf einer der Eingänge FALSE war, dann der Ausgang auch FALSE war, die Schleife nochmal durchgelaufen ist, die beiden Eingänge beim n+1 Durchlauf beide TRUE waren und dann das VI gestoppt wurde, ohne dass die Ausgangssonde neu beschrieben werden konnte.


Gruß, Marko


RE: True und True = False?? - Lucki - 02.10.2013 16:01

(02.10.2013 14:00 )natasia schrieb:  Kleine Randbemerkung noch: Es handelt sich um eine Verbraucherschleife, Elemente einer Queue werden gespeichert, die Erzeugerschleife ist wenns hängen bleibt beendet und schreibt keine neuen Werte, deswegen wird die Verbaucherschleife nicht mehr aufgerufen.
Wenn das so ist, dann würde ich den Verbraucher so wie unten und nicht anders stoppen. Dann hast Du diese Merkwürdigkeiten nicht.
[attachment=46560]
PS: Kann es vielleicht sein, dass die angezeigten Sondenwerte sich gar nicht auf das running VI beziehen, sondern dass das VI wegen eines Queue-Fehlers bereits (mit roher Gewalt) gestoppt wurde? Dann wären die Sondenwerte allesamt nicht mehr gültig,und der offensichtliche Unsinn bei den Sondenwerten würde mich nicht wundern. (Wettlaufeffekte vermute ich hier eher nicht)


RE: True und True = False?? - jg - 03.10.2013 17:09

Wenn man auf Nummer sicher gehen will, dass eine lokale Variable oder ein Control erst zu einem ganz bestimmten Punkt ausgelesen werden soll, dann muss man das per Datenfluss erzwingen. Am einfachsten über eine Sequenzstruktur:
[attachment=46568]
Gruß, Jens