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!
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
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?
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.
(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.
02.10.2013, 14:00 (Dieser Beitrag wurde zuletzt bearbeitet: 02.10.2013 14:03 von natasia.)
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.
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
Nur wenn es normal durchläuft nicht...
Da siehste schonmal, dass die Funktion nicht lügt
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.
(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 ?
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
02.10.2013, 16:01 (Dieser Beitrag wurde zuletzt bearbeitet: 02.10.2013 16:26 von Lucki.)
(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.
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)
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:
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!