INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Samplingrate von 1kHz am AI



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

27.03.2008, 12:11
Beitrag #1

Kirill Offline
LVF-Grünschnabel
*


Beiträge: 21
Registriert seit: Jan 2008

8.5
2008
kA

95444
Deutschland
Samplingrate von 1kHz am AI
Die Hardware ist ein NI PCI-6251, LabVIEW 8.5 und NI-DAQmx 8.0, das VI ist
Sonstige .vi  AI_Samplingrate.vi (Größe: 61,76 KB / Downloads: 339)


Ich hab [attachment=38950:AI_Samplingrate.vi]hier ein System, das einen analogen Eingang mit einem kHz abtasten soll. Bisher sieht das auf, wie im Anhang.

Das Problem ist die Samplingrate. Klar, ich hab in der Schleife auch eine 0,1s-Wartepause. Es kommt jedenfalls folgendes raus:

Sonstige .txt  100ms.txt (Größe: 1,22 KB / Downloads: 307)


Nun wurde mir schonmal geraten, die Softwareabtastrate runterzustellen. Das Problem ist aber, dass ich a) nicht über 100Hz komme (1ms Verzögerung in der While-Schleife) und b) viel viel weniger Werte rauskommen:

Sonstige .txt  1ms.txt (Größe: 8,51 KB / Downloads: 344)


Was ich bisher versucht hab, war abgesehen von der Veränderung der Wartepause der While-Schleife, das "Analog Wfm 1Chan NSamp" durch was anderes zu ersetzen. Das Problem ist, dass dabei die Auswertung aufgrund Datentypinkompatibilitäten zusammenbricht.

Weiss wer, wie das richtig geht?
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
27.03.2008, 13:48
Beitrag #2

Achim Offline
*****
*****


Beiträge: 4.222
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
Samplingrate von 1kHz am AI
Hi,

ich weiß nicht, was du da vorhast...Wenn du über das VI inkl. Treiber mit 1 kHz abtastest, wird dir jede ms ein Wert zur Verfügung stehen, d.h. alle dt=1ms ein Wert. Was willst du da mit "Get Time/Date in seconds", also mit einer Zeit aus dem SW-Timing? Du hast doch die HW-Zeit schon über das dt...

Zur Klarstellung: Bei einer gepufferten Datenerfassung kriegst du die Zeit über die Hardware, und das läuft vollständing unabhängig von der Laufzeit deiner Schleife...die ja nur über das verwendete VI den Puffer ausliest!

Gruß
Achim

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.03.2008, 14:07 (Dieser Beitrag wurde zuletzt bearbeitet: 27.03.2008 14:09 von Kirill.)
Beitrag #3

Kirill Offline
LVF-Grünschnabel
*


Beiträge: 21
Registriert seit: Jan 2008

8.5
2008
kA

95444
Deutschland
Samplingrate von 1kHz am AI
Das dt von der Hardware kann ich nicht nehmen, da im Verlauf der Messung diese Struktur mehrfach vorkommt (hab nur einen Ausschnitt meines eigentlichen VIs hochgeladen) und sich die Zeit immer auf den Startpunkt des gesamt-VIs beziehen muss und nicht etwa auf die einzelnen Auslesevorgänge.

Also für mich zum Verstehen. Der Puffer (Größe 1000) wird von der Hardware beschrieben und das VI in der Schleife liest "nur" den Puffer aus und gibt mir nen Wert?

Heißt das, dass ich zunächst die Puffergröße hochstellen muss, um bei ner Laufzeit von sagen wir 10 Sekunden genug Werte für 1kHz Samplingrate habe? Und wie bringe ich LabVIEW dann dazu, mir auch tatsächlich 1k Werte/Sekunde in die Datei zu schreiben?
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.03.2008, 15:03
Beitrag #4

Achim Offline
*****
*****


Beiträge: 4.222
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
Samplingrate von 1kHz am AI
Wieso kannst du das dt nicht nehmen? dt ist doch nur ne Schrittweite die du ab dem Startpunkt deiner Aufzeichnung (erster gelesener Wert) hochzählst, ohne einen absoluten Startzeitpunkt!

Ja, das mit dem Puffer hast du richtig verstanden!

Nein, du musst den Puffer nicht groß genug für 10 Sekunden stellen, du musst ihn nur innerhalb der Schleife oft genug auslesen, damit kein Überlauf passiert!

Ein absolute Angabe, 1k Werte pro Sekunde zu speichern kann man so nicht machen! Die Aufzeichnung wird immer hinterherhinken, wei einfach die SW nicht schnell genug ist. Du tastest nur schnell genug ab (das macht für dich der Treiber + die Hardware) und speicherst dann so oft du kannst/willst die verfügbaren Werte auf Platte. Das sind manchmal dann evtl. 1000 Werte pro Sekunde, beim nächsten Mal aber evtl. schon 1346 Werte pro Sekunde, weil deine SW zwischendurch noch was anderes gemacht hat!

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.03.2008, 15:20
Beitrag #5

Kirill Offline
LVF-Grünschnabel
*


Beiträge: 21
Registriert seit: Jan 2008

8.5
2008
kA

95444
Deutschland
Samplingrate von 1kHz am AI
Wenn ich das dt aus der Wafeform nehme, dann hab ich zwar Werte wie
0.00 0.01
1.34 1.46
und so weiter. Wenn ich aber im weiteren Verlauf des VIs (ein paar Flat-Frames später) eine neue Messung mache, dann bekomm ich
0.00 0.01
1.74 1.44
anstatt
0.02 0.03
1.74 1.44
Ich will also MEHRMALS messen, allerdings soll jedes Mal der aktuellle Messzeitpunkt ab dem Anfang des Gesamt-VIs gezählt sein und nicht ab dem Start der konkreten Messung.


