LabVIEWForum.de - Messwert für eine gewisse Zeit (~5sek.) speichern und dann erst ausgeben

LabVIEWForum.de

Normale Version: Messwert für eine gewisse Zeit (~5sek.) speichern und dann erst ausgeben
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ist es möglich innerhalb einer Schleife einen Wert für ~5 Sekunden abzuspeichern und nach den ~5 Sekunden wieder auszugeben?
Die Schleife soll jedoch während die 5 Sekunden vergehen weiter ausgeführt werden um neue Messwerte aufzunehmen.

Gruß Niklas
Hallo Niklas,

ja!
Hallo Gerd,

kannst du mir zeigen wie das umzusetzen ist?
Hallo Niklas,

die allgemeine Antwort lautet: nimm ein Schieberegister.
Die geringfügig konkrete Antwort heißt PtByPt-DataQueue…
Hallo Gerd,

wie kann über den Schieberegister einstellen, dass der Wert nur jede 5.Sekunde weiter gegeben wird?
Hallo Niklas,

Zitat:wie kann über den Schieberegister einstellen, dass der Wert nur jede 5.Sekunde weiter gegeben wird?
Wenn deine Schleife zum Beispiel mit 10Hz iteriert, dann benötigt man eine Data-Queue (oder ein Array) mit 50 Elementen, um ein Sample um eben 50 Iterationen zu verzögern!
Dieses Array packt man in ein Schieberegister und rotiert es jede Iteration um ein Element. Die PtByPt-DataQueue macht das letztendlich auch nicht anders…

Allgemeiner Tipp:
Wenn du ein konkretes Problem hast, dann solltest du auch ein konkretes VI-Beispiel anhängen können. (Dabei auf die LabVIEW-Versionen achten, die man in seiner Signatur angeben sollte.)
Wenn du nur Textfragen stellst, wirst du auch nur Textantworten bekommen. Bei einem VI besteht die Chance, dass dein VI bearbeitet/korrigiert wird…
Hallo Gerd,

ich habe das VI und eine Reihe von Messdaten in Excel-Datei angehangen. Das VI liest die Messdaten ein und verarbeitet die Daten in einer While Schelife. Die Prozedur in der While-Schleife ermittelt die rot umkreisten Peaks der Messreihe (Diagramm in Excel). Nach dem z.B. der erste Peak erkannt wurde soll dieser Peak für ungefähr 5 sekunden abgespeichert werden und nach den 5 Sekunden an eine Steuerung (in dem Labview Programm nicht eingebettet) weiter gegeben werden. Das Problem, welches ich mit der Queue habe, ist folgendes, die Queue soll erst Werte aufnehmen, nach dem der Peak erkannt wurde, bei mir läuft die Queue nur leider dauerhaft in der Schleife, was sie aber nicht soll
Hallo Niklas,

so langsam rückst du mit ein paar mehr Informationen heraus. Du willst die ganzen Daten also gar nicht mit 5 Sekunden Verzögerung wieder ausgeben.
Mir ist aber immer noch nicht klar, was du eigentlich machen willst. Du detektierst die Peaks und gibts 5 sekunden nach dem Peak den Wert des Peaks aus. Und in allen anderen Fällen wird der Wert 0 ausgegeben. Das passt doch zu deiner bisherigen Beschreibung.

Ich habe dein VI mal für LabVIEW 2012 gesepichert, das dürfte die Anzahl derer, die sich das ansehen können, deutlich erhöhen.

Du hast einige Race Conditions in dein Programm eingebaut. Wozu lokalen Variablen?
Hallo Niklas,

dank Martin kann ich mir dein VI jetzt auch mal anschauen…
Wie schon gefragt: warum so kompliziert und warum so viele lokale Variablen? (Warum überhaupt lokale Variablen?)

Schau mal:
[attachment=61741]
Statt "Numeric"/"Numeric 2" solltest du auch aussagekräftige Labels verwenden!
Referenz-URLs