LabVIEWForum.de
Mittelwert bei kontinuierlicher DAQ - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ)
+---- Thema: Mittelwert bei kontinuierlicher DAQ (/Thread-Mittelwert-bei-kontinuierlicher-DAQ)



Mittelwert bei kontinuierlicher DAQ - Eggord - 06.09.2011 14:15

Hi,

ich habe ein USB 6008 und will kontinuierlich mit einem kanal messen. Da funkt sowiet gut Smile ...aber nun will ich von Blöcken aus je 1000 Werten den Mittelwert bilden und ein neues array aus den Mittelwerten erzeugen. Zu dem sollen später auch noch während die kontinuierliche Messung weiter läuft auch auf die anderen Kanäle zugegriffen werden und andere Einstellungen mittels buttons gemacht werden. Die kon. Messung läuft in einer While-loop, heißt das, dass alles was ich sonst machen will auch in diese While-loop rein muss? Wenn ja...wie stell ich das an? Das wiederholt sich dann doch ständig....

Danke schonmal im vorraus!

Gruß
Jan


RE: Mittelwert bei kontinuirlicher DAQ - illuminus - 06.09.2011 17:45

Hi,

also du musst nicht alles in eine Schleife packen, die Schleifen können auch untereinander kommunizieren.
Ich denke mal das für dich so etwas wie ein Producer/Consumer Aufbau das richtige währe.
Habe mal eine Beispiel angefügt, von der ich denke, dass es dein Problematik abdeckt.

Gruß


RE: Mittelwert bei kontinuirlicher DAQ - Eggord - 07.09.2011 23:41

Danke illuminus

Ehrlich gesagt verstehe ich deine Lösung nicht so wirklich Smile bin halt noch ein neuling. Gibt es irgend einen Link oder Buch wo ich mir das Wissen anlesen kann?

Gruß Jan


RE: Mittelwert bei kontinuierlicher DAQ - Lucki - 08.09.2011 08:03

(06.09.2011 14:15 )Eggord schrieb:  ...aber nun will ich von Blöcken aus je 1000 Werten den Mittelwert bilden und ein neues array aus den Mittelwerten erzeugen.
Das ist die einfachste Sache der Welt. Dazu mußt Du keine Werte zwischenspeichern, das macht der DAQmx-Lesepuffer. Einfach bei DAQmx Read als "Anzahl zu lesender Samples" 1000 angeben. DAQmx Read wartet dann in der Schleife, bis sich 1000 Werte angesammelt haben. Die werden dann auf einmal augelesen. Aus dem empfangenen Array bildest Du den Mittelwert - fertig.


RE: Mittelwert bei kontinuierlicher DAQ - illuminus - 08.09.2011 10:07

Hi Jan,

es gibt unzählige Tutorials und Bücher zu LabVIEW. Wenn du Glück hast sind bei deinem LabVIEW Packet die Kursunterlagen vom Basik 1 und 2 beigelegt, dann würde ich dir empfehlen die beiden Kurse durchzuarbeiten. Ansonsten kannst du mal unter http://www.ni.com/gettingstarted/labviewbasics/ schauen.

Was das Beispiel angeht, schau die halt jeden einzelnen Strang an und lies dir die Hilfe zu den verwendeten VIs durch. Das ist der einzige Weg es zu verstehen.

Aber eines vorweg LabVIEW ist eine Programmiersprache. auch wenn der einstig einfacher ist als bei C, Java, Vbasic usw. man muss wissen und verstehen was man machen will.

Gruß Knut

@Lucki:
Er möchte kontinuierlich Messen und er möchte auch die anderen 7 Kanäle mitbenutzen. Das bedeutet er muss entweder alle Kanäle mit einer Sampelrate von 1000 aufnehmen oder kann die anderen Kanäle nicht nutzen. Das möchte er aber.


RE: Mittelwert bei kontinuierlicher DAQ - lavoh - 24.11.2011 13:06

Zum Thema Mittelwertsbildung habe ich auch noch ein Problem:

Ich führe Langzeitmessungen durch und benötige von allen aufgezeichneten Werten einen Mittelwert.
Beim angefügten VI funktioniert das auch fast, nur beim Stoppen wir ddie Schleifeniteration auf 0 gesetzt und ich erhalte inf als Mittelwert. Wie kann ich den höchsten Schleifendurchgangswert erhalten?

Wie gross / genau ist diese Art der Mittelwertbildung, wenn bis zu 20.000 Messerte addiert werden müssen?


Vielen Dank
Gruss


RE: Mittelwert bei kontinuierlicher DAQ - GerdW - 24.11.2011 13:21

Hallo lavoh,

nach Entfernen der RubeGoldbergs bleibt das hier von deinem VI übrig:
[attachment=37390]
Was sollte diese Akrobatik mit lokalen Variablen und 2 Schleifen?

Zitat:nur beim Stoppen wir ddie Schleifeniteration auf 0 gesetzt und ich erhalte inf als Mittelwert. Wie kann ich den höchsten Schleifendurchgangswert erhalten?
- Das nach Stopp und Neustart wieder bei Null angefangen wird, ist normal und gewünscht.
- Wo erhälst du Inf? Du addierst doch schon eine 1 zum i dazu?
- Was ist ein Schleifendurchgangswert?
- Höchstwerte ermittelt man mit der Min/Max-Funktion.
- Schieberegister kennst du schon, damit kann man sich Werte merken...


RE: Mittelwert bei kontinuierlicher DAQ - lavoh - 24.11.2011 13:47

Hallo Gerd,

vielen herzlichen Dank für die schnelle Antwort.

Mit dem inf war mein Fehler, im hochgeladenen VI ist der auch bereits behoben, was am +1 zum i liegt.
Mit dem Schleifendurchgangswert meinte ich den Iterationswert i, entschuldigung.

Die zweite Schleife benötige ich noch für weitere Berechnungen. Das Beenden mit der lokale Variable habe ich hierher
http://www.labviewforum.de/Thread-mehrere-while-Schleifen-stoppen


Bei Verwendung Min/Max in der Schleife wird beim Beenden jedoch ebenfalls 0 angezeigt ...?