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!
Könntest Du kurz über meine VIs blicken, FPGA läuft, aber beim Host.vi stecke ich fest. Ich habe allerhand probiert und es will nicht klappen...
Ich hoffe, dass Du aus dem Urlaub zurück bist und die Programme überhaupt ansehen kannst.
In der Zeit probier ich weiter!
Habe mich zu einer neuen Fehlermeldung vorgekämpft:
Node Properties im nirio_ReadBigControl.vi stimmen laut der Meldung nicht; weiter sei die referenzierte Session ungültig. Das vi finde ich auf C: meines Notebooks, kann es aber nicht öffnen, da es passwortgeschützt ist. Was nun?
LG
Klaus
dann fangen wir mal an mit ein paar kleinen verbesserungsvorschlaegen (abgesehen vom programmierstil :-))
DMA Transfer: wird immer in U32 uebertragen, deshalb verwende JoinNumbers und vereine zwei I16 zu einem U32 Wert, dadurch minimierst du den overhead (siehe beispiel). Im Host.vi musst du dann natuerlich wieder das splitnumbers verwenden.
Warum du an der Stelle mit einem RT FIFO (zudem noch mit DBL anstatt mit UInteger) arbeitest wenn du keine on the fly uebertragung machst, versteh ich noch net ganz - deinem datenfluss zur folge machst du alles sequentiell, deshalb leg lieber ein array mit der groeße der zu erwartenden samples an und leg innerhalb der schleife ein "replace array subset".
Mit der von dir beschriebenen Fehlermeldung kann ich net unmittelbar viel anfangen, weil an dieser Stelle normalerweise nix sein darf/kann. Welche Version des RIO Treibers hast installiert? Kann es sein, dass du nicht zu 100% die gleiche Version am RIO und am Host installiert hast?!
' schrieb:dann fangen wir mal an mit ein paar kleinen verbesserungsvorschlaegen (abgesehen vom programmierstil :-))
DMA Transfer: wird immer in U32 uebertragen, deshalb verwende JoinNumbers und vereine zwei I16 zu einem U32 Wert, dadurch minimierst du den overhead (siehe beispiel). Im Host.vi musst du dann natuerlich wieder das splitnumbers verwenden.
Warum du an der Stelle mit einem RT FIFO (zudem noch mit DBL anstatt mit UInteger) arbeitest wenn du keine on the fly uebertragung machst, versteh ich noch net ganz - deinem datenfluss zur folge machst du alles sequentiell, deshalb leg lieber ein array mit der groeße der zu erwartenden samples an und leg innerhalb der schleife ein "replace array subset".
Mit der von dir beschriebenen Fehlermeldung kann ich net unmittelbar viel anfangen, weil an dieser Stelle normalerweise nix sein darf/kann. Welche Version des RIO Treibers hast installiert? Kann es sein, dass du nicht zu 100% die gleiche Version am RIO und am Host installiert hast?!
Hallo Freedive!
Mittlerweile würde ich sogar auf einen Abend nach München fahren, wenn Du mir die Sache in ein paar Sätzen erläuterst. Hier kenne ich nur normal-LabVIEW-User, die alle keine FPGA's unter LabVIEW kennen. Hättest Du die Zeit, mir speziell die Sache mit der FIFO-Kommunikation in einer ruhigen Stunde zu erklären? Ich kann heute oder morgen Abend gegen 19 Uhr in München sein.
Mitbringen würde ich LabVIEW 8.0 auf dem Notebook, das cRIO mit drei NI 9233-Modulen und der RT-Software darauf.
Ich probier das nun aus, was Du geschrieben hast. Mit der Akualität der Software kann es natürlich auch Probleme geben. Ich weiss nicht, wie man die aktuellen Versionen erhält. Ehrlich gesagt, ich bin kurz vor dem Aufgeben, ich kann es nicht fassen, dass man in LabVIEW wegen einer so einfachen Aufgabe 3 Wochen Probieren muss. Das ist letztlich ein Haufen Zeit.
' schrieb:dann fangen wir mal an mit ein paar kleinen verbesserungsvorschlaegen (abgesehen vom programmierstil :-))
DMA Transfer: wird immer in U32 uebertragen, deshalb verwende JoinNumbers und vereine zwei I16 zu einem U32 Wert, dadurch minimierst du den overhead (siehe beispiel). Im Host.vi musst du dann natuerlich wieder das splitnumbers verwenden.
Warum du an der Stelle mit einem RT FIFO (zudem noch mit DBL anstatt mit UInteger) arbeitest wenn du keine on the fly uebertragung machst, versteh ich noch net ganz - deinem datenfluss zur folge machst du alles sequentiell, deshalb leg lieber ein array mit der groeße der zu erwartenden samples an und leg innerhalb der schleife ein "replace array subset".
Mit der von dir beschriebenen Fehlermeldung kann ich net unmittelbar viel anfangen, weil an dieser Stelle normalerweise nix sein darf/kann. Welche Version des RIO Treibers hast installiert? Kann es sein, dass du nicht zu 100% die gleiche Version am RIO und am Host installiert hast?!
so, ich hab das nun alles mal durch gesehen:
Ich weiss nicht, wie man die Daten im FPGA auf I16 umstellt, überhaupt kommen sie doch beim IO-Node schon als U32 raus .... den Punkt krieg ich also nicht hin..
Das mit dem FIFO hab ich so gemacht, weil Du es mir vor über einer Woche geraten hast. Dass das nicht unbedingt so programmiert werden muss, das hat mir ein Kollege schon gesagt, aber wie dann? Deine Beschreibung mit den Arrays versteh ich schon wieder nicht, ich weiss nicht, wie und wo ich die Arrays anlegen muss.
Noch eine kurze Frage wegen des Arrays im host.vi: Ich kriege ein Array mit einer Breite von 12 Kanälen und einer Länge von 480.000 Samples: macht 5,76 Mio. U32-Werte. Ist das zu viel für ein Array? Die Daten lese ich nach und nach ein; wie kann ich dann daraus ein Array basteln, wenn sie nicht auf einmal zur Verfügung stehen?
Noch eine kurze Frage wegen des Arrays im host.vi: Ich kriege ein Array mit einer Breite von 12 Kanälen und einer Länge von 480.000 Samples: macht 5,76 Mio. U32-Werte. Ist das zu viel für ein Array? Die Daten lese ich nach und nach ein; wie kann ich dann daraus ein Array basteln, wenn sie nicht auf einmal zur Verfügung stehen?
Klaus
Das sind 22MB an reinen Nutzdaten, ganz davon abgesehn, was du dann noch im Blockdiagramm an Daten wegen Spiegelungen und Kopien zustande bekommst.
geh an der stelle her und generier dir ein 2D array mit 480k * 12Kanaelen an Werten, leg das auf ein Schieberegister und arbeite innerhalb der Schleife mit einem Replace Array Subset.
Wennst an der Stell "nur" mit dem Build Array arbeitest, dann hat der LV Memory Manager sehr viel arbeit und du wirst es nie sauber hinbekommen!