Speicherplatzverschwendung ?

kiestumpe

Level-1
Beiträge
726
Reaktionspunkte
84
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Nachdem ich meinen Baustein mit einer 90Byte großen InOut -Variablen versehen habe und darin absolute Adresse zum großen Teil in Symbolische verwandelt habe, wuchs er überproportional von 1.5kB auf knapp 7kB.

Wie kommt sowas :confused: , gibts da ein Mittel dagegen? (Ausser Speichererweiterung kaufen ;)

Gruss
kiestumpe
 
Hallo,

S5 oder S7?
S7-200 oder S7-300/400
Anstieg des Ladespeichers oder Arbeitsspeicherbedarfs (bei S7-300/400)?
Symbolische Namen vergrössern normalerweise nicht den Speicher, da die Symbole nicht in die CPU kommen.
Vielleicht wird aber auch Symbolik mit Variablen bzw. Parameter verwechselt.

Fragen über Fragen, die bei einer unpräziesen Frage entstehen.

Gruß
Unspezifiziert
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
vielleicht mal ne ganzen Inhalt des Bausteins in einen neuen "leeren" Kopieren, bei Mircrosoft ist es auch so das alle Informationen auch die gelöschten gespeichert werden, vielleicht kann es hier bei auch helfen, vielleicht auch nicht.
 
Hallo,

Hier noch weiter Informationen, die das Bild hoffentlich deutlicher machen:

System : S7 V5.3
Angezeigt wirds direkt im Simatic - manager unter der Spalte
"Größe im Arbeitsspeicher"
Die Symbolik wird wird in einem UDT definiert.
Am Baustein wird mit Hilfe dieses UDT's eine IN-OUT-Strukturvariable in den Baustein übergeben.
Ursprünglich war hier nur als Übergabe eine Datenbausteinnummer und es wurde damit direkt über die Adressen auf den DB zugegriffen.
Anstatt der Adressen stehen dafür, wo möglich, die Symbole aus der Struktur.
(ein anderer Beitrag von gestern "Symbolik in awl" handelt übrigens vom gleichen Baustein)
 
MatMer schrieb:
Hallo,
vielleicht mal ne ganzen Inhalt des Bausteins in einen neuen "leeren" Kopieren, bei Mircrosoft ist es auch so das alle Informationen auch die gelöschten gespeichert werden, vielleicht kann es hier bei auch helfen, vielleicht auch nicht.
...macht leider keinen Unterschied
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

dies macht die Sache etwas klarer.
Für das Übergeben der UDT wird beim Call des Bausteins die SFC20 benötigt (sofern diese direkt übergeben wird). Der Aufruf der SFC20 ist Bestandteil des CALL und für den Programmierer nicht zu sehen. Da es sich um eine IN/OUT handelt ist der Aufruf der SFC20 zwei Mal notwendig (vor dem Bearbeiten des Bausteins und danach).
Ich denke dass dies einen Teil der Vergrösserung ausmacht.

Alle Parameter >Doppelwort werden so übergeben, da wird man also wenig ausrichten können, ausser man ändert wieder den Aufruf.
Wenn die Übergabe an eine FC gemacht wird, werden auch noch temporäre Lokaldaten benötigt.

Gruß
Unspezifiziert
 
Also bei Datenbausteinen ist es definitiv so, daß der Einsatz von UDT, möglichst noch ineinander verschachtelt, den nötigen Ladespeicher für den Baustein extrem hochschraubt. Anscheinend werden doch noch Informationen zur Struktur beim Laden des Bausteins mit in die SPS genommen, um später aus den Bausteinen heraus darauf zugreifen zu können?
 
Ralle schrieb:
Also bei Datenbausteinen ist es definitiv so, daß der Einsatz von UDT, möglichst noch ineinander verschachtelt, den nötigen Ladespeicher für den Baustein extrem hochschraubt. Anscheinend werden doch noch Informationen zur Struktur beim Laden des Bausteins mit in die SPS genommen, um später aus den Bausteinen heraus darauf zugreifen zu können?
Weniger für die SPS. Aber wenn ein PG den Baustein ohne Projekt lädt, muss es die Struktur ja auch anzeigen können.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Rainer Hönle

Stimmt, die Struktur ansich bleibt erhalten, nur alle Variablennahmen aus der UDT fehlen natürlch. Dafür wird aber dann rel. viel Speicher benötigt.
 
Zurück
Oben