LabVIEWForum.de
Schleifenbedingungen miteinander verknüpfen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Schleifenbedingungen miteinander verknüpfen (/Thread-Schleifenbedingungen-miteinander-verknuepfen)



Schleifenbedingungen miteinander verknüpfen - Flasher - 24.05.2011 12:02

Hallo zusammen!

Ich hab eine Frage, die vermutlich völlig trivial und einfach zu beantworten ist, komme aber nicht auf die Lösung.

Ich möchte, dass zwei While-Schlaufen parallel abgearbeitet werden - sobald eine Bedingung in einer der Schlaufen erfüllt ist, sollen beide Schlaufen beendet werden. Das einfache Verknüpfen der Bedingung mit beiden Stop-Punkten führt dazu, dass das Programm nur die eine While-Schlaufe abarbeitet und das Programm beendet wird, sobald diese Bedingung erfüllt ist.

Wie löst man das Problem? Mit Meldern?


RE: Schleifenbedingungen miteinander verknüpfen - snuz - 24.05.2011 12:16

Hallo flasher,

eine Möglichkeit wäre diese s.B. (lokale Variable)


RE: Schleifenbedingungen miteinander verknüpfen - Flasher - 24.05.2011 13:14

Ok das klingt nach einer sinnvollen Idee, aber ich komm gerade irgendwie nicht auf den grünen Zweig. Anbei mal ein Screenshot der entsprechenden While-schlaufen. Die obere gibt dabei bei einem Zahlenvergleich ein True oder False aus, welches an die Schleifenbedingung gekoppelt ist - die selbe Bedingung soll die andere Schleife auch beenden. Wie erstelle ich jetzt eine Boolesche-Variable?


RE: Schleifenbedingungen miteinander verknüpfen - chrissyPu - 24.05.2011 13:47

Variablen kann man nur von Anzeige- oder Bedienelementen erstellen. Das bräuchtest Du noch in der oberen Schleife. Alternativ wäre noch ein Melder oder eine Queue möglich, für diese eher einfache Aufgabe aber wahrscheinlich überkandidelt. Für spannendere Abläufe, unterschiedliches Schleifentiming etc. aber vielleicht später mal einen Blick wert...

Grüße,

chrissy


RE: Schleifenbedingungen miteinander verknüpfen - Flasher - 24.05.2011 14:18

Ich habe jetzt über Occurance zusätzlich beide Schleifen synchronisiert, da mir aufgefallen ist, dass die untere Schleife deutlich schneller abläuft als die obere. Ich habe bereits auch etwas mit den Meldern rumgespielt, allerdings ohne erfolg. Anbei mal das gesamte VI.


RE: Schleifenbedingungen miteinander verknüpfen - Lucki - 24.05.2011 15:27

Hier noch zwei weitere Vorschläge zum wasserdichten Beenden von 2 Schleifen - eigentlich ist es doch ganz einfach
[attachment=33944]


RE: Schleifenbedingungen miteinander verknüpfen - Flasher - 24.05.2011 15:35

Danke, aber ich möchte keinen Schalter verwenden, sondern ausschließlich mit der Bedingung aus der oberen Schleife arbeiten (siehe mein Screenshot/VI).


RE: Schleifenbedingungen miteinander verknüpfen - macmarvin - 24.05.2011 16:06

Wenn du es eh synchronisieren willst, mach es in einer Schleife.
Vielleicht bist du allgemein mit einer einfachen Statemachine besser beraten.
Insgesamt sieht mir das "Hauptprogramm.vi" nicht so aus, als hättest du das Datenflußprinzip verinnerlicht.


RE: Schleifenbedingungen miteinander verknüpfen - Flasher - 25.05.2011 08:16

(24.05.2011 16:06 )macmarvin schrieb:  Insgesamt sieht mir das "Hauptprogramm.vi" nicht so aus, als hättest du das Datenflußprinzip verinnerlicht.

Was genau meinst du denn? Ich bin nun mal Anfänger und schreibe ein Programm mit Hilfe des Buches "Einführung in Labview". Das Programm ist dabei noch lange nicht fertig.


RE: Schleifenbedingungen miteinander verknüpfen - Lucki - 25.05.2011 12:45

(24.05.2011 15:35 )Flasher schrieb:  Danke, aber ich möchte keinen Schalter verwenden, sondern ausschließlich mit der Bedingung aus der oberen Schleife arbeiten (siehe mein Screenshot/VI).
Da ist ja, ausgehend von meinem Vorschlag, nur eine winzigste Änderung: Den Stop-Knopf als verborgenes Element konfigurieren und den Wert über eine lokale Varable vom Programm aus zuweisen.
[attachment=33961]
Man kann auch auf das Rücksetzen des Kopfes bei Programmende verzichten, muß aber dann dafür sorgen, dass das Rücksetzen beim nächsen Start erfolgt. Das ist noch etwas einfacher.
Beim Stop von von 2 parallele Scheifen im gleichen VI handelt es sich im Normalfall um eine supereinfache Sache - siehe das Beispiel. Man sollte vermeiden, das Thema aufzubauschen. Erörterungen über Queues, Occurrences, Statemachines sollte man sich für Probleme aufsparen, die dessen würdig sind - meine Meinung.