Auslastung durch Anzeige von Daten glätten - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Grafik & Sound (/Forum-Grafik-Sound) +---- Thema: Auslastung durch Anzeige von Daten glätten (/Thread-Auslastung-durch-Anzeige-von-Daten-glaetten) Seiten: 1 2 |
Auslastung durch Anzeige von Daten glätten - Oskimo - 13.01.2011 16:23 Hallo zusammen, Ich hab ein UI mit ca. 150 Anzeigeelementen die möglichst 2 mal die Sekunde geupdatet werden sollten. Durch das Update der Werte ensteht für diese kurze Zeit eine hohe CPU Auslastung. Ich hatte vor diesen Ausschlag zu glätten und die Anzeigeelemente nacheinander dauerhaft zu updaten. Das Problem ist nun, dass ich nicht weiß, wie ich die einzelnen Elemente updaten kann, da sie sich als Array in einem Cluster befinden. Wenn ich nun diesem Cluster einen Wert zuweise werden sofort alle Elemente geupdatet. Wie kann ich auf ein einzelnes Element des Ausgabeclusters zugreifen? Ich hatte mir schon überlegt, ob ich nicht eine Referenz auf ein Element innerhalb des Arrays innerhalb des clusters erhalten kann. Ich bin aber mit dem Ansatz nicht so weit gekommen : / LabView 8.6 Auslastung durch Anzeige von Daten glätten - schrotti - 13.01.2011 20:15 150 Elemente sind eigentlich kein Problem. Lad bitte das VI hoch, da liegt etwas im Argen. Auslastung durch Anzeige von Daten glätten - Oskimo - 13.01.2011 22:10 Das VI hab ich jetzt nicht griffbereit. Ich habe aber identifiziert, dass die CPU Auslastung ausschließlich aus der Oberfläche kommt. Das heißt, wenn ich zum Beispiel den Teil, bei dem die Daten in das cluster der Oberfläche kopiert werden nur jede Sekunde ausführe, kriege ich jede Sekunde einen Peak von 30% bis 40% CPU Last. Dabei muss man sagen, dass es sich hierbei um einen P4 1.8GHz handelt. Auslastung durch Anzeige von Daten glätten - Lucki - 14.01.2011 08:20 ' schrieb:Das Problem ist nun, dass ich nicht weiß, wie ich die einzelnen Elemente updaten kann, da sie sich als Array in einem Cluster befinden. Zu diesem Teil Deiner Frage: Auf dem Frontpanel mit rechter Maustaste auf das Element im Cluster klicken und Eigenschaftsknoten "Wert" erstellen: [attachment=31679] Leider nur sind Eigenschaftknoten viel langsamer als lokale Variable oder die Elemente selbst. Aber probieren geht über studieren. Auslastung durch Anzeige von Daten glätten - unicorn - 14.01.2011 10:46 Warum soll denn der Peak geglättet werden? Auslastung durch Anzeige von Daten glätten - Lucki - 14.01.2011 11:14 ' schrieb:Warum soll denn der Peak geglättet werden?Lass mich mitraten. Mein Tipp ist: Es sollen 10 Anzeigeelemente nicht alle zugleich alle 0.5sec aktualisiert werden, sondern alle 50 ms eines, bis alle 10 durch sind. Das Dumme ist, daß der Begriff "glätten" anderweitig fest belegt ist. Von "glätten" sollte man in diesem Kontext nicht sprechen. Damit sind Missverständnisse vorprogrammiert. Man ist aber hier in Bezug auf Sprachverhunzung im allgemeinen und skurrile Terminologie im Besonderen einiges gewohnt, so daß das schon gar nicht mehr auffällt. Auslastung durch Anzeige von Daten glätten - unicorn - 14.01.2011 16:06 @Lucki Habe ich genauso verstanden, wie Du es beschrieben hast. Anders formuliert: Warum sollen die Anzeigeelemente nicht auf einmal aktualisiert werden? Nur damit der Peak im Verlauf der CPU-Auslastung verschwindet oder gibt es dafür noch andere Gründe? Schließlich verschwindet der Peak in der CPU-Auslastung auch vom Bildschirm, wenn man den Taskmanager schließt. Und was ist, wenn der Code zum Verteilen der Aktualisierung zusätzliche CPU-Leistung benötigt? Ich sehe da noch kein Problem in dem Peak. Auslastung durch Anzeige von Daten glätten - BNT - 15.01.2011 11:02 Hi wenn viele Indikatoren/Controls mit Hilfe von Eigenschaftsknoten aktualisiert werden sollen, sollte die Frontpanel-Aktulisierung verzögert werden. 1. Eigenschaftsknoten mit Klasse VI auf das Blockdiagramm, die Eigenschaft Panel auswählen. 2. Die Panel-Referenz an einen weiteren Eigenschaftsknoten verdrahten und die Eigenschaft DeferPanUpdts selektieren und auf True setzen. 3. Nach der Aktualisierung der Controls/Indikatoren DeferPanUpdts wieder auf False setzen. Damit wird die Zahl der Thread-Wechsel zwischen GUI und Blockdiagram auf ein Minimum reduziert. Das direkte Schreiben auf Indikatoren wird, wenn man es nicht absichtlich anders konfiguriert hat, von LabVIEW asynchron durchgeführt, und stellt normalerweise kein Performance Problem dar. Gruß Holger Sorry, wegen des Fehlers im VI-Snippet. Ich hab's korrigiert. Auslastung durch Anzeige von Daten glätten - macmarvin - 15.01.2011 11:26 ' schrieb:Damit wird die Zahl der Thread-Wechsel zwischen GUI und Blockdiagram auf ein Minimum reduziert. Der umgekehrte Weg, das ganze VI oder ganze Teile der Applikation in den UI-Thread zu legen bringt mitunter auch eine spürbare Entlastung bzw. verminderte den Threadwechsel. Auslastung durch Anzeige von Daten glätten - Richard - 15.01.2011 11:28 Du solltest in dem Screenshot im dritten Rahmen DeferPanUpdts auf False setzten. Gruß Richard |