LabVIEWForum.de - RT FIFO Verständnis

LabVIEWForum.de

Normale Version: RT FIFO Verständnis
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Ich habe eine Verständnisfrage bezüglich RT-FIFOs. Nun zu meiner Frage, mein Vorgehen (siehe auch Bild):
1) Erstelle ein RT-FIFO der 4 x 5 gross ist
2) Erstelle ein 1-D Array 1x20 mit einer Forschleife
Write Prozess
3) Schreibe die Daten in das RT-FIFO
Read Prozess (untere Whileschleife)
1) Sind in RT-FIFO Daten Enthalten? wenn ja, lese RT-FIFO solange bis RT-FIFO leer ist

Leider entspricht das Ergebnis nicht meinen Vorstellungen, egal was ich mache werden die Daten 0-4 immer gelesen, die Daten 5-19 kommen nicht an. Meine Vorstellung wäre hier:
1) Das Erstellte RT-FIFO ist 5x4 groß. Meine Erwartungshaltung ist hier, dass die Daten 0-4 in das erste Array 1x5, die Daten 5-9 in das nächste Array usw. Kopiert werden.
2) In Schleife lesen, werden dann die Daten so lange gelesen bis das RT FIFO leer ist, in der Reihenfolge so wie die Daten in das FIFO geschrieben wurden.
Wo ist mein Denkfehler. Vielen Dank.
(13.06.2014 11:15 )Michiel schrieb: [ -> ]1) Das Erstellte RT-FIFO ist 5x4 groß. Meine Erwartungshaltung ist hier, dass die Daten 0-4 in das erste Array 1x5, die Daten 5-9 in das nächste Array usw. Kopiert werden.
Und hier entspricht die Realität ganz offensichtlich nicht deiner Erwartungshaltung.
Wenn jedes RT-FIFO-Element ein Array mit 5 Elementen ist, dann darfst du auch nur ein Array mit (max.) 5 Elementen pro Schreibvorgang übergeben. Da durch FIFO Create der Speicher auf jeden Fall reserviert ist, fallen die Elemente die zu viel sind, einfach weg.

Gruß, Jens
Hallo Jens,
vielen Dank. Wie ist das dann, zu verstehen. Wie wird dann das Rt-FIFO mit Daten gefüllt. Z.B. Wenn ich die Daten nicht rechzeitig abholen würde, wären ja die Daten in zweite bzw. n-te Array kopiert. Würde ich dann mit der Methode lesen richtig einlesen?
So ganz verstehe ich deine Frage jetzt nicht. Im Prinzip steht aber alles in der LabVIEW-Hilfe.

Also nochmal: Mit FIFO Write fügst du ein Element zum FIFO hinzu. Der Datentyp ist durch FIFO Create festgelegt worden. Wenn das wie in deinem Fall ein 1D-Array mit 5 Elementen ist, dann darfst du nicht ein 1D-Arrray mit 20 Elementen übergeben! Dabei gehen dir 15 Elemente schon beim Schreiben verloren. Korrekte Weg: 4x ein 1D-Array mit 5 Elementen übergeben.

Wenn du jetzt ein 5. Mal ein 1D-Array schreibst (ohne dass du bisher Elemente aus dem FIFO ausgelesen hast), dann hängt es von den Anschlüssen am Write VI ab, was passiert. Aber das kannst du selber in der Hilfe zum VI nachlesen.

Gruß, Jens
Referenz-URLs