PARTE I
10 '*****************UNIVERSIDAD DON BOSCO******************
20 '* FUNDAMENTOS DE ROBÓTICA *
30 '* *
40 '* PRÁCTICA - 9 *
50 '* INTERRUPCIONES *
60 '* PARTE 1 *
70 '* Fecha: *
80 '* Comentarios: *
90 '* *
100 '*********************************************************
110 DEF POS HORNO ' Declaración variable posición HORNO
120 DEF POS OFFSET ' Declaración variable posición OFFSET
130 DEF POS P9 ' Declaración variable posición P9
140 HORNO = (0,0,+50,0,0,0) ' Definición de HORNO
150 OFFSET = (0,0,+60,0,0,0) ' Definición de OFFSET
160 DEF IO N_PASTEL = BIT,10
170 DEF ACT 1, M_IN(10) = 1 GOSUB *COCER ' Definición interrupción COCER
180 DEF ACT 2, M_TIMER(1) > 30000 GOSUB *RETIRAR ' Definición
interrupción RETIRAR
190 DEF INTE NPP ' Declaración variable entera NPP
200 DEF INTE CONTADOR ' Declaración variable entera CONTADOR
210 DEF INTE RAPIDO ' Declaración variable entera RAPIDO
220 DEF INTE LENTO ' Declaración variable entera LENTO
230 DEF PLT 1, P4, P5, P6, P7, 3, 3, 2 ' Definición del palet 1
240 SPD 500 ' Definición de la velocidad de movimientos interpolados a
500 mm/s
250 RAPIDO = 40 ' Definición de RAPIDO
260 LENTO = 15 ' Definición de LENTO
270
'........................................................................
..................
280 HOPEN 1 ' Abrir Pinza
290 OVRD RAPIDO ' Velocidad al 40%
300 MOV P1 ' Movimiento no interpolado a la posición P1
310 ACT 1 = 1 ' Habilita la interrupción 1
320 GOSUB *TOMAR_P ' Llama a la subrutina TOMAR_P
330 *INI ' Etiqueta INI
340 NPP = 1 ' Inicialización del contador NPP
350 CONTADOR = 0
360 WHILE (NPP <= 9) ' Mientras NPP sea inferior a 10, se ejecutará el
bucle del WHILE
370 P9 = (PLT 1, NPP) ' Asignamos el valor de una posición del palet a la
variable de posición P9
380 MOV P9 + OFFSET ' Movimiento no interpolado a la posición P9+OFFSET
390 OVRD LENTO ' Velocidad al 15%
400 WHILE (CONTADOR <= NPP) ' Mientras CONTADOR sea inferior a NPP, se
ejecutará el WHILE
410 MVS P9 ' Movimiento recto a la posición P9
420 DLY 0.5
430 MVS P9 + OFFSET ' Movimiento recto a la suma de coordenadas de P9 +
OFFSET
440 CONTADOR = CONTADOR + 1 ' Actualización del contador CONTADOR
450 WEND ' Fin del WHILE
460 OVRD RAPIDO ' Velocidad al 40%
470 NPP = NPP + 1 ' Actualización del contador NPP
480 WEND ' Fin del WHILE
490 GOTO *INI ' Salto a la etiqueta INI
500 END ' Fin del programa
510 '--------------------------------------------------------------------
-----------------
520 *TOMAR_P ' Inicio de la subrutina *TOMAR_P
530 OVRD RAPIDO ' Velocidad al 40%
540 MOV P2 + OFFSET ' Movimiento no interpolado a la posición P2+OFFSET
550 OVRD LENTO ' Velocidad al 15%
560 MVS P2 ' Movimiento recto a la posición P2
570 HCLOSE 1 ' Cierra pinza
580 DLY 0.5 ' Espera de 0.5 segundos
590 MVS P2 + OFFSET ' Movimiento recto a la suma de coordenadas de P2 +
OFFSET
600 OVRD RAPIDO ' Velocidad al 40%
610 RETURN ' Final de la subrutina AGARRAR_P
620 '--------------------------------------------------------------------
------------------
630 *DEJAR_P ' Inicio de la subrutina DEJAR_P
640 OVRD RAPIDO ' Velocidad al 40%
650 MOV P2 + OFFSET ' Movimiento no interpolado a la posición P2+OFFSET
660 OVRD LENTO ' Velocidad al 15%
670 MVS P2 ' Movimiento recto a la posición P2
680 HOPEN 1 ' Abrir Pinza
690 DLY 0.5 ' Espera de 0.5 segundos
700 MOV P2 + OFFSET ' Movimiento no interpolado a la posición P2+OFFSET
710 OVRD RAPIDO ' Velocidad al 40%
720 RETURN ' Final de la subrutina DEJAR_P
730 '--------------------------------------------------------------------
------------------
740 *COCER ' Inicio de la interrupción COCER
750 ACT 1 = 0 ' Deshabilita la interrupción 1
760 OVRD RAPIDO ' Velocidad al 40%
770 MOV P1 ' Movimiento no interpolado a la posición P1
780 GOSUB *DEJAR_P ' Llama a la subrutina DEJAR_P
790 MOV P3 + OFFSET ' Movimiento no interpolado a la posición P3+OFFSET
800 OVRD LENTO ' Velocidad al 15%
810 MVS P3 ' Movimiento recto a la posición P3
820 HCLOSE 1 ' Cierra pinza
830 DLY 0.5 ' Espera de 0.5 segundos
840 MVS P3 + OFFSET ' Movimiento recto a la suma de coordenadas de P3 +
OFFSET
850 OVRD RAPIDO ' Velocidad al 40%
860 MOV P8 + HORNO ' Movimiento no interpolado a la posición P8+OFFSET
870 OVRD LENTO ' Velocidad al 15%
880 MVS P8 ' Movimiento recto a la posición P8
890 HOPEN 1 ' Abrir Pinza
900 DLY 0.5 ' Espera de 0.5 segundos
910 MVS P8 + HORNO ' Movimiento recto a la suma de coordenadas de P8 +
HORNO
920 GOSUB *TOMAR_P ' Llama a la subrutina TOMAR_P
930 MOV P1 ' Movimiento no interpolado a la posición P1
940 ACT 2 = 1 ' Habilita la interrupción 2
950 M_TIMER(1) = 0 ' Inicialización del reloj a cero
960 RETURN 0 ' Final de la interrupción COCER
970 '--------------------------------------------------------------------
------------------
980 *RETIRAR ' Inicio de la interrupción RETIRAR
990 DLY 3 ' Espera de 3 segundos
1000 ACT 2 = 0 ' Deshabilita la interrupción 2
1010 OVRD RAPIDO ' Velocidad al 40%
1020 MOV P1 ' Movimiento no interpolado a la posición P1
1030 GOSUB *DEJAR_P ' Llama a la subrutina DEJAR_P
1040 MOV P8 + HORNO ' Movimiento no interpolado a la posición P8+HORNO
1050 OVRD LENTO ' Velocidad al 15%
1060 MVS P8 ' Movimiento recto a la posición P8
1070 HCLOSE 1 ' Cierra pinza
1080 DLY 0.5 ' Espera de 0.5 segundos
1090 MVS P8 + HORNO ' Movimiento recto a la suma de coordenadas de P8 +
HORNO
1100 OVRD RAPIDO ' Velocidad al 40%
1110 MOV P3 + OFFSET ' Movimiento no interpolado a la posición P3+OFFSET
1120 OVRD LENTO ' Velocidad al 15%
1130 MVS P3 ' Movimiento recto a la posición P3
1140 HOPEN 1 ' Abrir Pinza
1150 DLY 0.5 ' Espera de 0.5 segundos
1160 MVS P3 + OFFSET ' Movimiento recto a la suma de coordenadas de P3 +
OFFSET
1170 OVRD RAPIDO ' Velocidad al 40%
1180 GOSUB *TOMAR_P ' Llama a la subrutina TOMAR_P
1190 MOV P1 ' Movimiento no interpolado a la posición P1
1200 RETURN 0 ' Final de la interrupción RETIRAR
PARTE II
Modifique el programa para que se vuelvan a habilitar las interrupciones luego de
ejecutarlas, de manera que otra activación del pulsador de inicio de la cocción repita las
subrutinas de interrupción.
Modifique el programa para que ahora tenga un botón paro que lleve al robot a P1
y termine el programa.
Modifique el programa para que ahora tenga un botón paro que lleve al robot a P1
y termine el programa.
Modifique el programa para que ahora tenga un botón paro que lleve al robot a P1
y termine el programa.