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 

Auslesen von FIFO's in ADwin mit LabVIEW



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!

07.12.2007, 10:31
Beitrag #1

fan Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: Dec 2007

8.2
2007
kA

47057
Deutschland
Auslesen von FIFO's in ADwin mit LabVIEW
Hallo zusammen,
ich habe das Problem, dass ich Messsignale über einen Analogeingang der ADwin-Karte mit einem FIFO aufnehmen möchte und diesen FIFO in geeigneten Zyklen für eine Frequenz-Bandbreite von 400 HZ bis 100 KHz kontinuierlich auslesen möchte, ohen dabei einen Datenversatz zu erhalten, d.h, dass ich dabei keine Daten verlieren möchte.
Hab leider kein passendes Beispiel und der ADwin-Hersteller konnte mir leider auch keinen geeigneten Link zu Beispielen im Internet geben.
Kann mir jemand helfen???
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.12.2007, 18:35
Beitrag #2

dc6xs Offline
registered alien
****


Beiträge: 762
Registriert seit: Aug 2006

6.1,7.00
2006
kA

79106
Sonstige
Auslesen von FIFO's in ADwin mit LabVIEW
' schrieb:Hallo zusammen,
ich habe das Problem, dass ich Messsignale über einen Analogeingang der ADwin-Karte mit einem FIFO aufnehmen möchte und diesen FIFO in geeigneten Zyklen für eine Frequenz-Bandbreite von 400 HZ bis 100 KHz kontinuierlich auslesen möchte, ohen dabei einen Datenversatz zu erhalten, d.h, dass ich dabei keine Daten verlieren möchte.
Hab leider kein passendes Beispiel und der ADwin-Hersteller konnte mir leider auch keinen geeigneten Link zu Beispielen im Internet geben.
Kann mir jemand helfen???


Ich kenn die ADwin-Karte und Ihre Specs nicht, aber für 100kHz maximale Signal-Frequenz solltest Du nach Nyquist mit mindestens 200kHz abtasten..

Dann hast Du die dein Messignal in digitaler Form im Zeitbereich vorliegen, d.h. nur noch fix die FFT berechnen und Du hast deine Signale im Frequenzbereich..

Warum interessiert Dich der Bereich unter 400Hz eigentlich nicht?

Gruß, Rob

Bitte Beachten:
Die obenstehenden Texteile können unter Umständen Sarkasmus und Ironie enthalten, für nicht erkannten Sarkasmus oder nicht erkannte Ironie wird keine Haftung übernommen.

N.B.:
"Multiple exclamation marks, " he went on, shaking his head, "are a sure sign of a deseased mind." - Terry Pratchett
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.12.2007, 22:11
Beitrag #3

fan Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: Dec 2007

8.2
2007
kA

47057
Deutschland
Auslesen von FIFO's in ADwin mit LabVIEW
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.
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.
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.
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.12.2007, 22:39
Beitrag #4

fan Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: Dec 2007

8.2
2007
kA

47057
Deutschland
Auslesen von FIFO's in ADwin mit LabVIEW
Ich muss noch hinzu fügen, dass die ADwin-Karte mit ADbasic programmiert wird, leider ist es so, wenn die ADwin-VIs nicht in der Bibliothek vorhanden sind, und ich hier ein VI reinstelle, kann diese zwar geöffnet werden, aber die ADwin-VIs werden nicht angezeigt, bei Gelegenheit stell ich einen Screenshot meines VIs rein.
Gruss fan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.12.2007, 13:01 (Dieser Beitrag wurde zuletzt bearbeitet: 08.12.2007 13:06 von dc6xs.)
Beitrag #5

dc6xs Offline
registered alien
****


Beiträge: 762
Registriert seit: Aug 2006

6.1,7.00
2006
kA

79106
Sonstige
Auslesen von FIFO's in ADwin mit LabVIEW
' 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?

Bitte Beachten:
Die obenstehenden Texteile können unter Umständen Sarkasmus und Ironie enthalten, für nicht erkannten Sarkasmus oder nicht erkannte Ironie wird keine Haftung übernommen.

