Skip to main content

Cálculo del uso de la pila

El uso de pila por POU se muestra en el Configuración de tareas objeto en el Uso de la pila pestaña.

El uso de la pila se calcula estáticamente mediante CODESYS utilizando el árbol de llamadas estático.

En el cálculo se incluye lo siguiente:

  • El cálculo comienza con la POU implícita para la entrada de la tarea.

  • Para cada llamada al programa IEC (p. ej. PLC_PRG), el uso de pila de cada POU de IEC llamada se calcula de forma recursiva. El mayor uso de pila posible de una POU se suma a su propio uso de pila local para determinar el uso máximo de pila de la

  • Para las llamadas dinámicas, el uso de la pila se calcula de la siguiente manera: se determina el uso de la pila de todas las implementaciones posibles y se asume el mayor uso de la pila. Esto significa que se tienen en cuenta todas las implementaciones posibles para los métodos de interfaz y todas las sobrescrituras posibles para los métodos de bloques de funciones

  • El valor especificado por el dispositivo de destino se asume para las llamadas externas. Si el dispositivo no ha especificado un valor, se asume que es 0.

  • En caso de recursión, se anula el cálculo. El valor del atributo de tipo pragma estimated-stack-usage se aplica al código llamado de forma recursiva. Si no se especifica ningún valor, se asume que es 0

Por lo tanto, el uso de la pila es solo una estimación. Puede que sea demasiado alto porque la ruta de llamada más baja que se supone nunca se ejecuta en tiempo de ejecución. Sin embargo, también puede ser demasiado bajo porque las recursiones o las llamadas externas se estiman de manera desfavorable

ejemplo 27. Ejemplo
_cds_task_configuration_tab_stack_usage_example.png


Mostrar el uso de la pila

  1. Haga doble clic en el Configuración de tareas objeto.

    Se abre el editor de configuración de tareas.

  2. Haga clic ConstruirGenerar código comando.

  3. Haga clic en el Uso de la pila pestaña.

    La información de la pestaña está actualizada.

    Bajo Tarea/pila máxima de llamadas, las POU llamadas en secuencia aparecen, tal y como se supone, en la pila máxima de llamadas. El tamaño de pila calculado para la POU se muestra en Tamaño de pila columna.

ejemplo 28. Ejemplo

Si el tamaño de la pila se muestra en rojo, es posible que haya un desbordamiento de pila en la POU correspondiente. Puede reconocer la POU en la que debe realizar los cambios. Esta es la primera POU marcada en rojo en la pila de llamadas.

_cds_task_config_stack_usuage.png