' schrieb:Hii Rob,
also, die Firma ADwin baut u. a. Messsysteme für Echtzeit-Datenerfassung, ich verwende das ADwin Light 16 System, eine PCI-Steckkarte, um Messdaten verschiedener Sensoren mit ADwin-VIs, die ich nach LabVIEW importiert habe, auszulesen.
Mir wurde empfohlen, das ganze über FIFOs zu realisieren, die, möglichts gut dimensioniert, keinen Datenversatz beim Auslesen haben sollten.
Der Frequenzbereicht ist bei der Verwendung von Streuflusssensoren oder Wirbelstromsensoren nicht unbedigt förderlich für lückenlose Datenerfassung.
ok das erklärt schon mal die HW und den Einsatz der FIFOs.
Zitat:Das ADwin System hat 8 Analogeingänge die über 8 AD-Wandler auf einen Multiplexer gführt sind.
Der Mux kann mit einer max. Frequenz von 100 KHz einen Analogeingang abtasten, d.h. wenn ich alle 8 Eingänge verwenden würde, verteilen sich die 100 KHz auf alle 8 Kanäle.
Das Adwin-System kann mit einem maximalen Globaldelay von 25 Nanosekunden getaktet werden.
Mein Problem ist nun, zwischen einem ausreichtend dimensioniertem FIFO, einer entsprechenden Abtastfrequenz und der Datenrate, die LabVIEW aufnehmen kann, einen Kompromiss zu finden, bei dem ich eine Bandbreite von 400 Hz bis 100 Khz problemlos einlesen und on the Fly in einer Binärdatei ablegen kann.
Wenn Du maximal einen Kanal mit 100kHz abtasten kannst, wirst Du wegen
Nyquist keine 100kHz Nutzsignale erfassen können..
Zitat:Alles funktioniert super gut, bis auf den Datenversatz, der dann entsteht, wenn LabVIEW geradre die Daten aus dem vollgeschriebenen FIFO ausliesst.
Dies wird in der FFT deutlich an Hand mehrerer Peaks, die über der Frequenz verteilt sind.
Dieser Zeitversatz, die Daten werden ja gespeichert und später ausgewertet, lässt sich vielleicht minimieren in dem Du die Daten nicht auf die Festplatte schreibst sondern im RAM hälst.
Du kannst Die Daten ja immernoch in eine Datei speichern, aber um die Auswertung vielleicht fixer zumachen, würde ich die Daten nicht erst aus der Datei lesen, sondern gleich mit den Daten rechnen.
Zitat:Jetzt ist die Frage: wie hoch ist die optimale Sample-Rate für diese Bandbreite und wie gross muss der FIFO sein, um Datenversatz zwischen dem Auslesen zu vermeiden.
Gruss fan
Nyquist hat nachgewiesen, dass Deine Abtastfreqeuenz mindestens
zwei mal so groß sein muss, wie die Höchste Frequenz, welche Du auswerten möchtest. Da geht leider kein Weg dran vorbei.
Wegen dem FIFO (Unter der Annahme 16bittige Abtastung):
100kSps*16bit=100kSps*2byte=200kbyte.
Also ich würde den FIFO erst mal großzügig bemessen, so ein paar MB.
Oder ist dein System so ausgelastet, das Du nicht genug RAM zur verfügung hast?
100kSps ist ja noch "relativ" wenig Samplerate.. Wenn man Da an andere Abtastungen im MSps Bereich denkt.
[EDIT]
Habe gerade mal auf der Herstellerseite geschaut, die Karte hat doch 16MB RAM on board, das sollte doch locker reichen...
Selbst wenn Du nur alle Minute die Daten von der Karte holen würdest, wäre der Speicher noch nicht voll.
Gruß, Rob
PS: kann man die FIFO-Größe nicht dynamisch zuweisen lassen?