Un bloque de funciones es una POU que proporciona 1 o más valores durante el proceso de un programa de controlador. A diferencia de una función, los valores de las variables de salida y las variables internas necesarias pueden persistir de una ejecución del bloque de funciones a la siguiente. Por lo tanto, la invocación de un bloque de funciones con los mismos argumentos (parámetros de entrada) no siempre tiene por qué producir los mismos valores de salida.
Además de la funcionalidad descrita por el estándar IEC11631-3, se admite la programación orientada a objetos, y pueden definirse bloques de funciones como extensiones de otros bloques de funciones. Pueden incluir definiciones de interfaz relativas a la Invocación de métodos. Por consiguiente, puede utilizarse la herencia al programar con bloques de funciones.
Para llamar a un bloque de funciones siempre se utiliza una instancia, que es una reproducción (copia) del bloque de funciones.
Adición de un bloque de funciones
Para añadir un bloque de funciones a una aplicación existente, seleccione el nodo correspondiente en Catálogo de software > Activos o en el árbol Aplicaciones, haga clic en el signo más de color verde y seleccione POU... Como alternativa, puede hacer clic con el botón derecho en el nodo y ejecutar el comando Agregar objeto > POU. Para crear un bloque de funciones independiente de una aplicación, seleccione el nodo Global del árbol Aplicaciones o de Activos.
En el cuadro de diálogo Agregar objeto, seleccione la opción Bloque de funciones, especifique un Nombre (<identificador>) de bloque de funciones y seleccione el Lenguaje de implementación que desee.
Además, puede especificar las siguientes opciones:
Opción |
Descripción |
---|---|
Extendido |
Indique el nombre de otro bloque de funciones disponible en el proyecto que debe ser la base para el actual. Para obtener información detallada, consulte Ampliación de un bloque de funciones. |
Implementado |
Escriba los nombres de las interfaces disponibles en el proyecto que deben implementarse en el bloque de funciones actual. Puede especificar diversas interfaces separadas por comas. Para obtener información detallada, consulte Implementación de interfaces. |
Modificador de acceso |
Por motivos de compatibilidad, los modificadores de acceso son opcionales. El modificador PUBLIC está disponible como equivalente a no establecer ningún modificador. Como alternativa, seleccione una de las opciones de la lista de selección: oINTERNO: el acceso en el bloque de funciones está restringido al espacio de nombres (biblioteca) actual. oFINAL: no se puede derivar el acceso, es decir, el bloque de funciones no puede ampliarse con otro bloque. Permite la generación de código optimizado. NOTA: Los modificadores de acceso son válidos a partir de la versión del compilador 3.4.4.0 y, por lo tanto, se pueden utilizar como modificadores en versiones anteriores. Para obtener más información, consulte la tabla de asignación de versiones del compilador EcoStruxure Machine Expert/CoDeSys en EcoStruxure Machine ExpertCompatibilidad y migración - Guía del usuario. |
Lenguaje de implementación de método |
Seleccione el lenguaje de programación que desee para todos los objetos de método y propiedad creados mediante la implementación de la interfaz, independientemente del establecido para el propio bloque de funciones. |
Haga clic en Agregar para confirmar la configuración. Se abre la vista de editor para el nuevo bloque de funciones y puede empezar la edición.
Declaración de un bloque de funciones
Sintaxis
FUNCTION_BLOCK <modificador de acceso> <nombre del bloque de funciones> | EXTENDS <nombre del bloque de funciones> | IMPLEMENTS <lista de nombres de interfaz separados por comas>
A esto le sigue la declaración de las variables. También es posible agrupar las entradas y salidas para acelerar la desaparición y aparición cuando se utiliza el bloque de funciones en un editor FBD o LD. Consulte también el capítulo Grupo de pins de atributos.
El ejemplo FBexample de la siguiente figura tiene 2 variables de entrada y 2 variables de salida out1 y out2.
out1 es la suma de las 2 entradas, y out2 es el resultado de una comparación de igualdad.
Ejemplo de un bloque de funciones en ST