6.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. Utilice las instrucciones DIS_AIRT (deshabilitar tratamiento de
eventos de alarma) y EN_AIRT (habilitar tratamiento de eventos de alarma) del OB de ciclo
de programa 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 ejecución del OB de ciclo de programa. Las peticiones de comunicación
también pueden causar problemas relacionados 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), PROFINET (p. ej. TSEND_C y TRCV_C),
instrucciones E/S descentralizadas para PROFINET y instrucciones E/S descentralizadas
para PROFIBUS (Página 325) transfieren búferes de datos que podrían interrumpirse. La
coherencia de datos de los búferes debe asegurarse evitando operaciones de lectura y
escritura en los búferes, tanto en el OB de ciclo como en un OB de alarma. Si es necesario
modificar los valores de los búferes para estas instrucciones en un OB de alarma, utilice una
instrucción DIS_AIRT para retardar las alarmas (un OB de alarma o una alarma de
comunicación de un HMI u otra CPU) hasta que se ejecute una instrucción EN_AIRT.
Nota
La utilización de la instrucción DIS_AIRT retarda el procesamiento de los OBs de alarma
hasta que se ejecuta la instrucción EN_AIRT, lo que afecta la latencia de alarmas (tiempo
que transcurre desde un evento hasta que se ejecuta el OB de alarma) del programa de
usuario.
Controlador programable S7-1200
Manual de sistema, 03/2014, A5E02486683-AG
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.
Principios básicos de programación
6.4 Principios básicos de la coherencia de datos
187