LabVIEWForum.de
Probleme mit Speicherrate - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenbank & File IO (/Forum-Datenbank-File-IO)
+---- Thema: Probleme mit Speicherrate (/Thread-Probleme-mit-Speicherrate)

Seiten: 1 2


Probleme mit Speicherrate - Joachim.Franck - 23.06.2008 13:17

Servus,

ich habe ein Analogsignal (10 bis -10 Volt) was ich wir mit maximal 50kHZ abtasten und die jeweiligen Messwerte speichern wollen! In dem von mir hochgeladenen Bsp. taste ich mit 5000Hz ab. Er sollte mir also 5000 Werte pro Sekunde speichern.

Hierzu zwei Fragen:

1. Benutze ich das Express VI "Messdaten Speichern in Datei" speichert er zwar für jeden Takt einen Wert (aller 0.0002 Sekunden ein Wert), wenn ich aber einen EIGENEN Zeitkanal generiere und mitspeichere, stimmt dieser nicht mit der Abtastzeit überein. Bei 5 Sekunden Speicherzeit habe ich schwankende Abtastzeiten von 3 bis 4 Sekunden. Das Analogsignal hängt also irgendwie hinterher, was für meine Zwecke eher ungünstig ist. Woran liegt das und kann ich das irgendwie beheben?

2. Benutze ich die Speicheroption "In Tabellenkalkulationsdatei schreiben" hat er scheinbar einen völlig eigenen Speichertakt von etwa 66Hz. Liegt das an dem VI? Habe ich da irgendwo eine Bremse drinne?

Lv82_img
[attachment=13081]

PS: Sorry, hab das falsche Unterforum erwischt. Bitte in Datenbank & File IO schieben.


Probleme mit Speicherrate - IchSelbst - 23.06.2008 19:05

' schrieb:1. Benutze ich das Express VI "Messdaten Speichern in Datei" speichert er zwar für jeden Takt einen Wert (aller 0.0002 Sekunden ein Wert), wenn ich aber einen EIGENEN Zeitkanal generiere und mitspeichere, stimmt dieser nicht mit der Abtastzeit überein. Bei 5 Sekunden Speicherzeit habe ich schwankende Abtastzeiten von 3 bis 4 Sekunden. Das Analogsignal hängt also irgendwie hinterher, was für meine Zwecke eher ungünstig ist. Woran liegt das und kann ich das irgendwie beheben?
Warum willst du überhaupt einen eigenen Zeitkanal generieren? Wenn du schon die Möglichkeit hast, Waveform zu verwenden, bleib halt bei dieser.
Du kannst den Zeitkanal praktisch gar nicht selber machen - nur theoretisch. Du bräuchtest ja zu jedem Messwert einen Zeitwert. So schnell kann aber dein Rechner gar nicht sein, dass er die While-Schleife genau einmal durchläuft, so dass aus dem DaqMX-Read-VI genau ein Wert herauskommt, dem du dann einen Zeitwert zuweisen kannst. Aus dem DaqMX-Read-VI kommt immer (je nach Konfiguration) ) die gerade anliegende Anzahl Messwerte heraus - und die kann schwanken zwischen 0 und 1000 (um mal eine Zahl zu sagen).

Zitat:2. Benutze ich die Speicheroption "In Tabellenkalkulationsdatei schreiben" hat er scheinbar einen völlig eigenen Speichertakt von etwa 66Hz. Liegt das an dem VI? Habe ich da irgendwo eine Bremse drinne?
Die Bremse ist das Verfahren, nach dem du programmierst.


Ich würde zu folgendem Verfahren raten: Eine While-Schleife (respektive ein SubVI), in der die Messwerte mit Zeitstempel gesampelt werden. Dieses SubVI sendet die gesampelten Daten per Queue an ein weiters SubVI, das nichts weiter macht, als zu speichern. Die beiden Vorgänge Samplen/Speichern laufen dann quasi parallel ab und stören sich nicht mehr gegenseitig.


Probleme mit Speicherrate - Y-P - 24.06.2008 07:31

Was anderes.....
Wieso füllst Du Deine Controls mit lokalen Variablen und übergibst sie erst dann an Deine VIs?
Schreibe doch die Werte direkt in das Control und gehe dann in der Menüleiste auf "Edit" -> "Make Current Values default" (danach speichern nicht vergessen) und Du hast das gleiche Verhalten.

Gruß Markus


Probleme mit Speicherrate - IchSelbst - 24.06.2008 08:51

An Joachim.Franck:

