Sunteți pe pagina 1din 17

Instrumentacin y Control Industrial Curso 04-05 Universidad de Huelva

Ampliacin de PLCs: Introduccin a las Rutinas de Interrupcin

Jos Manuel Rabadn Gmez I.T. Informtica de Sistemas Grupo: I1

NDICE

1. Introduccin .......................................................................Pg. 3 2. Nociones Bsicas ..............................................................Pg. 3 3. Enunciado del Problema Propuesto ..................................Pg. 11 4. Solucin .............................................................................Pg. 12 5. Bibliografa .........................................................................Pg. 16 6. Cuestionario .......................................................................Pg. 17

1.- INTRODUCCIN:
Rutinas de interrupcin n n n Las rutinas de interrupcin se pueden programar para gestionar eventos de interrupcin predefinidos. No son invocadas por el programa principal, sino que el sistema operativo de la CPU las llama cuando ocurre el correspondiente evento de interrupcin. Puesto que no es posible saber con anterioridad cundo el sistema llamar a una rutina de interrupcin, no es deseable que sta escriba en la memoria que se pueda estar utilizando en otra parte del programa. Con la tabla de variables locales se puede asegurar que las rutinas de interrupcin utilicen nicamente la memoria temporal, de manera que no sobrescriban los datos de otra parte del programa.

2.- NOCIONES BSICAS:


Elementos bsicos para estructurar un programa La CPU S7-200 ejecuta continuamente el programa para controlar una tarea o un proceso. El programa se crea con STEP 7-Micro/WIN y se carga en la CPU. Desde el programa principal se pueden llamar diversas subrutinas o rutinas de interrupcin. Estructurar el programa Los programas para la CPU S7-200 comprenden tres partes bsicas: el programa principal, las subrutinas (opcional) y las rutinas de interrupcin (opcional). Como muestra la figura 6-6, un programa S7-200 se estructura mediante los siguientes elementos: Programa principal: En esta parte del programa se disponen las operaciones que controlan la aplicacin. Las operaciones del programa principal se ejecutan de forma secuencial en cada ciclo de la CPU. Para terminar el programa principal, utilice en KOP una bobina absoluta Finalizar programa principal, o en AWL una operacin Finalizar programa principal (MEND). Vase (1) en la figura 6-6. Subrutinas: Estos elementos opcionales del programa se ejecutan slo cuando se llaman desde el programa principal. Se deben aadir siempre al final del programa principal (detrs de la bobina absoluta Finalizar programa principal en KOP o detrs de la operacin MEND en AWL). Utilice siempre una

operacin Retorno absoluto (RET) para terminar cada subrutina. Vase (2) en la figura 6-6. Rutinas de interrupcin: Estos elementos opcionales del programa se ejecutan cada vez que se presente el correspondiente evento de interrupcin. Se deben aadir siempre al final del programa principal (detrs de la bobina absoluta Finalizar programa principal en KOP o detrs de la operacin MEND en AWL). Utilice siempre una operacin Retorno absoluto desde rutina de interrupcin (RETI) para terminar cada rutina de interrupcin. Vase (3) en la figura 6-6.

Las subrutinas y las rutinas de interrupcin se deben aadir detrs de la bobina absoluta Finalizar programa principal en KOP o detrs de la operacin MEND en AWL. No hay reglas adicionales en lo relativo a su disposicin en el programa de usuario. Las subrutinas y las rutinas de interrupcin se pueden mezclar a voluntad despus del programa principal. No obstante, para que la estructura del programa sea fcil de leer y comprender, es recomendable agrupar al final del programa principal primero todas las subrutinas y, despus, todas las rutinas de interrupcin.

Figura 6-6 Estructura del programa de una CPU S7-200

Programa de ejemplo con subrutinas y rutinas de interrupcin El programa de ejemplo representado en la figura 6-7 muestra una interrupcin temporizada que se puede utilizar p.ej. para leer el valor de una entrada analgica. En este ejemplo, el intervalo de muestreo de la entrada analgica es de 100 ms.

Figura 6-7 Programa de ejemplo con una subrutina y una rutina de interrupcin Nociones bsicas para programar una CPU S7-200

Operaciones de interrupcin y comunicacin


