Diferencias entre una función y un bloque de funciones
Una función:
oEs una POU (Unidad de organización de programa) que devuelve un resultado inmediato.
oSe le llama directamente por su nombre (y no a través de una instancia).
oNo tiene un estado persistente desde una llamada hasta la otra.
oSe puede utilizar como un operando en otras expresiones.
Ejemplos: operadores booleanos (AND), cálculos, conversión (BYTE_TO_INT)
Bloque de funciones
oEs una POU (Unidad de organización de programa) que devuelve una o más salidas.
oDebe llamarse a través de una instancia (copia del bloque de funciones con nombre y variables dedicados).
oTodas las instancias tienen un estado persistente (salidas y variables internas) de una llamada a otra desde un bloque de funciones o programa.
Ejemplos: temporizadores, contadores
En el ejemplo, Timer_ON es una instancia del bloque de funciones TON: