LabVIEWForum.de
whileschleife nur einmal durchlaufen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: whileschleife nur einmal durchlaufen (/Thread-whileschleife-nur-einmal-durchlaufen)

Seiten: 1 2


whileschleife nur einmal durchlaufen - messbuchse - 04.06.2012 12:38

Hallo zusammen,

auch ich gehöre zu den Anfängern und schon hänge ich an der ersten Frage:

Ich möchte eine While-Schleife nur einmal durchlaufen.
Das ist mir nicht recht gelungen. Deshalb habe ich mir ein Versuchs-VI gebaut. Dort habe ich ein Verhalten festgestellt, das ich mir nicht recht erklären kann.

Schalte ich die While-Schleife auf Stopp, so wird der Zähler i auf 0 gesetzt. Er merkt sich seinen Wert also nicht.

Der Zähler innerhalb der While-Schleife läuft jedoch weiter (x + 1), obwohl die Schleife durch Stopp angehalten ist. Warum ist es dem Zähler egal, ob die While-Schleife läuft oder nicht?


Vielen Dank.

(LV2011)


RE: whileschleife nur einmal durchlaufen - NWOmason - 04.06.2012 13:04

(04.06.2012 12:38 )messbuchse schrieb:  Schalte ich die While-Schleife auf Stopp, so wird der Zähler i auf 0 gesetzt. Er merkt sich seinen Wert also nicht.

i ist auch der Iterationszähler, dieser beginnt bei Neustart immer wieder bei 0.


(04.06.2012 12:38 )messbuchse schrieb:  Der Zähler innerhalb der While-Schleife läuft jedoch weiter (x + 1), obwohl die Schleife durch Stopp angehalten ist. Warum ist es dem Zähler egal, ob die While-Schleife läuft oder nicht?

Der Zähler ist über einen FeedbackNode (gleiches Verhalten wie mit Schieberegister) gespeichert. Dieser ist solange gültig, solange das VI offen (also im Speicher) liegt.

(04.06.2012 12:38 )messbuchse schrieb:  auch ich gehöre zu den Anfängern und schon hänge ich an der ersten Frage:


Dafür gibts ein paar gute Einarbeitungslinks:

(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/

Beste Grüße,
NWO


RE: whileschleife nur einmal durchlaufen - messbuchse - 04.06.2012 14:00

Vielen Dank für die Hinweise.

Damit wird mir einiges klar, weshalb sich das VI so verhält.

Danke auch für die Links.
Hier liegt u.a. der Georgi / Metin neben mir.

Viele Grüße
messbuchse


RE: whileschleife nur einmal durchlaufen - jg - 04.06.2012 18:40

Ein wenig Offtopic2

Eine While-Schleife, die nur einmal durchlaufen werden soll: Das braucht man in LabVIEW nur bei einem FGV (Funktionales globales VI), ansonsten ist die Schleife überflüssig. Schließlich soll sie nur einmal durchlaufen werden, da kannst du sie gleich weglassen.

Gruß, Jens


RE: whileschleife nur einmal durchlaufen - messbuchse - 05.06.2012 07:43

Im Prinzip ja.

Der Hintergrund ist eine Ini-Routine, die bei einem Kaltstart einmalig das System initialisieren soll und anschließend abgeschaltet wird.

In anderen Systemen nehme ich dazu eine if-Abfrage auf ein ini-Bit und schalte damit die Initialisierung ab, während das Script, bei LV VI, weiterhin durchlaufen wird.

Anstatt über eine While-Schleife zu gehen, habe ich es jetzt über eine CASE-Anweisung realisiert, die über ein ini-Bit abgeschaltet wird.


RE: whileschleife nur einmal durchlaufen - Lucki - 05.06.2012 08:56

(04.06.2012 18:40 )jg schrieb:  Eine While-Schleife, die nur einmal durchlaufen werden soll: Das braucht man in LabVIEW nur bei einem FGV (Funktionales globales VI), ansonsten ist die Schleife überflüssig.
Ganz so ist es aber nicht, die nicht-initialiseirte, einmal durchlaufene Schlefe wird doch nicht nur für FGV gebraucht. Beispielsweise braucht man sie in jedem SubVI mit sequentieller Logik, also beispielsweise in einem Flip-Flop-SubVI, oder einem VI zur Flankenerkennung (von dem Du selbst neulich mal gesagt hast, das wäre Dein Lieblings-VI Big Grin )


RE: whileschleife nur einmal durchlaufen - jg - 05.06.2012 08:59

(05.06.2012 08:56 )Lucki schrieb:  Ganz so ist es aber nicht, die nicht-initialiseirte, einmal durchlaufene Schlefe wird doch nicht nur für FGV gebraucht. Beispielsweise braucht man sie in jedem SubVI mit sequentieller Logik, also beispielsweise in einem Flip-Flop-SubVI, oder einem VI zur Flankenerkennung (von dem Du selbst neulich mal gesagt hast, das wäre Dein Lieblings-VI Big Grin )
Das gehört für mich auch in die Gruppe der FGVs. Wink

Gruß, Jens


RE: whileschleife nur einmal durchlaufen - Lucki - 05.06.2012 10:17

(05.06.2012 08:59 )jg schrieb:  Das gehört für mich auch in die Gruppe der FGVs. Wink
Aha, und alle Punkt-zu-Punkt-Funktionen zur Signalverarbeitung ( -erzeugung, -operation, Filter, Spekrumalnalyse, Transformation, lin. Algebra, Apassung, Interpolation, Integral, Differential, Wahrscheinlichkeit und Statistik .. und weitere 15 P2P-Funktionenarten im Funktionsmenü) sind demnach auch FGV. Aber was ist mit dem Rest der Welt, wird er akzeptieren, daß Du die Definitionshoheit über FGVs beansprucht? Big Grin


RE: whileschleife nur einmal durchlaufen - jg - 05.06.2012 11:19

Ja, ich weiß, es wird haarspalterisch, aber gerade die Punkt-Zu-Punkt VIs haben in der Regel IMMER einen Init-Fall. Somit haben wir ein VI mit mind. 2 Funktionalitäten, "Init" & "neuen Wert verarbeiten", kann man also als FGV ansehen. Big Grin

Gruß, Jens


RE: whileschleife nur einmal durchlaufen - Lucki - 05.06.2012 13:31

Ich selbst verwende ja FGVs auch nur - und würde sie trotzdem noch so bezeichnen - , wenn es sinnoll ist, darin etwas mehr Funktionalität unterzugringen als nur die globale Speicherung eines Wertes. Für das Letzgenannte eignet sich besser die globale Variable. Jahrelang habe ich mich hier im Forum dahingehend ver**schen lassen, das Globale Variblen generell schlecht sind, weil langsam. Bis ich dann mal selbst nachgemessen habe - das stimmmt einfach nicht. Wahrscheinlich war das bei der Version 0.9 von Labview mal wirklich so, aber jetzt bei der V11 kann davon wirklich keine Rede mehr sein. Aber festgefahrene Meinungen sind eben kaum auszurotten.