Comenzar rutina de interrupcin, Retorno desde rutina de interrupcin La operacin Comenzar rutina de interrupcin marca el comienzo de la rutina de interrupcin (n). La operacin Retorno condicional desde rutina de interrupcin finaliza una rutina en funcin de la combinacin lgica precedente. La operacin Retorno absoluto desde rutina de interrupcin se debe utilizar para finalizar todas las rutinas de interrupcin. Operandos: n: 0 a 127

Rutinas de interrupcin Toda rutina de interrupcin se puede identificar con una marca de interrupcin que indica el comienzo de la rutina. sta comprende las operaciones que se colocan entre dicha marca y la operacin Retorno absoluto desde rutina de interrupcin. La rutina de interrupcin se ejecuta como respuesta a un evento interno o externo asociado. Para salir de la rutina (y devolver as el control al programa principal) se puede ejecutar la operacin Retorno absoluto desde rutina de interrupcin (RETI), o bien la operacin Retorno condicional desde rutina de interrupcin. Toda rutina de interrupcin se debe finalizar con la operacin Retorno absoluto. Reglas para utilizar interrupciones El procesamiento de interrupciones permite reaccionar rpidamente ante determinados eventos internos o externos. Las rutinas de interrupcin se deben estructurar de forma que - una vez ejecutadas determinadas tareas - devuelvan el control al programa principal. A tal efecto es conveniente crear rutinas de interrupcin cortas con indicaciones precisas, de manera que se puedan ejecutar rpidamente sin interrumpir otros procesos durante perodos demasiado largos. Si no se observan estas medidas, es posible que se produzcan estados imprevistos que pueden afectar a la instalacin controlada por el programa principal. Al utilizar interrupciones, conviene atenerse al lema de cuanto ms breve, mejor.

Uso restringido Al utilizar rutinas de interrupcin, deber tener en cuenta los siguientes puntos: Posicione todas las rutinas de interrupcin despus del final del programa principal KOP. No utilice las operaciones DISI, ENI, CALL, HDEF, FOR/NEXT, LSCR, SCRE, SCRT y END en las rutinas de interrupcin. Finalice todas las rutinas de interrupcin con la operacin Retorno absoluto desde rutina de interrupcin (RETI).

Asistencia del sistema al producirse interrupciones Las interrupciones pueden afectar a los contactos, bobinas y acumuladores. Por lo tanto, el sistema almacena la pila lgica, los acumuladores y las marcas especiales (SM) que indican el estado de los acumuladores y las operaciones, volvindolos a cargar posteriormente. Ello evita que se perturbe el programa principal debido a derivaciones a o desde rutinas de interrupcin. Datos compartidos por el programa principal y las rutinas de interrupcin El programa principal y una o varias rutinas de interrupcin pueden compartir datos. Por ejemplo, una parte del programa principal puede proporcionar datos a ser utilizados en una rutina de interrupcin o viceversa. En el caso de que el programa est compartiendo datos, habr que considerar tambin el hecho de que las rutinas de interrupcin se ejecutan de forma asncrona al programa principal. Por lo tanto, se pueden presentar en cualquier momento durante la ejecucin de ste ltimo. Los problemas de coherencia de los datos compartidos pueden surgir de las acciones debidas a las rutinas de interrupcin, al interrumpir stas la ejecucin de las operaciones del programa principal. Hay diversas tcnicas de programacin que se pueden utilizar para garantizar que el programa principal y las rutinas de interrupcin compartan los datos correctamente. Dichas tcnicas 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 slo 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 slo se podrn almacenar en direcciones o en acumuladores que no se compartan. En un programa KOP que comparta slo 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 (MOV_B, MOV_W, MOV_DW, MOV_R). En tanto que numerosas operaciones KOP comprenden secuencias de instrucciones AWL que se

pueden interrumpir, estas operaciones de transferencia equivalen a una sola operacin AWL, cuya ejecucin no se ve afectada por los eventos de interrupcin. En un programa AWL o KOP que comparta mltiples variables: Si los datos compartidos son varios bytes, palabras o palabras dobles contiguas, la ejecucin de la rutina de interrupcin se puede controlar con las operaciones Habilitar todos los eventos de interrupcin (ENI) e Inhibir todos los eventos de interrupcin (DISI). Las interrupciones se deben inhibir en el lugar del programa principal donde se disponen las operaciones que acceden a las direcciones compartidas. Una vez ejecutadas todas las operaciones que utilicen dichas direcciones compartidas, se debern habilitar de nuevo las interrupciones. Mientras est inhibida la interrupcin, la correspondiente rutina no se podr ejecutar. Por lo tanto, no ser posible acceder entonces a las direcciones compartidas. Sin embargo, esta tcnica de programacin puede causar que se ignoren los eventos de interrupcin.

