15.10.2009, 14:07
Hallo Jungs,
hab in meinem aktuellen projekt ein problem...
Also ich habe ein cRIO und nutze dieses für die Datenerfassung, Streaming und Sollwertausgabe...
weiter wird ein prüfstand damit gesteuert... desshalb der state machine aufbau des RT-VI's.
den File IO habe ich in einen parallel laufenden schleife ausgelagert (RT und shared variable). Die Datenübertragung vom FPGA zum RT erfolgt mit einem DMA FIFO "Messdaten". Dieser wird jedoch aufgrund der State machine im regelfall nur jeden 3. Schleifendurchlauf ausgelesen. Dann erfolgt, im selben Schleifendurchlauf, eine Berechnung und die Ausgabe eines Sollwertes mittel einem 2. DMA FIFO "MFC_Setpoint".
Nun zu meinem problemen:
1. Die CPU-Auslastung des RT-Systems ist meines erachtens sehr enorm (etwa 50-75%), wenn ich in jedem Statemachine durchlauf nur Daten erfasse, speichere und die Sollwerte ausgebe, d.h. hier habe ich testweise die Statemachine umgangen und einfach nur diesen State abarbeiten lassen. Wieso ist das so?
2. Wenn ich nun die Statemachine regulär laufen lasse, also vor dem Sample-, Rechen- und Ausgabe-State noch 2 weitere States (Prüfstand) laufen lasse, klappt der File IO nicht mehr, da nur jeden 3 Schleifendurchlauf aktuelle Daten von der StateMachine-Schleife in die TDMS-File IO Schleife übertragen werden. Somit wird jeder Wert 3 mal geschrieben. Auch gibts dann probleme mit dem FIFO, da der sich füllt.(FPGA Schleifen laufen auch mit 200ms Schleifendurchlaufzeit) Wie kann ich das umgehen?
3. Weis vielleicht jemand wie man die ganze Sache verbessern könnte um Rechenleistung zu minimieren und den File IO richtig ablaufen zu lassen?
Vielen Dank für eure Hilfe,
NoD
[attachment=21763]
[attachment=21764]
hab in meinem aktuellen projekt ein problem...
Also ich habe ein cRIO und nutze dieses für die Datenerfassung, Streaming und Sollwertausgabe...
weiter wird ein prüfstand damit gesteuert... desshalb der state machine aufbau des RT-VI's.
den File IO habe ich in einen parallel laufenden schleife ausgelagert (RT und shared variable). Die Datenübertragung vom FPGA zum RT erfolgt mit einem DMA FIFO "Messdaten". Dieser wird jedoch aufgrund der State machine im regelfall nur jeden 3. Schleifendurchlauf ausgelesen. Dann erfolgt, im selben Schleifendurchlauf, eine Berechnung und die Ausgabe eines Sollwertes mittel einem 2. DMA FIFO "MFC_Setpoint".
Nun zu meinem problemen:
1. Die CPU-Auslastung des RT-Systems ist meines erachtens sehr enorm (etwa 50-75%), wenn ich in jedem Statemachine durchlauf nur Daten erfasse, speichere und die Sollwerte ausgebe, d.h. hier habe ich testweise die Statemachine umgangen und einfach nur diesen State abarbeiten lassen. Wieso ist das so?
2. Wenn ich nun die Statemachine regulär laufen lasse, also vor dem Sample-, Rechen- und Ausgabe-State noch 2 weitere States (Prüfstand) laufen lasse, klappt der File IO nicht mehr, da nur jeden 3 Schleifendurchlauf aktuelle Daten von der StateMachine-Schleife in die TDMS-File IO Schleife übertragen werden. Somit wird jeder Wert 3 mal geschrieben. Auch gibts dann probleme mit dem FIFO, da der sich füllt.(FPGA Schleifen laufen auch mit 200ms Schleifendurchlaufzeit) Wie kann ich das umgehen?
3. Weis vielleicht jemand wie man die ganze Sache verbessern könnte um Rechenleistung zu minimieren und den File IO richtig ablaufen zu lassen?
Vielen Dank für eure Hilfe,
NoD
[attachment=21763]
[attachment=21764]