Métrica: tamaño de pila

Descripción del usuario

Una aplicación o biblioteca está organizada por tipos complejos como programas, bloques de funciones, listas de variables globales, métodos, acciones, funciones, estructuras, etc. Dentro de cada uno de estos tipos se pueden definir variables.

Cuando se llama a un tipo complejo como una función, método, acción, propiedad Get, propiedad Set, o una transición, se necesita memoria en la pila para ejecutar el método. La información del tamaño de la pila se puede utilizar para identificar el tipo complejo que está usando demasiada memoria de la pila.

NOTA: El controlador utilizado limita y define la memoria de pila disponible por tarea. Un gran consumo del tamaño de la pila puede dar lugar a excepciones.
NOTA: Si se utiliza un tipo de bloque de función como tipo de variable de entrada del método (llamada por valor), se necesita el tamaño de memoria del tipo complejo (consulte Memory Size Data). No utilice la llamada por valor para tipos complejos como entradas de método o de función.

Cálculo de métricas

Para un tipo complejo como una función o un método, se resumen los tamaños de las variables. Cuando se llama al tipo complejo, el tamaño se asigna en la parte superior de la pila y los valores de entrada se copian en la memoria asignada. Durante la ejecución del código de la función o método, se utilizan estos valores de memoria.

NOTA: Cada método o llamada de función tiene su propia memoria y no entra en conflicto si un método es llamado en paralelo por otra tarea.

Ejemplo

Ejemplo de cálculo de tamaño de pila:

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

Resultados de tamaño de pila

Stack Size (METH1) = 8
Stack Size (METH2) = 32