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 

mehrere while-Schleifen stoppen



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!

15.02.2011, 15:39
Beitrag #1

Jibiel Offline
LVF-Neueinsteiger


Beiträge: 6
Registriert seit: Jan 2011

9
2010
de


Deutschland
mehrere while-Schleifen stoppen
Ich benutze in meinem Programm mehrere while-Schleifen, die parallel laufen.
Sie werden alle bei Programmstart gestartet und sollen bei Programmende auch alle beendet werden indem man auf einen einzigen stop button klickt.
Das habe ich nach dieser Anleitung hier auch soweit hingekriegt.

http://digital.ni.com/public.nsf/allkb/2...6D00711AAE

Es werden aber nur dann alle while schleifen beendet, wenn ich mindestens etwa 0,5 sek auf den stop button klicke. Wenn die Klickdauer kürzer ist, dann passiert einfach gar nichts.
Hat das damit zu tun, dass meine while schleifen erst nach 0,5 sek einen neuen Schleifendurchlauf beginnen und sie deshalb den boolschen Wert true nicht rechtzeitig zum neuen Durchlauf erhalten?

Wie könnte ich das Problem lösen?

Liebe Grüße
Jasmin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
15.02.2011, 16:00
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: mehrere while-Schleifen stoppen
Hallo Jasmin,

Zitat:wenn ich mindestens etwa 0,5 sek auf den stop button klicke
Das dürfte an einem falschen Switch-Mode deines Buttons liegen. Stelle den mal von "Switch, solange gedrückt" auf "Switch on click"...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.02.2011, 16:05
Beitrag #3

Jibiel Offline
LVF-Neueinsteiger


Beiträge: 6
Registriert seit: Jan 2011

9
2010
de


Deutschland
RE: mehrere while-Schleifen stoppen
Wenn ich ihn auf "Beim Drücken schalten" stelle, dann bleibt der stop button aber auf true.
Ich will ihn ja am Ende auf false haben, sonst wird beim Neustart des Programms alles sofort wieder beendet da der Button noch auf true ist.
Den Button manuell vor Neustart auf false zu stellen ist nervig.
Wenn es dafür eine Möglichkeit gäbe, den automatisch am Ende auf false zu stellen, wäre das natürlich auch eine Lösung. Aber ich weiß nicht wie.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.02.2011, 16:08
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: mehrere while-Schleifen stoppen
Hallo,

Zitat:Ich will ihn ja am Ende auf false haben, sonst wird beim Neustart des Programms alles sofort wieder beendet da der Button noch auf true ist.
Dann setze ihn doch beim Programm-Start explizit auf FALSE...
Oder verwende einen Melder/eine FGV, um den Status des Buttons für alle Schleifen zwischenzuspeichern. So benötigt man keine lokalen Variablen mehr und kann die einzelnen Schleifen leicht in subVIs verfrachten...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.02.2011, 08:50 (Dieser Beitrag wurde zuletzt bearbeitet: 16.02.2011 08:58 von Lucki.)
Beitrag #5

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: mehrere while-Schleifen stoppen
In dem zitierten Beispiel wurde vergessen zu sagen, daß das so nur mit den dort verwendeten kurzen Wartezeiten von 10ms zuverlässig funktioniert, da es dann nicht möglich ist, innerhalb dieser Zeit den Schaltknopf wieder loszulassen.
Die lehrbuchmäßig wasserdichte Lösung für das Stoppen von mehreren Schleifen sieht hingegen so aus:
   
wobei das nur eine von vielen Möglichkeiten ist. Der Grundgedanke ist: Das Control wird erst dann wieder zurückgesetzt - und zwar mit einer lokalen Variablen - wenn alle Schleifen beendet sind. (Man könnte z.B. auch ein Sequenzstruktur verwenden)
Ob man den Modus "Bei Drücken..." oder "Bei Loslassen.."verwendet, ist lediglich eine Frage der Bedien-Optik. Ein VI, dass mit einem Modus nicht funktioniert, kann man nicht mit Umstellen auf den anderen Modus reparieren. Ebenso gilt umgekehrt: Wenn ein VI funktioniert, dann mit beiden Modi gleichermaßen.
Die einfachere Lösung ist natürlich, den Schalter bei Stop einfach gedrückt zu lassen und erst beim nächsten Start rückzusetzen. Das empfinde ich als unschöne Lösung, aber die Geschmäcker mögen halt verschieden sein.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.02.2011, 10:38
Beitrag #6

Jibiel Offline
LVF-Neueinsteiger


Beiträge: 6
Registriert seit: Jan 2011

9
2010
de


Deutschland
RE: mehrere while-Schleifen stoppen
Danke schonmal für die Lösungsvorschläge.
@GerdW Wie setze ich einen Button bei Programmstart automatisch zurück? Hab da leider auch nichts zu gefunden.
FGVs hören sich ziemlich kompliziert an für mein eigentlich einfaches Problem.

@Lucki Wie heißt das Element aus deinem Beispiel, das nach den Schleifen den Stopp-Wert buffert? Ich hab dieses Element nirgendswo finden können.
Warum hat die Variable Stopp überall ein Häuschen links neben dem Namen?


