LabVIEWForum.de - Verhalten von FPGA-Referenzen bei wiederholtem Aufruf

LabVIEWForum.de

Normale Version: Verhalten von FPGA-Referenzen bei wiederholtem Aufruf
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich habe ein kleines Problem, wenn ich mein FPGA-Kommunikations-VIs innerhalb einer State-Machine nutze... Genauer gesagt...[list]
[*]habe ich ein Hauptprogramm, in dem sich eine State-Machine befindet. Innerhalb des Hauptprogramms öffne ich eine FPGA-Referenz und schließe die an ein Schieberegister meiner While-Schleife an. Außerhalb der While-Schleife befindet sich die Close FPGA-Referenz<>
[*]In einem State habe ich ein VI (Nennen wir es mal "Methode" zum besseren Verständnis), in dem sich mehrere Sub-VIs befinden, die Funktionen auf dem FPGA aufrufen und bedienen. Innerhalb des Methoden-VIs sind die Sub-VIs in einer eindeutigen Reihenfolge, es verzweigt also nichts irgendwie. Der State wird definitv mehrfach aufgerufen, außerdem muss ich ggf. noch andere States mit FPGA-Nutzung hinzufügen, daher kein FPGA Open/Close innerhalb des Methoden-VIs.<>
[st]Wie man das jetzt ja so macht, habe ich natürlich einen Indicator für die FPGA-Referenz in meinem Methoden-VI, den ich nach außen führe und wieder an das Shift-Register der While-Schleife anschließen will. Aber, Pustekuchen. Fehlermeldung, Referenzen wären unterschiedlicher Art...

Meine Vermutung ist, dass es irgendwie damit zusammenhängt, dass der Ausgang meines Methoden-VIs irgendeinen merkwürdigen Standartwert eingestellt hat. Meine Versuche, einen "richtigen" Standartwert in Form einer Referenz auf mein Target herzustellen, haben aber in meinen Augen funktioniert, trotzdem muckt die Verbindung irgendwie. Allerdings kann ich auch nciht mit komplett leeren Referenzen arbeiten, da man ja dummerweise für die Programmierung solcher Kommunikations-VIs (wie heißt da eigentlich der offizielle NI-Term für?) immer die richtige Referenz brauhct, um auf Ein- und Ausgänge zugreifen zu können... Sprich in meinen Verdrahtungen gibt es immer einen Standart-Wert mit einer Referenz auf das FPGA-VI.

Natürlich könnte ich das FPGA-VI bei jedem aufruf Öffnen und schließen, da ich es tatsächlich nur innerhalb des Methoden-VIs brauche, aber irgendwie glaub ich im Moment dass es sinniger ist, das nicht zu tun und das ganze einmal zu öffenen, mehrmals das Methoden-VI aufzurufen und dann zu schließen. Weiß nicht, wie sich das auf die Performance auswirkt...

Ich hatte auch irgendwie versucht, das ganze ohne shift-Register zu machen und direkt bei jedem Aufruf immer wieder am Eingangsknoten der Schleife die Referenz zu nutzen - dann bekomme ich aber beim wiederholten Aufruf den wunderhübschen Fehler, dass die Referenz falsch ist... Warum auch immer... Anscheinend scheint sich die Referenz auf ein FPGA-Objekt zu ändern, wenn man was damit macht... Sehr, sehr merkwürdig. Und nein, ich hab weder das VI auf dem FPGA beendet noch mehrmals gestartet...

Hat jemand von euch eine Idee, wie man das mit der Übergabe der Ausgangsreferenz an die Schleife lösen kann? Das wäre mir tatsächlich die liebste Lösung...

Viele Grüße,

chrissy

[attachment=15610]


PS: Ich arbeite mit einer 7830R, also kein RT-Target vorhanden. Das FPGA-VI ist salopp ausgedrückt ein Signalgenerator und Data-Aquisition-Board.
PPS:Lv82_img, Ich lad auch gerne die VIs hoch, wobei das sicherlich etwas unübersichtlich wird...Wink
Hallo Chrissy!

Ich denke das ich das von dir angesprochene Probleme kenne. Wenn es dir keine Umstände macht, dann lade mal wirklich die betroffenen VIs hoch. Würde dann gerne mal einen Blick darauf werfen und mal schauen, wo ich eventuell helfen könnte.

Schöne Grüße
Falk
' schrieb:Wenn es dir keine Umstände macht, dann lade mal wirklich die betroffenen VIs hoch. Würde dann gerne mal einen Blick darauf werfen und mal schauen, wo ich eventuell helfen könnte.
There you go... Wie gesagt, ist eventuell etwas unübersichtlich. Ich nutze für File I/O ein bisschen Matlab (hat hinterher für die Datenspeicherung und Bearbeitung relativ viele Vorteile, weshalb ich mich für diese Variante entschieden habe) - weiß nicht, ob sich das VI ohne Matlab-Lizenz öffnen lasse. Kann ich auch leider nicht wirklich testen, glaub ich (obwohl, eine idee hab ich... Versuchs gleich mal...)

Im Projekt (Lv82_img) werden noch ein paar Daten Fehlen, das sind aber nur meine Tests und Testdaten...

[attachment=15622]

Grüße und Danke,

chrissy
Mmh, irgendwie kann ich meinen Post nicht mehr editieren... Merkwürdig...

Naja, was mir aufgefallen ist: Ich hab glaub ich einen kleinen Fehler in einem der Sub-VIs, wo ich ein Referenz-Cluster nicht verdrahtet habe - aber auch mit dem korrigiert gibt es zwar plötzlich hübsche Verbindungslinien auch über die Schieberegister hinweg, aber immer noch die Fehlermeldung, dass die Referenz nicht mehr aktuell ist...

ch
Hi,

nachdem es mir dann doch ein bisschen zu blöde war, hab ich mal bei den Jungs in München angerufen... Was ich so halb raushören konnte aus der ganzen Sache: die While-Schleife der State-Machine ändert irgendwie die RefNum. Daher kommt bei einem späteren Aufruf irgendwie der Fehler. Workaround: Open-VI wie gehabt außerhalb der While-Schleife platzieren, innerhalb der While-Schleife ein "Call VI" -Element aus der FPGA-Palette, übers Kontextmenü noch den RefNum-Eingang herzaubern und das einfach in den Signalablauf einbinden. Geht dann auch ohne Schieberegister...

Frag mich bitte keiner, warum das so ist, aber es funzt zumindest halbwegs so, wie ich mir das vorstelle...

Grüße und danke an alle, die drüber nachgedacht haben...

ch

PS: Wenn jemand will, mach ich auch gerne nochmal nen Screenshot... Aber der Laborrechner ist jetzt schon runtergefahren...
Referenz-URLs