LabVIEWForum.de - Zwei While Schleifen Parallel eine Bedingung zur Beendung

LabVIEWForum.de

Normale Version: Zwei While Schleifen Parallel eine Bedingung zur Beendung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
@Totti: Jupp, auch nicht schlecht. Aber da siehst du das von mir angesprochene Problem: Es wird kompliziert und die Übersicht geht verloren, wenn man das mit Meldern ordentlich machen möchte.
' schrieb:Ne, Lucki hat Lokale Variablen verwendet und keine globalen!
' schrieb:Ich nutze ebenfalls Melder, außer der Stopp-Button soll die Schleifen beenden. Dann verwende ich lokale Variablen. Und hier darf man diese meiner Meinung nach auch getrost verwenden.

Edit: Eigentlich wollte ich den oberen Beitrag editieren, nur Mehrfach-Zitate sind dann so umständlich einzufügen.
Naja übersichtlich wirds, wenn man die Sequenzen entfernt, SubVIs verwendet und ein ErrorCluster als Flusssteuerung verwendet. Aber das war mir grade zu viel des guten!
@Mechatronik-Ingenieur:
das hab ich tatsächlich überlesen!

Naja, nu gibts hoffentlich genügend Alternativen!
' schrieb:Ähm, genau das gleiche wurde hier doch genannt oder nicht (neben den Meldern)?Unsure

Ja, hast Recht, aber es wurde irgendwie beiläufig gesagt, so daß man befürchten mußte, daß das gegenüber den Lösungen mit Meldern und globalen Variablen untergeht. Und Deinen Beitrag direkt vor meinem hatte ich noch nicht gelesen, dann hätte ich das nicht so geschrieben.
Was noch nicht zur Sprache kam:
Man hat mehrere parallele Schleifen mit Waits drin. Bei STOP soll das VI sofort beendet werden, und nicht erst Sekunden später. Wie macht man das sauber?
Ich weiß nicht, obs die sauberste Lösung ist, aber wenn ich ein Wait in einer Schleife habe, dann ist das ein Kurzes Wait in einer Schleife. Dadurch reduziere ich das Problem auf eine minimale Verzögerung die nicht wirklich störend ist.
Ich löse sowas über eine "manuelle" Wait-Funktion über das Timer-Wert-VI. Innerhalb der While-Schleife eine weitere mit kurtem Wailt (z.B. 20 ms), die u.a. "Timer-Wert" aufruft und so lange ausgeführt wird, bis die gewünschte Zeit abgelaufen ist.
Die innere (und somit auch äußere) Schleife kann somit jederzeit abgebrochen werden.

Das Vorgehen funktioniert bei einer einzigen Schleife genauso wie bei mehreren parallelen.

Nachtrag:

Ich habe mal angehängt, was ich meine:

[attachment=30683]
Ich hatte mir zum sofortigen Stop mal das hier ausgedacht:
[attachment=30688]
Erläuterung:
Die Wait-Funktion wird überhaupt nicht verwendet, da sie sich nicht stoppen lässt. Zum Wait werden zwei andere Funktionen missbraucht:
Untere Schleife: das Timeout der Ereignisstruktur wirkt genau wie Wait - solange keine Ereignisse entreten. Hier ist Stop - neben Timeout - der einzige Ereignisrahmen. Die Ereignisstruktur ist hier nichts weiter als ein Wait mit sofortiger Stop-Möglichkeit.
Obere Schleife: Das VI "auf Occurrence warten" wirkt hier ebenso wie ein Wait, solange keine Occurrence stattfindet. Dieses Warten läßt sich mittendrin ebenso sofort stoppen, wenn die Occurrence eintrifft. Die Occurrence wird in der unteren Schleife bei Stop erzeugt. (Anmerkung: die Empfehlung von LV ist, Occurrences nicht mehr zu verwenden, man soll besser Melder verwenden. Habe das hier nur der Einfachheit so gemacht)
Auch eine Alternative. Ich denke da muss man immer schaun, was in das Programm rein passt. Wenn man den TimeoutCase für andere dinge benötigt kann man ihn dafür nicht mehr missbrauchen. Oder man arbeitet mit zwei Eventstrukturen. Ach man, es gibt immer so viele Alternativen und nie sagt einer einem: DAS ist das Wundermittel.

Ich bleibe bei einem kleinen SubVI mit einer Schleife in der kurze Waits ausgeführt werden und zusätzlich die Abbruchbedingung geprüft wird. Zum beispiel ein entsprechender Melder.
' schrieb:Ach man, es gibt immer so viele Alternativen und nie sagt einer einem: DAS ist das Wundermittel.
Vielleicht ist es besser so. So gibt's Herausforderungen und man darf die grauen Zellen trainieren. *g*
Sonst könnte das ja jeder. Also immer positiv sehen, auch wenn es manchmal nicht schwer feällt.

Das erinnert mich gerade daran, wie oft ich mich über LabVIEW aufrege, wenn es mal wieder abschmiert oder ich nicht weiterkomme. Aber umso größer die Freue, wenn es dann tut.
Seiten: 1 2 3
Referenz-URLs