Ejercicio 5.0

Anuncio
Práctica 5.0.
Subrutinas
El contenido difundido o publicado compromete exclusivamente a los autores.
Pallet de 3x3 con tres alturas.
Proyectos de innovación: CÉLULA ROBOTIZADA
• IES José del Campo – Ampuero (Cantabria). • Salesianos San Luis Rey – Palma del Rio (Andalucía). • IFPS Repelega – Portugalete (País Vasco). • CIFP Nº1 Simón de Colonia – Burgos (Castilla León). •
CIFP de los Sectores Industrial y Servicios – Gijón (Asturias). • INS Escola del Treball – Lleida (Catalunya). • Salesianos Virgen del Pilar – Zaragoza (Aragón). • IES Jaume I Ontinyent – (Comunidad
Valenciana). • IES Armeria Eskola – Eibar (Pais Vasco). • IES Miguel Altuna – Bergara (País Vasco). • IES Ribera del Arga – Peralta (Navarra). • Festo Pneumatic, S.A.U. (Barcelona).
INDICE
1. Bloque de ejercicios para familiarizarse con el código de Nivel 5. SUBRUTINAS ........... 3
1.1.- ENUNCIADO .............................................................................................................................................. 3
1.2.- Conocimientos previos. ............................................................................................................................... 3
1.2.1.- Sintaxis de la instrucción GOSUB. ........................................................................................................... 3
1.2.2.- Sintaxis de la instrucción RETURN. ......................................................................................................... 4
1.2.3.- Sintaxis de la instrucción GOTO. ............................................................................................................. 5
1.3.- Descripción de las entradas, salidas y instrucciones a utilizar. ...................................................................... 5
1.4.- Elementos del programa / simulación........................................................................................................... 5
1.5.- Descripción del programa............................................................................................................................ 6
1.6.- Programa a realizar..................................................................................................................................... 6
Proyectos de Innovación: Célula Robotizada
Practica 5.0 Pallet doble 3x3 Subrutinas.doc
Página 2 de 8
1. BLOQUE DE EJERCICIOS PARA FAMILIARIZARSE CON EL CÓDIGO DE NIVEL 5.
SUBRUTINAS
1.1.- ENUNCIADO
Se desea construir 1 pallet de 3x3 piezas, con tres alturas. Primero se realizará el
programa sin subrutinas, una vez esté en funcionamiento se pasará a programarlo con
una subrutina.
Para iniciar el proceso será necesario esperar a que existan piezas al final de la rampa. Esto se
identificará mediante PART_AV. Las piezas son aportadas al proceso, por lo que se deberá
identificar el color de la pieza y llevarlo al pallet correspondiente. Hasta que no esté el pallet
completo se seguirán aportando piezas. Una vez que se alcancen las 27 piezas del pallet, el
proceso se detendrá.
1.2.- Conocimientos previos.
En esta práctica ya debemos controlar operaciones como OVDR, SPD de control de velocidad
del equipo; operaciones de MOV, MVS, etc., como movimientos del brazo robot; bucles de
control con las instrucciones WHILE / WEND; y definición de variables como serán INTE, POS,
IO, PLT.
1.2.1.- Sintaxis de la instrucción GOSUB.
La explicación de la expresión es Go Subroutine.
Función: Es acceder a la subrutina que se llama en la etiqueta que acompaña a la instrucción.
En la sintaxis la podemos encontrar como <Call destination>. Es el parámetro que la
acompaña.
Sintaxis: GOSUB <Call destination>
Parámetros: <Call Destination> Describe el nombre de la etiqueta.
Explicación: Aunque se puede llamar al parámetro de la forma que podamos identificarla por
su lectura, se recomienda que cuando se llame a una subrutina en el programa base, utilice un
nombre de etiqueta que comienza con "L_" (label). Hay que tener presente que se ejecutará
cuando se llame y a cuantas etiquetas tengan el mismo nombre la rutina del programa será
ejecutada.
Proyectos de Innovación: Célula Robotizada
Practica 5.0 Pallet doble 3x3 Subrutinas.doc
Página 3 de 8
1.2.2.- Sintaxis de la instrucción RETURN.
Función: Cuando se utiliza en un subprograma o en una subrutina, hace que se regrese a la
instrucción siguiente a la que se produjo la llamada.
Sintaxis: En una subrutina tiene la función de retorno sin que le acompañe un parámetro, por
lo que la instrucción queda como RETURN.
Sintaxis en interrupciones: Al utilizarse en interrupciones se debe acompañar a la instrucción
RETURN de los valores que nos permitan saber donde se retorna después de haberse
ejecutado las instrucciones de la interrupción.
RETURN 0 Devolver el control a la línea donde se generó la interrupción.
RETURN 1 Devolver el control a la siguiente línea después de la línea donde se emitió
la alarma.
Explicación:

