Hallo liebe LabVIEW-Gemeinde!
Ich tüftle gerade an einer Sache die ich einfach nicht in den Griff bekomme.
Zum Problem:
Ich schreibe Daten auf dem FPGA in 3 FIFOs die ich dann auf der RT von einer Schleife in eine andere übergeben möchte. Bei diesem Versuch geht das Programm in die Knie, weil der Austausch zwischen den Schleifen zu lange dauert. Außerdem kommt es zu Datenverlust.
Zur Konfig:
FIFOs
1. FIFO Requested Num of Elements 1023
2. FIFO Requested Num of Elements 2047
3. FIFO Requested Num of Elements 4095
Shared Variables:
1. SV Einzelprozess, Multielement, Num of Arrays 10.000, Num of Elements 10
2. SV Einzelprozess, Multielement, Num of Arrays 10.000, Num of Elements 10
3. SV Einzelprozess, Multielement, Num of Arrays 10.000, Num of Elements 80
cRIO:
sendet alle 1000 µs
1 Wert in 1.FIFO
4 Werte in 2.FIFO
8 Werte in 3.FIFO
Die
Zeit des Sendens soll variabel sein, wobei 1000 µs (1 kHz) jedoch die schnellste ist.
Die langsamste ist 20 ms (50 Hz).
Weitere Anmerkungen:
So wie es aktuell dasteht kommt es nach ca. 3000 Werten zu erheblichen Verzögerungen bis hin zum Verbindungsabbruch zum FPGA. Außerdem werden Werte teils falsch übergeben. Das bedeutet: Ich sende
hardcodierte Werte vom FPGA an die RT, die dort falsch dargestellt werden. Mir ist leider unerklärlich warum das geschieht.
Fragen:
Sind die Shared Variables ungünstig konfiguriert? Oder gehe ich das generell falsch an?
Wie stelle ich sicher, dass alle aus dem FIFO gelesenen Werte auch in die andere Schleife bzw. an das UI übergeben werden? Ist die UI da nicht ein Flaschenhals? Reicht das Puffern der Daten in NetworkSharedVariables? Ich rechne so mit
ca. 100.000 Werten pro 1 min 40 sek @ 1000 µs Sendezyklus vom FPGA.
Ich wäre für eure Hilfe mehr als dankbar, da ich völlig auf dem Schlauch stehe und keinen Ansatz geschweige denn Lösung finde. Das komplette Projekt liegt bei. Es ist ein generiertes Projekt, daher ist eine Menge drin die nicht benötigt wird. Es geht um das „FPGA.vi“ & „ RT.vi“
Ps: Sorry für den Quick&Dirty-Style!
Cheers sagt
Brainbug