Verlangsammung des Programms durch Abspeichern von Messdaten
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!
13.05.2016, 09:49 (Dieser Beitrag wurde zuletzt bearbeitet: 13.05.2016 10:40 von jg.)
Verlangsammung des Programms durch Abspeichern von Messdaten
Hallo zusammen,
ich versuche derzeit mit Labview 2014 Messdaten abzuspeichern, wofür ich im Wesentlichen das VI "Write to Measurement File2.vi" verwende:
Grundsätzlich funktioniert das oben gezeigte Beispiel gut, allerdings fällt mir auf, dass das Abspeichern nach einiger Zeit sehr lange dauert. Meiner Meinung nach liegt das daran, dass der Aufwand die Messdatei (in meinem Fall ist dies eine Excel-Datei) zu öffnen, zur letzten Zeile zu springen, die Daten einzutragen und die Messdatei im Anschluss daran wieder zu speichern mit zunehmender Anzahl der Daten (stark) wächst.
Diese Tatsache führt dazu, dass das Abspeichern der Daten einen massiven Flaschenhals verursacht der die Geschwindigkeit meines gesamten Programms verlangsamt.
Ich würde mich sehr freuen wenn ihr mir hierzu ein paar Tipps geben könntet um dieses Problem zu umgehen!
RE: Verlangsammung des Programms durch Abspeichern von Messdaten
Ergänzung zum Hinweis von wladimir:
Daten nicht per Express-VI (und vor allem nicht im Excel-xlsx-Format) speichern. Das kannst du ganz zum Schluss machen, aber nicht für "Live-Streams".
Alternativen: TDMS oder csv. Dabei den File nur zu Beginn der Messung 1x öffnen, File geöffnet halten und immer wieder hinzufügen, und nur am Ende der Messung 1x schließen.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
RE: Verlangsammung des Programms durch Abspeichern von Messdaten
Danke für eure Kommentare!
@
Zitat:Ergänzung zum Hinweis von wladimir:
Daten nicht per Express-VI (und vor allem nicht im Excel-xlsx-Format) speichern. Das kannst du ganz zum Schluss machen, aber nicht für "Live-Streams".
Alternativen: TDMS oder csv. Dabei den File nur zu Beginn der Messung 1x öffnen, File geöffnet halten und immer wieder hinzufügen, und nur am Ende der Messung 1x schließen.
Gruß, Jens
Könnt ihr mir einen Link o.ä schicken (oder ein kleines Beispiel posten) wie man so etwas realisiert?
RE: Verlangsammung des Programms durch Abspeichern von Messdaten
Hallo,
leider komme ich bei meiner Suche nicht wirklich weiter. Ich bin nach wie vor auf der Suche nach einer Möglichkeit, (Mess)daten in einem festen Intravall, von mir festgelegten Intervall mit einem Zeitstempel abzuspeichern. Irgendwann möchte ich die Daten gerne mit Excel weiterverarbeiten, ob LabView die Daten in Form eines Excel-, Text-, CSV- oder irgendeinem mir bis dato unbekannten Format abspeichert ist dabei eigentlich egal.
RE: Verlangsammung des Programms durch Abspeichern von Messdaten
Hallo Trinitatis,
besten Dank für dein Beispiel. Soweit ich die Anmerkungen hier in diesem Thread und auch bei meiner eigenen Recherche verstanden habe sollte man doch beim Speichern von Daten das Producer-Consumer-Konstrukt anwenden. Genau hierzu finde ich aber kein gutes Beispiel, vielleicht könnt ihr mir noch einmal helfen.
RE: Verlangsammung des Programms durch Abspeichern von Messdaten
Hallo zusammen,
ich habe hier ein Beispiel gefunden, dass ich entsprechend meinen Bedürfnissen etwas umgebaut habe (s. Bild anbei). Das Ganze funktioniert soweit ganz gut, aber:
Wenn ich es richtig verstehe, wird die Messdatei erst dann erzeugt / geschrieben, wenn das Programm aus der While-Schleife "ausbrechen" kann, also wie in diesem Beispiel gezeigt durch Beenden des Programms. Bedeutet dies dass somit alle bis dahin entstandenen Daten in den Zwischenspeicher gepuffert werden? Wird das nicht irgendwann zum Problem, wenn ich Daten im Sekundentakt über mehrere Tage hinweg speichern möchte?
Im Beispiel beeinflusst ja das Speicherintervall die Laufzeit des gesamten Programms. Wenn ich z.B. ein Speicherintervall von 1s definiere, der Code selbst aber eine Programmlaufzeit von 3s besitzt (z.B. weil sehr viele Messwerte abgefragt werden müssen), summiert sich die Gesamtlaufzeit ja auf 4s. Was ich jedoch eigentlich möchte ist ja dass ich unabhängig von der Programmlaufzeit in dem von mir definierten Intervall abspeichere. Leider bin ratlos wie ich das realisieren kann und würde mich hier über eure Anregungen freuen!
Ich würde mich sehr freuen wenn ihr mir bei meinem Problem weiterhelfen könntet!