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!

14.05.2010, 15:29
Beitrag #11

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
' schrieb:Der Ansatz müßte modifiziert werden, wenn das Sub-VI den Stop als Ereignis behandeln soll, welches dann zum sofortigen Stop führt.
Das Thema: "Wie löst man im Haupt-VI auf Knopfdruck ein Ereignis (Stop) im Sub-VI aus?" hatten wir hier schon, gaube ich. Im Moment fällt mir die Lösung nicht ein, aber vielleicht liest das hier jemand, der das auf der Palette hatMellow


Hallo Lucki.
Das habe ich eben auch herausgefunden, daß IchSelbst Ansatz mir das Stopen nicht aus der Main.vi erlaubt.
Kann es sein, daß du diesen Thread meinst? SubVi abbrechen
Ich glaube, ich muss folgenden Vorschlag von Jens nehmen, zumindest probiere ich das gleich mal aus.
Beitrag 8 von Jens

Viele Gruesse
blue
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
14.05.2010, 15:43
Beitrag #12

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.696
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Sofortiger Stop einer While-Schleife in einer SubVi durch MainVi
' schrieb:Nachtrag: Wenn ich in Autofill_v6_LV2009_v5.vi -1 durch -0 und die beiden Zahlen mit einem Gleichheitszeichen vergleiche, klappt das Durchfahren eines ganzen Zyklus, also einmal links, einmal rechts. Nur zaehlt das i dann bis 2 hoch. Es gibt also mindestens fuer die Werte 0,1,2.
Klar. Der Ablauf ist so:
While-Schleife starten (i=0): 2 Sekunden warten - Timeout-Case abarbeiten mit Richtung 1
Zweiter Durchlauf (i=1) : 2 Sekunden warten - Timeout-Case abarbeiten mit Richtung 2
Dritter Durchlauf (i=2): 2 Sekunden warten - Timeout-Case abarbeiten mit Richtung 1
While-Schleife beenden.
Nach dem Ende wird die Pumpe sofort gestoppt. Dass die Pumpe in Richtung 1 geschaltet wurde, stellt du also gar nicht mehr fest.

Und das Element Metronom ist in der While-Schleife sinnlos.


' schrieb:Die Sanduhr bei der Eventstructure ist in blau. Es scheint auf eine Integer hinzudeuten. Meine Zeit ist im Format einer Double. Ich konnte die Zeit an die Sanduhr binden, doch ist das richtig, wenn dort zwei verschiedene Datentypen aufeinandertreffen oder muss ich die Zeit als Double noch vorher umwandeln?
Es scheint nicht nur ein Integer, es ist ein Integer.
Eine explizite Anpassung musst du nicht unbedingt machen. Das macht der rote Punkt, in den der gelbe Draht reingeht.

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
14.05.2010, 16:09
Beitrag #13

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
' schrieb:Klar. Der Ablauf ist so:
While-Schleife starten (i=0): 2 Sekunden warten - Timeout-Case abarbeiten mit Richtung 1
Zweiter Durchlauf (i=1) : 2 Sekunden warten - Timeout-Case abarbeiten mit Richtung 2
Dritter Durchlauf (i=2): 2 Sekunden warten - Timeout-Case abarbeiten mit Richtung 1
While-Schleife beenden.
Nach dem Ende wird die Pumpe sofort gestoppt. Dass die Pumpe in Richtung 1 geschaltet wurde, stellt du also gar nicht mehr fest.

D.h. die Timeout-Cases werden solange abgearbeitet, bis die Warezeit von 2 Sekunden in der naechsten Iteration vergangen ist.
Eventuell muss ich dann doch wieder zu urspruenglichen Version von oben mit dem Time Delay zurueckkehren, wenn der ganze Prozess mit dem Roentgenstrahl getriggert werden soll. Mal sehen....

' schrieb:Und das Element Metronom ist in der While-Schleife sinnlos.

Warum, ich dachte, das muss in while-Schleifen gesetzt werden?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.05.2010, 16:18
Beitrag #14

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.696
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Sofortiger Stop einer While-Schleife in einer SubVi durch MainVi
' schrieb:D.h. die Timeout-Cases werden solange abgearbeitet, bis die Warezeit von 2 Sekunden in der naechsten Iteration vergangen ist.
Nein.
Der Timeoutcase wird dann genau ein einziges Mal abgearbeitet, wenn für die Dauer der Timeoutzeit kein anderer Event, der in der Eventliste eingetragen ist, eingetreten ist. Es passiert also erstmal 2 Sekunden lang gar nichts. Dann findet der Timeout-Case statt.

