Bloques de función (FB)



Los bloques de función son bloques programables "con memoria". Dispone de un bloque de datos asignado como memoria (bloque de datos de instancia). Los parámetros que se transfieren al FB, así como las variables estáticas, se memorizan en dicho DB de instancia, mientras que las variables temporales se memorizan en la pila de datos locales. Los datos memorizados en el DB de instancia no se pierden al concluir el tratamiento del FB. Los datos memorizados en la pila de datos locales se pierden al concluir el tratamiento del FB.

Campo de aplicación

Un FB contiene un programa que se ejecuta siempre cuando el FB es llamado por otro bloque lógico. Los bloques de función simplifican la programación de funciones complejas de uso frecuente.

FBs y DBs de instancia

A cada llamada de un bloque de función que transfiere parámetros está asignado un bloque de datos de instancia. Mediante la llamada de varias instancias de un FB es posible controlar varios equipos con un FB. Un FB para un tipo de motor puede controlar, por ejemplo, diferentes motores, utilizando datos de instancia diferentes para los diferentes motores. Los datos para cada motor (tales como número de revoluciones, rampas, tiempo de funcionamiento acumulado, etc.) se pueden memorizar en uno o varios DBs de instancia. La figura siguiente muestra los parámetros formales de un FB que utiliza los parámetros actuales. Los parámetros formales están memorizados en el DB de instancia.

Variable del tipo de datos FB

Si el programa de usuario está estructurado de tal manera que en un FB se puedan llamar bloques de función ya existentes, los FBs a llamar se pueden incluir como variables estáticas del tipo de datos FB en la tabla de declaración de variables del FB invocante. Esto permite anidar las variables y concentrar los datos en un bloque de datos de instancia (multiinstancia).

Asignación de parámetros actuales a parámetros formales

En general, en STEP 7 no es necesario asignar parámetros actuales al parámetro formal de un FB. No obstante, hay ciertas excepciones. Los parámetros actuales se han de asignar:

· A los parámetros de entrada/salida de un tipo de datos compuestos (p.ej. STRING, ARRAY o DATE_AND_TIME)

· A todos los tipos de parámetros (p.ej. TIMER, COUNTER o POINTER) STEP 7 asigna los parámetros actuales a los parámetros formales de un FB de la siguiente manera; si se indican parámetros actuales en la instrucción de llamada: Las operaciones del FB utilizan los parámetros actuales suministrados, y si en la instrucción de llamada no se indica ningún parámetro actual: Las operaciones del FB utilizan los valores memorizados en el DB de instancia.

Asignación de valores iniciales a parámetros formales

En el área de declaración del FB se pueden asignar valores iniciales a los parámetros formales. Estos datos se incluyen en el DB de instancia asignado al FB. Si en la instrucción de llamada no se asignan parámetros actuales a los parámetros formales, entonces STEP 7 utiliza los valores memorizados en el DB de instancia. Estos datos pueden ser valores iniciales, que han sido indicados en la tabla de declaración de variables de un FB. La tabla siguiente muestra qué variables se pueden asignar a un valor inicial. Como los datos temporales no se memorizan tras el tratamiento del bloque, entonces no se les puede asignar valores.

Variables Tipo de datos simples Tipo de datos compuestos
Entrada Valor inicial admisible Valor inicial admisible
Salida Valor inicial admisible Valor inicial admisible
Entrada/Salida Valor inicial admisible -
Estáticas Valor inicial admisible Valor inicial admisible
Temporales - -