Nicht dass du zwischen Y-P's Zeilen herausließt, dass es doch so gehen könnte, wie du es mit den lokalen Variablen Programmiert hast. So ist es auf jeden Fall falsch. Da zwischen der Wertzuweisung an die lokale Variable und dem Auslesen des Bedienelementes keine Sequenzierung besteht - kommt es garantiert (wenn nicht früher, dann später) zu Race Conditions. Wenn es funktioniert, dann nur deswegen, weil bei erneutem Starten des VIs die Werte dann auch im Bedienelement stehen.


Probleme mit Speicherrate - Lucki - 24.06.2008 10:23

Wichtig ist erst mal, bei der DAQmx Timing den Anschluß Number of Samples per channel zu beschalten. So wi Du das jetzt machst, läuft die Schleife mit maximaler Geschwindigkeit und es wird versucht, jeden Messwert einzeln abzuspeichern.

Beipiel:
Puffergröße auf 10 000 Samples einstellen (= Samples per Channel im DAQmx Timing bei Betriebsart Continuierlich)
Samples Per Channel im DAQ mx Read auf 2000 Samples
Samplerate 50000

Dann passiert folgendes: DAQmx Read wartet immer bis 2000 Werte im Puffer sind. D.h es findet dann nur alle 2000/50000 = 40 ms ein Scheifendurchlauf statt, das Diagramm wird nur alle 40ms upgedated und es werden immer 200 Werte auf einmal gespeichert. Das System wird dadurch entlastet und kann höhere Sampleraten verkraften.


Probleme mit Speicherrate - Lucki - 24.06.2008 10:32

' schrieb:Schreibe doch die Werte direkt in das Control und gehe dann in der Menüleiste auf "Edit" -> "Make Current Values default" (danach speichern nicht vergessen) und Du hast das gleiche Verhalten.
Ein zweite Möglichkeit hat man mit der rechten Maustaste --> Datenoperationen --> Aktuellen Wert als Standard.


Probleme mit Speicherrate - Joachim.Franck - 27.06.2008 09:30

Vielen Dank für die Hilfe.

Wegen der lokalen Variablen hatte ich bisher noch keine Probleme, ich werde das aber umgehend umschreiben!! Hätte ich auch selber auf die Idee kommen können ^^

Eine Frage noch zu den Samples. Was für einen Einfluss hat die Einstellung "Samples per Channel" im "DAQmx Timing" wenn ich bei "DAQ mx Read" die Sampleanzahl auch einstelle?

Zweite Frage: Neben dem Analogeingang lesen wir gleichzeitig noch zwei Counter (Drehzahl) aus (siehe hochgeladenes VI). Nach Lucki´s Beitrag ist es wohl eher ungünstig alle 4 Signale in einer Schleife auszulesen oder?

Letzte Frage fürs Verständnis: Eine Queue ist ein Puffer???

Lv85_img
[attachment=13168]


Probleme mit Speicherrate - Lucki - 27.06.2008 11:15

' schrieb:Eine Frage noch zu den Samples. Was für einen Einfluss hat die Einstellung "Samples per Channel" im "DAQmx Timing" wenn ich bei "DAQ mx Read" die Sampleanzahl auch einstelle?
Da mußt Du nur die Hilfe gründlich lesen, aber andererseits ist es auch irreführend, wenn ein und derselbe Eingang mit nur einer Bezeichnung für zwei ganz verschiedene Sachen verwendet wird - so ist es nämlich.
Die Bezeichnung bezieht sich nur auf den Modus "endliche Anzahl von Samples".
Bei kontinuierlicher Datenerfassung dient der Eingang einem ganz anderen Zweck: Es ist die die Größe des Datenpuffers.


Probleme mit Speicherrate - Joachim.Franck - 01.07.2008 12:19

' schrieb:Ich würde zu folgendem Verfahren raten: Eine While-Schleife (respektive ein SubVI), in der die Messwerte mit Zeitstempel gesampelt werden. Dieses SubVI sendet die gesampelten Daten per Queue an ein weiters SubVI, das nichts weiter macht, als zu speichern. Die beiden Vorgänge Samplen/Speichern laufen dann quasi parallel ab und stören sich nicht mehr gegenseitig.

kannst du mir das mit dem queue bitte kurz in einem vi etwas näher erleutern? bzw. mal ein beispiel zeigen, posten?


Probleme mit Speicherrate - IchSelbst - 01.07.2008 12:53

' schrieb:kannst du mir das mit dem queue bitte kurz in einem vi etwas näher erleutern? bzw. mal ein beispiel zeigen, posten?
Ich glaube, ich hab hier mal was zusammengestellt.