LabVIEWForum.de - Effiziente Datenerfassung und -auswertung mehrerer physikalischer Kanäle

LabVIEWForum.de

Normale Version: Effiziente Datenerfassung und -auswertung mehrerer physikalischer Kanäle
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo LVler,

unser Teststand ist mit drei Beschleunigungssensoren bestückt und die analogen Daten werden über eine USB-6008
Messkarte erfasst. Die Daten werden erfolgreich ans Labview mit einer Abtastrate von 1KHz weitergeleitet.

Das Ziel meines Labview-Programmes ist es nun, diese Daten darzustellen und abzuspeichern. Ausserdem möchte ich die
Signale auswerten und eine Frequenzanalyse (FFT) durchführen.

Im Anhang sende ich Euch meinen ersten Ansatz, bei dem die Daten aber mit circa 10Hz sehr langsam ausgeschrieben werden.
(Da sind noch weitere Bausteine für die Regelung eines Aktors drin. Diese sind vorerst aber nicht von Bedeutung. )

Frage nach bestehenden Lösungen:
Das Thema ist nicht neu. Deswegen - wo finde ich effiziente 'VorzeigeProgramme', die dies schon können (Ohne Express VIs)?
Bzw. existieren anwenderfreundliche Skripts zu diesem Thema?

Programmbezogene Fragen:
Wie kann man drei pysikalische Kanäle schnell und zeitgleich in eine Datei schreiben und darstellen?

Bisher arbeite ich bei den 'DAQ.mx Lesen' mit der Einstellung Analog DBL 1Kanal 1Sample. Eine kontinuierliche Datenerfassung würde ich anstreben,
weil dann die Sample Rate am höchsten ist. Welche Datenqualität (Sample Rate) benötige ich für eine aussagekräftige FFT?
Wann ergibt eine kontinuierliche Datenerfassung überhaupt Sinn?

Beim Lesen von Analogwerten mit der Schleifentechnik kann man parallel eine Frequenzanalyse durchführen die von Pufferdaten gespiesen wird.
Kann mir jemand ein Vorschlag machen, wie das aussehen soll?

Was bedeuted die 10:1 Regel? Sample rate bei MAX 1kHz --> Labview mit 100Hz? Wozu ist das gut?

Es ist gut vorstellbar, dass ich die Daten filtern muss. Filtern kostet Zeit. Welche Möglichkeiten bieten sich an, um diese Verzögerung wettzumachen oder zu umgehen?

Wie ihr unschwer bemerkt habt, bin ich neu und habe an meinem Programm lange gebastelt. Nun strebe ich nach einer patenten Lösung und bin Euch für jeden Input dankbar.

Beste Grüsse
rohneluk
Ich würde einen ganz anderen Aufbau machen (z.B. eine Producer Consumer Loop, evtl. kombiniert mit einer State Machine). Da kannst Du in einer Schleife die Daten erfassen und in der anderen die Daten wegschreiben.

Was sollen eigentlich die ganzen lokalen Variablen in Deinem Programm? Verbinde Deine Drähte doch einfach durch. Außerdem solltest Du die Sequenzstruktur so nicht verwenden. Dafür gibt's eine State Machine.

Gruß Markus
Vielen Dank V P,

deinen Tip mit der Consumer Loop habe ich umgesetzt und es hat gut geklappt.
Einzig die Datenausgabe in das Textfile ist noch nicht identisch. Der erste Kanal 'S1'
wird mit der Programmabtastrate (1kHz) herausgeschrieben, während 'S2' und 'S3' wie gewünscht mit
50 Hz herausgeschrieben werden. Das Ziel ist es, alle Sensoren mit 50Hz anzufragen und in das Textfile zu schreiben.

Ausserdem versuche ich mit den Daten eine FFT-Analyse durchzuführen. Leider zeigt das Schaubild aber nur
eine Amplitude bei 0 Hz, also den Offset der Funktion an. Braucht es vielleicht noch einen zusätzlichen Puffer um
separat zu Verfügung stehende Daten zu bekommen?

In einem nächsten Schritt soll ein Aktor mit einem PID-Regler implementiert werden. Die Regelgrösse sind die
Beschleunigungsdaten des Sitzes 'S1'. Eine Tauchspule soll dabei die auf den Sitz wirkenden Kräfte ausgleichen.
Einen PID Regler habe ich bereits programmiert, die Frage ist vielmehr, wie diese Struktur eingebettet werden soll.

Vielen Dank im Voraus
rohneluk
Wo? Unsure

Gruß Markus

(18.11.2011 16:36 )rohneluk schrieb: [ -> ]deinen Tip mit der Consumer Loop habe ich umgesetzt und es hat gut geklappt.
Offtopic2
Crossposting!
http://labviewportal.eu/viewtopic.php?f=13&t=4076
Bitte in Zukunft LVF-Regeln beachten. Crossposting ist nur erlaubt unter Angabe eines Links zum Crossposting.

Danke, Jens
Entschuldige, das nächste Mal werde ich einen Link einfügen.

@ VP: Eine Producer-Consumer-Loop besteht doch aus zwei voneinander getrennten Abläufen. Nämlich dem Auslesen der Daten und zum zweiten dem Schreiben der Daten.
Dabei hat entweder der Consumer bzw der Producer die Marke und der andere Prozess wird blockiert. Genau das habe ich doch mit den Queue-Operatoren gemacht. ??

O, jetzt ist klar. Da habe ich mich vertan und das alte Programm wieder hochgeladen. Sad

Gruss rohneluk
Hallo LVler,

kann mir bitte jemand einen Ansatz geben wie ich die Producer-Consumer-Loop so ergänze,
dass ich bei gleichbleibender Abtastfrequenz von 1kHz zusätzlich eine FFT Analyse durchführen kann?

Im vorigen Beitrag findet ihr meinen bisherigen Stand der Programmierung.

Danke für eure Ratschläge

Gruss rohneluk
Referenz-URLs