Llamadas a Bloques de Función en las Áreas de Retención

Las llamadas a los bloques de función se pueden asignar a áreas de retención, es decir, se mantienen todas las condiciones de las variables del bloque de función, después de un fallo de alimentación. Para ello hay que seleccionar en la cabecera de la POU, las variables de la clase VAR_RETAIN o VAR_EXTERNAL_RETAIN. Para VAR_EXTERNAL_RETAIN, la llamada a la FB se ha de declarar en la lista de variables globales como VAR_GLOBAL_RETAIN.

Si en la llamada se utilizan variables de la clase VAR_RETAIN o VAR_EXTERNAL_RETAIN, el compilador asigna las direcciones del área de retención a las variables de no retención de las clases VAR, VAR_INPUT, VAR_OUTPUT o VAR_IN_OUT, que se inicializan solamente cuando se descarga el programa. Las subllamadas de clase VAR se tratan como subllamadas de clase VAR_RETAIN. Las direcciones de otras llamadas o subllamadas de las clases VAR_RETAIN, VAR_OUTPUT_RETAIN, VAR_EXTERNAL, o VAR_EXTERNAL_RETAIN se asignan a las llamadas de clase VAR o VAR_EXTERNAL. Los valores de las variables de clase VAR_CONSTANT y VAR_EXTERNAL_CONSTANT se introducen como valores constantes en el código de programa.

Si se usa la clase VAR o VAR_EXTERNAL en una llamada, la declaración de las variables o sub-llamadas en el bloque de función determina si son de retención (VAR_RETAIN) o no (VAR).

Ejemplo

Cabecera de la POU del Programa Prog

Un programa Prog accede al bloque de función FB1 dos veces:

Cabecera de la POU del bloque de función FB1

La cabecera de la POU del bloque de función FB1 tiene las siguientes entradas. El bloque de función FB1 también se basa en dos llamadas al bloque de función FB2.

Cabecera de la POU del bloque de función FB2

La cabecera de la POU del bloque de función FB2 tiene las siguientes entradas.

Distribución de la memoria del programa Prog:

Temas relacionados

Modificado el: 2020-10-27Comentarios sobre esta páginaLínea directa de Panasonic