Anda di halaman 1dari 17

Autmatas Programables

ISA-UMH TDOC-2000

Indice
n

Introduccin
Subrutinas vs rutinas de interrupcin Subrutinas Tareas a realizar para utilizar una subrutina en el programa

n n n n n n

Crear una subrutina Llamar a una subrutina Rutinas de interrupcin Ejemplo subrutinas Ejemplo de interrupciones temporizadas Ejemplo de tratamiento de Interrup. De E/S

Autmatas Programables
ISA-UMH TDOC-2000

Introduccin
n

Subrutinas vs Rutinas de interrupcin


Rutina de Interrupcin INT N Programa Principal OB1 Subrutina SBR N Subrutina SBR N

Rutina de Interrupcin INT N

Subrutina SBR N

Autmatas Programables
ISA-UMH TDOC-2000

Introduccin
n

Subrutinas
Las subrutinas se utilizan para estructurar o dividir el programa en bloques ms pequeos. Ms fciles de gestionar. Facilita las tareas de comprobacin, eliminacin de errores y mantenimiento del programa. La CPU tambin se puede utilizar ms eficientemente, invocando el bloque slo cuando se necesite, en vez de ejecutar todos los bloques en cada ciclo. las subrutinas se pueden transportar si se hace referencia nicamente a sus parmetros y a su memoria local.

Para que una subrutina se pueda transportar, se debe evitar la utilizacin de variables/smbolos globales (direcciones absolutas en las reas de memoria I, Q, M, SM, AI, AQ, V, T, C, S, AC). n Si la subrutina no tiene parmetros de llamada (IN, OUT IN_OUT), o si utiliza nicamente variables locales en la memoria L, la subrutina se puede exportar a e importar de un proyecto diferente. Autmatas Programables
n ISA-UMH TDOC-2000

Introduccin
n

Tareas a realizar para utilizar una subrutina en el programa


Crear la subrutina. Definir los parmetros (en caso necesario) en la tabla de variables locales de la subrutina. Llamar a la subrutina desde la unidad de organizacin del programa en cuestin (p.ej., desde el programa principal (OB1) o desde una subrutina diferente).

Autmatas Programables
ISA-UMH TDOC-2000

Crear una subrutina


n

Para crear subrutina


En el men Edicin, elija los comandos Insertar > Subrutina -O En la ventana del editor de programas, haga clic con el botn derecho del ratn y elija el comando Insertar > Subrutina del men emergente. El editor de programas cambia de la anterior unidad de organizacin del programa visualizada a la nueva subrutina. En el borde inferior del editor de programas aparece una nueva ficha correspondiente a la nueva subrutina

Subrutina 0 Autmatas Programables


ISA-UMH TDOC-2000

Subrutina 1

Llamar a una subrutina


n

Seleccionar insertar cuadro en el programa principal.


n
Llamada a subrutina SBR0

arrastrar el icono subrutina del arbol de operaciones

Se insertara la siguiente lnea en el programa

Autmatas Programables
ISA-UMH TDOC-2000

Rutinas de interrupcin
n

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 (RUTINA DE INTERRUPCIN) 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.

Autmatas Programables
ISA-UMH TDOC-2000

Rutinas de interrupcin

Autmatas Programables
ISA-UMH TDOC-2000

Rutinas de interrupcin
n

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 para ello 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.
10

Autmatas Programables
ISA-UMH TDOC-2000

Rutinas de interrupcin
n

Crear una rutina de interrupcin (Similar a crear subrutinas)


Interrupcin

Notas
En un programa se permiten 128 rutinas de interrupcin como mximo. La CPU procesa las interrupciones segn su prioridad y despus en el orden que aparecen. Slo se ejecuta una rutina de interrupcin a la vez. Las interrupciones que se presenten mientras se est ejecutando otra interrupcin se ponen en cola de espera para ser procesadas posteriormente.

Autmatas Programables
ISA-UMH TDOC-2000

11

Rutinas de interrupcin

Asociar interrupcin, Desasociar interrupcin


La operacin Asociar interrupcin asocia el nmero de una rutina de interrupcin (INT) a un evento de interrupcin (EVNT), habilitando as ste ltimo. La operacin Desasociar interrupcin desasocia un evento de interrupcin (EVNT) de todas las rutinas de interrupcin, deshabilitando as el evento.