N.B.:
"Multiple exclamation marks, " he went on, shaking his head, "are a sure sign of a deseased mind." - Terry Pratchett
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.12.2007, 15:25
Beitrag #6

fan Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: Dec 2007

8.2
2007
kA

47057
Deutschland
Auslesen von FIFO's in ADwin mit LabVIEW
Hii Rob,
zunächst mal danke für deine Anregungen.
Ich selber arbeite zum ersten Mal mit dieser Hardware, daher bin ich zur Zeit auf Learning by doing angewiesen.
Die FIFO-Länge dynamisch zu halten wäre ein Ansatz nur muss ich, bevor ich den FIFO auslese, immer kontrollieren wann der FIFO vollgeschrieben ist, da ist es leichter eine fest eingestellte Dimensionierung vorzunehmen, die während des Auslesens in einer IF-Anweisung auf die Anzahl der Elemente kontrolliert wird.
Ich hab an der UNI-Wiesbaden ein Beispiel zur Datenerfassung mit LabVIEW und ADwin gefunden, welche ohne FIFO auskommt, lediglich der ADW wird über ein VI ausgelesen, ich probiers erst noch mal auf die Weise und greife dann auch deine Vorschläge zurück.
Danke noch malsSmile
Gruss fan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
08.12.2007, 16:16
Beitrag #7

dc6xs Offline
registered alien
****


Beiträge: 762
Registriert seit: Aug 2006

6.1,7.00
2006
kA

79106
Sonstige
Auslesen von FIFO's in ADwin mit LabVIEW
' schrieb:Hii Rob,
zunächst mal danke für deine Anregungen.
Ich selber arbeite zum ersten Mal mit dieser Hardware, daher bin ich zur Zeit auf Learning by doing angewiesen.

Ich hab an der UNI-Wiesbaden ein Beispiel zur Datenerfassung mit LabVIEW und ADwin gefunden, welche ohne FIFO auskommt, lediglich der ADW wird über ein VI ausgelesen, ich probiers erst noch mal auf die Weise und greife dann auch deine Vorschläge zurück.
Danke noch malsSmile
Gruss fan

Kein Problem!

Zitat:Die FIFO-Länge dynamisch zu halten wäre ein Ansatz nur muss ich, bevor ich den FIFO auslese, immer kontrollieren wann der FIFO vollgeschrieben ist, da ist es leichter eine fest eingestellte Dimensionierung vorzunehmen, die während des Auslesens in einer IF-Anweisung auf die Anzahl der Elemente kontrolliert wird.

Ich dachte hier eher an eine LV-Interne oder OS-Interne FIFO-Verwaltung.
Aber ich habe mir gerade mal die Linux-Manpage zu FIFO durchgelesen:
<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>FIFO(4) Linux Programmer's Manual FIFO(4)

NAME
fifo - first-in first-out special file, named pipe

DESCRIPTION
A FIFO special file (a named pipe) is similar to a pipe, except that it is accessed as part of the file system. It can be opened by multiple
processes for reading or writing. When processes are exchanging data via the FIFO, the kernel passes all data internally without writing it to
the file system. Thus, the FIFO special file has no contents on the file system, the file system entry merely serves as a reference point so
that processes can access the pipe using a name in the file system.

The kernel maintains exactly one pipe object for each FIFO special file that is opened by at least one process. The FIFO must be opened on
both ends (reading and writing) before data can be passed. Normally, opening the FIFO blocks until the other end is opened also.

A process can open a FIFO in non-blocking mode. In this case, opening for read only will succeed even if noone has opened on the write side
yet; opening for write only will fail with ENXIO (no such device or address) unless the other end has already been opened.

Under Linux, opening a FIFO for read and write will succeed both in blocking and non-blocking mode. POSIX leaves this behaviour undefined.
This can be used to open a FIFO for writing while there are no readers available. A process that uses both ends of the connection in order to
communicate with itself should be very careful to avoid deadlocks.

NOTES
When a process tries to write to a FIFO that is not opened for read on the other side, the process is sent a SIGPIPE signal.

