LabVIEWForum.de
Zwei Whileschleifen beenden - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Zwei Whileschleifen beenden (/Thread-Zwei-Whileschleifen-beenden)



Zwei Whileschleifen beenden - simcum - 16.09.2020 14:46

Hallo liebe LabView Gemeinde,

ich versuche in Labview zwei parallele Whileschleifen die sich gegenseitig beenden sollen zu realisieren.

Es ist mir auch soweit gelungen, nur gefällt mir die Lösung nicht so besonders, habe es über lokale Variablen gelöst.

Siehe dazu mein Beispiel Vi im Anhang.

Die obere Schleife soll die Messschleife darstellen.
Die untere die Laufzeischleife die runtergezählt wird.

Sobald bei der Messschleife ein Fehler autreten sollte müssen beide Schleifen beendet werden.
Auch müssen beide Schleifen beendet werden wenn die untere Laufzeitschleife bei Null angekommen ist.

Wie bereits geschrieben ist mir nur die Lösung mit den lokalen Variablen eingefallen.

Habt ihr vielleicht eine elegantere Methode dafür parat?

Bedanke mich

Simcum


RE: Zwei Whileschleifen beenden - GerdW - 16.09.2020 14:50

Hallo simcum,

wozu überhaupt zwei Schleifen? Kannst du das nicht in einer Schleife erledigen?

Und wozu eine TimedWhileLoop? Reicht dir eine normale WhileLoop mit einem WaitUntil nicht aus?

So vielleicht:
[attachment=61285](AutoCleanup hat nicht so richtig funktioniert…)


RE: Zwei Whileschleifen beenden - simcum - 17.09.2020 07:01

Hallo GerW,

zwei Schleifen, weil in der Messchleife eine mehrkanälige Messung (Kanalanzahl kann variieren) duchgeführt wird.
Die genaue Messzeit kann Hardwarebedingt sich verändern, auch wenn die Kanalanzahl gleich bleibt.
Die Laufzeit muss aber kontinuierlich runtergezählt werden, würde ich es in der gleichen Schleife laufen lassen so würde
die Laufzeit mit Zeitsprüngen die der Messzeit entsprechen runtergezählt werden. Das ist nicht so optimal für die Darstellung.

Wie bereits geschrieben ist das Vi welches ich hochgeladen habe nur als Prinzipbeispiel zu betrachten.

Time Loop weil die Messungen können über mehrere Wochen gehen und die Schwankung von +- 1ms pro Schleifendurchlauf summiert sich entsprechend auf oder ab.
Hab mir auch schon überlegt die Wartezeit bis zum nächsten Vielfachen zu nutzen.


Wenn du da eine andere Idee hast nehme ich es gerne an.


Bedanke mich

Cumhur


RE: Zwei Whileschleifen beenden - GerdW - 17.09.2020 07:16

Hallo simcum,

Zitat:Habt ihr vielleicht eine elegantere Methode dafür parat?
- Notifier: da kann man auch gleich den TimeOut zur Steuerung der Iterationszeit nutzen.
- eine FGV mit einem boolschen Input und einem boolschen Output: die merkt sich intern die Stoppbedingung.

Eine FGV könnte so aussehen:
[attachment=61286]

Lokale Variablen haben einen (IMHO großen) Nachteil: sie funktionieren nur lokal im VI! Sobald du deine Schleife zur "Restzeitanzeige" in ein eigenes VI auslagern willst, bekommst du also Probleme…


RE: Zwei Whileschleifen beenden - simcum - 18.09.2020 06:46

Hallo GerdW,

vielen Dank für die Tipps.

Werde es umsetzen

Gruß

Simcum
(17.09.2020 07:16 )GerdW schrieb:  Hallo simcum,

Zitat:Habt ihr vielleicht eine elegantere Methode dafür parat?
- Notifier: da kann man auch gleich den TimeOut zur Steuerung der Iterationszeit nutzen.
- eine FGV mit einem boolschen Input und einem boolschen Output: die merkt sich intern die Stoppbedingung.

Eine FGV könnte so aussehen:


Lokale Variablen haben einen (IMHO großen) Nachteil: sie funktionieren nur lokal im VI! Sobald du deine Schleife zur "Restzeitanzeige" in ein eigenes VI auslagern willst, bekommst du also Probleme…

Hallo GerdW,

könntest du mir bitte das vi hochladen damit ich es mir mal anschauen kann, das wäre super von dir.
Mit FGV habe ich bis dato noch nie gearbeitet.

Bedanke mich


RE: Zwei Whileschleifen beenden - GerdW - 18.09.2020 07:20

Hallo simcum,

Zitat:könntest du mir bitte das vi hochladen damit ich es mir mal anschauen kann, das wäre super von dir.
Mit FGV habe ich bis dato noch nie gearbeitet.
FGV = functional global variable
Einfach mal im Internet suchen, da wirst du viele Hinweise bekommen…

Letztendlich enthält eine FGV eine FeedbackNode, um intern Daten zu speichern. Man kann Daten reinschicken, bekommt Daten heraus und kann zusätzlich (gern per Enum) einen Befehl auf diesen Daten ausführen lassen. Quasi die Vorstufe zu einer OOP-Implementierung.
In diesem Fall beötigst du einen boolschen Eingang (die in den Schleifen generierte Abbruchbedingung) und einen boolschen Ausgang (die in der FGV kombinierte/gesammelte Abbruchbedingung). Und per Enum kannst du die FGV vor der Schleife initialisieren.

Versuch's erstmal allein, so lernst du das viel besser! Big Grin


RE: Zwei Whileschleifen beenden - simcum - 18.09.2020 08:59

Hallo GerdW,

ok werde ich, danke

Gruß

Simcum


RE: Zwei Whileschleifen beenden - Kiesch - 07.10.2020 16:28

@Gerd

Coole Sache - daran eine FGV als Endschalter für ein Programm mit mehreren Schleifen zu nutzen hatte ich auch noch nicht gedacht. Sind da die Ausführungszeiten / Blockierzeiten schnell genug, dass das auch bei größeren Programmen geht ohne dass man dann alle Schleifen runterbremst, weil die die FGV nur nacheinander abfragen dürfen?

Gruß Kiesch


RE: Zwei Whileschleifen beenden - GerdW - 07.10.2020 17:36

Hallo Kiesch,

bei mir enthält diese Stop-FGV quasi nur eine Feedback-Node: hier den aktuellen Wert auszulesen ist eine Frage von Nanosekunden…