Messwertspeicherung der letzten X Minuten einer Aufzeichnung
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!
Messwertspeicherung der letzten X Minuten einer Aufzeichnung
Hallo,
in meinem Labview 15 Programm geht es darum einen Prüfstand zu überwachen und die letzten X Minuten der Überwachung aufzuzeichnen.
Zur Zeit mache ich es so, dass ich aus einer while-schleife, die die Messwerte generiert eine Queue in eine zweite while-Schleife, die die Messwerte abspeichert, laufen lasse und
über die Periodendauer der "Speicher-Schleife" die Speicherdauer steuere.
Das Problem:
nach dem Abschalten, des Prüfstandes muss man noch die X Minuten, die die Speicher-Schleife braucht warten, bis das Programm endet und das ist
mir zu lästig. Ich möchte, dass die Messwerte direkt gespeichert werden.
RE: Messwertspeicherung der letzten X Minuten einer Aufzeichnung
(13.06.2017 10:13 )Roland schrieb: Das Problem:
nach dem Abschalten, des Prüfstandes muss man noch die X Minuten, die die Speicher-Schleife braucht warten, bis das Programm endet und das ist
mir zu lästig. Ich möchte, dass die Messwerte direkt gespeichert werden.
Hallo Roland,
hierfür bietet sich eine _LOSSY_-Queue an. Die "Restmenge an Daten kannst du so vorhalten und dann auf einen Rutsch
wegschreiben. Schaue dir mal die Producer-Consumer Strukturen an. (Beispiele)
Dort findet du auch die Lossy-Variante der Queues.
RE: Messwertspeicherung der letzten X Minuten einer Aufzeichnung
Erstmal danke für die Antworten.
Um noch genauer zu werden:
Ich verwende eine cRIO Einheit im Scan-Mode und sende meine Daten von einem Target.vi mit Hilfe eines Netzwerk-Streams an das Host.vi (ist angehängt).
Zur besseren Übersicht habe ich nur noch die relevanten Komponenten im angehängen Host.vi gelassen.
Den Vorschlag von Ralf hab ich auch schon probiert aber das hat nicht so funktioniert wie ich mir das vorgestellt habe.
Ich dachte mir damals, dass ich statt der jetzigen Speicher-while-Schleife eine Case-Struktur verwende und diese über einen Latch Schalter bediene.
Ist das das, was Ihr auch empfehlen würdet oder habe ich da noch einen Denkfehler drin?
RE: Messwertspeicherung der letzten X Minuten einer Aufzeichnung
Eben, dass ich eine bestimmte Anzahl an Werte speichere. Wenn die Dauer kürzer wird werden auch weniger Werte abgespeichert...aber ich will eben eine neue/bessere Lösung
RE: Messwertspeicherung der letzten X Minuten einer Aufzeichnung
Hallo Roland,
Zitat:ich will eben eine neue/bessere Lösung
Dann warte eben nicht "x*60s", sondern warte lieber "x*60*1s"…
Etwas ausführlicher: Du hast selbst festgestellt, dass es unglücklich ist, dass deine Schleife gleich minutenlang mit der Wartefunktion blockiert ist. Warte doch lieber nur im Sekundenbereich und sammle die Messdaten mehrerer Schleifendurchläufe, bevor du speicherst…
RE: Messwertspeicherung der letzten X Minuten einer Aufzeichnung
(13.06.2017 14:54 )GerdW schrieb: Hallo Roland,
Zitat:ich will eben eine neue/bessere Lösung
Dann warte eben nicht "x*60s", sondern warte lieber "x*60*1s"…
Hallo Gerd,
wenn ich dich richtig verstehe soll ich also z.B. die Werte für eine Sekunde immer wieder aneinander hängen?
Wie würde das aussehen? Um die 1sec while Schleife eine x*60-fache for-Schleife?
RE: Messwertspeicherung der letzten X Minuten einer Aufzeichnung
(13.06.2017 15:28 )GerdW schrieb: Hallo Roland,
so in etwa:
Hallo Gerd
Das Problem sehe ich jetzt darin, dass angenommen mein Prüfstand bricht ab wenn der Schleifenzähler gerade bei i=34 ist, dann
gehen mir 34 Werte verloren, da meine Array nach i=60 genullt wird und er somit wieder komplett neu aufgefüllt werden muss.
Ich hab mal ein neues VI angehängt welches meinen Fall eher wiederspiegelt.