Zitat:Warum, ich dachte, das muss in while-Schleifen gesetzt werden?
Metronome (und WaitMS-VIs) sind nur dann notwendig, wenn While-Schleifen ansonsten unendlich schnell durchlaufen würden. Folge wäre eine Überlastung des Prozessors.
Ist in der While-Schleife aber eine Event-Sequenz mit oder ohne Timeout, braucht man diese Wartezeit nicht, da der Prozessor nicht überlast werden kann.

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
14.05.2010, 16:29 (Dieser Beitrag wurde zuletzt bearbeitet: 14.05.2010 16:30 von bluesaturn.)
Beitrag #15

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
' schrieb:Nein.
Der Timeoutcase wird dann genau ein einziges Mal abgearbeitet, wenn für die Dauer der Timeoutzeit kein anderer Event, der in der Eventliste eingetragen ist, eingetreten ist. Es passiert also erstmal 2 Sekunden lang gar nichts. Dann findet der Timeout-Case statt.
Nun die entscheidende Frage: Wie lange pumpt die Pumpe dann in eine Richtung?

Ich habe es so verstanden, dass bei der naechsten Iteration genau "Timeoutzeit" gewartet wird, bis der naechste Timeout-Case, diesmal mit umgekehrter Richtung ablaeuft. Das heisst wiederrum, der vorherige Timeout-Case laeuft solange, bis der naechste gestartet wird, naemlich nach x sec der Timeoutzeit.

Diese Start.vi in der Case-Struktur im Timeout-Case setzt die Pumpe nur unendlich lange in Bewegung. Weil aber nach der Timeoutzeit von 2 Sekunden in der naechsten Iteration ein erneuter Start-Befehl aber mit umgekehrter Richtung kommt, kehrt die Pumpe die Richtung um.

Ich muss mal sehen, ob das so gut ist fuer meine Anwendung. Es kann ja auch passieren, dass ich einmal 10 Sekunden als Timeoutzeit habe und die muss ich vorher immer warten, bis irgendetwas passiert. Ich kann noch nicht abschaetzen, ob das sinnvoll ist.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.05.2010, 17:05
Beitrag #16

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
' schrieb:Der Ansatz müßte modifiziert werden, wenn das Sub-VI den Stop als Ereignis behandeln soll, welches dann zum sofortigen Stop führt.
Das Thema: "Wie löst man im Haupt-VI auf Knopfdruck ein Ereignis (Stop) im Sub-VI aus?" hatten wir hier schon, gaube ich. Im Moment fällt mir die Lösung nicht ein, aber vielleicht liest das hier jemand, der das auf der Palette hatMellow

Hallo Lucki, magst du dir das vielleicht bitte anschauen?

Main.vi ist Experiment_v1.vi und SubVi ist Autofill_v6_LV2009_v6.vi (Lv09_img2).
Ich habe mich bei Jens orientiert (Beitrag8).
Der einzige Unterschied ist, dass Jens in der Main die subvi in eine Eventstruktur verlagert hat und ich nicht. Funktioniert das "Stop inner" deswegen nicht und ich kann die SubVi nicht abbrechen?
Ggf ich brauche eine Evenstruktur in der Main.vi, benoetige ich dann auch zwei Eventcases, wenn ich erst die SubVi starten will und spaeter beliebig stoppen moechte, d.h. Value change von "Jiggle M1" und value change von "Stop inner"?

Vielen Dank.
Blue


Angehängte Datei(en)
Sonstige .vi  Autofill_v6_LV2009_v6.vi (Größe: 31,45 KB / Downloads: 196)

Sonstige .vi  Experiment_v1.vi (Größe: 38,58 KB / Downloads: 205)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
14.05.2010, 17:53
Beitrag #17

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
' schrieb:Ich habe mich bei Jens orientiert (Beitrag8).
Der einzige Unterschied ist, dass Jens in der Main die subvi in eine Eventstruktur verlagert hat und ich nicht. Funktioniert das "Stop inner" deswegen nicht und ich kann die SubVi nicht abbrechen?
Ggf ich brauche eine Evenstruktur in der Main.vi, benoetige ich dann auch zwei Eventcases, wenn ich erst die SubVi starten will und spaeter beliebig stoppen moechte, d.h. Value change von "Jiggle M1" und value change von "Stop inner"?

Ich habe das ausprobiert, aber das klappt leider auch nicht. Sorry, kann den vorherigen Beitrag nicht editieren.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.05.2010, 18:11
Beitrag #18

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.696
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Sofortiger Stop einer While-Schleife in einer SubVi durch MainVi
' schrieb:Nun die entscheidende Frage: Wie lange pumpt die Pumpe dann in eine Richtung?
Die Pumpe pumpt immer so lange in eine Richtung, wie die Timeoutzeit lang ist. Also, Antwort anders ausgedrückt: zwei Sekunden.

