Una libreria o un'applicazione è organizzata per tipi complessi come programmi, blocchi funzione, elenchi di variabili globali, metodi, azioni, funzioni, strutture e così via. Entro ciascuno di questi tipi, è possibile definire le variabili.
Quando si chiama un tipo complesso come una funzione, un metodo, un'azione, una proprietà Get, proprietà Set o una transizione, la memoria nello stack è necessaria per eseguire il metodo. Le informazioni sulla dimensione dello stack consentono di identificare il tipo complesso che utilizza troppa memoria dello stack.
Per un tipo complesso come funzione o metodo, le dimensioni delle variabili vengono sommate. Quando si chiama il tipo complesso, la dimensione viene allocata in cima allo stack e i valori di ingresso copiati nella memoria allocata. Durante l'esecuzione del codice della funzione o del metodo, si utilizzano questi valori di memoria.
Esempio
Esempio di calcolo di Stack Size:
FUNCTION_BLOCK FB_XXX
VAR
fbComplex: FB_Test; // 20 byte
END_VAR
// method call of FB_XXX
Meth1(TRUE);
METHOD Meth1
VAR_INPUT
xTest1: BOOL;
END_VARVAR
iTest2: INT;
END_VAR
METHOD METH2
VAR_INPUT
fbComp: FB_XXX;
END_VAR
Risultati di Stack Size
Stack Size (METH1) = 8
Stack Size (METH2) = 32