Autmatas Programables
ISA-UMH TDOC-2000

12

Rutinas de interrupcin
n

Habilitar todos los eventos de interrupcin, Inhibir todos los eventos de interrupcin
La operacin Habilitar todos los eventos de interrupcin habilita la ejecucin de todos los eventos asociados. La operacin Inhibir todos los eventos de interrupcin inhibe la ejecucin de todos los eventos asociados. Operandos: ninguno Tipos de datos: ninguno Cuando la CPU pasa a modo RUN, las interrupciones se inhiben. Estando en 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.

Autmatas Programables
ISA-UMH TDOC-2000

13

Rutinas de interrupcin
n

Reglas para el buen uso de las 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 Para ello 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.

Autmatas Programables
ISA-UMH TDOC-2000

14

Rutinas de interrupcin
n

Tipos de interrupciones
Interrupciones de comunicacin
n

El puerto serie. La comunicacin a travs de dicho puerto se denomina modo Freeport (comunicacin programable por el usuario). En modo Freeport, el programa define la velocidad de transferencia, los bits por carcter, la paridad y el protocolo. Las interrupciones de transmisin y recepcin permiten controlar la comunicacin mediante el programa. Las interrupciones E/S abarcan interrupciones en flancos positivos y negativos, interrupciones de los contadores rpidos, as como interrupciones de la salida de impulsos.

Interrupciones E/S
n

Autmatas Programables
ISA-UMH TDOC-2000

15

Rutinas de interrupcin
n

Tipos de interrupciones
Interrupciones temporizadas
n

Las interrupciones temporizadas incluyen tambin las de los temporizadores T32/T96. La CPU puede asistir interrupciones temporizadas. Las interrupciones temporizadas se utilizan para indicar tareas que deban ejecutarse cclicamente El tiempo de ciclo se incrementa en intervalos de 1 ms, abarcando desde 1 ms hasta 255 ms. El tiempo de ciclo de la interrupcin temporizada 0 se debe escribir en SMB34, y el de la interrupcin temporizada 1, en SMB35. Tpicamente, las interrupciones temporizadas se utilizan para controlar el muestreo de las entradas analgicas en intervalos regulares o para ejecutar un bucle PID.

Autmatas Programables
ISA-UMH TDOC-2000

16

Rutinas de interrupcin
n

Interrupciones temporizadas
Al asociar un evento de interrupcin temporizado a una rutina de interrupcin, se habilita el evento e inmediatamente se empieza a temporizar. Para poder modificar el tiempo de ciclo se deber cambiar el valor del mismo y reasociar luego la rutina de interrupcin al evento de la interrupcin temporizada. Al reasociarse la rutina de interrupcin, la funcin borra los tiempos acumulados de la asociacin anterior, con lo cual se vuelve a temporizar a partir del nuevo valor. Una vez habilitada, la interrupcin funciona de forma continua ejecutando la rutina asociada cada vez que transcurre el intervalo de tiempo indicado.

Autmatas Programables
ISA-UMH TDOC-2000

17

Rutinas de interrupcin
n

Interrupciones temporizadas
La interrupcin temporizada se inhibe saliendo del modo RUN o desasocindola de la rutina correspondiente (mediante la operacin DTCH). Si se ejecuta la operacin Inhibir todos los eventos de interrupcin, se siguen generando interrupciones temporizadas, pero se ponen en cola de espera (hasta que se habiliten nuevamente o hasta llenarse dicha cola).

Autmatas Programables
ISA-UMH TDOC-2000

18

Rutinas de interrupcin

Autmatas Programables
ISA-UMH TDOC-2000

19

Rutinas de interrupcin
n

Prioridades de las interrupciones y colas de espera


La prioridad de las interrupciones es la siguiente:
n n n

Interrupciones de comunicacin (prioridad ms alta) Interrupciones E/S Interrupciones temporizadas (prioridad ms baja)

La CPU procesa las interrupciones segn su prioridad y despus en el orden en que aparecen. Slo se ejecuta una rutina de interrupcin en cada caso Las interrupciones que aparezcan mientras se est ejecutando otra interrupcin se ponen en cola de espera para ser procesadas posteriormente.

Autmatas Programables
ISA-UMH TDOC-2000

20

10

Rutinas de interrupcin
n