Habilitar todos los eventos de interrupcin, Inhibir todos los eventos de interrupcin La operacin Habilitar todos los eventos de interrupcin (ENI) habilita la ejecucin de todos los eventos. La operacin Inhibir todos los eventos de interrupcin (DISI) inhibe la ejecucin de todos los eventos. Operandos: ninguno

Cambiando a modo RUN se inhiben las interrupciones. En cuanto la CPU pasa a modo RUN, se pueden habilitar todos los eventos de interrupcin con la operacin global ENI. La operacin DISI permite poner las interrupciones en cola de espera, pero no llamar a ninguna rutina de interrupcin.

Asociar interrupcin, Desasociar interrupcin La operacin Asociar interrupcin (ATCH) asocia el nmero de una rutina de interrupcin (INT) a un evento de interrupcin (EVENT), habilitando as ste ltimo. La operacin Desasociar interrupcin (DTCH) desasocia un evento de interrupcin (EVENT) de todas las rutinas de interrupcin, deshabilitando as el evento. Operandos: INT : 0 a 127 EVENT: 0 a 26

Descripcin de las operaciones Asociar interrupcin y Desasociar interrupcin Antes de poder llamar a una rutina de interrupcin es preciso establecer un enlace entre el evento de interrupcin y la parte del programa que se desee ejecutar cuando se presente el evento. La operacin Asociar interrupcin (ATCH) sirve para asignar el evento de interrupcin (indicado por el nmero de evento) a una parte del programa (indicada por el nmero de la rutina de interrupcin). Tambin es posible asociar varios eventos de interrupcin a una nica rutina de interrupcin. Por el contrario, no se puede asociar un slo evento a distintas rutinas. Cuando se produce un evento estando habilitadas las interrupciones, se ejecuta nicamente la ltima rutina de interrupcin asociada a dicho evento. Cuando se asocia un evento a una rutina de interrupcin, se habilita automticamente el evento. Si se inhiben todos los eventos de interrupcin, entonces cada vez que se presente la interrupcin, se pondr en cola de espera hasta que las interrupciones se habiliten de nuevo, utilizando a tal efecto la operacin Habilitar todos los eventos de interrupcin. Tambin es posible inhibir ciertos eventos de interrupcin, eliminando la asociacin entre el evento y la correspondiente rutina mediante la operacin DTCH (Desasociar interrupcin). Esta operacin retorna la interrupcin a un estado inactivo o ignorado. La tabla 10-13 muestra los diferentes tipos de eventos de interrupcin.

Tabla 10-13 Descripcin de los eventos de interrupcin N de evento 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

Descripcin de la interrupcin

212

214

215

216

Flanco positivo, I0.0* Flanco negativo, I0.0* Flanco positivo, I0.1 Flanco negativo, I0.1 Flanco positivo, I0.2 Flanco negativo, I0.2 Flanco positivo, I0.3 Flanco negativo, I0.3 Interface 0: Recibir carcter Interface 0: Transmisin finalizada Interrupcin temporizada 0, SMB34 Interrupcin temporizada 1, SMB35 HSC0 CV=PV (valor actual = valor predeterminado)* HSC1 CV=PV (valor actual = valor predeterminado) HSC1, cambio de sentido HSC1, puesto a 0 externamente HSC2 CV=PV (valor actual = valor predeterminado) HSC2, cambio de sentido HSC2, puesto a 0 externamente Interrupcin Valor de contaje de impulsos PLS0 Interrupcin Valor de contaje de impulsos PLS1 Interrupcin Temporizador T32 CT = PT Interrupcin Temporizador T96 CT = PT Interface 0: Recepcin de mensajes finalizada Interface 1: Recepcin de mensajes finalizada Interface 1: Recibir carcter Interface 1: Transmisin finalizada

S S

S S S S S S S S

S S S S S S S S S S S S S S S S S S S S S S S S

S S S S S S S S S S S S S S S S S S S S S S S S S S S

S S S

S S S S

S S S S S S S S S

* Si el evento 12 (HSC0, CV = PV) est asociado a una interrupcin, los eventos 0 y 1 no se podrn asociar a interrupciones. Del mismo modo, si los eventos 0 1 estn asociados a una interrupcin, el evento 12 no se podr asociar a una interrupcin.

