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!
12.12.2013, 18:23 (Dieser Beitrag wurde zuletzt bearbeitet: 12.12.2013 18:29 von ManRyMuc.)
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 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.
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...