Kleine Frage am Rande:
Warum erstellt Labview eigentlich automatisch einen Stopp-Button? Kann man das ganze Programm inklusive aller Schleifen nicht einfach mit dem roten Knopf beenden? Hab das bisher immer nur so gemacht, wenn das Programm sich anders nicht mehr beenden ließ. Oder birgt das Risiken mit irgendwelchen nicht gelöschten Variablen, etc.?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.02.2011, 10:42
Beitrag #7

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: mehrere while-Schleifen stoppen
Hallo,

Zitat:bei Programmstart automatisch zurück
Mit einer lokalen Variable...

Zitat:Wie heißt das Element aus deinem Beispiel, das nach den Schleifen den Stopp-Wert buffert?
Lokale Variable. Die sehen bei LV2010 so aus...

Zitat:Warum erstellt LabVIEW eigentlich automatisch einen Stopp-Button?
Bei mir nicht...

Zitat:nicht einfach mit dem roten Knopf beenden
To stop a program with "Abort" is like using a tree to stop a car. Alles klar?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.02.2011, 10:46
Beitrag #8

Jibiel Offline
LVF-Neueinsteiger


Beiträge: 6
Registriert seit: Jan 2011

9
2010
de


Deutschland
RE: mehrere while-Schleifen stoppen
Ich meinte das Element, wo links drei Kästen sind und rechts ein ^.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.02.2011, 10:48 (Dieser Beitrag wurde zuletzt bearbeitet: 16.02.2011 10:51 von GerdW.)
Beitrag #9

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: mehrere while-Schleifen stoppen
Mehrfacharithmetik (numerische oder boolsche Palette), konfiguriert als Mehrfach-NAND...
(dient hier nur dazu, auf alle 3 Schleifen zu warten und gleich noch das benötigte FALSE auszuspucken...)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.02.2011, 10:48 (Dieser Beitrag wurde zuletzt bearbeitet: 16.02.2011 10:50 von NWOmason.)
Beitrag #10

NWOmason Offline
Simultator
*****


Beiträge: 1.078
Registriert seit: Dec 2010

2012.SP1
2008
EN

93047
Deutschland
RE: mehrere while-Schleifen stoppen
(16.02.2011 10:38 )Jibiel schrieb:  Wie setze ich einen Button bei Programmstart automatisch zurück? Hab da leider auch nichts zu gefunden.
z.B. mittels Lokaler Variable, welche so programmatisch eingepflegt wird, dass sie gemäß Datenfluss als erstes vor allen anderen Oprationen (Also zum Programmstart) ausgeführt.


(16.02.2011 10:38 )Jibiel schrieb:  Wie heißt das Element aus deinem Beispiel, das nach den Schleifen den Stopp-Wert buffert? Ich hab dieses Element nirgendswo finden können.
Mehrfacharithmetik


(16.02.2011 10:38 )Jibiel schrieb:  Warum hat die Variable Stopp überall ein Häuschen links neben dem Namen?
Das ist eine lokale Variable.


(16.02.2011 10:38 )Jibiel schrieb:  Kleine Frage am Rande:
Warum erstellt Labview eigentlich automatisch einen Stopp-Button? Kann man das ganze Programm inklusive aller Schleifen nicht einfach mit dem roten Knopf beenden? Hab das bisher immer nur so gemacht, wenn das Programm sich anders nicht mehr beenden ließ. Oder birgt das Risiken mit irgendwelchen nicht gelöschten Variablen, etc.?

Siehe meine Signatur Big Grin

Beste Grüe,
NWO

@Edit: Ich sehe schon, ich bin für das Forum hier viel zu langsam Sad

9 von 10 Stimmen in meinem Kopf sagen: Ich bin nicht verrückt,
die andere summt die Melodie von Tetris
.

NI schrieb:To use the abort button is like using a tree to stop a car!

(20.01.2012 11:02 )NWOmason schrieb:  Getting Started with NI LabVIEW Student Training
http://zone.ni.com/devzone/cda/tut/p/id/7466

Introduction to NI LabVIEW - Learn LabVIEW Basics
http://www.ni.com/gettingstarted/labviewbasics/

Top 5 der Empfehlungen für LabVIEW-Einsteiger
http://www.ni.com/newsletter/51735/de/
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Schleife stoppen in subVI illy777 31 13.828 14.09.2020 18:00
Letzter Beitrag: illy777
  While Schleife stoppen itz_me 4 5.956 13.04.2017 14:47
Letzter Beitrag: itz_me
  X Bildlaufleiste bei Signalverlaufsdiagram stoppen Carp 18 10.806 10.06.2016 09:57
Letzter Beitrag: Carp
  Frage zu Lauflicht stoppen(vorübergehend) fuego50 4 4.412 23.05.2016 17:05
Letzter Beitrag: fuego50
  Referenziertes VI stoppen marhi 7 5.952 08.03.2016 12:07
Letzter Beitrag: rolfk
  Parallele Schleifen beliebig stoppen/neustarten buettnerstefan 3 4.986 03.06.2015 15:23
Letzter Beitrag: buettnerstefan

Gehe zu: