CAPÍTULO 05
Declaración
de funciones
Organiza código reutilizable y construye bloques con memoria persistente mediante FUNCTION y FUNCTIONBLOCK.
CAPÍTULO 05
Declaración
de funciones
Organiza código reutilizable y construye bloques con memoria persistente mediante FUNCTION y FUNCTIONBLOCK.
Recibe parámetros, procesa información y retorna un resultado.
+ Cálculos reutilizables
+ Conversión y validación
+ Resultados inmediatos
Conserva variables internas entre ciclos de ejecución.
+ Temporizadores
+ Detectores de flanco
+ Enclavamientos y pulsos
Declara una operación que puede recibir parámetros y devolver un valor mediante RETURN.
FUNCTION INT16 SUMA(INT16 A, INT16 B)
DECLARACIÓN // FUNCIÓN SUMA
FUNCTION INT16 SUMA(INT16 A, INT16 B)
RETURN A + B;
ENDFUNCTION
Resultado = SUMA(10, 5); → 15
Comportamiento
Una FUNCTION calcula un resultado a partir de sus entradas. Sus variables locales no conservan estado entre llamadas.
Declara un bloque lógico cuyas variables internas permanecen almacenadas durante la vida de su instancia.
Las variables ubicadas entre VAR y ENDVAR forman el estado interno. Los métodos del bloque pueden leerlas y modificarlas en cada ciclo.
ESTRUCTURA GENERAL // FUNCTIONBLOCK
FUNCTIONBLOCK NOMBRE_DE_BLOQUE
VAR
// Variables persistentes
ENDVAR
FUNCTION NOMBRE(BOOLEAN A, BOOLEAN B)
// Código de la función
ENDFUNCTION
ENDBLOCK
El siguiente bloque conserva marcas de tiempo y estados internos para implementar un retardo a la desconexión.
TIPO / FUNCTIONBLOCK TOF
FUNCTIONBLOCK TOF
VAR
Timestamp ET;
Timestamp ST;
BOOLEAN Q;
BOOLEAN LT;
ENDVAR
FUNCTION UPDATE(BOOLEAN IN, Timestamp NOW, Timestamp PT)
IF IN THEN
Q = TRUE;
ET = 0;
LT = FALSE;
ENDIF
IF NOT IN AND Q AND NOT LT THEN
ST = NOW;
LT = TRUE;
ENDIF
IF LT THEN
ET = NOW - ST;
IF ET >= PT THEN
Q = FALSE;
ET = PT;
LT = FALSE;
ENDIF
ENDIF
ENDFUNCTION
ENDBLOCK
Declarar el tipo no crea un bloque operativo. Primero se crea una instancia y después se llama su método durante la ejecución.
01 Declarar el tipo Define el FUNCTIONBLOCK en el área de funciones.
02 Crear la instancia Declara cada bloque requerido dentro de la sección SETUP.
03 Ejecutar UPDATE Invoca el método en cada ciclo y utiliza sus variables de salida.
SETUP // INSTANCIAS
TOF tof01;
R_TRIG pulso01;
LÓGICA // IMPLEMENTACIÓN
pulso01.UPDATE(BD01_LTC.ST_00000.Value);
tof01.UPDATE(pulso01.Q, SYSTEMDATE, 5000);
BD01_LTC.ST_00001.Value = tof01.Q;
Un propósito por función Mantén cada componente enfocado en una responsabilidad.
Nombres descriptivos Identifica con claridad parámetros, estados y resultados.
Estado controlado Utiliza FUNCTIONBLOCK solo cuando sea necesario conservar memoria.