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.