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
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:
, Ich lad auch gerne die VIs hoch, wobei das sicherlich etwas unübersichtlich wird...