-> Hier kostenlos registrieren
Hallo zusammen,
habe ein Problem mit Libnodave unter Visualbasic 6. Habe das Exel-VBA Beispiel als Grundlage benutzt. Das Auslesen einer S7-300 317DP über CP341Lean und ISOoverTCP funktioniert auch problemlos. Das VB-Programm läuft auf einem Server und holt regelmäßig Daten aus der CPU. Nur werden
bei jeder Abfrage 2 Handles an Windows nicht zurückgegeben (Taskmanager/Systemleistung/Handles) und der verfügbare Systemspeicher schwindet langsam aber sicher dahin, bis der Server abschmiert.
Folgende Sequence wird alle paar Sekunden abgearbeitet (vereinfacht)
Unterprogamm initialize(...)
ph = openSocket(102, peer$) ' for ISO over TCP
di = daveNewInterface(ph, ph, "IF1", 0, daveProtoISOTCP, daveSpeed187k)
res = daveInitAdapter(di)
dc = daveNewConnection(di, MpiPpi, Rack, Slot)
Unterprogramm Daten lesen
res2 = daveReadBytes(dc, daveDB, DB, Startbyte, AnzahlBytes, 0)
Unterprogramm CleanUp(...)
res = daveDisconnectPLC(dc)
Call daveFree(dc)
res = daveDisconnectAdapter(di)
Call daveFree(di)
res = closePort(ph)
Wie gesagt es funktioniert, ich bekomme alle gewünschten Daten. Im Unterprogramm CleanUp meldet die letzte Funktion "closePort(ph)" einen Rückgabewert von 1. Ansonsten sind alle Rückgabewerte 0 = kein Fehler.
Wer kann mir einen Tip geben ?
Gruß Buster
habe ein Problem mit Libnodave unter Visualbasic 6. Habe das Exel-VBA Beispiel als Grundlage benutzt. Das Auslesen einer S7-300 317DP über CP341Lean und ISOoverTCP funktioniert auch problemlos. Das VB-Programm läuft auf einem Server und holt regelmäßig Daten aus der CPU. Nur werden
bei jeder Abfrage 2 Handles an Windows nicht zurückgegeben (Taskmanager/Systemleistung/Handles) und der verfügbare Systemspeicher schwindet langsam aber sicher dahin, bis der Server abschmiert.
Folgende Sequence wird alle paar Sekunden abgearbeitet (vereinfacht)
Unterprogamm initialize(...)
ph = openSocket(102, peer$) ' for ISO over TCP
di = daveNewInterface(ph, ph, "IF1", 0, daveProtoISOTCP, daveSpeed187k)
res = daveInitAdapter(di)
dc = daveNewConnection(di, MpiPpi, Rack, Slot)
Unterprogramm Daten lesen
res2 = daveReadBytes(dc, daveDB, DB, Startbyte, AnzahlBytes, 0)
Unterprogramm CleanUp(...)
res = daveDisconnectPLC(dc)
Call daveFree(dc)
res = daveDisconnectAdapter(di)
Call daveFree(di)
res = closePort(ph)
Wie gesagt es funktioniert, ich bekomme alle gewünschten Daten. Im Unterprogramm CleanUp meldet die letzte Funktion "closePort(ph)" einen Rückgabewert von 1. Ansonsten sind alle Rückgabewerte 0 = kein Fehler.
Wer kann mir einen Tip geben ?
Gruß Buster