LabVIEWForum.de - Datenübertragung sehr langsam (FPGA zu Realtime-part des cRIO)

LabVIEWForum.de

Normale Version: Datenübertragung sehr langsam (FPGA zu Realtime-part des cRIO)
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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 )
[attachment=45772]

Schleife mit FIFO
[attachment=45774]
Hallo Maschi,

und was passiert, wenn du statt nur einem einzelnen Wert gleich 100 aus dem FIFO liest?
Wie kommst du auf die Idee, dass dein cRIO in der Lage ist, Einzelwerte mit 10kHz vom FPGA entgegenzunehmen und zu bearbeiten?

Es sieht aus, als wenn dein FIFO vollgelaufen ist mit "16383 elements remaining"...
Danke für die rasche Antwort

(06.08.2013 15:51 )GerdW schrieb: [ -> ]Wie kommst du auf die Idee, dass dein cRIO in der Lage ist, Einzelwerte mit 10kHz vom FPGA entgegenzunehmen und zu bearbeiten?

Das ist halt Teil meiner Frage. In meinem cRIO-Kursbuch und bei Google sowie hier im Forum bin ich nicht fündig geworden. Mich wundert halt, dass das Auslesen eines einzigen Wertes so viel mehr Zeit benötigt als die relativ komplexen SoftMotion-Blöcke.

(06.08.2013 15:51 )GerdW schrieb: [ -> ]Es sieht aus, als wenn dein FIFO vollgelaufen ist mit "16383 elements remaining"...

Stimmt, da hatte ich in dem Test-VI nicht genau drauf geachtet. Wirkt sich das denn auf die Auslesegeschwindigkeit aus, wenn das FIFO voll ist?
Hallo Maschi,

Zitat:Mich wundert halt, dass das Auslesen eines einzigen Wertes so viel mehr Zeit benötigt
Jede Einzelwertabfrage benötigt ca. den gleichen Overhead, den auch eine Abfrage von 1000en Werten mit sich bringt. Und ein cRIO ist nicht unbedingt ein Hochleistungs-MultiCore-MultiGHz-Rechner...
Zu SoftMotion kann ich nichts sagen.

Zitat:Wirkt sich das denn auf die Auslesegeschwindigkeit aus, wenn das FIFO voll ist?
Auf die Lesegeschwindigkeit selbst wirkt es sich nicht aus. Du liest aber alte Werte aus dem FIFO. Außerdem könnte es auf dem FPGA-Part zu Problemen führen, wenn dort auf den FIFO gewartet werden muss...
Referenz-URLs