3.- ENUNCIADO DEL PROBLEMA PROPUESTO:


Instrumentacin y Control Industrial Curso 2004/2005 En una fbrica de productos lcteos se desea controlar la elaboracin de yogur lquido. Para ello se dispone de un tanque de fermentacin en el que se vierten los distintos reactivos: leche, edulcorantes, colorantes y fermentos. Por otro lado se dispone de un sensor de PH y otro de nivel. El proceso precisa una atencin continua por el delicado margen de estabilidad de la mezcla, de modo que cuando el PH es inferior a 5,5 se aade leche, edulcorantes y colorantes, y cuando es superior a 5,7 los fermentos. En cuanto se llene el depsito se abre la vlvula de salida expulsando por completo su contenido hacia la siguiente fase (pasteurizado) y comenzando desde el principio. Por otro lado la temperatura del tanque ha de mantenerse entre los 5 y los 11 C. Para ello se dispone de un serpentn con refrigerante que se activa al detectar los 10C y se corta a los 6C. Se desea un programa en KOP para el autmata gestor del proceso, estructurado en dos partes: la principal que controla el PH, la inicializacin y el vaciado del tanque, y en rutinas de interrupcin, la actuacin del refrigerante.

A0.0
Leche Edulcorantes Colorantes Depsito

A0.1
Fermentos

A0.4 A0.3
Refrigerante

Entradas: PH alto: E0.0 PH bajo: E0.1 Nivel alcanzado: E0.2 Temperatura excesiva: E0.3 Temperatura mnima: E0.5

4.- SOLUCIN:

- 12 -

- 13 -

- 14 -

- 15 -

5.- BIBLIOGRAFA: Ayuda del STEP 7-Micro/Win. Manuales en PDF:


S7-200 Sistema de Automatizacin_manual.pdf ApuntesS7.pdf Simatic S7200.pdf Problemas_Programacion_PLCs.pdf

Presentaciones PowerPoint:
Programacin: Simatic S7-200 (Universidad de La Laguna) Estandarizacin con autmatas programables Sistema automatizado (PLCs) (Universidad de Oviedo)

Enlaces Varios:
http://olmo.pntic.mec.es/~jmarti50/microwin3/ http://www.grupo-maser.com/PAG_Cursos/Step/ step7/Proyecto%20step7/paginas/contenido/step7/7/2.9.1.2.htm http://electronred.iespana.es/electronred/Glosario.htm http://www.cyc.dfis.ull.es/asignaturas/aindustrial/ http://isa.uniovi.es/~vsuarez/ii/ http://personal3.iddeo.es/joseor/plcs.htm

- 16 -

6.- CUESTIONARIO: 1.- Cul de las siguientes afirmaciones no es correcta?


Las rutinas de interrupcin se pueden programar para gestionar eventos de interrupcin predefinidos. Puesto que son invocadas por el programa principal, el sistema operativo de la CPU no necesita llamarlas cuando ocurre el correspondiente evento de interrupcin. Puesto que no es posible saber con anterioridad cundo el sistema llamar a una rutina de interrupcin, no es deseable que sta escriba en la memoria que se pueda estar utilizando en otra parte del programa. Con la tabla de variables locales se puede asegurar que las rutinas de interrupcin utilicen nicamente la memoria temporal, de manera que no sobrescriban los datos de otra parte del programa.

2.- Cules eran las tres partes bsicas de la estructura de un programa?

3.- Indica brevemente cules eran las operaciones para:


Habilitar las Interrupciones: Inhibir todos los eventos de interrupcin: Asociar una interrupcin: Desasociar una interrupcin: Retorno absoluto: Rutina de Interrupcin:

4.- Cul de las siguientes afirmaciones s es correcta?


Las subrutinas y las rutinas de interrupcin se deben aadir encima de la bobina absoluta Finalizar programa principal. Al utilizar interrupciones, conviene atenerse al lema de cuanto ms breve, mejor. Cuando se produce un evento estando deshabilitadas las interrupciones, se ejecuta nicamente la ltima rutina de interrupcin asociada a dicho evento. Mientras est inhibida la interrupcin, la correspondiente rutina no se podr ejecutar. Sin embargo, s ser posible acceder a las direcciones compartidas.

- 17 -

S-ar putea să vă placă și