LabVIEWForum.de - Auslesen von DMS Werten

LabVIEWForum.de

Normale Version: Auslesen von DMS Werten
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo

Ich möchte mit meinem VI einige Werte regeln und die Werte von 4 DMS einlesen. Zuerst habe ich dass alles in eine while-Schleife gepackt, aber beim auslesen in eine Datei schrieb das VI nur ca. alle Sekunden die Werte raus und nicht 1000 Werte/s. Deshalb habe ich eine zweite Schleife gemacht um die Werte rauszuschreiben. Jetzt bekomme ich zwar annähernd eine Frequenz von 1 kHz aber ich verlier viele Werte bzw sind viele 0 (siehe screenshot tabelle). Hat jemand Ideen.
(Geräte sind NI6211 und NI9237 für DMS, LV Version 2010 64-bit)

LG
ugarcia
Hallo ugarcia,

Zunächst mal vorab:
Dein Blockdiagramm könnte etwas übersichtlicher Gestaltet werden. Zum Beispiel kannst du die gesamten Einstellungen in einem extra SubVI als Initialisierung machen. Dies könnte auch in einer For-Schleife passieren, da du ja nur bei zwei Strings die Zahl änderst. Dann könntest du den Rest per Konstante machen und den String in jedem Schleifendurchlauf anpassen und reinschreiben.

Um zu deinem Problem zu kommen: Sofern die Messwertaufnahme nicht sehr lange andauern soll (kleiner 1min) dann könnte dir eine Queue eventuell helfen. Dort könntest du in der Schleife, in der du die Messwerte ausliest einfach in diese Queue reinhaun und in einer zweiten Schleife die Werte aus der Queue auslesen und in die Datei schreiben.

MfG Carsten
Hallo ugarcia,

wenn ich dein VI richtig verstehe, dann speicherst du erst nach Beenden deiner Regel-Schleife. Und versuchst dann auch noch, parallel zum Beenden der DAQmx-Tasks Messwerte aus eben diesen Task(s) einzulesen!? Was soll das? Wenn du darüber nachdenkst, wirst du wohl einsehen, dass du da eine RaceCondition programmiert hast Smile

Außerdem: Wozu die Schleife um das Speichern, wenn die Schleife eh nur einmal durchläuft?
Die ganze Programmstruktur ist "zweifelhaft"!
Die Messdauer wird meistens länger als eine Minute sein.
Wäre ein Schritt mit Arrays nicht auch eine Option? Allerdings weiß ich da programmiertechnisch nicht wirklich wie ich das zustande bringe.
Zuerst war das abspecihern der Werte so geplant allerdings wurden da nur ca. 1 Werte/s ausgelesen.
(31.01.2012 09:39 )ugarcia schrieb: [ -> ]Zuerst war das abspecihern der Werte so geplant allerdings wurden da nur ca. 1 Werte/s ausgelesen.
Das hast du auch selber so programmiert. Was soll das? Du bekommst eine Waveform mit allen 1000 Messwerten, und reduzierst sie dann per Express-VI auf einen Wert. Wieso speicherst du nicht die komplette Waveform ab?

Und zu deinem VI-Upload aus Beitrag #1, hast du da wirklich deinen letzen VI-Stand hochgeladen? Wie Gerd schon geschrieben hat, der kann eigentlich nicht funktionieren, und zwar wegen dieser Datenflussabhängigkeit:
[attachment=38451]

Jetzt noch zur Frage deiner Nuller: Auch daran bist du selber Schuld. Falls mal die Speicherschleife wirklich läuft, dann läuft sie so, wie du sie programmiert hast, so schnell wie möglich. Das könnte aber auch bedeuten, dass die DAQmx-Read einmal Waveform ohne Messwerte zurückgibt. Jetzt hast du wieder deine unselige Wandlung per Express-VI in einen Einzelwert drinnen. Und der MW eines leeren Array ergibt halt mal als Wert Null.

Auch hier stellt sich wieder die Frage, wieso nicht die gesamte Waveform abspeichern?

Gruß, Jens
Das mit dem Stop über den Schleifen war natürlich ein Blödsinn.
Ich hab gedacht des Express VI speichert auch die ganze Waveform. Habs grad mit waveform write to file etc. probiert. Hat jedoch nicht funktioniert. Kann mir da schnell jemand helfen bzw. sagen was ich durch was ersetzen muss.
Danke und LG
Achso... einfach die Waveform ohne Umwandlung hinführen.
TDMS kann auch gut mit Waveforms umgehen.

Oder du holst dir aus der Waveform das Array der Messwerte.

Möglichkeiten gibt es genug.

Gruß, Jens
Referenz-URLs