LabVIEWForum.de - unstetige Zeit mit DAQ???

LabVIEWForum.de

Normale Version: unstetige Zeit mit DAQ???
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
<div align="left">Hallo,

im Rahmen meiner Diplomarbeit muss ich einen Druck (im Bereich 0-50mbar absolut) erfassen und auswerten. Dazu habe ich ein LabVIEW-Proggi erstellt, welches auch schon ganz gut funktioniert.

Bei der ersten Auswertungen habe ich nun gemerkt, dass die Zeit nicht immer stetig verläuft, wie ihr im angehängten Bildchen:
[attachment=2477]
sehen könnt. Der Fehler tritt aber nicht immer auf und ich habe noch nicht rausgefunden wie ich ihn reproduzieren kann.

Das Programm dazu habe ich auch einmal angehängt, jedenfalls so weit ich es hier veröffentlichen kann. Statt des Graphen werden die Messwerte im wirklichen Programm in ein 2D-Array umgewandelt und dann aufbereitet und gespeichert.

Und bevor ihr fragt: ja, ich benötige wirklich die hohe Abtastrate. Das Mitteln entfernt mir dann das statistische Rauschen des Sensors.

Besten Dank schon mal

Benjamin

</div>
Hallo Benjamin,

da hast in deinem Programm die Karte so eingestellt, dass sie kontilnuierlich Daten aufnimmt. Nun hast du in deiner Schleife die Vorgaben gemacht, alle Daten, die auf der Messkarte sind, abzuholen. Dies wird LabVIEW so schnell wie möglich machen und dann die nächsten Daten holen.
Das heißt LabVIEW versucht so schnell wie möglich zu laufen. Wenn jedoch Windows oder ein anderes Programm zwischendurch irgendetwas erledigen müssen, so wird dein Programm gebremst.
Die Schleifendurchläufe sind also zeitlich nicht fest definiert. ICh würde dir empfehlen eine zeitgesteuerte Schleife einzusetzen und dann die Werte in definierten Abständen (z.B. 100ms) abzuholen.
Dann wird die Prozessorauslastung auch wieder ein wenig sinken.

Gruß
sven
Du bildest den Mittelwert von je 100 Messwerten. Was Du vor allem erst mal machen solltest: Das DAQmx Lesen so einstellen, daß es wartet, bis 100 Messwerte angefallen sind. Also den Anschluß änderen von -1 auf 100. Damit hast Du genau einen Schleifendurchlauf pro Mittelwert. Schließe auch den Fehlerausgang in der Schleife mal an eine Anzeige an und sieh ob es zu Fehlern/Warnungen wegen Pufferüberlauf kommt. Überleg Dir auch, ob Du wirklich 100000/100 = 1000 Diagrammwerte/s brauchst. Wenn nicht, dann über entspreched mehr Werte mitteln.
Weitere Verbesserung (oder besser: die entscheidente):
Auf jeden Fall würde ich die Diagrammpunkte bei dieser Geschwindigkeit nicht einzeln updaten, sondern wenigstens 10 stückweise: DAQmx Lesen je 1000 Werte einlesen lassen, alles andere bleibt unverändert. Das VI Datenkommprimierung reduziert diese auf je 10 Werte und übergibt die 10 Werte alle 0.1sec (Schleifendurchlauf-Zeit) auf einmal an des Diagramm.
Fazit: Ändere einfach die -1 in eine 1000 und Du wirst glücklich und zufrieden sein...
Anm: Die Buffergröße ("Samples per Channel") würde ich auf ca. 10000 oder sogar weniger reduzieren.
Sch.. neues Board Programm. ich hatte den vorigen Beitrag kaum fertig, da werde ich schon gehindert ihn weiter zu editieren.
Also neuester Stand:
Ändere in DAQmx Lesen die "-1" in eine "10 000", alles Andere lass unverändert.
Dann passiert folgendes:
DAQmx Lesen wartet (0.1s) , bis die 10000 Werte erfasst wurden,
übergibt sie an das Komprimierungs-Vi
Das macht daraus 100 Werte.
Die 100 Werte werden auf einmal an des Diag übergeben.
Das Diagr wird also alle .1s upgedatet, es kommen dann immer 100 neue Werte auf einmal hinzu.
Die Prozessorauslastung ist bei gleicher Leistung nur noch ein kleiner Bruchteil gegenüber vorher - falls es vorher überhaupt funktioniert hat.
<div align="left">Hallo Svenni, hallo Lucki,

danke für die Hinweise. Jetzt ist die Zeit stetig, das Diagamm ruckelt zwar, wird aber im endgültigen Prüfprogramm eh nicht vorhanden sein.

Schönen Gruß

Benjamin</div>
Referenz-URLs