Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
ich weiss, das Thema wurde hier schon x-mal durchgekaut.
Ich habe auch die Suche benutzt und sämtliche Beiträge dazu durchgekaut, trotzdem war keine Lösung dabei.
Mein Fall: Ich messe Temperaturen mit Thermoelementen, die an einer PXI-4351-Karte angeschlossen sind.
Die Karte ist von Natur aus sehr langsam, max. 50 S/s, bei Benutzung mehrerer Kanäle unter 10S/s.
Das Messen erfolgt in einer while-Schleife und dauert, wegen der langsamen Karte, schon recht lange (Sekunden-Bereich).
Ich habe die while-Schleife mit einer Wartefunktion (1...1000ms durchprobiert) ergänzt, das brachte keinen Unterschied, denn ich habe immer eine CPU-Auslastung von 98...99%.
ich weiss, das Thema wurde hier schon x-mal durchgekaut.
Ich habe auch die Suche benutzt und sämtliche Beiträge dazu durchgekaut, trotzdem war keine Lösung dabei.
Mein Fall: Ich messe Temperaturen mit Thermoelementen, die an einer PXI-4351-Karte angeschlossen sind.
Die Karte ist von Natur aus sehr langsam, max. 50 S/s, bei Benutzung mehrerer Kanäle unter 10S/s.
Das Messen erfolgt in einer while-Schleife und dauert, wegen der langsamen Karte, schon recht lange (Sekunden-Bereich).
Ich habe die while-Schleife mit einer Wartefunktion (1...1000ms durchprobiert) ergänzt, das brachte keinen Unterschied, denn ich habe immer eine CPU-Auslastung von 98...99%.
- Überprüfungslämpchen ausmachen (kostet dich das dreifache an arbeitsspeicher oder so)
- diese "wait until" funktion einfach auf das vi ziehen und konstante anhängen
ich weiß nich ob dir dass hilft
ansonsten könnte das natürlich an deiner karte liegen
die wait until funktion hat keinen einfluss gehabt.
das programm läuft später endlos in der while-schleife, die vorigen programmteile (initialisierung, kanäle wählen, etc. werden nur zu beginn des prg. einmal abgearbeitet.
01.12.2006, 12:55 (Dieser Beitrag wurde zuletzt bearbeitet: 01.12.2006 12:58 von Michael5.)
Du hast eine While Schleife programmiert ohne Verzögerungszeit.
Ich denke die läuft mit annähernd 100% Rechenzeit.
Wenn doch deine Messkarte langsam ist, dann kannst du in deiner While Schleife einen Timer mit ca. 100ms einbauen. Die Timer liegen bei den VI's Timing.
Ich denke dann wirst du wieder freie Rechenzeit haben und deine Aplikation wird sich nicht merkenswert verändern.
Hallo Michael, ich habe ja oben schon geschrieben, dass eine wait-funktion in der while-schleife keine verbesserung brachte.
habe jedoch gerade noch eine wait-funktion im sub-vi kanäle_wählen eingebaut. da hat es was gebracht. das sub-vi wird aber nur einmal aufgerufen, und sobald das prg. in der while schleife ist und nur noch die werte der karte lesen soll (auch die speichern-funktion ist ja momentan deaktiviert, das prog. macht dann nix mehr anderes als daten auslesen) geht die auslastung auf nahezu 100% hoch.
Habe gerade mal eine Wartezeit von 500ms eingebaut, da hatte ich eine auslastung von 3%, also ok.
Habe allerdings nur mit einem kanal gemessen, wenn ich im extremfall alle 15 kanäle messen möchte, so habe ich wieder eine auslastung von 100%.
welches Lämpchen?
die wait until funktion hat keinen einfluss gehabt.
das programm läuft später endlos in der while-schleife, die vorigen programmteile (initialisierung, kanäle wählen, etc. werden nur zu beginn des prg. einmal abgearbeitet.
"highlight execution" neben dem pause-botton
sollte man bei der überprüfung auslassen (wie gasagt zieht rechner leistung ohne ende)
' schrieb:Hallo Michael, ich habe ja oben schon geschrieben, dass eine wait-funktion in der while-schleife keine verbesserung brachte.
habe jedoch gerade noch eine wait-funktion im sub-vi kanäle_wählen eingebaut. da hat es was gebracht. das sub-vi wird aber nur einmal aufgerufen, und sobald das prg. in der while schleife ist und nur noch die werte der karte lesen soll (auch die speichern-funktion ist ja momentan deaktiviert, das prog. macht dann nix mehr anderes als daten auslesen) geht die auslastung auf nahezu 100% hoch.
Habe gerade mal eine Wartezeit von 500ms eingebaut, da hatte ich eine auslastung von 3%, also ok.
Habe allerdings nur mit einem kanal gemessen, wenn ich im extremfall alle 15 kanäle messen möchte, so habe ich wieder eine auslastung von 100%.
weitere vorschläge??
Wandle Deine Whileschleife in eine Zeitgesteuert Schleife um.
Dann werden wir sehen was geschieht.
Mit der Zeitgesteuerten Messschleife kannst du einmal die Pausen zwischen den einzelnen Durchläufen einstellen und die Priorität von 1 - 100% vorgeben. 100% volle Priorität.
Stelle bei der Zeit die minimale Zeit ein die du zwischen zwei Messungen warten kannst und die Prio unter 50%. Dann sollte dein Rechner Luft bekommen.
Leider kann ich deine VI nicht anschauen, da ich 8.20 noch nicht installiert habe.
Ich habe allerdings noch nie mit dieser Schleife gearbeitet und muss mich dann erst einmal da rantasten.
Habe aber schon in der Hilfe gelesen, dass man diese Schleife verwendet, wenn man Zeiten benötigt, die sich dynamisch ändern lassen, scheint also nicht so verkehrt zu sein.
habe mir jetzt nur kurz den Screenshot angesehen, gehe aber einfach mal davon aus, dass dein Icon "gemessene Kanäle" eine grafische Darstellung der Daten ist (z.B. Waveform-Graph).
Wie oft datest du diesen Graphen ab? Das kostet nämlich ziemlich Rechenleistung.
Hatte hierüber erst gestern eine Diskussion mit Eugen darüber: