![]() |
Datenaufzeichnung in vorgeschriebenem Zeitintervall - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Datenaufzeichnung in vorgeschriebenem Zeitintervall (/Thread-Datenaufzeichnung-in-vorgeschriebenem-Zeitintervall) |
Datenaufzeichnung in vorgeschriebenem Zeitintervall - bigfudge - 07.01.2013 15:32 Hallo Leute, Ich habe ein Programm erstellt, mit dem Messwerte erfasst, angezeigt und schließlich in ein Excel-file geschrieben und dort gespeichert werden. So weit so wunderbar, klappt an sich alles ganz flüssig. Jetzt soll noch folgendes Feature eingebaut werden: Auf Knopfdruck sollen die Messdaten für 10 Sekunden mit einer vorgegeben Frequenz (z.b. 10 Hz) in ein File geschrieben werden. Währenddessen soll natürlich die Anzeige der Messdaten weiterlaufen. Realisiert habe ich das Ganze mit einem Timed Loop und einem zweiten Loop, welcher abgebrochen wird, sobald eine bestimmte Zeit abgelaufen ist ( siehe Anhang). Mein Problem ist nun, dass während dieser 10 Sekunden die Messdaten nicht angezeigt werden, dh die Anzeigeinstrumente sind wie "eingefroren". Auch ins File werden während dieser Zeit 10 mal pro Sekunde die gleichen Daten geschrieben, weil sich die Daten offensichtlich nur einmal bei der ersten Iteration erneuern und dann 10 Sekunden lang gleich bleiben. Ich glaube das kommt daher, dass das SubVI für die 10-Sekunden-Messung erst nach Ablauf der 10 Sekunden beendet wird und das übergeordnete VI darauf wartet, dh die Daten aus dem Datenarray werden während dieser Zeit weder erfasst, noch angezeigt noch an das SubVI weitergegeben. Ich hab im Moment keine Ahnung wie ich das machen soll, dass einerseits das SubVI genau 10Sekunden lang ausgeführt und andererseits das übergeordnete VI derweil weiterarbeitet. RE: Datenaufzeichnung in vorgeschriebenem Zeitintervall - Trinitatis - 07.01.2013 15:36 Hallo bigfudge, is das so gewollt, dass deine innere Schleife beim Erreichen des Index=0 stoppt? Gruß, marko RE: Datenaufzeichnung in vorgeschriebenem Zeitintervall - bigfudge - 07.01.2013 16:00 Ja, das wird notwendig, weil die äußere Schleife nur beendet werden kann, wenn die Innere schon beendet ist. Die innere Schleife wird jeweils nur einmal ausgeführt, also kann das die äußere Schleife auch nach jeder Iteration der Inneren durch die Elapsed-Time-Funktion beendet werden. RE: Datenaufzeichnung in vorgeschriebenem Zeitintervall - jg - 07.01.2013 16:03 THINK DATAFLOW! Wenn deine innere Timed-Loop zwecks Überprüfung Index=0 nur 1x durchgeführt wird, dann kannst du sie dir komplett sparen. Gruß, Jens RE: Datenaufzeichnung in vorgeschriebenem Zeitintervall - bigfudge - 07.01.2013 16:05 OK is irgendwie richtig, aber wie kann ich dann sicherstellen, dass genau 10 Messwerte pro Sekunde aufgezeichnet werden? RE: Datenaufzeichnung in vorgeschriebenem Zeitintervall - GerdW - 07.01.2013 16:08 Zitat:dass während dieser 10 Sekunden die Messdaten nicht angezeigt werden, dh die Anzeigeinstrumente sind wie "eingefroren".THINK DATAFLOW! Wenn Dinge parallel ablaufen sollen (hier: Anzeige und Speichern), dann sollte man sowas auch parallel programmieren! THINK DATAFLOW! Zitat:wie kann ich dann sicherstellen, dass genau 10 Messwerte pro Sekunde aufgezeichnet werden?Indem du ganz schnell 10 Messwerte speicherst und dann bis zur nächsten vollen Sekunde wartest ![]() Man könnte natürlich auch im 100ms-Intervall speichern... RE: Datenaufzeichnung in vorgeschriebenem Zeitintervall - bigfudge - 07.01.2013 16:15 Zitat:Man könnte natürlich auch im 100ms-Intervall speichern... Genau das versuch ja mit meinem Timed-Loop...geht das noch irgendwie anders? RE: Datenaufzeichnung in vorgeschriebenem Zeitintervall - GerdW - 07.01.2013 16:23 Hallo big, THINK DATAFLOW! Du brauchst nur eine Schleife: Code: WHILE EVERY 100ms Es hat immer mal wieder Vorteile, sich erst auf einem Blatt Papier den gewünschten Programmablauf zu skizzieren. Grundkenntnisse in PAP lohnen sich! |