Operaciones SIMATIC
Llamar a subrutinas desde rutinas de interrupción
Desde una rutina de interrupción se puede llamar a un nivel de anidamiento de subrutinas.
Los acumuladores y la pila lógica son compartidos por la rutina de interrupción y por la sub-
rutina invocada.
Datos compartidos por el programa principal y las rutinas de interrupción
El programa principal y una o varias rutinas de interrupción pueden compartir datos. Por
ejemplo, una parte del programa principal puede suministrar datos a una rutina de interrup-
ción o viceversa. En el caso de que el programa esté compartiendo datos, habrá que consi-
derar también el hecho de que las rutinas de interrupción se ejecutan de forma asíncrona al
programa principal. Por lo tanto, se pueden presentar en cualquier momento durante la eje-
cución de éste último. Los problemas de coherencia de los datos compartidos pueden ser
ocasionados por las acciones de las rutinas de interrupción, al interrumpir éstas la ejecución
de las operaciones del programa principal.
Hay diversas técnicas de programación que se pueden utilizar para garantizar que el pro-
grama principal y las rutinas de interrupción compartan los datos correctamente. Dichas téc-
nicas restringen la forma de acceder a las direcciones compartidas en la memoria o evitan
que se interrumpan las secuencias de operaciones que utilicen direcciones compartidas.
En un programa AWL que comparta sólo una variable: Si los datos compartidos son una
sola variable en formato de byte, palabra o palabra doble, y el programa se ha escrito en
AWL, los resultados intermedios de operaciones con datos compartidos sólo se podrán
almacenar en direcciones o en acumuladores que no se compartan.
En un programa KOP que comparta sólo una variable: Si los datos compartidos son una
sola variable en formato de byte, palabra o palabra doble, y el programa se ha escrito en
KOP, es preciso acceder a las direcciones compartidas utilizando las operaciones de
transferencia (MOVB, MOVW, MOVDW, MOVR). En tanto que numerosas operaciones
KOP comprenden secuencias de instrucciones AWL que se pueden interrumpir, estas
operaciones de transferencia equivalen a una sola operación AWL, cuya ejecución no se
ve afectada por los eventos de interrupción.
En un programa AWL o KOP que comparta varias variables: Si los datos compartidos
son varios bytes, palabras o palabras dobles contiguas, la ejecución de la rutina de inter-
rupción se puede controlar con las operaciones Habilitar todos los eventos de interrup-
ción (ENI) e Inhibir todos los eventos de interrupción (DISI). Las interrupciones se deben
inhibir en aquel punto del programa principal donde figuran las operaciones que acceden
a las direcciones compartidas. Una vez ejecutadas todas las operaciones que utilicen las
direcciones compartidas, se deberán habilitar de nuevo las interrupciones. Mientras esté
inhibida la interrupción no se podrá ejecutar la rutina correspondiente. Por lo tanto, no
será posible acceder entonces a las direcciones compartidas. Sin embargo, esta técnica
de programación puede causar que se ignoren los eventos de interrupción.
9-168
Sistema de automatización S7-200, Manual del sistema
C79000-G7078-C233-01