Вы находитесь на странице: 1из 17

Autmatas Programables 1

ISA-UMH TDOC-2000

Indice
n Introduccin
Subrutinas vs rutinas de interrupcin
Subrutinas
Tareas a realizar para utilizar una subrutina en el programa
n Crear una subrutina
n Llamar a una subrutina
n Rutinas de interrupcin
n Ejemplo subrutinas
n Ejemplo de interrupciones temporizadas
n Ejemplo de tratamiento de Interrup. De E/S

Autmatas Programables 2
ISA-UMH TDOC-2000

1
Introduccin
n Subrutinas vs Rutinas de interrupcin
Rutina de Programa
Interrupcin INT N Subrutina Subrutina
Principal OB1
SBR N SBR N

Subrutina
Rutina de SBR N
Interrupcin INT N

Autmatas Programables 3
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.
n 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 4
ISA-UMH TDOC-2000

2
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 5
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 Subrutina 1

Autmatas Programables 6
ISA-UMH TDOC-2000

3
Llamar a una subrutina
n Seleccionar insertar cuadro en el programa principal.
n arrastrar el icono
subrutina del arbol
Llamada a subrutina SBR0
de operaciones

n Se insertara la
siguiente lnea en
el programa

Autmatas Programables 7
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)
n 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).
n 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 8
ISA-UMH TDOC-2000

4
Rutinas de interrupcin

Autmatas Programables 9
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.
n 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.
n 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.

Autmatas Programables 10
ISA-UMH TDOC-2000

5
Rutinas de interrupcin
n Crear una rutina de interrupcin (Similar a crear subrutinas)
Interrupcin

n 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 11
ISA-UMH TDOC-2000

Rutinas de interrupcin

n 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 12
ISA-UMH TDOC-2000

6
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 13
ISA-UMH TDOC-2000

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 14
ISA-UMH TDOC-2000

7
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.
n Las interrupciones de transmisin y recepcin permiten controlar la
comunicacin mediante el programa.
Interrupciones E/S
n Las interrupciones E/S abarcan interrupciones en flancos positivos y
negativos, interrupciones de los contadores rpidos, as como
interrupciones de la salida de impulsos.

Autmatas Programables 15
ISA-UMH TDOC-2000

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
n El tiempo de ciclo se incrementa en intervalos de 1 ms, abarcando desde
1 ms hasta 255 ms.
n El tiempo de ciclo de la interrupcin temporizada 0 se debe escribir en
SMB34, y el de la interrupcin temporizada 1, en SMB35.
n 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 16
ISA-UMH TDOC-2000

8
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 17
ISA-UMH TDOC-2000

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 18
ISA-UMH TDOC-2000

9
Rutinas de interrupcin

Autmatas Programables 19
ISA-UMH TDOC-2000

Rutinas de interrupcin
n Prioridades de las interrupciones y colas de espera
La prioridad de las interrupciones es la siguiente:
n Interrupciones de comunicacin (prioridad ms alta)
n Interrupciones E/S
n 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 20
ISA-UMH TDOC-2000

10
Rutinas de interrupcin
n Tabla de colas de espera y nmero mximo de interrupciones que
pueden acoger.

n 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 21
ISA-UMH TDOC-2000

Rutinas de interrupcin

Autmatas Programables 22
ISA-UMH TDOC-2000

11
Rutinas de interrupcin

Autmatas Programables 23
ISA-UMH TDOC-2000

Ejemplo Subrutinas
n Mediante la preseleccin de tres interruptores se pretende
conseguir una seal de periodo variable

Q0.0

n 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
n En el caso de que no estn activas ninguna entrada la salida debe
de anularse
Autmatas Programables 24
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.
n La activacin de la entrada I0.0 restablece la frecuencia original de
destellos.
n Este ejemplo explica el tratamiento general de las interrupciones
temporizadas as como la modificacin de la base de tiempo.

Autmatas Programables 25
ISA-UMH TDOC-2000

Ejemplo de interrupciones temporizadas


n Tabla de smbolos

n PROGRAMA PRINCIPAL OB1:

Autmatas Programables 26
ISA-UMH TDOC-2000

13
Ejemplo de interrupciones temporizadas
n PROGRAMA PRINCIPAL OB1

Autmatas Programables 27
ISA-UMH TDOC-2000

Ejemplo de interrupciones temporizadas


n PROGRAMA PRINCIPAL OB1

Autmatas Programables 28
ISA-UMH TDOC-2000

14
Ejemplo de interrupciones temporizadas
n RUTINA INTERRUPCIN INT 27

n RUTINA DE INTERRUPCIN INT 28

Autmatas Programables 29
ISA-UMH TDOC-2000

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 30
ISA-UMH TDOC-2000

15
Ejemplo de tratamiento de Interrup. De E/S
n Flujograma
INICIO
DESACTIVAR I0.0 PARA DISPARAR INT ACTIVAR I0.0 PARA DISPARAR INT 5:
6: ACTIVAR LA MARCA DE CONTAJE ACTIVAR LA MARCA DE CONTAJE ATRS
ADELANTE (M0.0 = 0 ) (M0.0 = 1 )
INICIALIZAR EL CONTADOR
EN EL PRIMER CICLO

NO MARCA DE SI
CONTAJE ATRS
ACTIVADA?

DECREMENTAR CONTADOR DECREMENTAR CONTADOR


HASTA QUE SEA IGUAL A 0 HASTA QUE SEA IGUAL A 0

FIN

Autmatas Programables 31
ISA-UMH TDOC-2000

Ejemplo de tratamiento de Interrup. De E/S


Evento de interrupcin

n Tabla de simbolos

n Programa principal OB1

Autmatas Programables 32
ISA-UMH TDOC-2000

16
Ejemplo de tratamiento de Interrup. De E/S
n Programa principal OB1

Autmatas Programables 33
ISA-UMH TDOC-2000

Ejemplo de tratamiento de Interrup. De E/S


n Rutina de interrupcin 5

n Rutina de interrupcin 6

Autmatas Programables 34
ISA-UMH TDOC-2000

17

Вам также может понравиться