FIFO special files can be created by mkfifo(3), and are specially indicated in ls -l.

SEE ALSO
mkfifo(3), mkfifo(1), pipe(2), socketpair(2), open(2), signal(2), sigaction(2)

Linux 1999-06-20 FIFO(4)
</div>

Ausdem was da steht, lese ich das ein FIFO nur wie eine Pipe arbeitet und keine Größe definiert wird.
Also muss man wohl schon schauen was man als FIFO bezeichnet und wie man das definiert.

Schönes WE noch,
Robert

Bitte Beachten:
Die obenstehenden Texteile können unter Umständen Sarkasmus und Ironie enthalten, für nicht erkannten Sarkasmus oder nicht erkannte Ironie wird keine Haftung übernommen.

N.B.:
"Multiple exclamation marks, " he went on, shaking his head, "are a sure sign of a deseased mind." - Terry Pratchett
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.12.2007, 02:21
Beitrag #8

fan Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: Dec 2007

8.2
2007
kA

47057
Deutschland
Auslesen von FIFO's in ADwin mit LabVIEW
Hii Rob,
in ADbasic sieht das unter Windows etwas anders aus, etwa so
;************************************
DIM DATA_1[länge] AS LONG AS FIFO
;*********************
Nur dann funktioniert das Feld auch als FIFO, tja und eine IF-Abfrage drum rumgebastelt, liesst er dann den ADC der ADwin Karte aus, aber das ist eigentlich eine Standart-Aufgabe, die bestimmt schon 1000mal gelöst wurde, nur finde ich kaum Beispiele.
Dir auch n schönes WE
GrussSmile
fan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.12.2007, 13:39
Beitrag #9

Thom76L Offline
LVF-Neueinsteiger


Beiträge: 1
Registriert seit: Dec 2007

8.5
1997
kA

55129
Deutschland
Auslesen von FIFO's in ADwin mit LabVIEW
Hallo Fan,

falls Deine Probleme beim ADwin-Programm liegen, kann Dir das vielleicht weiterhelfen:


<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>#define len 4000000
DIM DATA_1[len] AS LONG AS FIFO

init:
Processdelay=400 ' 100kHz Eventfrequenz
Set_Mux(0) 'Multiplexer auf Kanal 1 setzen
Start_Conv(1) 'Start ADC1 A/D-Wandlung
Fifo_Clear(1) 'Fifo initialisieren

event:
'Wait_EOC(1) 'Ende der Wandlung abwarten; kann man sparen, weil man ja immer mit 10µs Abstand abtastet
Data_1=ReadADC(1) 'Wert auslesen
Start_Conv(1) 'Start ADC1 A/D-Wandlung

'Achtung: darauf achten, daß die Daten aus dem Fifo vom PC aus auch ausgelesen werden, sonst
' gibt es Datenverlust!</div>

Ich hoffe das passt für Dein Problem.
Falls nicht kannst Du ja auch beim Hersteller anrufen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.12.2007, 08:26
Beitrag #10

fan Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: Dec 2007

8.2
2007
kA

47057
Deutschland
Auslesen von FIFO's in ADwin mit LabVIEW
Hii Rob,
danke, dass du dir so die Mühe gemacht hast, ich werd es gleich mal ausprobieren, aber das ist jetzt leider auch nur die halbe Miete, das ganze soll dann nämlich auch mit sechs parallel auslesbaren FIFO's klappen, aber das probier ich erst mal selber aus.
Danke noch mal, wenn ich dir mal irgend wie helfen kann in Sachen E-Technik, sag bescheid.Smile
Gruss Fan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Datenerfassung im FIFO Modus PeterPuter1 1 3.302 08.01.2009 15:17
Letzter Beitrag: Lucki
  Wlandaten über LabVIEW auslesen? yan 1 4.278 04.12.2007 13:31
Letzter Beitrag: eg
  LabVIEW 7.1 - Auslesen von FileldPoint (FP-AI-100) suamikim 2 4.038 24.07.2007 07:12
Letzter Beitrag: suamikim

Gehe zu: