Arbeitsplatz läuft voll - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Arbeitsplatz läuft voll (/Thread-Arbeitsplatz-laeuft-voll) |
Arbeitsplatz läuft voll - kompass453 - 31.08.2017 15:55 Guten Tag, bevor ich dieses Thema eröffnet habe, habe ich gründlich gesucht und musste leider feststellen, dass ich keine passende Antwort gefunden habe. Mir ist bewusst, dass das Thema schon öfters kam... Also .. ich habe ein ganz einfaches Datenerfassungsprogramm mit LV geschrieben. Nun wechsele ich die Messtechnik und verwende ein Erfassungsmodul von der Firma "IMC Messtechnik" welches für die LV-Programmierung auch entsprechende Zusatzbausteine für LV anbietet. Eigl. klappt alles wunderbar... nur bei einer längeren Messung beobachte ich eine kontinuireliche Steigung des Arbeitsspeichers (Fällt auch nach entsprechenden VOllaufen aus).. 1) Ich habe überprüft ob das Array quasi voll läuft bzw. sich nicht überschreibt. Das ist nicht der Fall meiner Meinung nach.. 2) Referenzen sollten eigl geschlossen werden. Dazu gibt es auch ein Baustein "CNL release" rechts.. aber die Messung läuft ja kontinuirlicher in der While-Schleife. Daher kann ja auch der Fehler sein das die Referenzen nicht geschlossen werden. Leider habe ich keine Ahnung wie ich es anders umsetze.. Ich benötige eure Hilfe Es ist mein erster Beitrag quasi, weil ich sonst immer auf anhieb etwas im Forum gefunden habe. Erstmal vielen Dank für eure Hilfe in allen Bereichen Ich freue mich über hilfreiche Lösungsvorschläge! PS: Allgemein finde ich läuft das LV-PRogramm sehr instabil. Das kann vllt daran liegen, weil ich das Messmodul nicht direkt am PC angeschlossen habe (wird noch erledigt mit einer 2. Netzwerkkarte).. Aber das Hauptproblem ist halt das oben beschriebene. RE: Arbeitsplatz läuft voll - GerdW - 31.08.2017 17:49 Hallo kompass, ein paar Kommentare: - warum enthält dein VI eine endlos laufende Schleife? - warum die Race condition? - warum wird in der äußeren schleife immer wieder ein Task gestartet und gestoppt? - was sagt der IMC-Support zum Thema? RE: Arbeitsplatz läuft voll - kompass453 - 01.09.2017 07:15 Zitat:warum enthält dein VI eine endlos laufende Schleife?Die äußere Schleife bitte ignorieren... die hatte ich sonst nicht gesetzt. Ich wollte einmal testen, ob ich die Verbindung zum Modul durch ein Stopbutton (der an die äußen Whileschleife verbunden war) funktioniert. Entsprechende Funktionsblöcke habe ich schon entfernt. Zitat:warum die Race condition?Was genau ist das bezogen auf mein VI. * Du meinst sicher die lokalen Vars. Ich habe die Stop-Variante vom Example des Herstellers IMC verwendet. Ich würde es so nicht machen in der Fertigung meines Programmes. Zitat:warum wird in der äußeren schleife immer wieder ein Task gestartet und gestoppt?Auch, wenn ich die äußere While lösche? Das Problem war auch schon vorher mit dem volllaufen des RAM´s Zitat:was sagt der IMC-Support zum Thema?Habe ich gestern parallel angeschrieben. Mal sehen Vielen Dank für die Antwort. RE: Arbeitsplatz läuft voll - GerdW - 01.09.2017 08:08 Hallo kompass, heute etwas konkreter, war gestern am Handy… Zitat:* Du meinst sicher die lokalen Vars.Ja. Ich meine aber "IsRun"! Warum wird dort eine lokale Variable verwendet, wenn es auch ein Draht tun würde? Zitat:Das Problem war auch schon vorher mit dem volllaufen des RAM´s- In der Schleife wird irgendwas gestartet und gestoppt: wird dabei ein MemoryLeak erzeugt? - In der Schleife wird ein Channel ausgewählt: erzeugt das ein MemoryLeak? (mMn unwahrscheinlich, das zugehörige Release wird ja aufgerufen) - In der inneren Schleife wird ein Channel gelesen im Modus "Graph": hier wird evtl. mit größeren Speicherblöcken hantiert und es könnte ein MemoryLeak möglich sein Ein Problem ist auch, dass nur du direkt Zugriff auf diese IMC-Funktionen und ihre Beschreibung hast. Gibt es evtl. ein Programmiermanual dafür? Ein Klick auf AutoCleanup würde auch zur Übersichtlichkeit beitragen… RE: Arbeitsspeicher (PC-RAM) läuft voll - kompass453 - 01.09.2017 14:46 Huhu, wie kann ich denn ein MemoryLeak detektieren? Welche Methode verwendest du? Anbei nochmal bisschen aufgeräumte die VI mit der Änderung, dass das Realeas-Funkblock nun in der Schleife ist und auch ausführt (laut Highlight-Funktion). MfG RE: Arbeitsplatz läuft voll - GerdW - 01.09.2017 15:48 Hallo kompass, Zitat:wie kann ich denn ein MemoryLeak detektieren?Man könnte das Ausschlussverfahren anwenden: - einen Teil des Codes per DiagramDisable-Struktur "verstecken" - VI laufen lassen und gucken, ob sich das Verhalten ändert/bessert - wenn keine Änderung: nächsten Teil des Codes disablen… Zitat:Anbei nochmal bisschen aufgeräumte die VI mit der Änderung- Das Channel-Select und -Release gehört nicht in die Schleife. (Es sei denn, der IMC-Treiber erfordert das genau so.) - Meiner Meinung nach gehören beide kleinen Schleifen zusammengefasst… - Das VI wird wahrscheinlich noch übersichtlicher, wenn man die subVIs in den Schleifen als Icon anzeigen lässt. - Warum kann man eine Schleife stoppen, die andere aber nicht? - Hast du mal Ctrl-U gedrückt? Hat sich IMC schon gemeldet? Zitat:Allgemein finde ich läuft das LV-PRogramm sehr instabil.Kannst du das noch erläutern? Um welche Hardware handelt es sich? Gibt es den Treiber dafür irgendwo (frei) zum Download? RE: Arbeitsplatz läuft voll - kompass453 - 05.09.2017 14:10 Guten Tag, ich wollte mich noch einmal kurz zu dem Thema melden. Ich habe alles mal in ein Diagrammdeaktivierungsstruktur gesteckt und nach und nach die potenziellen Quellen von Fehler ausgeschlossen. Letzendlich habe ich festgestellt, dass das IMC Programm Speichereinstellungen hat und ich die entsprechend konfigurieren muss. Ihc habe den fehler jetzt entdeckt und kann entspannt weiter Programmieren. Vielen lieben Dank für die schnellen und informativen Antworten. viele Grüße Kompass |