Verbindung zu cRio richtig starten und beenden
Ein Blockdiagramm in ein Word-Dokument verpackt sehe ich jetzt zum ersten Mal. Wie erwähnt: Sinnvoll ist das nicht, aber besser als gar nichts.
Feher 1:
Fatal sind Wartefunktionen in einer mit der Scan-Engine synchronisierten Schleife. Das kann nicht synchron laufen, wenn du in der Schleife plötzlich wartest. Solche VIs müssen aus der zeitkritischen Schleife raus.
Es hängt natürlich auch etwas von der eingestellten Abtastrate ab. Wie hoch ist diese denn bei dir?
In der For-Schleife warttest du knapp 320 ms. Erfasst du die Daten schneller als 3 Hz, kann alleine das schon gar nicht gehen.
Fehler 2:
Wieso nutzt du Frontpanel-Elemente wie ein Tab-Control oder einen XY-Graph?
Die verlangsamen u.U. einiges und eine Real-Time-Anwendung hat im Idealfall kein Frontpanel. In einer schnellen zeitkritischen Schleife hat eine Visualisierung eh nichts verloren (eigentlich in gar keiner zeitkritischen Schleife).
Die Visualisierung sollte, wenn möglich, über eine Host-Anwendung erfolgen, die z.B. auf einem Windows-PC ausgeführt wird. Über Shared Variables o.ä. kannst du dann Daten per Ethernet austauschen und in der Host-Anwendung darstellen. Echtzeitfähig ist die dargestellte Visuslisierung sowieso nie.
Fehler 3:
Du machst in der zeitkritischen Schleife sehr viel. Ist der Code langsamer als die Erfassungsrate der Scan-Engine, gerät die zeitgesteuerte Schleife in eine Art Timeout und alles ist nicht mehr synchron.
Gehe lieber her und nutze die zeitkritische Schleife für die Erfassung und bereite die Daten in einer parallelen Schleife auf. Diese muss auch nicht zeitkritisch sein. Die Daten könntest du per RT-FIFOs austauschen und in der parellelen Schleife immer 50 Werte auf einmal auslesen (ggf. mehrere RT-FIFOs nutzen, je nach dem). D.h. diese läuft langsamer und hat dann genug Zeit, die Werte blockweise zu verarbeiten.
|