Bloques de datos de
instancia
A cada llamada de un bloque de función que transfiere parámetros está
asignado un bloque de datos de instancia. En el DB de instancia están
depositados los parámetros actuales y los datos estáticos del FB. Las
variables declaradas en el FB definen la estructura del bloque de datos de
instancia. La instancia define la llamada de un bloque de función. Si, por
ejemplo, un bloque de función se llama cinco veces en el programa de usuario
S7, existen cinco instancias de dicho bloque.
Crear un DB de instancia
Antes de crear un bloque de datos de instancia debe existir el FB asociado.
El número de dicho FB se debe indicar al crear el bloque de datos de instancia.
Un DB de instancia para cada instancia
Si se asignan varios bloques de datos de instancia a un bloque de función (FB)
que controla un motor, se puede utilizar este FB para controlar varios motores.
Los diversos datos de cada uno de los motores (p.ej. número de revoluciones,
tiempo de aceleración, tiempo total de servicio) se memorizan en los diversos
bloques de datos. Dependiendo de qué DB se asigne al FB al efectuar la llamada,
se puede controlar un motor diferente. De esta manera se utiliza un solo bloque
de función para varios motores como se puede apreciar en la siguiente figura.

Un DB de instancia para varias instancias de un FB (multiinstancias)
A un FB se pueden transferir conjuntamente en un DB de instancia los datos de
instancia para diferentes motores. A tal efecto, la llamada de los controles de
motores se ha de efectuar en otro FB y en el área de declaración del FB
invocante se deben declarar las variables estáticas con el tipo de datos de un
FB para las diferentes instancias. Utilizando un DB de instancia para varias
instancias de un FB se ahorra capacidad de memoria y optimiza el uso de los
bloques de datos. En el caso ejemplificado por la figura siguiente, el bloque
invocante es el FB 21 "Proceso de motor", las variables son del tipo
de datos FB 22 y las instancias son designadas con motor_1, motor_2 y motor_3.

En este ejemplo, el FB 22 no necesita bloque de datos de instancia propio, ya
que sus datos de instancia están memorizados en el bloque de datos de instancia
del FB invocante.
Un DB de instancia para varias instancias de FB diferentes (multiinstancias)
En un bloque de función se pueden llamar a instancias de otros FBs ya
existentes. Los datos de instancia necesarios al respecto se pueden asignar al
bloque de datos de instancia del FB invocante, es decir que en este caso no se
necesitan bloques de datos adicionales para los FBs que se han llamado. Para
dichas multiinstancias de un DB de instancia deberá declarar, en la tabla del
FB invocante, variables estáticas del mismo tipo de datos del FB llamado,
haciéndolo para cada una de las instancias. La llamada en el FB se efectúa
entonces sólo con el nombre de la variable, es decir, sin indicar un DB de
instancia. En el ejemplo de la figura, los datos de instancia asignados se
memorizan conjuntamente en un DB de instancia.

|