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!
20.09.2011, 13:03 (Dieser Beitrag wurde zuletzt bearbeitet: 20.09.2011 19:00 von Dennis.Moser.)
Da ich kein Experte bin, möchte ich eure Hilfe in anspruch nehmen:
Mein Programm soll 12 Tage lang mit einer 10ms-Datenerfassung dauerhaft laufen (mehrere Messwerte),
eine Speicherung aller 10ms würde eine riesige Datei bedeuten.
(Datenerfassung: cDAQ-System mit NI9205 Modulen)
Deshalb würde ich gerne jeweils 5 min. lang datenerfassen (Rate 10ms) und zwischen speichern bzw. puffern,
wenn alles ok dann puffer erneut schreiben,
wenn nicht, Grenzwert Überschreitung, dann die Werte in eine seperate Datei speichern!
Dadurch würde ich eine Messwertspeicherung für ein 5minutige Fehlerbereich bekommen, und eine kleinere Datei.
Hat jemand eine Idee wie ich dieses Problem mit Labview 2010 umsetzen könnte?
was willst du mit den Daten machen? Willst du alle 5 min die letzten 5 min überschreiben, oder willst du die Daten einfach nur im 5 min Takt wegschreiben.
Ich würde zwei Schleifen parallel abarbeiten lassen, eine die im 10 ms Takt die Daten abruft, und eine zweite die im 5 min Takt die Daten sammelt und dann die tausenden Werte verarbeitet/speichert. Die Daten kannst du per Queue von der einen in die andere Schleife schieben. Nach 5 min leerst du die Queue einfach - natürlich nachdem du die Daten verarbeitet/gespeichert hast.
es geht um eine permanente Drehzahl überwachung über 12 Tage, dabei soll alle 10ms die Drehzahl erfasst und gespeichert werden, um eine riesen große Datei zu vermeiden:
-Soll für ein Zeitraum von 5 min. die aktuelle Werte zwischen gespeichert/gepuffert o.ä. werden
-Wenn kein Fehler auftritt, dann soll diese überschrieben (5 min. Takt überschreiben) werden
-Beim Fehlerfall soll allerdings diese letzten 5min. in einer Datei gespeichert werden
wie äußert sich denn der Fehlerfall? Voller Absturz der Software, oder stellst du mit der Datenanalyse fest, das was faul ist? Ich würde es wie beschrieben machen und die Daten per Queue in die zweite Schleife übertragen, dort die Daten analysieren und dann im Fehlerfall in eine txt hacken.
Je nachdem, wie und in welcher Form der Fehler auftritt, musst du deine Software dazu bringen die Daten zu speichern...
Für mehr reicht meine nicht.
Lad doch mal ein VI oder ein Screenshot vom BD hoch wenn du noch weitere Hilfe brauchst...
Gruß, Kai
P.S.: Im Examplefinder gibts Beispiele für Queues...
21.09.2011, 10:15 (Dieser Beitrag wurde zuletzt bearbeitet: 21.09.2011 10:17 von ecper.)
der Fehlerfall wird durch die Softwareanalyse festgestellt, d.h. es gibt min/max-Grenzen wenn die verletzt werden,
dann soll die letzte 5min. gespeichert werden.
Leider fehlt mir die Erfahrung mit Queue, aber ich werds mal ausprobieren.
die obige Bedingung versuche ich an das Programm (s.u.) anzubinden.
Speicherung beginnt nur dann, wenn Mittelwert überschreitung von 10% auftritt.
Gruß
ecper
PS: Eine andere Idee ist, ich speichere alle 5min. in eine andere Datei,
aber wie kann ich dabei die Dateinnamen hochzählen, damit eine neue Datei erzeugen werden kann???
da ich nicht so wirklich den Plan von DAQmx hab und auch einige VIs in deinem Upload fehlen, hab ich dir mal ein Beispiel für Queues und Notifier gebaut, vllt. wird's dadurch ein bisschen klarer. In der unteren Schleife werden die Daten in einer Datei gespeichert. Wenn du die nicht jedesmal überschreiben willst, musst du einfach einen neuen Dateinamen generieren. Das kannst du mit den standard String/Pfad-Funktionen(z.B. Strings verbinden, String zu Pfad etc.). Und du must dann ggf. noch eine Abfrage für das Speichern nur im Fehlerfall umsetzen.