LabVIEWForum.de
Speicher wird erst geleert nach schließen des Programms - 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: Speicher wird erst geleert nach schließen des Programms (/Thread-Speicher-wird-erst-geleert-nach-schliessen-des-Programms)

Seiten: 1 2


Speicher wird erst geleert nach schließen des Programms - raverel - 05.07.2013 09:43

Hallo zusammen.

Ich habe folgendes Problem:

Ich habe eine cifX EtherNet/IP Feldbuskarte der Firma Hilscher. Ich habe mir ein Programm geschrieben, um nun die sich im Netzwerk befindlichen Slaves darstellen. Die IP-Adressen der Teilnehmer schreibe ich nacheinander über ein Schieberegister in ein String Array. Das VI "EtherNet IP`s" schreibt mir die zurückgesendeten Daten aus dem Cluster in das IP Adressen Array. Das VI "Remove Same Array" filtert alle gleichen IP`s raus, da er sonst die letzte gefundene IP-Adresse mehrfach in das Array einträgt. Das Problem was ich jetzt habe ist, wenn ich beispielsweise ein Slave im Netzwerk habe und den Suchlauf starte, funktioniert alles reibungslos. Ziehe ich das Netzwerkkabel ab und starte den Suchlauf erneut, wird mir immernoch signalisiert, dass sich 1 Teilnehmer im Netzwerk befindet. Obwohl physikalisch kein Slave mehr im Netzwerk ist. Anscheinend hat LabView noch irgendwo diesen Wert im Speicher. Schließe ich jetzt komplett mein LabView Projekt, öffne mein Projekt/Programm erneut und starte dann den Suchlauf dann nocheinmal, funktioniert alles so wie es soll. Es wird mir als Slaveanzahl der Wert "0" angezeigt. Lösche ich links vom Schieberegister aus dem Array die String Konstante, füge danach eine neue String Konstante ein und starte dann den Suchlauf erneut, funktioniert ebenfalls alles wunderbar. Kann mir da jemand eine Hilfestellung geben? Bin hier am verzweifeln Huh
Vielen Dank

lv12_img


RE: Speicher wird erst geleert nach schließen des Programms - Trinitatis - 05.07.2013 10:42

Hallo raverel,

mach mal ne Version <=2011 draus.
2012 ist hier noch nicht soo verbreitet im LVF.


Gruß, Marko


RE: Speicher wird erst geleert nach schließen des Programms - raverel - 05.07.2013 10:49

voilà
Big Grin
lv11_img
hab die beiden "Unter Vi`s" auch nochmal angefügt.
lv11_img


RE: Speicher wird erst geleert nach schließen des Programms - Trinitatis - 05.07.2013 10:54

..ich fürchte, dein Sub-VI wirste auch mitschicken müssen!Big Grin

Gruß, Marko


Edit:
Nu sind se da.
Hallo raverel,

irgendwie heißen deine Sub-VIs alle anders, als sie sollten - liegt wahrscheinlich an den Versionsnummern.

Bau das mal bitte richtig zusammen und schicke das ganze unter ANgabe des Main-VIs als zip-file.


Danke!




Gruß, marko


RE: Speicher wird erst geleert nach schließen des Programms - raverel - 05.07.2013 11:00

Nochmal zu allgemeinen Verständnis. Das Sub-VI "EtherNet IP`s" gehört in das "Haupt" VI EtherNet IP Lifelist. Das Sub VI "Remove Same Array" kommt wiederum in das Sub VI "EtherNet IP`s".


RE: Speicher wird erst geleert nach schließen des Programms - Trinitatis - 05.07.2013 11:03

(05.07.2013 11:00 )raverel schrieb:  Nochmal zu allgemeinen Verständnis. Das Sub-VI "EtherNet IP`s" gehört in das "Haupt" VI EtherNet IP Lifelist. Das Sub VI "Remove Same Array" kommt wiederum in das Sub VI "EtherNet IP`s".


Deine hochgeladenen VIs heißen aber allesamt anders, als du sie beschreibst und LV will auch andere Namen haben.


Gruß, Marko


RE: Speicher wird erst geleert nach schließen des Programms - raverel - 05.07.2013 11:11

So, anders bekomm ich es nicht hin. Müsste aber so passen.
lv11_img

Gruß raverel


RE: Speicher wird erst geleert nach schließen des Programms - Trinitatis - 05.07.2013 11:21

Hallo raverel,

also in deinen VIs sehe ich nicht so recht, wie die sich da was merken sollten. Hast du mal versucht, einfach mal so längere Zeit zu warten zwischen den Aufrufen.

An der Programmierung kann´s nach meinem Dafürhalten nicht liegen. Wenn du die Konstante erneuerst, muss LV auch das VI neu kompilieren - vielleicht hängt´s auch damit zusammen.


Gruß, Marko


RE: Speicher wird erst geleert nach schließen des Programms - GerdW - 05.07.2013 11:45

Hallo raverel,

Zitat:Anscheinend hat LabView noch irgendwo diesen Wert im Speicher.
Warum soll LabVIEW schuld sein? Merkt sich die aufgerufene DLL evtl. die gefundenen Slaves? Diese meldet dir doch die Slaves im Cluster...

Zitat:Schließe ich jetzt komplett mein LabView Projekt, öffne mein Projekt/Programm erneut und starte dann den Suchlauf dann nocheinmal, funktioniert alles so wie es soll. Es wird mir als Slaveanzahl der Wert "0" angezeigt. Lösche ich links vom Schieberegister aus dem Array die String Konstante, füge danach eine neue String Konstante ein und starte dann den Suchlauf erneut, funktioniert ebenfalls alles wunderbar.
Im ersten Fall wird die DLL aus dem Speicher entfernt, weil der Aufrufer (LabVIEW bzw. das Projekt mit dem VI) beendet wird. Im zweiten Fall wird LabVIEW die DLL aus dem Speicher schmeißen, weil das VI neu kompiliert wird und dazu alle alten Referenzen etc. aufgeräumt werden. Ich würde der DLL den schwarzen Peter zuschieben...


RE: Speicher wird erst geleert nach schließen des Programms - raverel - 05.07.2013 11:53

Viele Dank für die schnellen Antworten.
Ja mit der dll hört sich plausibel an. Fragt sich jetzt nur, wie ich das Problem mit der dll löse. Undecided
Muss mir dann wohl nochmal das Datasheet durchlesen.