LabVIEWForum.de - Wiederholrate / Abtastrate LabVIEW

LabVIEWForum.de

Normale Version: Wiederholrate / Abtastrate LabVIEW
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Ich setze eine große Schleife ein, um Messdaten einer Maus auszulesen und zu verarbeiten. Wenn ich testweise mit 6-7 Graphen arbeite, habe ich nur noch eine Datenrate von 10Hz. Das ist fast nichts. Lösche ich alle Graphen, erreicht mein VI eine Datenrate von ca. 40-50Hz, lösche ich dann noch die Datenaufzeichnungsfunktion erreiche ich 100Hz (1000 Werte nach 10Sek.). Das ist immer noch zu wenig, wenn man davon ausgeht, dass meine Maus mit 500Hz Pollingrate arbeitet.
Ist das bei LV immer so oder liegt das evtl. an meinem VI? Das sind doch alles ganz einfache Funktionen.

Rechner:
Pentium D, 2,8GHz
1GB Ram

VI ist für LV-Version 8.5
Es liegt wohl an deinem VI :-)
Du schreibst zweimal Daten auf die Festplatte und hast mehrere Punkte wo dynamisch Speicher allokiert wird.

Zwei gravierende Verbesserungsvorschlaege:
1) Dynamische Speicherallokierung tilgen -> Array vorinitialisieren und mittels Replace Array Subset die Indizes updaten
2) Nachdem ein Array mit Daten komplett gefuellt ist, diese per Queue an eine zweite Schleife uebergeben, Berechnungen durchfuehren und speichern
' schrieb:Zwei gravierende Verbesserungsvorschlaege:

Und noch einer: Räum mal auf...grade Linien und eine saubere Programmierung von links nach rechts kommen immer gut...wenn dem so wäre, hätte ich mir dein VI auch mal näher angeschaut!
Ja sorry für die Unordnung, hab gestern eh aufgeräumt (siehe Anhang V8.5).
Wie geht das mit dem Replace denn genau? Wenn ich das Array vorinitialisiere, muss ich das doch noch vor der Schleife machen, oder?

An der Lösung mit dem Queue abeite ich gerade, ist aber auch nicht trivial. ;-)
Naja, also aufgeräumt sieht aber anders aus...

Ein paar Tips:
- rechter Mausklick auf Verdrahtung->Clean up wire ... Ergebnis ist nicht immer unbedingt perfekt, aber es hilft beim Aufräumen.
- FP-Elemente im BD nicht als Icon darstellen, das spart unheimlich Platz -> bessere Übersicht. Kann man in den Optionen von LV einstellen.
- Du hast ein paar unnötige lokale Variablen.
- Für deine Variable "Mean-Wert-Anzeige" besteht mglw. eine Race-Condition, da du diese per local Variable liest und schreibst.
- Wieso initialisiert und deinitialisierst du die Maus innerhalb der While-Schleife? Sowas gehört üblicherweise außerhalb.
- Drähte solange wie möglich gerade führen und von links nach rechts führen
- Ich persönlich bin kein Fan der Feedbacknode/Rückkopplungskonstante. Ich bin der Meinung, ein Shift-Register ist immer besser "lesbar".
- Und zum Schluß: Wenn du in jedem Schleifendurchlauf Daten in einen oder mehrere Graphen schreibst, wundert es mich nicht, dass die Durchlaufzeiten schlecht sind. Ein Update eine Graphen auf dem FP ist nun mal "zeitintensiv". Dazu hatten wir auch mal einen Thread:
http://www.LabVIEWforum.de/index.php?showtopic=4260

MfG, Jens
Tolle Tipps, vielen Dank!
Referenz-URLs