Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ESTE INFORME CONTIENE: 1. INTRODUCCIN. 2. INTERRUPCIONES EN EL C200HS. 3. INTERRUPCIONES EN EL CQM1. 4. INTERRUPCIONES EN EL CV.
INTERRUP.DOC
Pag. 1
1. INTRODUCCION
CONTROL DE INTERRUPCIONES
1. INTRODUCCION
Las interrupciones son rupturas del flujo del programa principal para la ejecucin de una subrutina de interrupcin. En cuanto se produce una interrupcin, el programa principal detiene su ejecucin para atender a la subrutina de interrupcin, y una vez atendida continua con el programa principal desde el mismo punto en el que fue interrumpido. Es importante entonces conocer el tiempo que tarda en derivarse el control hacia la subrutina de interrupcion. Este tiempo depende del equipo y su configuracion ante las interrupciones y su valor mximo est entre 1 y 1.4 ms. El tiempo de ejecucin de la subrutina de interrupcion depende de las instrucciones que la componen. Las interrupciones que contemplan nuestros equipos son causadas tanto por una fuente externa: una entrada de seal desde una unidad de entradas de interrupcin (INPUT INTERRUPTION o I/O INTERRUPTION), interrupcin power ON, interrupcin power OFF, interrupcin de contador de alta velocidad; como por una interrupcin programada (SCHEDULED INTERRUPTION), que significa que la seal de interrupcin se repite a intervalos de tiempo.
1. INTRODUCCION
CONTROL DE INTERRUPCIONES Existe un sistema de prioridad establecida de interrupciones, de manera que, una interrupcin puede ser interrumpida por otra interrupcin ,si esta ltima tiene mayor prioridad. Si dos interrupciones llegan al mismo tiempo, se ejecutar antes la de mayor prioridad y despus la otra. ENMASCARAMIENTO Cuando se recoge una interrupcin, se almacena, se comprueba la prioridad y si procede, se ejecuta la subrutina de interrupcin. Enmscarar una interrupcin sirve para recoger las interrupciones y almacenarlas, pero se ignoran y no se ejecutan hasta que sean desenmscaradas. Para evitar que una interrupcin producida mientras estaba enmscarada, se ejecute al desenmscararla (puesto que fue almacenada e ignorada), se debe limpiar la entrada de interrupciones antes de desenmascarla. (Borrado)
INTERRUP.DOC
Pag. 3
2. INTERRUPCIONES EN EL C200HS.
CONTROL DE INTERRUPCIONES
2. INTERRUPCIONES EN EL C200HS.
Las interrupciones que posee el autmata C200HS son:
Ambos tipos de interrupciones pueden ser utilizadas en modo normal o en modo de alta velocidad En el modo normal de interrupcin, el siguiente proceso se completar una vez ocurrida la interrupcin: Servicio de Host Link Servicio de E/S remotas Servicio de Unidades de E/S especiales Ejecucin de la instruccin individual En el modo de interrupcin de alta velocidad, el proceso anterior ser interrumpido y se ejecutar la subrutina de interrupcin en cuanto sta ocurra. En este caso podra haber problemas de concurrencia de datos, sobre todo si hemos interrumpido durante la ejecucin de largas instrucciones de manejo de mltiples datos, como instrucciones de transferencia de bloque. Tambin ocurrira conflicto en el caso de estar escribiendo un dato en el programa principal cuando es interrumpido y el mismo dato es ledo por la subrutina de interrupcin o viceversa lectura-escritura.
INTERRUP.DOC
Pag. 4
2. INTERRUPCIONES EN EL C200HS.
CONTROL DE INTERRUPCIONES
DM 6620
12-15 0 1
Prioridad de interrupciones
Las prioridades quedan establecidas como sigue:
Entrada interrupcin 1 > 2 > 3 > 4 > 5 > 6 > 7 > Interrupcin programada
INT(-) CONTROL DE INTERRUPCIN Esta instruccin es usada para controlar y ejecutar una de las ocho funciones de interrupcin. 3 de las funciones actan sobre entradas de interrupciones, 3 sobre la interrupcin programa y 2 funciones para enmscarar o desenmascarar todas las interrupciones. El formato de la orden es: INT(-) C N D Cdigo de Control Tipo de interrupcin Dato de control 000,001,002,100 200 000 004 IR, AR, DM, HR, TC, LR, #
Interrupci n
Cdigo Funcin de interrupcin Contro l Entrada 000 Enmscarar/Desenmscarar entrada de interrupciones (N=000) 001 Limpiar entrada interrupciones 002 Leer el estado actual de mscara Programada 000 Establecer intervalo interrupcin 001 Establecer tiempo para (N=004) primera interrupcin 002 Leer el intervalo de interrupcin 100 Enmscarar todas interrupciones 200 Desenmscarar todas interrupciones
Comentario
Los bits 00 a 07 del dato de control corresponden con de las interrupciones 00 a 07. la Lo escribe en el Dato de control de Dado en el dato de control la Dado en el dato de control la Lo escribe en el Dato de control las las
Para evitar que una interrupcin que esta enmscarada se ejecute al desenmscararla, se debe limpiar la entrada de interrupciones antes de desenmascararla.
2. INTERRUPCIONES EN EL C200HS.
CONTROL DE INTERRUPCIONES
interrupcin como en el ciclo normal y no se refrescar en el programa de interrupcin. DM6620: 00 Deshabilita refresco ciclo normal para unidad especial E/S n 0 01 Deshabilita refresco ciclo normal para unidad especial E/S n 1 02 Deshabilita refresco ciclo normal para unidad especial E/S n 2 03 Deshabilita refresco ciclo normal para unidad especial E/S n 3 04 Deshabilita refresco ciclo normal para unidad especial E/S n 4 05 Deshabilita refresco ciclo normal para unidad especial E/S n 5 06 Deshabilita refresco ciclo normal para unidad especial E/S n 6 07 Deshabilita refresco ciclo normal para unidad especial E/S n 7 08 Deshabilita refresco ciclo normal para unidad especial E/S n 8 09 Deshabilita refresco ciclo normal para unidad especial E/S n 9 Deshabilitar el refresco de la unidad especial de E/S en el ciclo normal para realizar el refresco en la subrutina de interrupcin es necesario slo en modo de alta velocidad.
ATENCIN: Al refrescar unidades especiales de E/S en la subrutina de interrupcin, debemos tener en cuenta el tiempo de refresco de estas unidades, ya que si el tiempo de refresco es mayor que el tiempo entre interrupcin se producir un error (system FAL fatal error 9F) Por ejemplo la unidad especial C200H-AD001 tiene un tiempo de refresco de 1.3 ms por lo que no podremos refrescarla en una subrutina de interrupcin que se ejecute cada 1 ms, sino que deber hacerse por lo menos cada 2 ms. Si a esta unidad le aadimos otra el tiempo de refresco total ser la suma de los tiempos de refresco de ambas y el intervalo de tiempo entre subrutinas de interrupcin deber ser mayor.
INTERRUP.DOC
Pag. 6
2. INTERRUPCIONES EN EL C200HS.
CONTROL DE INTERRUPCIONES
2.3. EJEMPLOS:
Para demostrar el funcionamiento y programacin de las diversas subrutinas, hemos creado unas serie de programas con sus comentarios para facilitar su entendimiento:
En este programa tendremos desenmascaradas dos interrupciones la #0 y la #1 que corresponden con las entradas IN0 y IN1 de la carta de interrupciones. Durante el programa principal se est incrementando el valor del DM0100 a un ritmo marcado por el reloj de 0.2 segundos. Si llega una interrupcin #0 el programa principal ser interrumpido para visualizar FFFF en la carta de salidas situada en CH0 del rack y continuar el flujo normal de programa. Si llega una interrupcin #1 el programa principal ser interrumpido para visualizar 0000 en la misma carta de salida y luego continuar el flujo normal de programa.
En este programa tendremos una interrupcin programada que se ejecutar automticamente cada 300 x 1ms. Durante el programa principal se ejecuta continuamente un registro de desplazamiento que introduce 1 , cada 0.1 s y se resetea al llegar el primer 1 al ultimo bit del canal 0001. Cada 300 x 1ms, es decir, cada 0.3 segundos se ejecuta la interrupcin programada que toma el valor del registro de desplazamiento y lo lleva al canal 100 donde podremos ver como cada 0.3 segundos se modifica dicho valor en tres 1 puesto que el desplazamiento del registro ocurre cada 0.1ms.
INTERRUP.DOC
Pag. 7
3. INTERRUPCIONES EN EL CQM1
CONTROL DE INTERRUPCIONES
3. INTERRUPCIONES EN EL CQM1
El CQM1 tiene 3 tipos de procesos de interrupciones: Interrupciones de entradas, interrupciones programadas o de temporizador de intervalo e interrupciones de contador de alta velocidad (no van a ser vistas en este informe). PRIORIDAD DE INTERRUPCIONES Las prioridades en el CQM1 estn definidas como: 1.Interrupcin de entrada 0 > 1 >2 >3 2.Interrupcin de contador de alta velocidad 1 > 2 3.Interrupcin de temporizador de intervalo 0 > 1 > 2 (coincide con la interrupcin de contador de alta velocidad 0) INCOMPATIBILIDADES En las CPUs CQM1-CPU43-44, las instrucciones INI, PRV, CTBL ,SPED, PULS, PWM, PLS2 y ACC no pueden ejecutarse en la subrutina de interrupcin, cuando en el programa principal se esta ejecutando una instruccin de control de E/S de pulsos o contadores de alta velocidad.
Dato
0 1
INTERRUP.DOC
Pag. 8
3. INTERRUPCIONES EN EL CQM1
CONTROL DE INTERRUPCIONES
Selecciones del canal de refresco de entrada DM6630 00-07 Canal inicial de refresco al ejecutar la interrupcin #0 (00 a 07) 08-15 Nmero de canales de refresco ( 00 a 08) 00-07 Canal inicial de refresco al ejecutar la interrupcin #1 (00 a 07) 08-15 Nmero de canales de refresco (00 a 08) 00-07 Canal inicial de refresco al ejecutar la interrupcin #2 (00 a 07) 08-15 Nmero de canales de refresco (00 a 08) 00-07 Canal inicial de refresco al ejecutar la interrupcin #3 (00 a 07) 08-15 Nmero de canales de refresco (00 a 08)
DM6631
DM6632
DM6633
Ej. si DM6630 se selecciona a 0100, IR000 ser refrescado cuando reciba una seal de interrupcin #0. Si no se utiliza el refresco de entradas, el estado de seal de entrada dentro de la rutina de interrupcin no ser fiable. Esto incluye el estado del bit de entrada de interrupcin que activa la interrupcin.
INT(-) CONTROL DE INTERRUPCIN DE ENTRADA El formato de la orden es: INT(-) C 000 D Cdigo de Control Dato de control 000,001,002,003,100 200 IR, SR, AR, DM, HR, TC, LR, TR, #
Funcin de interrupcin Enmscarar/Desenmscarar interrupciones de entrada Limpiar interrupciones de entrada Leer el estado de la mscara actual Renovar SV de contador Enmscarar todas las interrupciones Desenmscarar todas las interrupciones
Dato de control para cada dgito 0: sin mscara 1: con mscara 0: No borrar 1: Borrar 0: sin mscara 1: con mscara 0: Cambio 1: No cambio
Para evitar que una interrupcin que esta enmscarada se ejecute al desenmscararla, se debe limpiar la entrada de interrupciones antes de desenmscararla.
INTERRUP.DOC
Pag. 9
3. INTERRUPCIONES EN EL CQM1
CONTROL DE INTERRUPCIONES
3 2 1 0
Entrada interrupcion 00000 Entrada interrupcion 00001 Entrada interrupcion 00002 Entrada interrupcion 00003 Las entradas de interrupcin de modo contador se programan de la manera siguiente: Primero debemos escribir los valores para la operacin de contador en los canales SR correspondientes a las interrupciones. El rango de valores va de 00000 a 65535 (0000FFFF). Un valor cero inhibir la operacin de contaje hasta que se seleccione un nuevo valor y se repita el paso siguiente. Interrupcin Interrupcin entrada 0 Interrupcin entrada 1 Interrupcin entrada 2 Interrupcin entrada 3 Canal SR 244 (hexadecimal) SR 245 (hexadecimal) SR 246 (hexadecimal) SR 247 (hexadecimal)
Con la instruccin INT, refrescar el valor seleccionado de modo contador y habilitar interrupciones. La interrupcin de entrada para la que se refresca el valor seleccionado ser habilitada en modo contador. Cuando el contador alcance el contaje seleccionado, se producir una interrupcin, se restaurar el contador y continuar el contaje/interrupciones hasta que el contador se pare. Cuando las interrupciones de entrada se usan como modo contador, el valor PV-1 del contador aparecer reflejado en los canales siguientes:
3. INTERRUPCIONES EN EL CQM1
CONTROL DE INTERRUPCIONES
PARMETROS DE CONFIGURACIN DEL PLC Selecciones de canal de refresco de entrada (DM6636 a DM 6638):
DM6636 00-07 Canal inicial de refresco al ejecutar la interrupcin de temporizador #0 (00 a 11) 08-15 Nmero de canales de refresco ( 00 a 12) DM6637 00-07 Canal inicial de refresco al ejecutar la interrupcin de temporizador #1 (00 a 11) 08-15 Nmero de canales de refresco (00 a 12) DM6638 00-07 Canal inicial de refresco al ejecutar la interrupcin de temporizador #2 (00 a 11) 08-15 Nmero de canales de refresco (00 a 12)
Selecciones de contador de alta velocidad (DM6642) Antes de usar el temporizador de intervalo 2, verificar que: DM6642 est a 0000, es decir, contador de alta velocidad no utilizado.
MODO UN IMPULSO Cada vez que transcurre el intervalo especificado, el contador descendente disminuir su valor actual en uno. Cuando este valor llegue a 0, se llamar la subrutina asignada una vez y el temporizador parar su operacin
MODO INTERRUPCIN PROGRAMADA Cada vez que transcurre el intervalo especificado, el contador descendente disminuir su valor actual en uno. Cuando este valor llegue a 0, se llamar la subrutina asignada, el temporizador restaurar el valor seleccionado y empezar de nuevo la temporizacin. En el modo de interrupcin programada las interrupciones se irn repitiendo a intervalos fijos hasta que se pare la operacin.
STIM(-)
000 a 008 y 010 a 012 IR, SR, AR, DM, HR, TX, LR, # IR, SR, AR, DM, HR, TX, LR, #
FUNCIN
TIM #1 C2
#3 Pag. 11
3. INTERRUPCIONES EN EL CQM1 0 1 2 0 Modo interrupcin programada 1 2 0 Lectura de PV de temporizador 1 2 0 Parar temporizador 1 2 Modo un impulso 000 001 002 003 004 005 006 007 008 010 011 012 Valor del contador #0000 a #9999 Valor del contador #0000 a #9999 n veces que ha descontado el contador (BCD)
CONTROL DE INTERRUPCIONES Intervalo temporizador unidad 0.1 ms N subrutina #0005 a #0320 Intervalo temporizador unidad 0.1 ms N subrutina #0005 a #0320 Intervalo tiempo Tiempo transcurrido del contador desde contaje anterior (BCD) (unidad 0.1ms) (BCB (unidad 0.1ms) 000 000
El tiempo entre interrupciones se calcula como sigue: (Contenido del canal C2) x (Contenido del canal C2+1) x 0.1 ms Si para C2 se selecciona una constante, entonces el valor seleccionado del contador ser dicha constante y el intervalo de tiempo ser 10 (1ms). El tiempo desde que arranca el temporizador hasta la ejecucin de esta instruccin de lectura de PV del temporizador, se calcula como sigue: {(Contenidos del canal C2) x (Contenidos del canal C2+1) + (Contenidos del canal C3)} x 0.1 ms Si para C2 se selecciona una constante, entonces el valor seleccionado del contador ser dicha constante y el intervalo de tiempo ser 10 (1ms).
INTERRUP.DOC
Pag. 12
3. INTERRUPCIONES EN EL CQM1
CONTROL DE INTERRUPCIONES
3.3. EJEMPLOS
Para demostrar el funcionamiento y programacin de las diversas subrutinas, hemos creado unas serie de programas con sus comentarios para facilitar su entendimiento:
En este programa tendremos desenmascaradas dos entradas de interrupciones, la #0 y la #1, definida la primera como modo de entrada y la segunda como modo contador con valor 5. Durante el programa principal un contador de valor 9999 va descontando cada 0.1 segundos y se reinicializa al llegar a 0000. Si llega una interrupcin #0 el programa principal ser interrumpido para almacenar el valor actual del contador en el DM0000 y continuar el flujo normal de programa. Si llega una interrupcin #1 se decrementa en uno el contador asociado a la interrupcin y cuando ste llega a 0000, el programa principal ser interrumpido para visualizar el DM0000, que contiene el ltimo valor introducido por la interrupcin #0, en la carta de salida C0100 y luego continuar el flujo normal de programa.
INTERRUP.DOC
Pag. 13
4. INTERRUPCIONES EN EL CV
CONTROL DE INTERRUPCIONES
4. INTERRUPCIONES EN EL CV
Los cuatro tipos de interrupciones soportados por el CV son: interrupcin de entrada, interrupcin programada, de prdida de tensin (power OFF) y adquisicin de tensin (power ON).
Subrutina 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
Subrutina 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
4. INTERRUPCIONES EN EL CV
CONTROL DE INTERRUPCIONES
Una interrupcin de power ON se activa cuando la alimentacin regresa a la CPU despus de un corte. La interrupcin de power ON es efectivo slo si hay un programa de interrupcin de power ON. El programa de interrupcin de power ON se ejecuta tras la inicializacin.
PRIORIDAD DE INTERRUPCIONES Una interrupcin de power OFF tiene la mxima prioridad, seguida por la de power ON, programada e interrupciones de entrada en este orden. Las interrupciones con nmeros menores tienen prioridad respecto a las de nmeros mayores. Las selecciones para las interrupciones de entradas en el PC Setup determinar si las interrupciones de entrada con mayor prioridad sern servidas inmediatamente o esperarn hasta que la actual interrupcin se completada. Si la seleccin est en HOLD, una interrupcin entrante debe esperar hasta que la primera interrupcin sea terminada, sin tener en cuenta el rango de prioridades de las dos interrupciones. Si la seleccin est en ejecutar la mxima prioridad, una interrupcin de entrada ser servida inmediatamente si su nmero de programa de interrupcin es mayor que la que se est ejecutando en ese momento.
PC SETTINGS En el PC Setup del CV existen ciertas posibles selecciones (desde el menu principal), relacionadas con las interrupciones:
AB-
Hold Areas Startup Hold -Forced status -I/O Bits -Power On Flag
C-
F-
Execute Control 2 Nesting No nesting -Power Off interrupt Enable Disable -I/O interrupt
J-
Scheduled interrupt
INTERRUP.DOC
Pag. 15
4. INTERRUPCIONES EN EL CV INSTRUCCIONES
CONTROL DE INTERRUPCIONES
Hay tres instrucciones que controlan y monitorizan interrupciones de entrada e interrupciones programadas, MSKS(153), CLI(154), y MSKR(155). MSKS(153) enmascara interrupciones de entrada (de manera que son grabadas pero ignoradas) y establece el intervalo de tiempo para la interrupcin programada, CLI(154) limpia interrupciones, y MSKR(155) escribe tanto el estado de la mscara actual de un determinado mdulo de entradas de interrupcin como el intervalo actual de la interrupcin programada en un determinada palabra. INTERRUPT MASK MSKS(153) N S INTERRUPCIN DATO
N 0 1 2 3 4 5
Funcin Mscara unidad de entrada de interrupcin 0 0 no enmscarada Mscara unidad de entrada de interrupcin 1 1 enmscarada Mscara unidad de entrada de interrupcin 2 para cada entrada de la unidad Mscara unidad de entrada de interrupcin 3 #0000 - #00FF Intervalo de la interrupcin programa 0 #0001 - #9999 Intervalo interrupcin programa 1 ( CV1000) x valor seleccionado en PC Setup (10,1,0.5 ms)
CLEAR INTERRUPT CLI (154) N S INTERRUPCIN DATO Dato 0 no limpiar / 1 limpiar para cada bit correspondiente con la interrupcin de la unidad #0000 - #00FF #0001 - #9999 x valor seleccionado en PC Setup (10,1,0.5 ms)
N 0 1 2 3 4 5
Funcin Limpia las interrupciones almacenadas de la unidad 0 Limpia las interrupciones almacenadas de la unidad 1 Limpia las interrupciones almacenadas de la unidad 2 Limpia las interrupciones almacenadas de la unidad 3 Establece el tiempo para la primera interrupcin programada 0 Establece tiempo para primera interrupcin programada 1 (CV1000)
READ MASK MSKR (155) N S INTERRUPCIN DATO Dato de de Palabra donde se escribe de la mscara de Palabra donde se lee el intervalo de interrupcin programada Pag. 16
N Funcin 0 Lee mscara actual para unidad 0 de interrupciones entrada 1 Lee mscara actual para unidad 1 de interrupciones entrada 2 Lee mscara actual para unidad 2 de interrupciones entrada 3 Lee mscara actual para unidad 3 de interrupciones entrada 4 Escribe el intervalo de interrupcin programada 0 5 Escribe el intervalo de interrupcin programada 1 (CV1000)
INTERRUP.DOC
4. INTERRUPCIONES EN EL CV
CONTROL DE INTERRUPCIONES
IMPORTANTE !!
A la hora de programar las subrutinas de interrupcin, sta programacin no se realiza en el programa principal como una subrutina normal, sino que se realiza en un submen aparte, por lo que deberemos seleccionar, desde el men principal del CVSS: P: Program I: Edit Int Program M: Main Y: I/O Interrupt R: Cyclic Interrupt E: Power Off Interrupt C: Power On Interrupt Para la programacin de la interrupcin de POWER OFF debemos seleccionar en el PC Setup: ABHold Areas Startup Hold -Forced status -I/O Bits -Power On Flag CStartup Mode -Program -Debug -Monitor -Run FExecute Control 2 -Power Off interrupt Enable HOLD HOLD HOLD
Seleccionamos a ON en el programa de interrupcin de power OFF los siguientes bits para conseguir continuar con el arranque cuando vuelva la alimentacin: AR00011 AR00012 Restart Continuation Bit Hold IOM Hold Bit
Sin activar estos bits no podremos arrancar la interrupcin de power ON en caso de existir. Una vez restablecida la alimentacin deberemos forzar a OFF el bit AR00015 de inhibicin de salidas, bien en la interrupcin de power ON, o bien en el programa principal.
INTERRUP.DOC
Pag. 17
4. INTERRUPCIONES EN EL CV
CONTROL DE INTERRUPCIONES
4.5. EJEMPLO
Para demostrar el funcionamiento y programacin de las diversas subrutina, hemos creado unas serie de programas con sus comentarios para facilitar su entendimiento:
En este programa tendremos programadas las interrupciones de Power ON y de Power OFF que se activan y ejecutan cuando hay un corte de la alimentacin (power OFF) y cuando regresa la alimentacin (power ON). Durante el programa principal un contador de valor 1000 va descontando cada 0.1 segundos y se reinicializa al llegar a 0000. Cuando llega un corte de la alimentacin, el CV realiza sus operaciones internas y reserva un tiempo de unos 10 ms para la ejecucin de la subrutina de interrupcin de Power OFF si la hubiera. En este caso en esta subrutina se activa el bit de hold 125000, se guarda el contenido del contador en el canal de hold 1270 y se activan los bits A00011 y A00012 para habilitar la interrupcin de ON en caso de regreso de la alimentacin (sin activar estos bits, se producira alarma y no se ejecutara la interrupcin de ON). Cuando regresa la alimentacin, si est activo el bit de hold 125000 (activado en la interrupcin de OFF), se guarda FFFF en el DM0100; independientemente al bit de hold anterior, se activa el bit de hold 130000, se desactiva el bit A00015 (para habilitar las salidas) y se mueve a la carta de salida el contenido del canal DM0100 que ser FFFF. Por ltimo se desactivan los bits A0011 y A00012.
INTERRUP.DOC
Pag. 18