Skip to main content

Objeto: bloque de funciones

Un bloque de funciones es una POU que produce uno o más valores cuando se ejecuta.

El objeto se agrega a la aplicación o al proyecto haciendo clic en Proyecto → Agregar objeto → POU. En el árbol de dispositivos o en el POU vista, las POU del bloque de función tienen la (PENSIÓN COMPLETA) sufijo.

Siempre llama a un bloque de funciones por medio de una instancia que es una copia del bloque de funciones.

El editor de un bloque de funciones consta de la parte de declaración y la parte de implementación.

Los valores de las variables de salida y las variables internas permanecen sin cambios después de la ejecución hasta la próxima ejecución. Esto significa que el bloque de funciones no necesariamente devuelve los mismos valores de salida para varias llamadas con las mismas variables de entrada.

Además de la funcionalidad descrita en IEC 61131-3, también puede utilizar bloques de función en CODESYS para las siguientes funcionalidades de la programación orientada a objetos:

La línea superior de la parte de la declaración contiene la siguiente declaración:

FUNCTION_BLOCK <access specifier> <function block> \| EXTENDS <function block> \| IMPLEMENTS <comma-separated list of interfaces>

Llamar a un bloque de funciones

La llamada siempre se realiza mediante una instancia del bloque de funciones. Cuando se llama a un bloque de función, solo cambian los valores de la instancia respectiva.

Declaración de la instancia:

<instance> : <function block>;

Accede a una variable del bloque de función en la parte de implementación de la siguiente manera:

<instance> . <variable>

Importante

Tenga en cuenta lo siguiente:

  • Solo puede acceder a las variables de entrada y salida de un bloque de funciones desde fuera de la instancia del bloque de funciones, no a las variables internas.

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

  • Puede asignar los valores deseados a las variables del bloque de funciones cuando llama a la instancia.

ejemplo 512. Ejemplo

Acceso a las variables del bloque de funciones:

El bloque de funciones FB1 tiene la variable de entrada iVar1 de tipo INT y la variable de salida out1. A continuación, la variable iVar1 se llama desde el programa Prog.

PROGRAM Prog
VAR
inst1 : FB1;
END_VAR

inst1.iVar1 := 33;  (* FB1 is called and the value 33 is assigned to the variable iVar1 *)

inst1();            (* FB1 is called, that's necessary for the following access to the output variable *)

ires := inst1.out1  (* the output variable out1 of the FB1 is read *)

En DCL:

_cds_img_fb_call_fup.png


Asignación de valores de variables al llamar:

En los lenguajes textuales IL y ST, puede asignar valores directamente a las variables de entrada y/o salida cuando llama al bloque de función.

Se asigna un valor a una variable de entrada con :=.

Se asigna un valor a una variable de salida con =>.

ejemplo 513. Ejemplo

la instancia CMD_TMR del bloque de función del temporizador se llama con asignaciones para las variables de entrada IN y PT. Entonces la variable de salida Q del temporizador se asigna a la variable A.

PROGRAM PLC_PRG
VAR
        CMD_TMR : TOF;
END_VAR

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


Sugerencia

Cuando inserta una instancia de bloque de función por medio del Asistente de entrada y seleccione el Insertar con argumentos opción en el Asistente de entrada diálogo, CODESYS inserta la llamada con todas las variables de entrada y salida. Entonces solo tiene que insertar la asignación de valor deseada. En el ejemplo anterior, CODESYS inserta la llamada de la siguiente manera: CMD_TMR (IN:= ,PT:= , Q=> ).

Sugerencia

Puedes usar el 'está conectado' atributo en una variable local para determinar en el momento de la llamada en la instancia del bloque de funciones si una entrada específica recibe o no una asignación externa.