Berechnung des Stackverbrauchs
Im Objekt Taskkonfiguration in der Registerkarte Stackverbrauch wird der Stackverbrauch pro POU angezeigt.
Die Stacknutzung wird von CODESYS statisch über den statischen Aufrufbaum berechnet.
Folgendes wird in die Berechnung miteinbezogen:
Die Berechnung beginnt bei der impliziten POU für den Taskeintritt.
Für jeden IEC-Programmaufruf (z. B.
PLC_PRG
) wird rekursiv der Stackverbrauch jedes aufgerufenen IEC-Bausteins berechnet. Der größte mögliche Stackverbrauch eines Bausteins wird zu seinem eigenen lokalen Stackverbrauch addiert, um den maximalen Stackverbrauch des Bausteins zu ermitteln.Für dynamische Aufrufe wird der Stackverbrauch wie folgt berechnet: Es wird der Stackverbrauch aller möglichen Implementierungen ermittelt und der größte Stackverbrauch angenommen. Das bedeutet, dass bei Schnittstellen-Methoden alle möglichen Implementierungen und für Funktionsbaustein-Methoden alle möglichen Überschreibungen berücksichtigt werden.
Für externe Aufrufe wird der vom Zielgerät spezifizierte Wert angenommen. Wenn das Gerät keinen Wert spezifiziert hat, wird 0 angenommen.
Bei Rekursion wird die Berechnung abgebrochen. Für den rekursiv aufgerufenen Code wird der Wert des Arttributpragmas estimated-stack-usage übernommen. Wenn kein Wert angegeben ist, wird 0 angenommen.
Der Stackverbrauch ist daher nur eine Schätzung. Er kann zu hoch sein, weil der angenommene tiefste Aufrufpfad zur Laufzeit nie durchlaufen wird. Er kann aber auch zu niedrig sein, weil Rekursionen oder externe Aufrufe ungünstig abgeschätzt werden.

Anzeigen des Stackverbrauchs
Doppelklicken Sie auf das Taskkonfigurations-Objekt.
Der Taskkonfigurationseditor öffnet sich.
Wählen Sie den Befehl Erstellen → Code erzeugen.
Wählen Sie die Registerkarte Stackverbrauch.
Die Informationen der Registerkarte werden aktualisiert.
Unter Task/Maximaler Aufrufbaum erscheinen die nacheinander aufgerufenen Programmierbausteine, so wie im maximalen Anrufbaum angenommen. In der Spalte Stackgröße wird die berechnete Stackgröße für die POU angezeigt.
Wenn die Stackgröße rot angezeigt wird, kann es in dem zugehörigen Baustein zu einem Stack-Überlauf kommen. Sie können erkennen, in welchem Programmierbaustein Sie Änderungen vornehmen sollten. Dies ist der erste rot markierte Baustein im Aufrufbaum.