Tabla de colas de espera y nmero mximo de interrupciones que pueden acoger.

Pueden presentarse ms interrupciones de las que puede acoger la cola de espera. Marcas de desbordamiento que indican qu eventos de interrupcin no se han podido acoger en la cola de espera.

Autmatas Programables
ISA-UMH TDOC-2000

21

Rutinas de interrupcin

Autmatas Programables
ISA-UMH TDOC-2000

22

11

Rutinas de interrupcin

Autmatas Programables
ISA-UMH TDOC-2000

23

Ejemplo Subrutinas
n

Mediante la preseleccin de tres interruptores se pretende conseguir una seal de periodo variable
Q0.0
T

Se desea obtener una seal de los siguientes perodos:


Si esta activa la entrada I0.0: 0.6 seg Si esta activa la entrada I0.1: 1 seg Si esta activa la entrada I0.2: 2 seg

En el caso de que no estn activas ninguna entrada la salida debe de anularse


24

Autmatas Programables
ISA-UMH TDOC-2000

12

Ejemplo de interrupciones temporizadas


n

Objetivo
Utilizar las interrupciones temporizadas para generar una secuencia de destellos.
n

La activacin de la entrada I0.1 reduce la frecuencia de destellos a la mitad de la mencionada secuencia. La activacin de la entrada I0.0 restablece la frecuencia original de destellos.

Este ejemplo explica el tratamiento general de las interrupciones temporizadas as como la modificacin de la base de tiempo.

Autmatas Programables
ISA-UMH TDOC-2000

25

Ejemplo de interrupciones temporizadas


n

Tabla de smbolos PROGRAMA PRINCIPAL OB1:

Autmatas Programables
ISA-UMH TDOC-2000

26

13

Ejemplo de interrupciones temporizadas


n

PROGRAMA PRINCIPAL OB1

Autmatas Programables
ISA-UMH TDOC-2000

27

Ejemplo de interrupciones temporizadas


n

PROGRAMA PRINCIPAL OB1

Autmatas Programables
ISA-UMH TDOC-2000

28

14

Ejemplo de interrupciones temporizadas


n

RUTINA INTERRUPCIN INT 27

RUTINA DE INTERRUPCIN INT 28

Autmatas Programables
ISA-UMH TDOC-2000

29

Ejemplo de tratamiento de Interrup. De E/S


n

Objetivo
Realizar un programa que cuente de 0 hasta 255, en funcin de la entrada I0.0. Si est activada la entrada I0.0, el programa cuenta hacia atrs. Si no est activada la entrada I0.0, el programa cuenta hacia adelante. Si se conmuta la entrada, se dispara una rutina de interrupcin de entrada/salida (E/S). Esta rutina de interrupcin activa o desactiva la marca M0.0 de contaje atrs. La activacin de la entrada I0.1 provoca el reseteo del contador. Utilizar la marca SM0.5.

Autmatas Programables
ISA-UMH TDOC-2000

30

15

Ejemplo de tratamiento de Interrup. De E/S


n

Flujograma
INICIO ACTIVAR I0.0 PARA DISPARAR INT 5: ACTIVAR LA MARCA DE CONTAJE ATRS (M0.0 = 1 )

DESACTIVAR I0.0 PARA DISPARAR INT 6: ACTIVAR LA MARCA DE CONTAJE ADELANTE (M0.0 = 0 ) INICIALIZAR EL CONTADOR EN EL PRIMER CICLO

NO

MARCA DE CONTAJE ATRS ACTIVADA?

SI

DECREMENTAR CONTADOR HASTA QUE SEA IGUAL A 0

DECREMENTAR CONTADOR HASTA QUE SEA IGUAL A 0

FIN

Autmatas Programables
ISA-UMH TDOC-2000

31

Ejemplo de tratamiento de Interrup. De E/S


Evento de interrupcin

Tabla de simbolos Programa principal OB1

Autmatas Programables
ISA-UMH TDOC-2000

32

16

Ejemplo de tratamiento de Interrup. De E/S


n

Programa principal OB1

Autmatas Programables
ISA-UMH TDOC-2000

33

Ejemplo de tratamiento de Interrup. De E/S


n

Rutina de interrupcin 5

Rutina de interrupcin 6

Autmatas Programables
ISA-UMH TDOC-2000

34

17