Steigender Arbeitsspeicher

zero

Level-2
Beiträge
15
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,
ich habe ein Beckhoff projekt und einen IPC von Beckhoff c6030 mit 8GB Ram über den Lauf einer woche läuft dieser voll.
Ich finde leider wenig informationen woran das liegen kann was ich aber rausgefunden habe:
1. nur wenn Sps Projekt läuft
2. wird in WinTaskManager nicht erkannt das ein Programm mehr Arbeitsspeicher braucht
3. habe den Beckhoff UFW Manager auf DISK gestellt statt auf RAM (was nicht geholfen hat)

was ich in meinem Projekt manche was vllt. damit zutun haben könnte
1. Variablen mit Var_input von GVL durch mehrere verschachtelte Funktionsbausteine durchgeben mit Reference to (kam erst später dazu)
2. Funktionsbaustein indem mehrere andere Funktionsbausteine stecken (die viele Var_Input und Outputs haben) mehrmals instanzieren
3. ich nutzt die CSVOPEN, CSVWRITE, CSVCLOSE funktion (problem besteht auch wenn diese auskommentiert wurde)
4. ich fülle ein Array mit einer For-Schleife und leere es später wieder mit der memset funktion

Ich bin ein blutiger Anfänger und weiß echt nicht weiter
Wo sollte ich anfangen zusuchen?
Ist das ein Memory Leak?
Kann ich das Ihrgentwie eingrenzen?
 
Ohne deinen Code zu kennen fällt mir da jetzt nicht viel dazu ein.
Memset könnte es sein oder dynamisches Instanzieren.
Auf jeden Fall aber nicht :
- FOR-Schleife
- Multi-Instanzen (also FB in FB)
- Referenzen ...?
 
das heißt mir bleibt nichts anderes übrig als meinen code einzeln auszukommentieren und den taskmanager zubeobachten.
oder gibt es eine Funktion mit der man den Arbeitsspeicher der einzelne bereiche einsehen kann?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
das heißt mir bleibt nichts anderes übrig als meinen code einzeln auszukommentieren und den taskmanager zubeobachten.
oder gibt es eine Funktion mit der man den Arbeitsspeicher der einzelne bereiche einsehen kann?
Wenn du einen Treiber und Debugger auf Kernel Level hast und dazu noch gut mit Hex usw bist und gerne im trüben fischst, dann kannst du dir bestimmt die Daten im Ram ansehen ;)
 
Wenn ich wetten müsste, würde ich auf 3. Tippen (UFW). Bei Beckhoff in der Doku steht, dass dieser nicht für den Dauerbetrieb geeignet ist, weil irgendwann der Arbeitsspeicher voll läuft.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mein Programm ist ein Prüfstand für mehrere Torantriebe die im Dauerlauf getestet werden und mit einem Drehgeber wird pro zyklus die geschwindigkeit und meherer positionswerte die in einem Array gespeichert werden und mit Concat in einen String ein eine CSV-Datei geschrieben werden.
 

Anhänge

  • Screenshot_30.jpg
    Screenshot_30.jpg
    55,4 KB · Aufrufe: 11
Wenn ich wetten müsste, würde ich auf 3. Tippen (UFW). Bei Beckhoff in der Doku steht, dass dieser nicht für den Dauerbetrieb geeignet ist, weil irgendwann der Arbeitsspeicher voll läuft.
Anfangs dachte ich das dies mein Problem lösen würde, aber es hatte keinerlei auswirkungen
 

Anhänge

  • Screenshot_31.jpg
    Screenshot_31.jpg
    29,6 KB · Aufrufe: 26
Arbeitsspeicher bei Beckhoff läuft eigentlich nur über, wenn man dynamisch Speicher allokiert.
Alles andere führt zu höherer Zykluszeit
 
die String Größe variert je nach einstellung aber deklariert ist er als String(5000) danach setze ich ihn mit String:=""; wieder auf null
 
wie ist der deklariert ? Statisch oder temporär ?

Das ist aber alles ein bisschen "Stochern im Nebel" ...
sDataCombined : STRING(5000);
sTempHalf : STRING(2000);
sTempOtherHalf : STRING(2000);

ich habe jetzt sehr viele Bausteine auskommentiert und und nehme jetzt nach und nach wieder Bausteine hinzu
 
ah ok ich musste grad noch googlen was du damit meinst, ich dachte das bezieht sich ob am String die Größe definiert ist. Ich werde es mal ausprobieren.
🙈
 
sDataCombined : STRING(5000);
sTempHalf : STRING(2000);
sTempOtherHalf : STRING(2000);

ich habe jetzt sehr viele Bausteine auskommentiert und und nehme jetzt nach und nach wieder Bausteine hinzu
Gibts da noch mehrere davon?

Da sind ja jetzt auch nur 9KB

Aber auch das würde sich schöner lösen lassen, ist jetzt hier aber nicht die Ursache denke ich
 
Zurück
Oben