Hardware: cRIO 9022 mit 9114 Chassis und 9403 DIO-Modul
Moin!
Aufbau des Systems:
Ich nutze das DIO-Modul als Eingang für einen Quadraturencoder. Im FPGA-VI (40 MHz Clock, 15 µs pro Schleifendurchlauf) werden die Eingangskanäle eingelesen und daraus wird die Encoderposition errechnet. Dieser Wert wird dann einfach von einem VI auf dem Realtime-part des cRIO eingelesen (entweder über FIFO oder einfaches FPGA Read Interface) und für eine Motorregelung verwendet.
Problem:
Ich würde den Encoderwert gerne alle 100µs (10 kHz) auslesen (vom FPGA zum Realtime-part), leider benötigt die Schleife immer 2-3 ms. Ich habe eine Übertragung per einfachem FPGA Read Interface als auch über FIFO ausprobiert. Sowohl im Hybridmodus (Scaninterface und FPGA-Modus) als auch im FPGA-Modus immer das gleiche Resultat. Versuchsweise habe ich das VI auch mal ohne das Einlesen des Encoderwertes nur mit den Softmotion-Funktionen laufen lassen. Dann benötigt die Schleife keine 10µs: Es liegt also nicht an den Softmotion-Funktionen. Auf den Bildern ist ein vereinfachtes VI mit Benchmark zu sehen, bei dem die Softmotion-Funktionen etc. alle fehlen.
Frage:
Geht das einfach nicht schneller oder gibt es eine Lösung für das Problem?
Vielen Dank schon mal im Voraus und Grüße vom Rhein.
Matthias
Schleife ohne Auslesen (so schnell sollte die Schleife im Idealfall laufen :-D )
Schleife mit FIFO