Bloques de función definidos por el usuario

Para las funciones creadas por el usuario en el proyecto o en la librería de usuario, en la compilación del programa se crea un subprograma. Cada vez que se llama, lo primero que se transfieren son los parámetros de entrada de las clases VAR_INPUT y VAR_IN_OUT. Después se salta dentro del subprograma correspondiente. Finalmente, se leen de nuevo los parámetros de salida VAR_OUTPUT y VAR_IN_OUT. El número de subprogramas o de bloques de función que se pueden definir depende del tipo de controlador.

Los bloques de función están equipados con una "memoria", es decir, cuando se llaman, se asigna a cada entidad del bloque de función, un área de datos y un subprograma. Todas las entidades de un bloque de función utilizan, por tanto, el mismo subprograma. Gracias a los registros índice, se accede al área de datos válido para la entidad correspondiente.

Esta implementación ayuda a ahorrar gran parte de espacio útil en la memoria de programa, especialmente cuando se usa con frecuencia el mismo bloque de función de usuario. Sin embargo, el acceso al área de datos vía registros índice puede alargar el ciclo de scan.

FB indexados

Con algunos controladores, se puede activar la opción Llamadas a bloques de funciones indexados en Extras > Opciones > Opciones de Compilación > Generación de Código.

NOTA

Con la indexación de FBs, algunas funciones básicas no funcionan correctamente cuando se llaman varias veces dentro de un mismo ciclo de scan. Se recibirá un mensaje de error con las siguientes instrucciones:

  • Contadores: F118_UDC, F166_HighSpeedCounter_Set, F167_HighSpeedCounter_Reset, F168_PulseOutput_Home

  • Instrucciones de Desplazamiento: F119_LRSR

Temas relacionados

Modificado el: 2021-08-20Comentarios sobre esta páginaLínea directa de Panasonic