LabVIEWForum.de - Abbruch einer Whileschleife

LabVIEWForum.de

Normale Version: Abbruch einer Whileschleife
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi,

in meinem Programm soll ein Laser auf eine gewisse Temperatur eingestellt und dann langsam abgekühlt werden. Während des Abkühlens wird mit einem Spektrometer das Maximum der DFB-Mode gemessen. Die While-Schleife, in dem der Messvorgang stattfindet, soll abgebrochen werden, wenn entweder die Endtemperatur erreicht ist oder wenn sich die aktuelle Temperatur über eine gewisse Zeit nicht mehr ändert. Hintergrund ist, dass wenn ich z.B. 10°C als Endtemperatur festlege, aber die Raumtemperatur bei 20°C wird diese Temperatur ja nie erreicht, sondern nur ein minimaler Wert (vlt. 16°C). Ich möchte jetzt gerne, dass wenn sich die aktuelle Temperatur über ca. 5s nicht mehr ändert, dass die While-Schleife trotzdem abgebrochen wird, obwohl die Endtemperatur noch nicht erreicht ist. Leider weiß ich nicht genau wie ich das Programmieren könnte. Hätte da jemand einen Tipp für mich?

Gruß Quantenpunkt
Hallo Quantenpunkt,

Zitat:ich möchte jetzt gerne, dass wenn sich die aktuelle Temperatur über ca. 5s nicht mehr ändert, dass die While-Schleife trotzdem abgebrochen wird
Du musst dir einen Ring-Buffer anlegen, der die Messwerte der letzten 5s speichert (abhängig von deiner Samplerate). Dann einfach kontrollieren, ob alle Werte im Ringbuffer (ungefähr) gleich sind (oder nur mit minimaler Toleranz vom Mittelwert abweichen) und du hast deine Abbruchbedingung.

- Das du mehrere Abbruchbedingungen mit einem ODER verknüpfen kannst, weißt du sicherlich.
- Neuere LabVIEW-Versionen haben Pt-By-Pt-Funktionen (z.B. bieten sich Daten-Queue, ArrayMinMax, Standardabweichung an), die auch einen Ringbuffer bereitstellen. Wie das bei LV8 aussieht, weiß ich nicht...
Hi Gerd,

danke für die schnelle Antwort. Ich hab mal ein bisschen im Internet danach gesucht, leider finde ich nur sehr komplexe Beispiele, die für mich wenig hilfreich sind und diese vorgefertigten VIs gibts leider bei meiner Version noch nicht. Gibts für einen Ring-Buffer ein "einfaches" Beispiel?
Unter Garantie gibt es einige (auch einfache) Beispiele hier im LVF. Wer sucht, der findet.

Aber ok, hier ein weiteres.. Wink
[attachment=44117]

Gruß, Jens
Hallo QP,

Zitat:Ich hab mal ein bisschen im Internet danach gesucht, leider finde ich nur sehr komplexe Beispiele, die für mich wenig hilfreich sind und diese vorgefertigten VIs gibts leider bei meiner Version noch nicht.
Statt im Internet könntest du auch bei den mitgelieferten Beispielen suchen, immerhin hat NI einen eigenen Assistenten dafür spendiert...
Bei LV2009 gibt es z.B. das "Recent History Buffer Example", wo das ganze mit einer FGV gelöst wird (die dann letztendlich das gleiche wie Jens' Beispiel macht)...
Ja, der "Ringpuffer" gehört mit zu den Lieblingsvorschlägen der LVF-Platzhirsche, ist aber manchmal gar nicht die einfachste und beste Lösung. So sehe ich das auch hier. (So eine kleine Stänkerei tut dem Forum doch gut. Oder etwa nicht? Big Grin)
Hier ein alternativer Vorschlag (mit etwas Zierrat, damit das Anschauen auch Spaß macht).
[attachment=44123]
Ok, da habe ich wohl nicht gründlich genug gesucht. Auf jeden Fall funktioniert das jetzt super, vielen Dank!
Referenz-URLs