Llamada a un bloque de funciones

Descripción general

Los bloques de funciones se llaman a través de una instancia de bloque de funciones. Por ello, una instancia de bloque de funciones debe declararse local o globalmente. Consulte el capítulo Instancia de bloque de funciones para obtener información sobre cómo realizar la declaración.

A continuación, puede accederse a la variable de bloque de funciones deseada utilizando la sintaxis siguiente.

Sintaxis

<nombre de instancia>.<nombre de variable>

Consideraciones

  • Solo puede accederse a las variables de entrada y salida de un bloque de funciones desde fuera de una instancia de bloque de funciones, pero no a sus variables internas.

  • El acceso a una instancia de bloque de funciones está limitado a la POU en la que se ha declarado, a menos que se haya declarado globalmente.

  • Al llamar a la instancia, pueden asignarse los valores deseados a los parámetros de bloque de funciones. Consulte el párrafo siguiente, Asignación de parámetros durante la llamada.

  • Las variables de entrada/salida (VAR_IN_OUT) de un bloque de funciones se proporcionan como punteros.

  • En SFC, las llamadas de bloque de funciones solo pueden tener lugar en pasos.

  • El nombre de la instancia del bloque de funciones puede utilizarse como parámetro de entrada para una función u otro bloque de funciones.

  • Todos los valores de un bloque de funciones se conservan hasta el siguiente procesamiento del bloque de funciones. Por tanto, las llamadas de bloque de funciones no siempre devuelven los mismos valores de salida, aunque se realicen con argumentos idénticos.

NOTA: Si al menos 1 de las variables del bloque de funciones es una variable remanente, la instancia total se almacena en el área de datos Retain.

Ejemplos de acceso a variables de bloque de funciones

Supongamos que el bloque de funciones fb tiene una variable de entrada in1 de tipo INT. Aquí se puede ver la llamada de esta variable desde dentro del programa prog. Observe la declaración e implementación en ST:

PROGRAM prog
VAR
inst1:fb;
END_VAR
inst1.in1:=22;   (* fb is called and input variable in1 gets assigned value 22 *)
inst1(); (* fb is called, this is needed for the following access on the output variable *)
res:=inst1.outl; (* output variable of fb is read *)

Ejemplo de una llamada de bloque de funciones en FBD:

Asignación de parámetros durante la llamada

En los lenguajes de texto IL y ST, puede establecer parámetros de entrada o salida inmediatamente al llamar al bloque de funciones. Los valores pueden asignarse a los parámetros entre paréntesis después del nombre de instancia del bloque de funciones. Para los parámetros de entrada, esta asignación tiene lugar utilizando := igual que en la inicialización de variables en la posición de declaración. Para los parámetros de salida, debe utilizarse =>.

Ejemplo de llamada con asignaciones

En este ejemplo, se llama a un bloque de funciones de temporizador (instancia CMD_TMR) con asignaciones para los parámetros INy PT. A continuación, la variable resultante Q se asigna a la variable A. La variable resultante consta del nombre de la instancia del bloque de funciones, un punto seguido y el nombre de la variable:

CMD_TMR(IN := %IX5, PT := T#100MS);
A:=CMD_TMR.Q;

Ejemplo de inserción con argumentos mediante Accesibilidad

Si la instancia se inserta mediante Accesibilidad con la opción Con argumentos en la vista de implementación de una POU ST o IL, se muestra automáticamente de acuerdo con la sintaxis que se muestra en el ejemplo siguiente con todos sus parámetros, aunque no es obligatorio para asignar estos parámetros.

En el ejemplo anteriormente mencionado, la llamada se mostraría del modo siguiente.

CMD_TMR(in:=, pt:=, q=>)
-> fill in, e.g.: 
CMD_TMR(in:=bvar, pt:=t#200ms, q=>bres);