Zitat:Ich habe es so verstanden, dass bei der naechsten Iteration genau "Timeoutzeit" gewartet wird, bis der naechste Timeout-Case, diesmal mit umgekehrter Richtung ablaeuft. Das heisst wiederrum, der vorherige Timeout-Case laeuft solange, bis der naechste gestartet wird, naemlich nach x sec der Timeoutzeit.
Deine Ausdruckweise mit der deutschen Sprache stimmt nicht überein mit der Funktionsweise einer Event-Sequenz.
Ein Timeout-Case läuft nicht ständig ("der vorherige Timeout-Case laeuft solange, bis der naechste gestartet wird"). Ein Timeout-Case ist ein einmaliges Ereignis und dauert weniger als eine Millisekunde. Was 2 Sekunden dauert ist der Zustand, der durch den Code im Timeout-Case erzeugt wird: "Pumpe vorwärts laufen" (beachte: im Timeout wird "Pumpe vorwärts schalten" gemacht, danach heißt es "Pumpe vorwärts laufen"). Nach diesen 2 Sekunden erfolgt das nächste Timeout-Event.

Zitat:Diese Start.vi in der Case-Struktur im Timeout-Case setzt die Pumpe nur unendlich lange in Bewegung. Weil aber nach der Timeoutzeit von 2 Sekunden in der naechsten Iteration ein erneuter Start-Befehl aber mit umgekehrter Richtung kommt, kehrt die Pumpe die Richtung um.
So ist es richtig ausgedrückt.
Hinweis: Es ist in erster Linie eine Event-Struktur, dann erst eine Case-Struktur.

Zitat:Ich muss mal sehen, ob das so gut ist fuer meine Anwendung. Es kann ja auch passieren, dass ich einmal 10 Sekunden als Timeoutzeit habe und die muss ich vorher immer warten, bis irgendetwas passiert. Ich kann noch nicht abschaetzen, ob das sinnvoll ist.
Du kannst folgendes machen:
Mach ein Schieberegister, dessen Ausgang auf den Timeout-Eingang geht. Das Schieberegister belegst du außerhalb der While-Schleife mit 0 vor. Im Timeout-Event gibst du dann die "richtige" Timeout-Zeit auf das Schieberegister, sodass ab der nächsten Iteration immer die gewünschte zeitgewartet wird. Durch die 0 wird die Pumpe praktisch sofort geschaltet, wenn das SubVI gestartet wird.

Beachte weiterhin, dass mittels eines Benutzerevents (den Post dazu hast du ja schon gefunden) der Timeout praktisch umgangen werden kann.

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
14.05.2010, 18:33 (Dieser Beitrag wurde zuletzt bearbeitet: 14.05.2010 18:35 von IchSelbst.)
Beitrag #19

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.696
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Sofortiger Stop einer While-Schleife in einer SubVi durch MainVi
' schrieb:Ich habe das ausprobiert, aber das klappt leider auch nicht. Sorry, kann den vorherigen Beitrag nicht editieren.
Naja, so wird das ja auch gar nix. Du musst dich schon an die Vorschrift halten, wie Benutzerevents zu handhaben sind.

Ich hab die wichtigen Änderungen nur mal schnell rein gemacht. Anständig musst du das selbst machen.


Angehängte Datei(en)
Sonstige .vi  Autofill_v6_LV2009_v6.vi (Größe: 24,16 KB / Downloads: 209)

Sonstige .vi  Experiment_v1_1.vi (Größe: 26,33 KB / Downloads: 196)

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
15.05.2010, 15:39 (Dieser Beitrag wurde zuletzt bearbeitet: 16.05.2010 14:39 von Lucki.)
Beitrag #20

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Sofortiger Stop einer While-Schleife in einer SubVi durch MainVi
Ich habe jetzt mal - in starker Anlehenung an das Beispiel von IchSelbst und auch mehr für eigene Lernzwecke als für Euch LabVIEWer hinter euren Bildschirmen draußen auf dem Lande - für mein weiter oben gepostetes einfaches Beispiel gezeigt, wie man das freilaufende SubVI "Pumpe" vom MainVI "PumpeMain" aus mit beendet. (Bisher hatte ich für die gleiche Aufgabe immer Melder verwendet)
Vielleicht nützt es jemandem was oder es gibt Änderungsvorschläge.
lv2009
Sonstige .vi  PumpeMain.vi (Größe: 7,96 KB / Downloads: 230)

Sonstige .vi  Pumpe.vi (Größe: 11,31 KB / Downloads: 255)
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
  Eigenversuch einer ComboBox - Optimierung und Kritik gesucht TpunktN 2 2.453 30.05.2023 07:56
Letzter Beitrag: TpunktN
  HTML-Datei - Name einer PNG bzw. JPG ändern Dsans 1 2.142 09.02.2023 04:42
Letzter Beitrag: Martin.Henz
Music FGEN Erzeugung eines Signalverlaufs anhand einer Mathematischen Funktion DavidStefan 11 7.432 29.05.2021 07:03
Letzter Beitrag: GerdW
  MainVI sucht nach gelöschter .lvlib Bibliothek kwz 5 4.081 04.05.2021 16:11
Letzter Beitrag: kwz
  Mehrere Spitzenwerte aus einer Messreihe erkennen niklas2016 8 5.358 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: