LabVIEWForum.de
Hohe Abtastung aber nur bestimmte Werte nutzen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ)
+---- Thema: Hohe Abtastung aber nur bestimmte Werte nutzen (/Thread-Hohe-Abtastung-aber-nur-bestimmte-Werte-nutzen)

Seiten: 1 2 3 4


Hohe Abtastung aber nur bestimmte Werte nutzen - johannes_r - 06.07.2009 15:34

Hallo zusammen,

der Thementitel ist sicherlich etwas verwirrend;)hoffe ihr versteht es wenn ich er erklärt habe.

ich möchte eine Analogspannung (Momentmesswelle) beispielsweise mit 10kHz und 100 Samples abtasten. Somit bekomme ich dann jede 0.01s ein Datenpaket. Dieses Array lese ich mit daqmx read aus und bilde den Mittelwert. Für eine Berechnung erfasse ich parallel eine Drehzahl über eine Frequenzmessung. Laut einem Applikations Ingenieur von NI tastet eine Counterkarte immer mit der maximalen Abtastrate ab und übergibt aber halt nur einen Wert wenn ich einen auslese. Ich hätte jetzt auch gern ein Array von Drehzahlmesswerten ohne eine Abtastrate einzustellen. Klingt etwas verwirrend ich weiß :huh:ich versuchs mal anders...ich erfasse jede 0,0001s einen Analogwert und möchte genau zu dieser Zeit auch einen Abtastwert der Drehzahl. Ich könnte jetzt die gleiche Abtastfrequenz einstellen was ich aber nicht möchte weil diese für das Drehzahlsignal zu gering wäre. Ich möchte also eine hohe Abtastfrequnz bzw keine Abtastfrequenz der Drehzahl einstellen, aber immer dann einen Wert in ein Array (Anzahl der Samples die ich später mit daqmx read lese) speichern, wenn ich einen Messwert am Analogeingang abtaste. Auch hier möchte ich dann zB 100 Samples abtasten. Dann müssten ja beide Datenpakete zur gleichen Zeit bereitstehen...

Vielen Dank für eure (hoffentliche) HilfeWink

gruß johannes


Hohe Abtastung aber nur bestimmte Werte nutzen - Y-P - 09.07.2009 08:06

Bahn

Gruß Markus


Hohe Abtastung aber nur bestimmte Werte nutzen - Lucki - 09.07.2009 08:39

' schrieb:Ich hätte jetzt auch gern ein Array von Drehzahlmesswerten ohne eine Abtastrate einzustellen.
Ich verstehs ja auch nicht bzw. mir fehlt die Zeit dazu. Nur so viel: Bei Impulsmesungen, Flankenzählung usw. mußt Du nur als Betriebsweise "Kontinuierlich" vorgeben, und schon erhälst Du als Ausgabe das von Dir gewünschte Array von Zählwerten. Also wenn Du z.B 100ms lang zählst und du liest mit DAQVisa Read immer die letzten 10 Werte aus dem Buffer aus, dann erhälst Du als Ergebnis ein Array der letzten 10 Zählungen. (Drehzahlmessungen)


Hohe Abtastung aber nur bestimmte Werte nutzen - johannes_r - 09.07.2009 08:55

Also wie schon gesagt erfasse ich eine Analogspannung mit beispielsweise 10kHz und 100 Samples also steht jede 0,01s ein Datenpaket zur Verügung, richtig? Ich möchte jetzt ebenfalls ein Datenpaket der Drehzahlen was ebenfalls aus 100 Samples besteht und aus dem gleichen Zeitfenster wie das Paket der Analogmesswerte also auch alle 0.01s. Um ein solches zu erhalten müsste ich ja auch mit der gleichen Frequenz abtasten wie bei der Spannungsmessung; mit 10kHz also. Jedoch brauch ich um die Drehzahl zu erfassen nach Shannon oder wie das heißt ja 2x fmax fmax ist bei einer Drehzahl von 6000 U/min 36kHz also brauch ich 72kHz Abtastrate um die Frequenz zu bestimmen, oder? würde ich diese einstellen und 100 Samples einstellen hätte ich ja schon nach 0.0014s die 100 Werte voll. Ich möchte aber die Frequenz bestimmen und halt dann nur jeden 100ten Wert beispielsweise der Abtastung auch wirklich nutzen.

Hoff es ist bisschen verständlicherWink
gruß johannes


Hohe Abtastung aber nur bestimmte Werte nutzen - Y-P - 09.07.2009 09:11

Bei 6000 U/min hast Du doch 100 Hz. Es wird doch durch 60 geteilt. Unsure

Gruß Markus

' schrieb:6000 U/min 36kHz



Hohe Abtastung aber nur bestimmte Werte nutzen - johannes_r - 09.07.2009 10:36

nein weil es ein inkrementalgeber mit 360 Impulsen/Umdrehung ist. dann müsste ich 36 kHz haben wenn ich alles richtig verstanden habeSmile


Hohe Abtastung aber nur bestimmte Werte nutzen - chrissyPu - 09.07.2009 13:03

Ja, das hättest Du vorher mal sagen können...Wink

Je nachdem, was für Hardware du hast, wäre ggf. ein Counter für dein Signal das richtige - wenn du den Wert in 10 kHz-Schritten abtastet (wobei ich mir ehr unsicher bin, dass das geht...), kannst du einfach die Werte voneinander abziehen und dann auf die Drehzahl schließen. Ansonsten wirst du über die hohe Abtastrate nicht hinwegkommen, dann musst du entsprechende Bereiche festlegen (die vielen Werte der Drehzahl halt auf die 100 Werte Mappen) und dann jeweils die Frequenz ausrechnen... Ich würde nach der Counter-Sache schauen...Wink

Hab gerade nochmal deinen ersten Post gelesen: du musst den Inkrementalgeber entsprechend mit 72 kHz abtasten - das heißt aber nicht, dass die Drehzahl auch so dynamisch ist. Sprich, Wenn Du per Counter Dir ein Drehzahlsignal generierst (z.B. durch Frequenzmessung) kannst du das so schnell abtasten, wie Du Werte brauchst. Dann müsstest du nochmal abschätzen, ob das so realistisch ist, aber ich denke, das sollte eigentlich dynamisch in ordentliche Bereichen sein.

Grüße,

ch


Hohe Abtastung aber nur bestimmte Werte nutzen - zaphodthepresident - 09.07.2009 17:47

Hallo,
wenn ich dein Problem richtig verstanden habe, mußt du so vorgehen, daß das Signal, welches die höchste Abtastrate erfordert, die Abtastrate für alle Signale vorgibt, die du messen möchtest. Du mißt dann alle Signale (n Kanäle auf deiner DAQ-Karte) kontinuierlich (d.h. kontinuierliche ADC) und liest periodisch (while-loop!) n Samples für jeden Kanal aus. Damit haben schon einmal alle Signale das gleiche "Zeitfenster".
Wenn nicht alle gemessenen Signale die eingestellte (hohe) Abtastrate erfordern, führst du anschließend mit deren Meßwerten eine entsprechende Datenreduktion durch. Dies ist insofern wichtig, damit die danach stattfindende weitere "Datenverarbeitung" nicht soviel Zeit in Anspruch nimmt u. dir der oder die Datenpuffer überlaufen.

Gruß,
zaphodthepresident


Hohe Abtastung aber nur bestimmte Werte nutzen - johannes_r - 16.07.2009 07:48

hallo zusammen,

entschuldigung dass ich erst jetzt was zu euren antworten schreibe...

@zaphodthepresident
würde heißen ich muss mit ~72kHz jeden Kanal abtasten. Das Signal des Inkrementalgebers wird mit einer Timer/Counter Karte (NI-PXI 6602) gemessen, die Analogwerte mit einer Mulit I/O Karte (NI-PXI 6229). Ich habe 4 Analogmesswerte und 2 Analogausgaben. Die Karte hat soweit ich weiß 250kS/s. Aber das müsste die Summenabtastrate sein was bedeutet dass für jeden Kanalo nur ~60kS/s möglich sind. Von daher kann ich garnicht mit der höchsten Auftretenden Frequenz abtasten oder?

Ist es nicht möglich einen Abtastrate an dem Task zur Erfassung der Frequenzmessung (Drehzahlmessung) zu definieren, und eben beispielsweise 1000 Samples bei Samples per Channel anzugeben; wobei die Samples aber nicht mit dem Abtasttakt des eigenen Tasks geschrieben werden, sondern mit dem Abtasttaktes des Analoginput Taktes? So ne Art Triggerung. Also Hoch abtasten, werte Aber nur in das Array schreiben wenn eine Flanke des AI Taktes vorhanden ist?

Danke Gruß Johannes


Hohe Abtastung aber nur bestimmte Werte nutzen - cb - 16.07.2009 10:05

nein

du machst folgendes:
- du erstellst dir mit der PXI 6602 einen Mess-Takt in der gewünschten Frequenz und routest diesen auf eine PXI-Trigger-Leitung, z.B. PXI-TRIGGER-1
- du ersellst einen AI-Task mit der gewünschten Anzahl an Kanälen, beim VI Timing gibst du an, dass du einen externen Sample-Takt verwenden möchtest und zwar genau den von PXI-Trigger 1
- du erstellst einen Drehzahl-Task mit der 6602, als Abtast-Takt gibst du wieder um extern von PXI-Trigger 1 an

damit ist dann schonmal sichergestellt, dass beide Tasks mit dem gleichen Takt arbeiten und synchron messen.

das mit dem Drehzahl-Task ist etwas verwirrend dargestellt worden vom NI-AE. Die 6602 arbeitet tatsächlich intern mit der max. Auflösung von 80 MHz, sonst würdest du ja u.U. Pulse vom Encoder verlieren. Das interessiert dich aber eigentlich gar nicht, sieh es einfach so: wenn du mehr als 20 Mhz Pulse auf den Encoder-Eingang gibts hast du gute Chancen dass sich die 6602 verzählt, aber von diesem Wert bist du ja meilenweit entfernt. Der Abtast-Takt den du für die 6602 angibst bedeutet eigentlich nur, in welchen Abständen der Zähler ausgelesen wird. Das kann man praktisch genauso betrachten wie eine Analoge Messung, du bekommst halt innerhalb deines gewünschten Zeitfensters X Werte geliefert bei denen du weißt dass der zeitliche Abstand zwischen den Werten genau y ms beträgt.

Letzteres dürfte dich aber vermutlich gar nicht interessieren, weil du ja nur die Drehzahl kennen willst, und da ergibt sich bei der von dir geforderten sehr schnellen Abtastung ein Problem: damit du die Drehzahl ermitteln kannst musst du die Winkeländerung durch die Zeit dividieren. Wenn du nun z.B. ein Array mit 100 Winkeln zurückbekommst die mit 10 kHz gesampled wurden, dann bildest du die Differenz aus erstem Winkel (Array-Index 0) und letzten Winkel (Array Index 99) und dividierst das Ganze durch 0,01 Sekunden. Da die Zeit sehr klein ist und die Winkel-Änderung ggf. (gerade bei kleinen Drehzahlen) auch sehr klein sein kann bekommst du eine große Streuung - etwas plausibler formuliert, ein Tick des Encoders mehr oder weniger macht gleich ein paar 10 U/min mehr oder weniger aus. Als praktikable Abtast-Rate bei 360 Striche Encodern hat sich eine Mittelungs-Zeit für die Drehzahl von 250 ms herauskristallisiert

zurück zu den Tasks:
die Tasks sind erstellt und nun muss man sie nur noch synchron starten. Dazu bietet sich an bei der Encoder-Messung als Start-Trigger-Bedingung eine digitale Flanke zu verwenden. Die Flanke bekommst du z.B. in dem du den AI-Start-Trigger von der M-Serie auf eine weiter PXI-Trigger-Leitung routest.

Die Daten holst du am besten per Hardware-Timing auf den AI-Task ab, also die Anzahl Samples auf z.B. 100 stellen, beim Encoder holst du immer alle ab ...

Da du nach dieser Ausführung vermutlich gleich nach einem Beispiel fragen wirst: ja, die gibt es: im Example-FinderWink

Und noch ein Hinweis: ich würde das Moment mit max. 0,5 mal Bandbreite der Messwelle abtasten, da solltest du mal in der Doku schauen, wieviel das ist. 10 kHz halte ich schon für sehr ambitioniert ...