Cuando hay un comando RETURN en una subrutina normal con un retorno al número
de designación, y cuando hay un comando RETURN en una subrutina de interrupción
de procesamiento sin retorno a número de destino, se producirá un error.

Escribe la instrucción de retorno al final de la tramitación destino del salto llamado por la
instrucción GOSUB

Se produce un error si la instrucción RETURN se ejecuta sin ser llamado por la
instrucción GOSUB.

Utilice siempre la instrucción RETURN para volver de una subrutina cuando es llamado
por la instrucción GOSUB. Se produce un error si la instrucción GOTO se utiliza para
devolver, porque la memoria libre disponible para la estructura de control (memoria de
pila) se reduce y, finalmente, se vuelve insuficiente.
Proyectos de Innovación: Célula Robotizada
Practica 5.0 Pallet doble 3x3 Subrutinas.doc
Página 4 de 8
1.2.3.- Sintaxis de la instrucción GOTO.
Función: Es un salto incondicional a la etiqueta que acompaña a la instrucción.
Sintaxis: GOTO <etiqueta destino>
Parámetros: <etiqueta destino>
Explicaciones:
GOTO no se puede mandar a una etiqueta en el programa base. Así pues, incluso si el nombre
de la etiqueta es designada en el programa de base, el error de ningún salto destino se
producirá.
1.3.- Descripción de las entradas, salidas y instrucciones a utilizar.
Nombre
PART_AV
Descripción
Sensor al final de rampa de aporte
Dirección
Función
Bit 6
Entrada
de piezas
1.4.- Elementos del programa / simulación
Proyectos de Innovación: Célula Robotizada
Practica 5.0 Pallet doble 3x3 Subrutinas.doc
Página 5 de 8
1.5.- Descripción del programa
Las piezas se irán incorporando al proceso por el módulo de rampa. En la peana del final de la
rampa hay un sensor (PART_AV) que detectará la presencia de pieza en este lugar.
Una vez que se han completado las tres alturas del pallet el proceso habrá terminado. En este
instante el brazo robot estará en reposo.
1.6.- Programa a realizar sin subrutinas
1.6.1.- Programa a realizar sin subrutinas
'----------------------------------------------------------------'
'Definimos las variables de posicionamiento para los puntos del
'palet como son las tres esquinas del mismo.
'----------------------------------------------------------------'
DEF POS P1
DEF POS P6
DEF POS P99
DEF POS P100 'Posicion incial del palet grabada en el lugar
DEF POS P101
DEF POS P102
'----------------------------------------------------------------'
'Definimos la variable de posicionamiento para la posion de
'seguridad del brazo.
DEF POS VECZ50
VECZ50 = (0.00, 0.00, +50.00, 0.00, 0.00, 0.00)
DEF POS VECZ25
VECZ25 = (0.00, 0.00, 00.00, 0.00, 0.00, 0.00)
'----------------------------------------------------------------'
'Definimos variables enteras para poder realizar el bucle while
'incrementando una variable como contador.
DEF INTE M
DEF INTE N
'----------------------------------------------------------------'
'Definimos la variable para usarla en el bucle para while/wend
'asignando el palet y el contador de piezas
DEF POS P70
'----------------------------------------------------------------'
'Asignamos valores a cada una de las posisciones de las esquinas
'del palet.
P101 = P100 + (100,0,0,0,0,0)
P102 = P100 + (0,-100,0,0,0,0)
'----------------------------------------------------------------'
'Definimos la entrada del sensor de la rampa para la puesta en
'marcha del robot
DEF IO Srampa = BIT, 6 'Detectro de pieza en rampa
'----------------------------------------------------------------'
'Definimos el palet.
DEF PLT 1, P100, P101, P102, ,3,3,2
'----------------------------------------------------------------'
'Velocidades
OVRD 50
SPD 50
'----------------------------------------------------------------'
'PROGRAMA.
*INICIO
MOV P99 'Llevamos el brazo a la posicion de seguridad
HOPEN 1 'Nos aseguramos que la pinza esta abierta
N =1
Proyectos de Innovación: Célula Robotizada
Practica 5.0 Pallet doble 3x3 Subrutinas.doc
Página 6 de 8
WHILE (N <= 3)
M = 1 'Asignamos el primer valor del palet
WHILE (M<=9) 'Iniciomos el bucle
*L0 'Permaneceremos en este lazo hasta que exista pieza en la
'rampa
IF Srampa = 0 THEN *L0
HOPEN 1 'Nos aseguramos que la pinza esta abierta
MOV P99 'Llevamos el brazo a la posicion de seguridad
DLY 0.5
MOV P1 + VECZ50 'Nos desplazamos a la posicion 1 con seguridad
MVS P1 'Desplazamiento lineal hasta P1
DLY 0.5
HCLOSE 1 'Cerramos la pinza
DLY 0.5
MVS P1 + VECZ50 'Nos desplazamos a la posicion 1 con seguridad
MOV P100 + VECZ50 + VECZ25 'Nos desplazamos a la posicion 100 con
'seguridad
P70 = (PLT 1, M)+ VECZ25
MOV P70 + VECZ50 'Nos desplazamos a la posicion 70 con seguridad
MVS P70 'Y nos movemos linealmente hasta la posicion
DLY 0.5
HOPEN 1
DLY 0.5
MVS P70 + VECZ50 'Nos desplazamos a la posicion 70 con seguridad
M = M + 1
MOV P99
WEND
N = N +1
VECZ25 = VECZ25 + (0.00, 0.00, +25.00, 0.00, 0.00, 0.00)
WEND
GOTO *INICIO
End
1.6.2.- Programa a realizar con subrutinas
'----------------------------------------------------------------'
'Definimos las variables de posicionamiento para los puntos del
'palet como son las tres esquinas del mismo.
'----------------------------------------------------------------'
DEF POS P1
DEF POS P6
DEF POS P99
DEF POS P100 'Posicion incial del palet grabada en el lugar
DEF POS P101
DEF POS P102
'----------------------------------------------------------------'
'Definimos la variable de posicionamiento para la posion de
'seguridad del brazo.
DEF POS VECZ50
VECZ50 = (0.00, 0.00, +50.00, 0.00, 0.00, 0.00)
DEF POS VECZ25
VECZ25 = (0.00, 0.00, 00.00, 0.00, 0.00, 0.00)
'----------------------------------------------------------------'
'Definimos variables enteras para poder realizar el bucle while
'incrementando una variable como contador.
DEF INTE M
DEF INTE N
'----------------------------------------------------------------'
'Definimos la variable para usarla en el bucle para while/wend
'asignando el palet y el contador de piezas
DEF POS P70
'----------------------------------------------------------------'
'Asignamos valores a cada una de las posisciones de las esquinas
'del palet.
P101 = P100 + (100,0,0,0,0,0)
Proyectos de Innovación: Célula Robotizada
Practica 5.0 Pallet doble 3x3 Subrutinas.doc
Página 7 de 8
P102 = P100 + (0,-100,0,0,0,0)
'----------------------------------------------------------------'
'Definimos la entrada del sensor de la rampa para la puesta en
'marcha del robot
DEF IO Srampa = BIT, 6 'Detectro de pieza en rampa
'----------------------------------------------------------------'
'Definimos el palet.
DEF PLT 1, P100, P101, P102, ,3,3,2
'----------------------------------------------------------------'
'Velocidades
OVRD 50
SPD 50
'----------------------------------------------------------------'
'PROGRAMA.
*INICIO
MOV P99 'Llevamos el brazo a la posicion de seguridad
HOPEN 1 'Nos aseguramos que la pinza esta abierta
N =1
WHILE (N <= 3)
M = 1 'Asignamos el primer valor del palet
GoSub *RellenarAltura
N = N +1
VECZ25 = VECZ25 + (0.00, 0.00, +25.00, 0.00, 0.00, 0.00)
WEND
GOTO *INICIO
End
*RellenarAltura
WHILE (M<=9) 'Iniciomos el bucle
*L0 'Permaneceremos en este lazo hasta que exista pieza en la
'rampa
IF Srampa = 0 THEN *L0
HOPEN 1 'Nos aseguramos que la pinza esta abierta
MOV P99 'Llevamos el brazo a la posicion de seguridad
DLY 0.5
MOV P1 + VECZ50 'Nos desplazamos a la posicion 1 con seguridad
MVS P1 'Desplazamiento lineal hasta P1
DLY 0.5
HCLOSE 1 'Cerramos la pinza
DLY 0.5
MVS P1 + VECZ50 'Nos desplazamos a la posicion 1 con seguridad
MOV P100 + VECZ50 + VECZ25 'Nos desplazamos a la posicion 100 con
seguridad
P70 = (PLT 1, M)+ VECZ25
MOV P70 + VECZ50 'Nos desplazamos a la posicion 70 con seguridad
MVS P70 'Y nos movemos linealmente hasta la posicion
DLY 0.5
HOPEN 1
DLY 0.5
MVS P70 + VECZ50 'Nos desplazamos a la posicion 70 con seguridad
M = M + 1
MOV P99
WEND
Return
Proyectos de Innovación: Célula Robotizada
Practica 5.0 Pallet doble 3x3 Subrutinas.doc
Página 8 de 8
Descargar