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!
30.07.2013, 10:13 (Dieser Beitrag wurde zuletzt bearbeitet: 30.07.2013 10:14 von jg.)
(30.07.2013 09:42 )Mietzekatze schrieb: 5. Nach jedem schließen des Projektes und erneuten öffnen, soll ich das FPGA.Vi neu kompilieren ( Error -61017). Warum ist das so? Wie kann man das vermeiden
Indem du eine Build Specification unter dem FPGA-Target im Projekt anlegst und einen kompilierten FPGA-Code erzeugst.
(30.07.2013 10:03 )Mietzekatze schrieb: Des Weiteren taucht bei mir im Host bei T die Warnung 61003 auf:
"Warning 61003 occurred at niLvFpga_Run_cRIO-9112.vi
Possible reason(s):
LabVIEW FPGA: The FPGA VI specified by the Invoke Method function with the Run method is already running."
Ja, logisch. Du hast den FPGA 1x gestartet, und so ein FPGA-Code soll ja in der Regel auch immer laufen. Du hast auch keinen Stopp in deinem FPGA-Programm, also läuft das Programm noch beim 2. Versuch.
Mögliche Lösung: Du musst den FPGA per InvokeNode zurücksetzen.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
1. Wenn der Wertebereich bei FPX beschränkt ist und nun nur bis 16 zählen kann, dann verstehe ich nicht, wie nach Konvertierung in eine Double plötzlich eine größere Zahl entstehen kann.
3. An die Anzahl der verbleibenden Elemente habe ich folgende Erwartung: Wert in Klammern für Spannung, andere Wert Temperatur.
Aller 1 s (1 ms) werden Daten ins FIFO geschrieben und alle 1 s (5 ms) wieder entnommen. So gehe ich davon aus das maximal 17 ( 5*4) Werte für die Kanäle sich im FIFO befinden und nach dem Auslesen wieder Null. Somit steigt die Anzahl nicht über 17 (5*4).
Aus irgendeinem Grund jedoch steigt diese Anzahl.
zu 5. die Build Spezifikation ist schon erzeugt und auch erstellt. Aber dann sollte diese doch sich schon auf dem FPGA befinden. Warum muss ich das also jedes mal nach Projektöffnen neu erzeugen?
Zur Warnung 61003:
Anscheinend ist der Aufbau des VIs noch nicht ganz richtig. Ich möchte das VI einmal starten und zwei oder spätere mehr FIFOs auslesen.
Dabei stört mich etwas die Reihenfolge der While-Schleife im Host.VI:
Zunächst wähle ich mir OPEN FPGA VI Referenz, mein FPGA.VI aus. Anschließend starte ich das FIFO Temp und lasse dann das FPGA.VI laufen.
Mein Ziel ist es , das FPGA.VI nur einmal zu öffnen und aus zwei FIFOs zu lesen.
Also möchte ich in meinem VI nur einmal OPEN FPGA VI Referenz und nur einmal RUN haben.
Leider kann ich nach OPEN FPGA VI Referenz nicht einfach beide FIFOs starten und deren Geschwindigkeit einstellen und dann die Ausgänge zu den unterschiedlichen While-Schleifen führen.
Ich weis leider nicht, wie es möglich ist, das FPGA.VI nur einmal zu öffnen und beide FIFOs auszulesen.
31.07.2013, 14:37 (Dieser Beitrag wurde zuletzt bearbeitet: 31.07.2013 14:38 von GerdW.)
Zitat:Aus irgendeinem Grund jedoch steigt diese Anzahl.
Da kann man nur sagen: die Anzahl der Elemente im FIFO steigt, wenn schneller in den FIFO geschrieben als aus ihm entnommen wird...
Zitat:verstehe ich nicht, wie nach Konvertierung in eine Double plötzlich eine größere Zahl entstehen kann.
Ich auch nicht, deshalb der Hinweis aufs Vor-Ort-und-Live-Debugging...
Zitat:Zur Warnung 61003
Die Warnung kommt, wenn das FPGA-VI bei Aufruf der Methode "Run" schon läuft. Entweder, weil das cRIO keinen Kaltstart gemacht hatte (der FPGA läuft munter weiter, auch wenn das RT-Host-VI gestoppt wurde) oder weil beim FPGA-Open schon das Häkchen bei "Run" gesetzt wurde...
Um die Warnung 61003 zu entfernen, habe ich eine Sequenzstruktur eingefügt. Damit sollte das FPGA.VI nur einmal geöffnet und einmal geschlossen werden.
Leider kommt diese Warnung trotzdem noch. Woran könnte es noch liegen?
Hinzu kommt der merkwürdige TimeOut sowohl von FIFO Temp als auch Volt nach nur ein paar Sekunden.
Resultat ist, das in der Temperatur.tdms nur eine Spalte mit t=2433 vorhanden ist und Voltage.tdms nur 10 Spalten mit t von 2432679 bis 2432688.
Das würde bedeuten, das die FIFOs nicht von Anfang an die Daten aufnehmen.
Merkwürdig ist auch das im FIFO Temp nach ein paar Sekunden angeblich 680 Werte drinn sein sollen und die Anzahl der Werte des FIFO Volt soll ich auf 16214 belaufen.
Ich bin mir auch noch nicht sicher, ob diese beiden Probleme zusammen hängen oder unterschiedliche Ursachen besitzen.
Zitat:Leider kommt diese Warnung trotzdem noch. Woran könnte es noch liegen?
Die Sequenzstruktur ändert nichts an der Ausführungsreihenfolge, insbesondere, wenn die entscheidenden Funktionen sich im gleichen Rahmen befinden (Open, Run). Mögliche Gründe hatte ich in meiner letzten Meldung schon genannt. Außerdem: das ist nur eine Warnung - nichts, was dich wirklich stört!
Zitat:Merkwürdig ist auch das im FIFO Temp nach ein paar Sekunden angeblich 680 Werte drinn sein sollen und die Anzahl der Werte des FIFO Volt soll ich auf 16214 belaufen.
Hast du irgendwelche Fehlermeldungen im FPGA-VI? Laufen die Module alle einwandfrei? Hast du evtl. Timings bei den Modulen beachtet? Liefern die überhaupt so schnell Daten wie gefordert? Hast du schon mal probiert, den FPGA schrittweise in Betrieb zu nehmen? Erst ein Modul , dann das nächste?
Du hast die FPGA-Refnum aufgeteilt, "Close FPGA Reference" setzt aber den FPGA nur dann zurück, wenn 1) die Option "Close and Reset" aktiv ist und 2) das auch wirklich die letzte Refnum ist. Ist es bei dir aber nicht sicher, es laufen 2 Refnums parallel.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Zitat:Die Sequenzstruktur ändert nichts an der Ausführungsreihenfolge, insbesondere, wenn die entscheidenden Funktionen sich im gleichen Rahmen befinden (Open, Run). Mögliche Gründe hatte ich in meiner letzten Meldung schon genannt. Außerdem: das ist nur eine Warnung - nichts, was dich wirklich stört!
Mit der Sequenzstruktur habe ich ja das Open FPGA VI Referenz und Run in verschiedenen Sequenzen.
Zitat:Du hast die FPGA-Refnum aufgeteilt, "Close FPGA Reference" setzt aber den FPGA nur dann zurück, wenn 1) die Option "Close and Reset" aktiv ist und 2) das auch wirklich die letzte Refnum ist. Ist es bei dir aber nicht sicher, es laufen 2 Refnums parallel
Habe versucht herauszufinden, was ein "Refnum" ist: Eine Dateireferenznummer, die sozusagen auf das FPGA.VI hier verweist. Davon habe ich aber doch nur eins. In diesem werden die zwei FIFOs gefüllt. Um diese Auszulesen, sollen dann ausgehend von dem FPGA.VI beide FIFOs ausgelesen und vorerst somit gestartet werden.
Zitat:Hast du irgendwelche Fehlermeldungen im FPGA-VI? Laufen die Module alle einwandfrei? Hast du evtl. Timings bei den Modulen beachtet? Liefern die überhaupt so schnell Daten wie gefordert? Hast du schon mal probiert, den FPGA schrittweise in Betrieb zu nehmen? Erst ein Modul , dann das nächste?
Die Module sollten die Daten in den geforderten Geschwindigkeiten liefern.
Werde es jetzt aber auch erstmal mit einem Modul versuchen.
Zitat:Du hast die FPGA-Refnum aufgeteilt, "Close FPGA Reference" setzt aber den FPGA nur dann zurück, wenn 1) die Option "Close and Reset" aktiv ist und 2) das auch wirklich die letzte Refnum ist. Ist es bei dir aber nicht sicher, es laufen 2 Refnums parallel
Habe versucht herauszufinden, was ein "Refnum" ist: Eine Dateireferenznummer, die sozusagen auf das FPGA.VI hier verweist. Davon habe ich aber doch nur eins. In diesem werden die zwei FIFOs gefüllt. Um diese Auszulesen, sollen dann ausgehend von dem FPGA.VI beide FIFOs ausgelesen und vorerst somit gestartet werden.
Das ist ja völlig in Ordnung. ABER: Du hast eine Kopie derselben FPGA-Referenz erzeugt. Das FPGA-Close schließt (wahrscheinlich) nicht automatisch die beiden parallel laufenden Stränge. Ich vermute deshalb, dass der FPGA immer noch läuft.
Wenn du auf Nummer sicher gehen willst, dann verwende eine Abort oder Reset FPGA-Methode vor dem Schließen der Referenz.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Okay ein wichtiger Fehler war die Einstellung des Close FPGA, wobei die Resetfunktion nicht angewähllt war. (Diese Einstellung hatte ich wahrscheinlich zu Testzwecken geändert und nicht wieder in den richtigen Zustand gebracht.)
Jetzt Taucht deswegen kein Fehler mehr auf. Sehr schön.
Beim Verwenden von Close FPGA ist mir folgendes aufgefallen:
Auch wenn man zwei Stränge von der FPGA-Referenz zieht und somit zwei FIFOs startet, genügt es, einen der Pfade mit Close FPGA zu schließen. Welchen Pfad man schließt, ist dabei egal. Das habe ich getestet.
Setzt man an beide Enden CLose FPGA Referenz, so kommt die Fehlermeldung 63195, da das eine Close FPGA das Programm schließen möchte, obwohl dieses durch das erste schon beendet wurde.
Daher benötigt man meiner Meinung nach nicht die Methoden Abort oder Reset. ( Aber auch mit Abort funktioniert das Programm)
Allerdings ist mir natürlich was neues aufgefallen:
Der Stop Button kann nicht auf switch until released gestellt werden (da kommt es zum Abbruch vor der Ausführung (Timing Problem)).
So habe ich diesen auf switch when released gesetzt. Dabei wird dieser und die damit verbundene lokale Variable Stop, wurde er einmal gedrückt und das Programm abgebrochen aber nicht geschlossen auf true gesetzt. Das hat zur Folge, das beim erneuten Starten des Programmes dieser immer noch auf true steht ( bis er erneut gedrückt wurde) und somit das Programm nach einen einem Schleifendurchlauf schließt. Daher benötige ich es etwas, das den Schalter nach jedem Start auf false setzt. Mir ist leider noch nichts eingefallen.
Grüße Mietzi
Kann man eigentlich den Themennamen ändern, damit dieser passender zu den Beiträgen ist?