Una función es una POU que produce exactamente un elemento de datos (que puede estar formado por varios elementos, como campos o estructuras) cuando se procesa. La llamada en lenguajes textuales puede ocurrir como un operador en expresiones.
Para asignar la función a una aplicación existente, seleccione el nodo de la aplicación en el árbol Aplicaciones, haga clic en el signo más de color verde y ejecute el comando POU... Como alternativa, haga clic con el botón derecho en el nodo Aplicación y ejecute el comando Agregar objeto > POU en el menú contextual. Para añadir una POU independiente de la aplicación, seleccione el nodo Global del árbol Aplicaciones y ejecute los mismos comandos.
En el cuadro de diálogo Añadir POU, seleccione la opción Función. Especifique un Nombre (<nombre de la función:>) y un Tipo de retorno (<tipo de datos>) para la nueva función y seleccione el lenguaje de implementación deseado. Para elegir el tipo de datos de retorno, haga clic en ... para abrir el cuadro de diálogo Accesibilidad. Haga clic en Abrir para confirmar. Se abre la vista de editor para la nueva función y puede empezar la edición.
Sintaxis:
FUNCTION <nombre de función> : <tipo de datos>
Va seguido de las declaraciones de variables de entrada y las variables de programa.
Asigne un resultado a la función. Esto significa que el nombre de la función se utiliza como variable de salida.
No declare variables locales como RETAIN o PERSISTENT en una función porque no tendrá efecto.
Ejemplo de una función en ST: esta función toma 3 variables de entrada y devuelve el producto de las 2 últimas añadidas a la primera.
La llamada de una función en ST puede aparecer como un operando en expresiones.
En IL, puede colocar una llamada de función sólo dentro de acciones de un paso o en una transición.
Las funciones (a diferencia de un programa o un bloque de funciones) no contienen información interna de estado; es decir, la invocación de una función con los mismos argumentos (parámetros de entrada) siempre produce los mismos valores (salida). Por este motivo, las funciones no pueden contener variables globales y direcciones.
Ejemplo de llamadas a funciones en IL
Llamadas a funciones en IL;
LD 5
Fct 3 ,
22
ST result
Ejemplo de llamadas a funciones en ST
result := fct1(5,3,22);
Ejemplo de llamadas a funciones en FBD
Llamadas a funciones en FBD:
Ejemplo:
fun(formal1 := actual1, actual2); // -> error message
fun(formal2 := actual2, formal1 := actual1); // same semantics as the following:
fun(formal1 := actual1, formal2 := actual2);
De acuerdo con el estándar IEC 61131-3, las funciones pueden tener salidas adicionales. Pueden asignarse en la llamada de la función. En ST, por ejemplo, de acuerdo con la sintaxis siguiente:
out1 => <variable salida 1> | out2 => <variable salida 2> | ...otras variables de salida
La función fun se define con las dos variables de entrada in1 y in2 y las dos variables de salida out1 y out2. Los valores de salida de fun se escriben en las variables declaradas localmente loc1 y loc2.
fun(in1 := 1, in2 := 2, out1 => loc1, out2 => loc2);