Also mir geht es nicht exact darum, dass ich GENAU 1kHz Samplingrate erreiche. Aber wie komm ich nu in den Bereich von 1kHz? Wie die Samplingrate genau ist, ist ja wurscht, solang die Zeitwerte mit dabei stehen.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.03.2008, 07:22
Beitrag #6

Achim Offline
*****
*****


Beiträge: 4.222
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
Samplingrate von 1kHz am AI
' schrieb:Aber wie komm ich nu in den Bereich von 1kHz? Wie die Samplingrate genau ist, ist ja wurscht, solang die Zeitwerte mit dabei stehen.

Die Zeitwerte, die du dir aus der Schleife mit dem Timer-VI rausziehst, haben ABSOLUT GAR NICHTS mit den Zeitpunkten zu tun, wann die Werte wirklich aufgenommen wurden!

Die kleinste Zeiteinheit bzw. Zeitdifferenz, die du per "VI-Durchlauf" auflösen/rauskriegen kannst, liegt im Optimalfall bei 1ms. Leider macht da deine Programmierung und dein Betriebssystem meistens nicht mit, weil irgendwas zwischenrein gemacht wird...Deine Anforderung ist damit also nicht zu lösen!

Bei deinem Lese-VI kriegst du die Daten aber als Waveform, und da ist auch dein t0 mit angegeben. Du könntest also evtl. so vorgehen, das du dir das t0 deiner ersten Messung merkst und dann vom jeweiligen t0 der folgenden Messungen abziehst und dann mit diesen relativen Werten (gerechnet ab erster Messung, d.h. "VI - Start") mit dem dt deine Zeitwerte ausrechnest. Allerdings stell ich mir das ziemlich (Rechen-)Zeitintensiv vor, ich weiß nicht ob das so ohne weiteres "on the fly" funktioniert...

Gruß
Achim

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
28.03.2008, 13:56
Beitrag #7

Kirill Offline
LVF-Grünschnabel
*


Beiträge: 21
Registriert seit: Jan 2008

8.5
2008
kA

95444
Deutschland
Samplingrate von 1kHz am AI
Was müsste ich an der Programmierung ändern, um möglichst nah an 1kHz zu kommen?
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.03.2008, 14:26
Beitrag #8

Achim Offline
*****
*****


Beiträge: 4.222
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
Samplingrate von 1kHz am AI
' schrieb:Was müsste ich an der Programmierung ändern, um möglichst nah an 1kHz zu kommen?

Wie schon gesagt:
Zitat:Deine Anforderung ist damit also nicht zu lösen!

Zur Frage: Du musst halt alles weglassen, was irgendwie Zeit kostet. Trotzdem sind die von dir erfassten Zeitwerte nichts anderes, als sich selbst in die Tasche lügen...

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.04.2008, 11:09 (Dieser Beitrag wurde zuletzt bearbeitet: 03.04.2008 11:23 von Kirill.)
Beitrag #9

Kirill Offline
LVF-Grünschnabel
*


Beiträge: 21
Registriert seit: Jan 2008

8.5
2008
kA

95444
Deutschland
Samplingrate von 1kHz am AI
Mal ne Frage zu den Zeitwerten nochmal. Habe ich es also richtig verstanden, dass wenn ich die DAQmx-Read-VIs auf "Waveform" stelle, dann kommt ein Datentyp raus, der die Zeit- und Y-Werte beinhaltet? Wie verschaff ich mir dann die einzelnen Zeitwerte? Wenn ich es per "Separate waveform" versuche, dann kann der mir nur t0 und dt ausgeben. Scho klar, dass ich dann dt irgendwie ein paar mal auf t0 addieren müsste, aber wie bekomm ich raus, wieviele Zeitschritte rum sind, wenn die Zeit in der While-Schleife mit dem eigentlichen Messvorgang nichts zu tun hat?

Was ich auch nicht ganz verstehe, ist bei welchem Zeitpunkt/VI die Hardware die Messung denn eigentlich vornimmt. Wenn das DAQmx-Read also nur den Puffer ausliest, in welchem VI wird der Puffer geschrieben?
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.04.2008, 11:39
Beitrag #10

Achim Offline
*****
*****


Beiträge: 4.222
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
Samplingrate von 1kHz am AI
' schrieb:t0 und dt ausgeben. Scho klar, dass ich dann dt irgendwie ein paar mal auf t0 addieren müsste, aber wie bekomm ich raus, wieviele Zeitschritte rum sind, wenn die Zeit in der While-Schleife mit dem eigentlichen Messvorgang nichts zu tun hat?
t0 ist eine ABSOLUTE Zeit, ich nehme an die kommt über den DAQmx-Treiber vom Betriebssystem

' schrieb:Was ich auch nicht ganz verstehe, ist bei welchem Zeitpunkt/VI die Hardware die Messung denn eigentlich vornimmt. Wenn das DAQmx-Read also nur den Puffer ausliest, in welchem VI wird der Puffer geschrieben?
Der Puffer wird nicht in einem VI beschrieben, sondern vom DAQmx-Treiber (auch nur ein Stück Software + RAM) direkt mit den gelesenen Werten vom ADC der Karte gefüllt!

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: