Memory Verbrauch

RobiHerb

Level-2
Beiträge
679
Reaktionspunkte
113
Zuviel Werbung?
-> Hier kostenlos registrieren
CoDeSys 2.x. Sprache ST

Ich stosse aktuell an die Limits der Memory Hardware. Vom Programm Umfang ist es OK aber von der Memory (Variablen) Belegung komme ich beim Compiler Lauf auf 100 % Datengrösse.

Da ich kaum derart viele KB als Variablen habe, suche ich nach dem Grund der Memory Belastung.

Im Zentrum der Memory Auslegung steht eine recht grosse Struct von ca.20 KB, die an eine Anzahl von FB, die wieder weitere FB aufrufen, als VAR_IN_OUT übergeben wird.

Ich war bisher davon ausgegangen, dass die Übergabe als per Referenz geschieht und somit nicht eine Kopie der Struct erzeugt wird sondern ein Pointer auf die Original Struct.

Liege ich damit falsch?
 
Guten Morgen RobiHerb,

Ich kann dir nicht genau sagen ob nicht auch bei VAR_IN_OUT Variablen der Speicherbereich allokiert wird. Um sicher zu gehen das dies nicht geschieht kannst du ja mit Pointern arbeiten und an der Schnittstelle entsprechend Pointer übergeben. Aber vermutlich reicht es in deinem Projekt auch die Memorysize einfach größer einstellen. Zu finden ist die Einstellung unter Ressourcen -> Arbeitsbereich -> TwinCAT

Grüße
 
Problem erkannt

VAR_IN_OUT werden als Referenz übergeben! Vom Speicherverbrauch entspricht das genau einem Pointer. Das problem muss woanders liegen.

Bernhard

Danke für die Klarstellung, so hatte ich es auch erwartet. Ich hatte die VAR_IN_OUT im Prinzip so verwendet, wie man in C++ eine Referenz oder einen const Pointer benutzt.


Das Problem ist inzwischen auch identifiziert (nicht gelöst, aber fast), es scheint eine Custom Library zu sein, die locker 160K "klaut".
 
Zurück
Oben