Principios básicos de programación
5.4 Principios básicos de la coherencia de datos
5.3.4
Bloque de datos (DB)
Los bloques de datos (DB) se crean en el programa de usuario para almacenar los datos de
los bloques lógicos. Todos los bloques del programa de usuario pueden acceder a los datos
en un DB global. En cambio, un DB instancia almacena los datos de un bloque de función
(FB) específico. Un DB se puede definir de manera que sea de sólo lectura.
Los datos almacenados en un DB no se borran cuando finaliza la ejecución del bloque
lógico asociado. Hay dos tipos de DBs, a saber:
● Un DB global almacena los datos de los bloques lógicos en el programa. Cualquier OB,
● Un DB instancia almacena los datos de un FB específico. La estructura de los datos en
Nota
Aunque el DB instancia refleja los datos de un FB específico, cualquier bloque lógico
puede acceder a los datos en un DB instancia.
5.4
Principios básicos de la coherencia de datos
La CPU conserva la coherencia de datos de todos los tipos de datos simples (p. ej. Word o
DWord) y de todas las estructuras definidas por el sistema (p. ej. IEC_TIMERS o DTL). La
lectura o escritura de valores no se puede interrumpir. (Por ejemplo, la CPU protege el
acceso a un valor de palabra doble (DWord) hasta que se hayan leído o escrito los cuatro
bytes de la palabra doble.) Para garantizar que los OBs de ciclo y de alarma no puedan
escribir simultáneamente en la misma posición de memoria, la CPU no ejecuta un OB de
alarma hasta que no haya finalizado la operación de lectura o escritura en el OB de ciclo.
Si el programa de usuario comparte varios valores entre un OB de ciclo y un OB de alarma
en la memoria, dicho programa debe garantizar asimismo que estos valores se modifiquen o
lean de forma coherente. Las instrucciones DIS_AIRT y EN_AIRT se utilizan en el OB de
ciclo para proteger cualquier acceso a los valores compartidos.
● Inserte una instrucción DIS_AIRT en el bloque lógico para garantizar que un OB de
● Inserte las instrucciones que leen o escriben los valores que podrían ser modificados por
● Inserte una instrucción EN_AIRT al final de la secuencia para cancelar la instrucción
Una petición de comunicación de un dispositivo HMI o de otra CPU puede interrumpir
asimismo la ejecucion del OB de ciclo. Las peticiones de comunicación también pueden
causar problemas en relación con la coherencia de datos. La CPU garantiza que las
instrucciones del programa de usuario lean y escriban coherentemente los tipos de datos
simples. Puesto que las comunicaciones interrumpen el programa de usuario de forma
periódica, no es posible garantizar que el dispositivo HMI actualice simultáneamente varios
valores en la CPU. Por ejemplo, los valores visualizados en la pantalla de un HMI podrían
provenir de diferentes ciclos de la CPU.
Las instrucciones PtP (punto a punto) y PROFINET (p. ej. TSEND_C y TRCV_C) transfieren
búferes de datos que podrían interrumpirse. La coherencia de datos de los búferes debe
90
FB o FC puede acceder a los datos en un DB global.
un DB instancia refleja los parámetros (Input, Output e InOut) y los datos estáticos del
FB. (La memoria temporal del FB no se almacena en el DB instancia.)
alarma no pueda ejecutarse durante la operación de lectura o escritura.
un OB de alarma.
DIS_AIRT y permitir la ejecución del OB de alarma.
Controlador programable S7-1200
Manual de sistema, 11/2009, A5E02486683-02