LabVIEWForum.de
Arbeitsspeicher läuft hoch bei .dll-Aufruf - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: DLL & externer Code (/Forum-DLL-externer-Code)
+---- Thema: Arbeitsspeicher läuft hoch bei .dll-Aufruf (/Thread-Arbeitsspeicher-laeuft-hoch-bei-dll-Aufruf)



Arbeitsspeicher läuft hoch bei .dll-Aufruf - ManRyMuc - 12.12.2013 18:23

Hallo zusammen!
Ich bin hier immer mal wieder unterwegs und habe schon sehr oft Hilfe gefunden! Vielen Dank dafür!

Nun habe ich allerdings ein Problem, das mit zu schaffen macht.

Ich lese Werte aus einer Beckhoff SPS mithilfe AdsSyncReadReq, das Teil der TcAdsDll.dll Bibliothek ist.
Ich übergebe an den Call Function Library Node (AdsSyncReadReq) die geforderten Parameter (ADS-Net-ID, den Datagruop Index (4020), Offset (=Adresse), Länge in Byte und den Datentyp (DBL).
Das funktioniert prinzipiell gut, ich lese die Werte sauber aus.
Nur leider ist es so, dass der Arbeitsspeicher (im Win-Taskmanager zu beobachten) peu à peu hochläuft und dann das Programm irgendwann abstürzt.
Woran könnte das liegen? Ich bin mir nicht sicher, ob das angehängte VI funktioniert, wenn man die SPS nicht hat. Es soll aber das Probelm zeigen.
U.U. liegt es ja an einer fehlerhaften datenübergabe (pointer o.ä., Allocation usw..) wie es mir hier bei dll-Problemen immer mal wieder begegnet ist. allerdings bin ich da völlig blank und weiß nicht so recht, wie ich das Problem lösen kann.

Ich bin um jeden Ratschlag dankbar!

Danke!

Manuel


RE: Arbeitsspeicher läuft hoch bei .dll-Aufruf - GerdW - 12.12.2013 19:06

Hallo Manuel,

leider kann man ohne entsprechende Beschreibung der DLL (Funktionen und deren Parameter) kaum prüfen, ob du dies korrekt programmiert hast...

Nur so ein Gedanke: Muss man die Ports jedesmal öffnen und schließen?


RE: Arbeitsspeicher läuft hoch bei .dll-Aufruf - rolfk - 13.12.2013 09:06

Ich schliesse mich Gerd an. Ports definitiv nicht jedesmal neu öffnen und wieder schliessen. Ich mache nicht Gebrauch von dieser DLL aber es ist gut möglich dass im Open oder Close etwas nicht korrekt abgeschlossen wird.

Also erst mal das Open und Close aus der Loop nehmen und dann weiter sehen.


RE: Arbeitsspeicher läuft hoch bei .dll-Aufruf - ManRyMuc - 18.12.2013 18:59

Hallo Ihr beiden!

vielen Dank für die spontanen Hinweise!
Genau das war es! Ich habe das open / close aus der for-Schleife raus. Funktioniert trotzdem und der Speicher bleibt stabil!
Warum bei einem solachen open/close allerdings der Arbeitsspeicher hochläuft bleibt mir ein Rätsel. Weil ich ja auch direkt nach dem Öffnen auch wieder schließe...

Na ja, egal! es funktioniert!

Vielen Dank!

Manuel