Siemens S7 Serie Manual De Sistema página 212

Controlador programable
Ocultar thumbs Ver también para S7 Serie:
Tabla de contenido

Publicidad

Principios básicos de programación
7.3 Utilizar bloques para estructurar el programa
Cuando el programa de usuario transfiere un parámetro complejo (por ejemplo STRUCT) a
una función, el sistema comprueba el ajuste de optimización del bloque de datos que
contiene la estructura y el ajuste de optimización del bloque de programa. Si se optimizan
tanto el bloque de datos como la función, el programa de usuario transfiere STRUCT
mediante "llamada por referencia". Lo mismo es válido si ni el bloque de datos ni la función
están optimizados.
Sin embargo, si la optimización es diferente para la función y el bloque de datos (es decir, si
se optimiza un bloque y el otro no), STRUCT debe convertirse al formato que espera la
función. Así, por ejemplo, si se selecciona la opción "no optimizado" para el bloque de datos
y "optimizado" para la función, un STRUCT en el bloque de datos debe convertirse a un
formato optimizado antes de que la función pueda procesarlo. El sistema realiza esta
conversión realizando una copia de STRUCT y convirtiéndola al formato optimizado que
espera la función.
Resumiendo, cuando el programa de usuario transfiere un tipo de datos complejo (por
ejemplo STRUCT) a una función como parámetro IN/OUT, la función espera que lo
transfiera mediante "llamada por referencia":
● Si se selecciona "optimizado" o "no optimizado" tanto para el bloque de datos que
contiene STRUCT como para la función, el programa de usuario transfiere los datos
mediante "llamada por referencia".
● Si el bloque de datos y la función no se configuran con el mismo ajuste de optimización
(uno está optimizado y el otro no), el sistema debe realizar una copia de STRUCT antes
de transferirlo a la función. Como el sistema tiene que hacer esta copia de la estructura,
esto convierte la "llamada por referencia" en "llamada por valor" en realidad.
Efecto de los ajustes de optimización en programas de usuario
La copia del parámetro puede causar un problema en un programa de usuario si un HMI o
un OB de alarma modifica elementos de la estructura. Así, por ejemplo, hay un parámetro
IN/OUT de una función (por lo general transferido mediante "llamada por referencia"), pero
los ajustes de optimización del bloque de datos y de la función difieren:
1. Cuando el programa de usuario está listo para llamar la función, el sistema debe realizar
una copia de la estructura para cambiar el formato de los datos de forma que coincidan
con la función.
2. El programa de usuario llama la función con una referencia a la copia de la estructura.
3. Se produce un OB de alarma mientras se ejecuta la función y este OB de alarma cambia
un valor en la estructura original.
4. La función finaliza y, puesto que la estructura es un parámetro IN/OUT, el sistema copia
de nuevo los valores en la estructura original con el formato original.
La consecuencia de realizar la copia de la estructura para cambiar el formato es que se
pierden los datos escritos por el OB de alarma. Lo mismo puede suceder cuando se escribe
un valor con un HMI. El HMI puede interrumpir el programa de usuario y escribir un valor de
la misma forma que un OB de alarma.
212
Controlador programable S7-1200
Manual de sistema, V4.2, 09/2016, A5E02486683-AK

Publicidad

Tabla de contenido
loading

Este manual también es adecuado para:

S7-1200

Tabla de contenido