PRÁCTICA Nº 9 GESTIÓN DE INTERRUPCIONES.
Una interrupción, en un sistema digital consiste en que el procesador (si éste está alojado en
un único chip se denomina microprocesador), que es el encargado de ejecutar las
instrucciones de un programa (p.e. el sistema operativo en un ordenador) al recibir una
interrupción, la atiende ejecutado una pequeña tarea específica de dicha interrupción, p.e. si
movemos el ratón, se produce una interrupción en el sistema, y el microprocesador, realizará
una tarea específica como es el cambiar de posición el cursor del ratón en la pantalla. Algo
similar ocurre cuando pulsamos una tecla cuando se está ejecutando un procesador de texto,
se produce una interrupción en el sistema y se ejecuta la tarea de representar el carácter
pulsado en la pantalla activa.
1. Carga un sistema con una tarjeta de
comunicaciones y crearemos una entrada
digital denominada ENTRADA1.
2. Crea un cubo (200x200x200)donde se
realizará la trayectoria del robot tocando los
cuatro vértices, utilizando para ello un offset
vertical de 50mm, es decir el TCP de la
herramienta se debe situar por encima de
cada punto y luego bajar hasta el mismo, y
subir de nuevo verticalmente, esto lo hara en
las cuatro esquinas del cubo. Esta
trayectoria se debe realizar dos veces. La
velocidad será v100 y la aproximación fine
(la velocidad de acercamiento a la pieza
circular será v500 y a la posición de INICIO
será v500 y aproximación Z100).
3. Despues de perforar las cuatro esquinas del
cubo, diseñar una rutina para peroforar la
cara superior del cubo en forma matricial cada 5cm. Esta rutina la realizara solo una vez
y se utlilizaran los mismos offset usados en la practica #8.
4. Crea una figura cilindrica para representar el elemento de limpieza que será donde la
herramienta se limpiará y Consiste en:
a. - una base cilíndrica de diámetro 170mm y altura 50mm
b. - un cilindro de diámetro 80mm y altura 100mm
c. - un hueco de diámetro 40mm y altura 150mm (este se realiza mediante otro
cilindro de estas dimensiones y se le resta al de 80mm)
d. Estas figuras se unirán en una única piezaa la que denominaremos limpiador
5. Ahora en RAPID Crearemos una variable global del tipo intnum
- Variable golbal: variable que pueden ver todos los procedimientos, se declaraal
principio del programa o módulo y fuera de cualquer procedimiento, al igual que en
lenguaje C
- Variable de interrupción: variable que se encargará de accionar una interrupción en
el sistema, se declara de la siguente forma:
-
Var intnum nombre_variable
VARintnum intlimpieza; !declaración de variable de interrupción
6. Crearemos una tarea de interrupción consistente en llevar la herramienta al limpiador
introducir y sacar verticalmente la herramienta y luego seguirá con el programa. Para ello
utilizaremos una tarea o procedimiento denominada TRAP
Ejemplo de una tarea de interrupción:
TRAP tarea_limpiado !tarea de interrupción
MoveL INICIO,v500,z100,MyTool\WObj:=wobj0;
MoveLOffs(Target_50,0,0,50),v100,fine,MyTool\WObj:=limpiado;
MoveLOffs(Target_50,0,0,-50),v100,fine,MyTool\WObj:=limpiado;
MoveLOffs(Target_50,0,0,50),v100,fine,MyTool\WObj:=limpiado;
MoveL INICIO,v500,z100,MyTool\WObj:=wobj0;
RETURN; !vuelta al programa principal
ENDTRAP
Una vez creada la tarea aparece en el arbol de módulos de programa
7. Crea una entrada digital denominada ENTRADA1 y Crea en el
procedimiento main() las siguientes instrucciones:
PROC main()
IDelete intlimpieza;!desactiva la variable de interrupción
CONNECT intlimpieza WITH tarea_limpiado;!conecta la variable de interrupción con la
tarea de interrupción
ISignalDIENT1,1,intlimpieza;!asigna una variable digital de entrada con la variable de
interrupción, se activará cuando pase esta variable de 0 a 1
!mi programa …
ENDPROC
El programa deberá funcionar de modo que al pulsar inicio en el simulador, el robot, partiendo de una
posición inicial, tocará los cuatro vértices del cuadrado dos veces, y después realizara las
perforaciones en forma matricial, pero si en algún momento accionamos la interrupción, mediante la
entrada ENTRADA1 el robot realizará la tarea programada como interrupción, y posteriormente
seguirá realizando el programa principal, donde se quedo antes de suceder la interrupción.
Nota: es sistema debe estar previsto con un conjunto de colisiones activado