LabVIEWForum.de - Viele Schleifen = viel langsamer ????

LabVIEWForum.de

Normale Version: Viele Schleifen = viel langsamer ????
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hey leute,

ich hab folgendes problem: ich hab ein relativ komplexes programm, das die reaktionszeit messen soll. wenn ich die eingabe mit button simuliere dann funktioniert alles wunderbar. aber wenn ich die button durch externe schalter die mittels DAQ-Assistenten eingebunden sind, dann ist eine zeitliche verzögerung dabei und die versaut natürlich die ganze messung.
meine frage ist: wieso ergibt sich eine zeitverzögerung?
meiner meinung nach ist es entweder weil ich so viele schleifen habe (aber wieso gehts dann mit buttons einwandfrei?)
oder ist es weil das programm so lange braucht um den DAQ-Assistenten zu erkennen???

ich bin echt ratlos

hat jemand von euch eine idee??

Danke schon mal, mfg. sumnus
Lade das Programm doch mal hoch.....
So kann man gar nicht viel sagen....

Gruß Markus
' schrieb:Hey leute,

ich hab folgendes problem: ich hab ein relativ komplexes programm, das die reaktionszeit messen soll. wenn ich die eingabe mit button simuliere dann funktioniert alles wunderbar. aber wenn ich die button durch externe schalter die mittels DAQ-Assistenten eingebunden sind, dann ist eine zeitliche verzögerung dabei und die versaut natürlich die ganze messung.
meine frage ist: wieso ergibt sich eine zeitverzögerung?
meiner meinung nach ist es entweder weil ich so viele schleifen habe (aber wieso gehts dann mit buttons einwandfrei?)
oder ist es weil das programm so lange braucht um den DAQ-Assistenten zu erkennen???

ich bin echt ratlos

hat jemand von euch eine idee??

Danke schon mal, mfg. sumnus

Wahrscheinlich verwendest Du High Level Single Point reads um Deine externen Schalter einzulesen. Die öffnen jeweils einen Task, konfigurieren alles schön sauber und machen eine Read um dann alles wieder abzuschliessen. Viel Overhead um jedesmal wieder aufs Neue zu tun. Durch Verwendung der Intermediate Funktionen in denen die Erstellung und Konfiguration des Tasks, das Lesen und das Abschliessen auseinander gezogen wird und durch das Plazieren der Taskerstellung und des Abschliessens jeweils ausserhalb der Loop und nur die Leseoperation innerhalb wird das ganze wesentlich schneller.

Und wenn Du mehrere digitale Eingänge hast ist es wahrscheinlich auch so dass die alle am selben Port angeschlossen sind. Dann genügt es diesen Port einmal zu lesen und dann die verschiedenen Bits die Deinen Schaltern entsprechen aus diesem Wert herauszudekodieren, statt für jedes Bit die ganze Leseoperation immer wieder neu zu machen.

Rolf Kalbermatter
Referenz-URLs