17.11.2010, 11:51
|
Matze
LVF-Team
Beiträge: 1.027
Registriert seit: Apr 2010
20xx
2010
DE_EN
7xxxx
Deutschland
|
Zwei While Schleifen Parallel eine Bedingung zur Beendung
@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.
|
|
|
17.11.2010, 11:53
(Dieser Beitrag wurde zuletzt bearbeitet: 17.11.2010 11:54 von Matze.)
|
|
|
17.11.2010, 11:53
|
TSC
LVF-Team
Beiträge: 1.882
Registriert seit: Sep 2008
LV 2018 SP1
2008
EN
52379
Deutschland
|
Zwei While Schleifen Parallel eine Bedingung zur Beendung
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!
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" ( Konrad Zuse)
|
|
|
17.11.2010, 11:56
|
TSC
LVF-Team
Beiträge: 1.882
Registriert seit: Sep 2008
LV 2018 SP1
2008
EN
52379
Deutschland
|
Zwei While Schleifen Parallel eine Bedingung zur Beendung
@Mechatronik-Ingenieur:
das hab ich tatsächlich überlesen!
Naja, nu gibts hoffentlich genügend Alternativen!
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" ( Konrad Zuse)
|
|
|
17.11.2010, 14:11
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
Zwei While Schleifen Parallel eine Bedingung zur Beendung
' schrieb:Ähm, genau das gleiche wurde hier doch genannt oder nicht (neben den Meldern)?
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?
|
|
|
17.11.2010, 14:15
|
TSC
LVF-Team
Beiträge: 1.882
Registriert seit: Sep 2008
LV 2018 SP1
2008
EN
52379
Deutschland
|
Zwei While Schleifen Parallel eine Bedingung zur Beendung
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.
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" ( Konrad Zuse)
|
|
|
17.11.2010, 14:22
(Dieser Beitrag wurde zuletzt bearbeitet: 17.11.2010 14:35 von Matze.)
|
Matze
LVF-Team
Beiträge: 1.027
Registriert seit: Apr 2010
20xx
2010
DE_EN
7xxxx
Deutschland
|
Zwei While Schleifen Parallel eine Bedingung zur Beendung
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:
|
|
|
17.11.2010, 16:50
(Dieser Beitrag wurde zuletzt bearbeitet: 17.11.2010 16:56 von Lucki.)
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
Zwei While Schleifen Parallel eine Bedingung zur Beendung
Ich hatte mir zum sofortigen Stop mal das hier ausgedacht:
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)
|
|
|
17.11.2010, 17:14
|
TSC
LVF-Team
Beiträge: 1.882
Registriert seit: Sep 2008
LV 2018 SP1
2008
EN
52379
Deutschland
|
Zwei While Schleifen Parallel eine Bedingung zur Beendung
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.
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" ( Konrad Zuse)
|
|
|
17.11.2010, 17:31
|
Matze
LVF-Team
Beiträge: 1.027
Registriert seit: Apr 2010
20xx
2010
DE_EN
7xxxx
Deutschland
|
Zwei While Schleifen Parallel eine Bedingung zur Beendung
' 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.
|
|
|
| |