INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Sofortiger Stop einer While-Schleife in einer SubVi durch MainVi



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!

11.05.2010, 23:24
Beitrag #5

bluesaturn Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 145
Registriert seit: Jan 2010

2009
2010
en

-
United Kingdom
Sofortiger Stop einer While-Schleife in einer SubVi durch MainVi
Hallo IchSelbst und Lucki,
danke zunächst für Eure Antworten und Hinweise.
Da habe ich mich ja wieder schön in die Nesseln gesetzt. Ich dachte, das wäre einfacher :-) Weit gefehlt.
Vorabbitte: Ich kann es zuhause gerade nicht testen, erst wieder am Freitag.

' schrieb:Das kann ich nachvollziehen.
Die erste Operation, die in der While-Schleife gemacht wird, ist das Auslesen des Stopp-Buttons ("Stop Jiggle M1" im SubVI "Autofill_v6_LV_2009.vi"). Danach wird der Rest der While-Schleife bearbeitet. Am Ende der While-Schleife wird der Wert des Stopp-Buttons überprüft => ggf. Ende.

Wenn du den Button genau zu dem Zeitpunkt anklickst, nachdem der Button ausgelesen wurde - läuft die While-Schleife noch genau zweimal durch. Du kannst folgendes probieren: Genau zu dem Zeitpunkt, wenn der Button ausgewertet werden soll, wird er auch auslesen. Also: Erst wenn die While-Schleife (fast) komplett abgearbeitet ist, wird der Stopp-Button ausgelesen. Das kann man durch eine Sequenzierung (notfalls mittels einer Sequenzstruktur) erreichen.

Ich verstehe jetzt besser, wie die while-Schleife abläuft.
Besteht trotzdem nicht die Möglichkeit, die while-Schleife an jeder beliebigen Stelle sofort zu unterbrechen? Edit: Das sehe ich dann wohl bei Lucki.
Wenn ich das richtig sehe, schlägst du vor, daß die while-Schleife mindestens einmal fast komplett abgearbeitet wird?

' schrieb:.
Aber den Aufruf dieses Stop-SubVIs kann man außerhalb der While-Schleife machen. Das spart den IF-Case in der Schleife.
Wäre das in etwa eine Bedingung wie "Die Schleife bricht ab, als fuehre die Stop.vi aus?"
Ich glaube sogar, daß diese Stop.vi vielleicht nicht mal in der Autofill_v6_LV_2009.vi sitzen muss. In der Experiment.vi gibt es ja schon einen Stop-Button, der dort die innere Schleife abbricht und somit die Pumpe anhält. (Ich wollte ja viele Stop-Buttons vermeiden). Nur muß ich noch herausfinden, wie ich das Signal von der SubVi in die Main.vi übertrage.
Edit: Ah, ich sehe es gerade in deinem Bild. Die Schleife bricht ab und wegen Datenfluß wird die Pump via Stop.vi angehalten. Ist das korrekt?
Außerdem könnte ich ja diese Referenz vielleicht mit dem anderen Stop-Button aus der Main.vi verknüpfen. Wie du sagst, von außen abbrechen ...

Grundsätzliche Frage: Ich dachte, ich kann Sub.Vis mehr oder weniger unabhängig von Main.vis bauen und diese dann in die Main.vi einfügen. Das erscheint mir jedoch nun eine schlechte Idee, weil man viel zu viel ändern muss. Richtig?


' schrieb:.
Warum setzt du das SubVI "Autofill_v6_LV_2009.vi" nicht auch in einen IF-Case wie "Withdraw Control" auch?
Das hatte ich zuvor auch gemacht, aber dann dachte ich mir, ich könnte ja mal die event structure benutzenWink

Zum Bild:
IchSelbst, ich habe mir das Bild gerade angeschaut und werde es dann nachbauen. Ich glaube, der grüne error-Draht ist für die Sequenzierung verantwortlich. Wäre das eigentlich auch mit diesen "Filmstreifen" aka Sequenz gegangen?

Warum hast du diese error-case struktur aus der Autofill.vi herausgenommen? Wann sollte man diese besser einsetzen?

Danke für deine Antwort! Bringt schon mal wieder mehr Licht in LabVIEW.


' schrieb:Wie man die Schleife sofort beendet und wie man sie vom Haupt-VI aus beendet sind 2 verschiedene Fragen. Ich gebe hier nur mal einen Tip zur ersten Frage:
Ereignisstruktur verwenden mit 2 Cases: Timeout und Stop.
Im Timout-Case befindet sich eine Zustandmaschine mit 2 Zuständen, entsprechend den beiden Zuständen der Pumpe.
Im Stop-Case findet wird die Pumpe gestoppt.
Ich habe mit dem VI nur das Gerüst skizziert.
Der Hauptgedanke ist, daß die Wartezeiten als Timeouts realsiert sind und nicht als Waits. Nur so wirkt der Stop sofort.
lv2009 [attachment=55010:Pumpe.vi]
Vielen Dank. Ich hoffe, ich kapiere das am Freitag. :-)
Ich kann leider deine vi an diesem Rechner nicht sehen, aber welche Wartezeiten meinst du bitte?
Zur zweiten Frage: Ich glaube, daß man mit Referenzen arbeiten muss.

Nochmals danke schön und ich werde am Freitag weiter knobeln.

Viele Grüße
Blue
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Nachrichten in diesem Thema
Sofortiger Stop einer While-Schleife in einer SubVi durch MainVi - bluesaturn - 11.05.2010 23:24

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Eigenversuch einer ComboBox - Optimierung und Kritik gesucht TpunktN 2 2.456 30.05.2023 07:56
Letzter Beitrag: TpunktN
  HTML-Datei - Name einer PNG bzw. JPG ändern Dsans 1 2.144 09.02.2023 04:42
Letzter Beitrag: Martin.Henz
Music FGEN Erzeugung eines Signalverlaufs anhand einer Mathematischen Funktion DavidStefan 11 7.452 29.05.2021 07:03
Letzter Beitrag: GerdW
  MainVI sucht nach gelöschter .lvlib Bibliothek kwz 5 4.102 04.05.2021 16:11
Letzter Beitrag: kwz
  Mehrere Spitzenwerte aus einer Messreihe erkennen niklas2016 8 5.366 15.02.2021 14:27
Letzter Beitrag: BNT
  benutzerdefinierte Error Codes in einer zentralen Datei im Projekt verwalten t.hipp 6 6.720 26.10.2020 16:08
Letzter Beitrag: Jessel_de

Gehe zu: