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 

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!

21.08.2008, 09:47
Beitrag #1

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Stoppen
Ich eröffne mal diesen Tread, weil es erfahrungsgemäß nicht so einfach ist und hier viel danach gefragt wird, ein komplexes VI zu beenden. Also z.B eines mit mehreren unabhängigen Schleifen oder wenn auf Daten gewartet wird, die aber nicht kommen. Ich schlage vor, daß alle mitmachen, die eine guten Tipp auf Lager haben. Ich selbst werde nur mit 2-3 Tipps aufwarten, die ich hier als Antworten anhänge.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
21.08.2008, 10:03 (Dieser Beitrag wurde zuletzt bearbeitet: 21.08.2008 10:04 von Lucki.)
Beitrag #2

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Stoppen
Tipp 1: Beenden von mehreren unabhängigen Schlefen.

Bei Abstoppen eines VIs mit mehreren unabhängigen Schleifen hat man zwei Probleme:
1.) Es muß jede einzelne Scheife gestoppt werden
2.) Bei langen Wait-Zeiten in einer oder mehreren dieser Schleifen kann es nervend sein, bis der Stop wirksam wird.

Mit dieser Struktur läßt sich das lösen:

   

Statt der Wait-Funktion in den Schleifen wird hier die Funktion "Warten auf Occurences" verwendet. Sie ist hier weiter nichts als eine "unterbrechbare Wait-Funktion"
Solange keine Occurence eintrtt, ist es eine eine normale Wait-Funktion. Tritt die Occurence ein, dann wird erstens das Warten sofort unterbrochen, und zweitens ist der boolsche Ausgang dann true, was hier zum gewünschten Schleifenabbruch führt.
Die Occurrence selbst wird durch den Stopp-Knopf ausgelöst.
Occurences werden allerdings von NI nicht mehr zur Verwendung in neuen VIs empfohlen. Man kann dafür selbsverständlich auch Melder verwenden, nur sieht es dann etwas komplizierter aus, da Melder (außer der reinen Meldefunktion) zusätzlich für Datentransport konzipiert sind, der hier gar nicht stattfindet.
Lv80_img
Sonstige .vi  Stop_mehrere_Schleifen.vi (Größe: 14,83 KB / Downloads: 679)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.08.2008, 10:07 (Dieser Beitrag wurde zuletzt bearbeitet: 21.08.2008 12:27 von eg.)
Beitrag #3

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Stoppen
Hier auch mein Vorschlag.

Wenn die Producer Loop beendet wird, beenden sich gleich alle Consumer Loops.

Lv86_img
Sonstige .vi  Stop1.vi (Größe: 9,29 KB / Downloads: 627)

Lv80_img
Sonstige .vi  Stop1_lv80.vi (Größe: 11,01 KB / Downloads: 528)


Angehängte Datei(en) Thumbnail(s)
   

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.08.2008, 10:13 (Dieser Beitrag wurde zuletzt bearbeitet: 21.08.2008 12:26 von eg.)
Beitrag #4

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Stoppen
Mein Vorschlag 2 ist die Benutzung von Headers in den zu übertragenden Daten.

Hier wird in den Daten vom "Type 1" ein boolscher Wert übertragen. Wenn dieser Wert TRUE ist, bedeutet das für die untere Schleife, dass sie sich jetzt beenden soll.

Man kann auch "Type 1" in "Exit" umbenennen, damit es verständlicher wird.

Lv85_img
Sonstige .vi  Main.vi (Größe: 17,9 KB / Downloads: 579)

Lv80_img
Sonstige .vi  Main_lv80.vi (Größe: 14,2 KB / Downloads: 541)


Angehängte Datei(en) Thumbnail(s)
       

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.08.2008, 11:50
Beitrag #5

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.700
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Stoppen
' schrieb:Mein Vorschlag 2 ist die Benutzung von Headers in den zu übertragenden Daten.
Prinzipiell mach ich das auch so.

Da ich ja alles in Klassen (eine Klasse = ein SubVI) mache und die einen bestimmten Aufbau haben - habe ich das Problem mit Stoppen eigentlich nicht. Zumindest sehe ich da keine Probleme. Die Klasse läuft in einer While-Schleife mit Case-Sequenz. Hauptaufgabe der Klasse ist das Samplen von Messwerten. Das geschieht in einem Raster von 50ms. Demzufolge wird die Steuerqueue alle 50ms einmal abgefragt. Je nach Aufgabe (Exit!) gehts halt weiter.

Wenn sich innerhalb eines VIs mehrere parallele While-Schleifen befinden, dann stopp ich die per lokaler Variable.

Der allgemeine Ablauf ist wie folgt: Queues zum Steuern der Klassen erstellen, Klassen ausführen, MainSequenz mit den drei While-Schleifen ausführen, Programm beenden: Alle Klassen exit, Queues löschen, VI beenden.

Da ich sowieso überall Wartezeiten von 250ms drinn hab, spielen die 50ms Reaktionszeit innerhalb der Klassen keine Rolle.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.12.2008, 18:38 (Dieser Beitrag wurde zuletzt bearbeitet: 27.12.2008 10:52 von rasta.)
Beitrag #6

rasta Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 245
Registriert seit: Oct 2006

LabVIEW 2009-2017
2006
EN

53909
Deutschland
Stoppen
Hallo zusammen,
im Anhang befindet sich noch eine alternative Möglichkeit einzelne bzw. mehrere parallele Schleifen zu beenden.

Falls wir uns nicht mehr Tippen wünsche Ich allen
frohe Feiertage und alles Gute für´s Neue Jahr.

Gruß
Ralf

Lv85_img

Edit:Rube Goldberg korrigiertWink


Angehängte Datei(en)
Sonstige .vi  Stop_mehrereSchleifen_TimedLoops.vi (Größe: 166,36 KB / Downloads: 695)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Gehe zu: