95910470 Manual Prog Crs

50
PROGRAMACIÓN ROBOTS CRS RAPL-3

Transcript of 95910470 Manual Prog Crs

Page 1: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

RAPL-3

Page 2: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

INDICE

1) Introducción. 4 2) Controlador. 6

3) Botones de emergencia 7

4) Control de una sola Persona. 7

5) Iniciar el Sistema. 7

6) Apagar el Sistema. 8

7) Programador Manual (Teach pendant). 8

8) Características del Teach Pendant. 8

9) Cambio de Control. 11

10) Mover el Robot. 12

11) Sistema de Coordenadas. 12

12) Home. 15

13) Enseñar Posiciones. 16

14) Crear una Aplicación. 16

15) Edición de un Programa. 17

16) Cambio de Posiciones con el Teach. 21

17) Cambio de Posiciones desde la Computadora. 22

18) Tipos de variables. 22

19) Matriz. 22

2

Page 3: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

20) Creación de nuevas Variables. 23

21) Asignación de Valores a Variables. 23

22) Control de Flujo. 24

23) Puerto de Entradas y Salidas de Propósito General (GPIO). 26

24) Subrutinas y Funciones. 27

25) Subprogramas utilizados más frecuentes. 28

26) Programas. 31

27) Referencia 50

3

Page 4: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

INTRODUCCIÓN. La marca CRS cuenta con cuatro modelos diferentes de robots con características diferentes para cubrir necesidades específicas. Los modelos son los siguientes:

• CataLyst 3.

• CataLyst 5.

• A 465.

• F 3. Las características de los cuatro modelos de robots son los siguientes: CataLyst 5.

Grados de libertad : 5 Carga Nominal : 1 kg. Alcance : 660 mm. Repetibilidad : ± 0.05 mm

Eje Rango Velocidad Aceleración Troqué 1 ± 180 ° 210 °/s 500 °/s² 9.6 N m 2 0° a +110° 210 °/s 500 °/s² 9.6 N m 3 -125° a 0° 210 °/s 500 °/s² 9.6 N m 4 ± 110° 551 °/s 1836 °/s² 3.4 N m 5 ± 180° 1102 °/s 3673 °/s² 1.7 N m

4

Page 5: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

A 465.

Grados de libertad : 6 Carga Nominal : 2 kg. Alcance : 710 mm. Repetibilidad : ± 0.05 mm

Eje Rango Velocidad Aceleración Torqué 1 ± 175 ° 180 °/s 720 °/s² 39.5 N m 2 ±90° 180 °/s 720 °/s² 39.5 N m 3 ±110° 180 °/s 720 °/s² 39.5 N m 4 ± 180° 171 °/s 1430 °/s² 6.9 N m 5 ± 105° 173 °/s 1430 °/s² 6.9 N m 6 ± 180° 171 °/s 1430 °/s² 2.9 N m

F3.

Grados de libertad : 6 Carga Nominal : 3 kg. Alcance : 710 mm. Repetibilidad : ± 0.05 mm

Eje Rango Velocidad Aceleración Troqué 1 ± 180° 240 °/s 879 °/s² 74.5 N m 2 -135 a +45° 240 °/s 879 °/s² 74.5 N m 3 ±135° 240 °/s 879 °/s² 74.5 N m 4 ± 180° 375 °/s 1098 °/s² 16.6 N m 5 ± 135° 300 °/s 1098 °/s² 16.6 N m 6 ± 4096 vueltas 375 °/s 1098 °/s² 16.6 N m

5

Page 6: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

Estos cuatro modelos de robots cuentan para su control con el Controlador C500C, el cual tiene la capacidad de manipular cualquiera de los robots. No por ello quiere decir, que si se cuenta con varios robots y controladores estos se pueden intercambiar. Esto es debido a que cada controlador dependiendo del brazo que se seleccione, cuenta con una configuración interna diferente, así como su calibración personalizada. El controlador se muestra en la siguiente imagen:

Dentro del sistema mínimo necesario para que el sistema se encuentre operando es indispensable tener lo siguiente:

• Brazo.

• Controlador.

• Cables Umbilicales.

• Software. Los cables umbilicales son los que comunican tanto la alimentación eléctrica al robot así como la retroalimentación del mismo para su adecuado funcionamiento. De igual forma existen otros componentes adicionales al sistema como lo son el Teach Pendant y el Modulo de Entradas y salidas de Propósito General (GPIO).

6

Page 7: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

BOTONES DE EMERGENCIA. Cuando se oprime un botón de emergencia, se aplican los frenos a todos los ejes, desacelera, deshabilita la alimentación del robot. Para volver a habilitar, se restablece el botón de emergencia, se alimenta al robot (es necesario liberar el botón de emergencia, para poder alimentar al robot). Además el teach cuanta con un interruptor (switch live man) para poder mover el robot, este debe estar oprimido durante el movimiento del robot. Requisito internacional de seguridad. El botón de emergencia se muestra en la siguiente imagen:

CONTROL DE UNA SOLA PERSONA. Solo puede ser movido por una persona, ya sea por medio del teach o por la computadora. INICIAR EL SISTEMA. Encender interruptor del controlador, esperar mensaje en display C500C CROS, comprobar que los botes de emergencia estén libres y oprimir ARM POWER (alimentación del robot).

7

Page 8: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

APAGAR EL SISTEMA.

Desde el controlador. Mantener oprimido Home, oprimir después pause / continue soltar pause / continue y finalmente soltar home, y esperar el mensaje en display de cristal liquido “system halted”, ahora si apagar el interruptor del controlador.

Desde la ventana terminal. Escribir en el prompt “shutdown now” , y esperar por el mensaje en el display de cristal liquido “system halted”, hasta que aparezca el mensaje se debe apagar el interruptor del controlador

PROGRAMADOR MANUAL (TEACH PENDANT). El programador manual es una herramienta para mover el robot, enseñar posiciones, crear variables y correr programas. Una vez que la aplicación ya esta iniciada, por medio de variables aprendidas (teachables) es posible guardar posiciones, iniciar variables, etc.

CARACTERÍSTICAS FÍSICAS DEL PROGRAMADOR MANUAL (TEACH PENDANT).

• Teclado • Interruptor de seguridad • Paro de emergencia • Pantalla • Sonidos

Teclado. Muchas de las teclas son multifunciones, dependiendo de la aplicación es la función que realizan.

8

Page 9: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

Teclas de función. Cada menú tiene una tecla de función, estas teclas son asignadas en la parte baja de la pantalla. F1 a F4.

Teclas de ejes. Se emplean para mover el robot. La respuesta del eje a mover depende del modo y sistema de movimiento empleado. Flechas en verde parte izquierda.

Teclas de movimiento. Tienen una función especifica. Teclas con un cuadro de color verde parte superior derecha del programador.

TECLA FUNCIÓN GRIP Abrir o cerrar gripper HOME Mover cada eje al punto de

Referencia READY Ir a posición ready LIMP ALL Liberar ejes del robot NOLIMP ALL Mantener en la posición ejes MOVE Ir a la posición seleccionada SPEED UP SPEED DOWN

Incrementar velocidad Disminuir velocidad

Teclas de matriz.

Se emplean en matrices para seleccionar la variable. Teclas con un cuadro amarillo parte derecha del programador.

TECLA FUNCIÓN FIRST Seleccionar el primer elemento LAST Seleccionar el ultimo elemento TYPE No usado UP Incrementar índice DOWN Decrementar índice

9

Page 10: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

Teclas de entrada de datos.

Cada tecla de eje (flechas verdes), de movimiento (cuadro verde) y de matriz (cuadro amarillo) también cuentan con letras o números. Estas teclas representan.

TECLA FUNCIÓN Letras Se usan para crear una variable, Seguridad.

Y para búsqueda de variables o aplicaciones Números Seleccionar un determinado índice de matriz,

O crear una variable y especificar el tamaño SHIFT Se usa junto con F1 para mostrar una

bitácora de errores

Interruptor de Seguridad (live-man switch).

El interruptor de seguridad del programador manual (cuenta con tres posiciones. Cuando se oprime ligeramente, esta en habilitando el movimiento. Mientras que si se presiona fuertemente o se suelta esta deshabilitando el movimiento. Si se quitar la condición de habilitar durante este movimiento provoca la interrupción de alimentación del brazo y por esto el brazo se para súbitamente.

Botón de emergencia. Por razones de seguridad interrumpe la alimentación del robot.

Pantalla. Los diferentes menús son mostrados por medio de la pantalla. Por medio de las teclas de función se puede acceder. Por medio de la tecla ESC se va al menú anterior

10

Page 11: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

Sonidos. El programador manual esta equipado con una pequeña bocina que es capaz de producir un sonido, estos sonidos tienen un significado SONIDO EVENTO EJEMPLO Corto y grave Una tecla valida a sido

Oprimida Desde el menú Aplicación oprimir F1

Corto y agudo Una tecla no valida a sido oprimida

Desde el menú Aplicación oprimir move

Tres cortos y agudos

Se ha inicializado una acción y necesita confirmación

Desde el menú manual Oprimir Home

Largo y agudo Error Desde el menú manual Oprimir Home estando apagado el robot

CAMBIO DE CONTROL.

Del teach a la computadora. Para cambiar el control de teach a la computadora se debe oprimir ESC hasta que sale el mensaje “Terminate pendant and release robot control”, y oprimir F1 para enviar el control a la computadora. En el teach debe aparecer un mensaje “Pendant Off”.

De la computadora al teach. Para cambiar el control de la computadora al teach dentro del programa Robcomm 3 y abierta la ventana terminal, escribir “pendant”, envía el control al teach.

11

Page 12: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

MOVER EL ROBOT. Para mover el robot, es necesario especificar el tipo de movimiento y el sistema de coordenadas. Entre los tipos de movimiento tenemos el jog , se desplaza una cantidad especificada cada vez que oprimimos una tecla, según sea el sistema, se desplaza grados o distancia. Y mover cada eje en forma continua. SISTEMAS DE COORDENADAS. Existen 4 sistemas de coordenadas, si no se va a home esta limitado a una velocidad del 10% y un sistema de eje.

1. Eje (joint) 2. Sistema cartesiano 3. Sistema cilíndrico 4. Sistema herramienta

Sistema de coordenadas por Eje (joint). Se mueve cada eje en forma independiente. Cuando no se ha enviado a home es el único sistema que se puede acceder, con una velocidad máxima de 10% antes de enviar a home, desde la ventana terminar, escribir el eje a mover y la distancia “joint 1,5”, o por medio del teach, seleccionar el tipo de movimiento, el sistema joint F3 y F4 respectivamente y la velocidad. La numeración de los ejes va de la base hasta el efector final.

12

Page 13: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

Sistema cartesiano (world). Toma como origen el centro de la base del robot. COORDENADA TECLA DESCRIPCIÓN

Eje x 1 Mover efector final adelante – atrás Eje y 2 Mover efector final derecha – izquierda Eje z 3 Mover efector final arriba - abajo Rotación Z 4 Rotar el efector final en base al eje Z Rotación Y 5 Rotar el efector final en base al eje Y Rotación X 6 Rotar el efector final en base al eje X

Desde la ventana de la terminal escribir el eje a mover y la distancia, “wx 5” , “wy 10” , etc.

13

Page 14: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

Sistema cilíndrico.

COORDENADATECLA EJE DESCRIPCIÓN θ (theta) 1 mover la base del robot Radio R 2 Extender o contraer efector final

horizontalmente a lo largo del vector Altura 3 Mover verticalmente hacia arriba o abajo el

efector final Cil.- Yaw 4 Rotar el efector final en base al eje vertical Cil-Pitch 5 Rotar efector final arriba o abajo Cil-Roll. 6 Rotar efector final en base a la línea horizontal formada en

efector final y el robot. Este sistema solo puede ser usado desde el programador manual (teach pendant).

14

Page 15: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

Sistema de coordenadas herramienta.

Este sistema toma como referencia el efector final, gripper, se tiene que especificar el origen del efector final (TCP-Tool Center Point). En base al efector final Eje X adelante – atrás Eje Y derecha – izquierda Eje Z abajo – arriba Desde la ventana terminal tx distancia, ty distancia, etc

MANDAR A HOME.

Cuando se inicia el robot es necesario mandar a home, como los encoders son increméntales se deben poner a cero en una posición ya especificada.

Mandar a home en forma manual.

Existen marcas dentro de cada eje, deben estar los ejes sobre esa marca para poder enviar a home, cuando ya están en la marca desde el teach. Dentro del menú movimiento, oprimir F1 para que se vaya a home mantener oprimido el interruptor de seguridad, hasta que termine el movimiento. Desde la terminal, escribir en el prompt “home”.

15

Page 16: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

ENSEÑAR POSICIONES.

Para enseñar una posición debe existir una variable donde guardar la posición,

Desde el teach.

1. Comando tch 2. F1 (var) 3. Nombre de la variable 4. make, type y dim (especificar el tipo, y la dimensión de la variable) 5. Ir a posición a guardar 6. Oprimir F1 (tch) 7. Si se desean más variables seguir paso 1

Desde la terminal. Es necesario estar en una aplicación par poder lograrlo. Dentro de la aplicación se mueve el brazo y se guarda la posición. Con el comando “here nom” donde nom es el nombre de la variable.

CREAR UNA APLICACIÓN Dentro de Robocomm3

1. Seleccionar el puerto de comunicación y la velocidad de transmisión / recepción 2. Crear un nuevo documento (Editor de texto) 3. Crear una aplicación(archivo a enviar al controlador)

Cada programa debe tener un main y un end main, es la parte del programa que ejecuta el controlador siempre.

16

Page 17: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

EDICIÓN DE UN PROGRAMA. Para realizar un programa es necesario seguir los pasos que a continuación se enumeran:

1) Abrir el Robcomm3.

2) Crear una Aplicación. En el menu Application, seleccionar New Application.

17

Page 18: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

En ese momento aparecerá un cuadro de mensaje en donde pedirá el nombre de la aplicación que se desea generar.

Nota: Evitar borrar la extensión app.. Una vez que se ha realizado la aplicación, si se desea se puede verificar la creación de los archivos que componen la aplicación, esto se hace en el menu Application en su opción Setup, como de muestra a continuación.

18

Page 19: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

3) Ingresar el Programa. En esta parte es donde se va a capturar todo el código del programa que será ejecutado por el robot cuando esta sea terminada. Para ingresar al editor de programas del RAPL – 3 en el menú Archivo seleccionamos New y en la pantalla que aparece será donde vamos a capturar el código.

4) Compilar el programa. Para compilar el programa es necesario seleccionar el icono de compilación. Al seleccionar este icono nos va a mandar un cuadro de diálogo si existen errores o si el programa se encuentra correctamente creado manda otro mensaje.

5) Enviar el Programa.

19

Page 20: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

Al enviar el programa lo que estamos realizando es enviar el código hacia el controlador. Para esto es indispensable que la configuración del puerto por la cual nos estamos comunicando con el controlador sea el correcto y la velocidad se encuentre a 57600 bauds. Para enviar el programa será necesario seleccionar la opción de los iconos del menú.

Una vez que se haya finalizado este paso, el programa y la aplicación ya se encuentran cargados en el controlador. Para manipular esta aplicación desde la PC es necesario abrir la Terminal, esta es una pantalla negra en donde ingresaremos el comando ash después del prompt $ y aparecerán los nombres de las aplicaciones existentes en el controlador. La pantalla se muestra en las siguiente imagen.

Desde aquí será posible enseñar variables, ejecutar los programas y mover el robot de forma manual.

20

Page 21: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

Ejemplo main teachable cloc a,b ;;declarar variables move(a) ;;moverse a posicion a move(b) ;;moverse a posicion b ready() ;;ir a posicion ready end main ;;termina el programa Para poder enviarlo al controlador es necesario compilarlo, (cambia de lenguaje), y posteriormente si no existe algún error enviarlo a controlador. Para correr el programa desde el teach seleccionar la aplicación y oprimir F2 para que corra, antes de que se mueva el brazo se debe oprimir pause / continue, como seguridad, se debe verificar que no exista algo dentro del área de trabajo del robot que le impida realizar sus movimientos o una persona dentro del área. Para correr el programa desde la computadora, dentro de Robocomm 3 y en la termina seleccionar la aplicación escribir “ash” (stands for applications shell) e indica cuales aplicaciones tenemos, escribir el nombre de nuestra aplicación y finalmente escribir “run”. También se debe oprimir pause / continue, como seguridad, se debe verificar que no existe algo dentro del área de trabajo del robot, para terminar el programa, si se quedo en un ciclo oprimir CTRL. + Z para interrumpir el programa.

CAMBIO DE POSICIONES CON EL TEACH. Comprobar que este el control en el teach.

1. Seleccionar aplicación 2. Escoger editar F1 3. Escoger variable F1 4. Seleccionar variable a editar 5. Seleccionar variable F1 6. Moverse a la nueva posición 7. Guardar posición (tch F1) 8. Confirmar que se desea guardar la variable (F1) 9. Oprimir ESC para regresar al menú anterior 10. Si se desea modificar mas variables seguir paso de 3 al 9

21

Page 22: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

CAMBIO DE POSICIONES DESDE LA COMPUTADORA.

Comprobar que este en la Aplicación correcta, (ventana terminal) ir a nueva posición, escribir “here variable”, y continuar cambiando posiciones si se desea cambiar más posiciones.

TIPOS DE VARIABLE.

SÍMBOLO PREFIJO TIPO Int Ninguno Entero

float % Fracción string $ Cadena cloc _ Posición cartesiana ploc # Posición de precisión

Todas estas variables su valor puede ser asignado desde el teach (teachable), es útil como contadores, enviar mensajes y posiciones.

MATRIZ. También existe la posibilidad de crear matrices multidimensionales, el único problema es que no pueden ser teachable las matrices de dos dimensiones si son de tipo cadena, y mayor de tres dimensiones ninguna variable puede se teachable.

22

Page 23: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

CREACIÓN DE NUEVAS VARIABLES.

Desde el teach. Asegurarse que esta en la aplicación, correcta.

1. F1 (var) 2. Nombre de la variable 3. type (F2) y dim (F3) especificar el tipo, y tamaño de la variable 4. crear variable (F1) 5. Si se desean más variables seguir paso 1 al 5

Desde le ventana terminal. Asegurarse que esta en la aplicación correcta.

1. new prefijo nombre ;emplear el prefijo de la variable.

ASIGNACIÓN DE VALORES DE VARIABLES TEACHABLES. Desde el teach.

1. Seleccionar aplicación. 2. Seleccionar editar F1. 3. Seleccionar var F1. 4. Desplazarse con F3 o F4 hasta encontrar variable. 5. Asignar valor. 6. ESC para regresar a menú anterior. 7. Se desean modificar mas variables ir a paso 4.

Desde la computadora. Asegurarse que esta en la aplicación correcta. En el prompt de la ventana terminal escribir Set = nombre = valor Nombre = nombre de la variable Valor = valor de la variable

23

Page 24: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

CONTROL DE FLUJO.

1. BREAK 2. LOOP 3. CASE 4. WHILE 5. FOR 6. DO 7. IF 8. GOTO

BREAK Salir de un ciclo, loop, while, do, for, do, if

LOOP

Hacer un ciclo Ejemplo loop move (a) move(b) end loop

CASE Hacer varias comparaciones. Según la comparación es lo que realiza. Ejemplo int contado case contado ;;comprobar estado de contador of 0: ;;si es igual cero move(a) ;;muévete a posición a of 2,3,5: ;;si es igual 2 , 3 o 5 move (b) ;;muévete a posición b of 6 to 30: ;;si esta dentro del rango 6 a 30 ready() ;;ve a ready end case

24

Page 25: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

WHILE Hacer un ciclo mientras la sentencia sea verdadera Ejemplo While (contador < 5] ;;mientras que el contador sea menor a 5 move(a) ;;ir a posición a move(b) ;;ir a posición b contador = contador + 1 ;;incrementar contador end while

FOR

Realizar un ciclo un determinado numero de veces, Ejemplo For x= 1 to 10 ;;sentencia inicio y final Move posicion(x) ;;ciclo a realizar End for

DO Hacer un ciclo, pero prueba la condición hasta el final, en el caso de while la prueba antes de empezar, al menos se realiza una vez. do move(a) ;;ir a posición a move(b) ;;ir a posición b contador = contador + 1 ;;incrementar contador until contado > 5 ;;hasta que el contador mayor a 5

IF Si es cierta la condición se realiza el ciclo, para salir por medio de un break a un goto (ir a una lugar especificado por una etiqueta)

25

Page 26: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

if (contador < 5] ;;si en contador es menor a 5 move(a) ;;ir a posición a move(b) ;;ir a posición b else if (contado >5) ;;si en con move(b) ;;ir a posición b move(a) ;;ir a posición c end if

GOTO Ir a una etiqueta.

PUERTO DE ENTRADA / SALIDA DE PROPÓSITO GENERAL (GPIO).

Con su nombre lo indica es un puerto de entradas / salidas el cual cuanta con :

• 16 entrada opto aisladas, NPN • 12 salidas opto aisladas NPN • 4 salidas a relevador, con salida normalmente abierta y salida normalmente cerrada,

conectadas a línea común • Una entrada analógica de 0 a 5 volts

Fuente externa. Soporta una fuente de voltaje de 20 a 28 VCD. Se tiene opto aisladas las entradas.

Fuente Interna. No se tiene las entradas opto aisladas. La fuente interna es 24 VCD.

Consideraciones. No soporta una diferencia de 50 volts CD Las salidas y las entradas no deben exceden de 1 A en todo el puerto si se emplea la fuente interna Las salidas a relevador no deben exceder 2 A 30 VCD, no soportan corriente alterna.

26

Page 27: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

PARA LEER UNA ENTRADA. input (int canal) ; canal numero de entrada

PARA HABILITAR LAS SALIDAS. output_set(int canal, int estado) SUBRUTINAS Y FUNCIONES.

Subrutinas. Una subrutina es un subprograma el cual puede tomar cualquier numero de argumentos (inclusive ninguno), no regresa ningún valor al programa principal. Se emplea cuando se repiten varios comandos y se quiere ahorrar espacio. Para no estar escribiendo cada vez, Formato para crear una subrutina. sub sub_indicador (parámetros) declaración end sub Formato para llamar una subrutina. Identificador_sub (parámetro) El tipo de parámetro debe coincidir con el especificado en la declaración de la subrutina, (un error común) también deben coincidir el numero de parámetro. Funciones. Una función es similar a una subrutina, solo que las funciones regresar un valor al programa principal, este puede ser int, flota, ploc, cloc o incluso un apuntador para una cadena, ya que no puede regresar una cadena. Formato func tipo identificador_func (parámetros)

27

Page 28: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

declaraciones return end func Al menos debe de contar con un return ya que indica que valor se envia al programa. Formato para llamar una función. Existen dos formas de llamar una función.

• Como parte de una expresión • Por ella misma como una condición

SUBPROGRAMAS UTILIZADOS MAS FRECUENTEMENTE.

Para ver todos los subprogramas se recomienda ver el archivo RAPL –3 Language Reference Guide.pdf ya que aquí solo se muestran algunos. Se agruparon según la tarea que realizan.

• Entrada analógica • Calibración • Entradas y salidas digitales • Panel frontal • Gripper • Home • Posición • Movimiento

ENTRADAS ANALÓGICAS.

analogs_get Regresa en valor de las ocho entradas analógicas al controlador C500C

boardtemp_get Regresa la temperatura en grados centígrados de la tarjeta

del controlador C500C

28

Page 29: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

CALIBRACIÓN. calrdy Mover robot a posición de calibración

motor Rotar en motor un especifico numero de pulsos

pos_get Obtener posición del robot pos_set Poner posición del robot ready Mover el robot a posición ready ENTRADAS Y SALIDAS DIGITALES. input Regresa el estado de una entrada

inputs Regresa un mapa estado de las entradas digitales

output_get Regresa estado de una salida output_pulse Poner la salida en un estado, espera y cambia

de estado output Poner el estado de una salida outputs_set Poner estados en salidas

PANEL FRONTAL.

Existen cinco botones de los cuales por medio del RAPL-3 se pueden programar. Los botones no tienen interruptores para estar en ON u OFF. Cuando se oprime el botón mientras se oprime se mantiene ON y cuando se suelta regresa a OFF. Los botones se encuentran etiquetados como sigue onbutton Espera por un botón que sea oprimido panel_button Regresa cierto si un botón es oprimido panel_button_wait Espera por un botón en particular panel_buttons Regresa el estado de los botones panel_light_get Obtiene estado de una luz panel_light_set Pone el estado de una luz particular panel_lights_get Obtiene estado de las luces panel_lights_set Poner estado de las luces Los botones están numerado como sigue

29

Page 30: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

F1 = 1 F2 = 2 Pause continue = 4 Home = 8

GRIPPER.

grip Mover el los dedos del gripper una distancia grip_close Cerrar gripper grip_finish Mantener en espera el programa hasta que el

gripper termine su movimiento grip_open Abrir gripper

HOME. Home Especificar el home de ejes

POSICIÓN.

here Guardar posición

MOVIMIENTO.

appro Aproximarse a un punto, no forzar

movimiento en línea recta appros Aproximarse a un punto, forzar

movimiento en línea recta calrdy Ir a posición de calibración depart Alejarse dela posición departs Alejarse dela posición en línea recta finish Esperar hasta que no exista movimiento.

30

halt Para movimiento del robot

agapito
Note
Page 31: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

wx,wy,wz Mover el robot en sistema cartesiano zrot, yrot, xrot

wxs,wys,wzs Mover el robot en sistema cartesiano, forzar zrots, yrots, xrots en línea recta joint Mover un eslabon limp Quitar energía a motores lock Asegurar un eje move Ir a una posición moves Ir a una posición en línea recta nolimp Energizar motores después de un limp ready Ir a posición ready speed Velocidad unlock Liberar eje después de lock PROGRAMAS. Se muestran algunos programas, con la finalidad de ir adquiriendo la habilidad con programador manual para mover el robot, los diferentes tipos de movimiento, tipos de variables, puerto de entrada salida de propósito general, panel frontal, etc. Se trato de cubrir todos los aspectos del controlador hasta se realiza un programa para ejemplificar un proceso de multitarea, muy útil en proceso de control. En total son ocho los programas pero se pueden modificar, según las necesidades. Algunos que cuentan con diagrama de flujo, solo cuando intervienen en control de flujo en los otros casos no considere poner ya que el programa se realiza en forma lineal sin verificar alguna condición. Solo un caso especial de multitarea. Y el ultimo programas mas que nada se ejemplifica como utilizar los subprogramas incluidos en el controlador par monitorear el estado del robot. 1. Realizar un programa que haga una secuencia de cuatro puntos main teachable ploc a,b,c,d aqui:: speed(30) ready() move(a) move(b) move(c) delay(500) move(d) goto aqui

31

Page 32: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

end main

32

Page 33: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

2. Realizar una secuencia de cuatro puntos, además por medio de una variable dada por el teach realizar un ciclo

Variables

inicio

Hasta que Contador > Numero

Posiciones

Contador = 0

main

teachable cloc a,b,c teachable ploc d teachable int i int j ;;inicio del programa for j=0 to i ;;condicion

speed(40) ;;velocidad ready () ;;ir a posicion ready printf("Ir a posicion ready\n") move (a) ;;moverse a punto a printf("ir a punto a\n") moves (b) printf("ir a punto b\n") move (c) printf("ir a punto c\n") move (d) printf("ir a punto d\n") printf("numero de veces {} \n",j)

end for end main

33

Page 34: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

3. Realiza una secuencia, que se aproxime a ciertos puntos, llegue al punto, se aleje, hacer

esto bajando la velocidad. no si no si

Variables

Dentro de índice

Establecer índice

Posición de aproximación

Disminuir velocidad

Acercarse a posición

Ir a posición

Alejarse

Incrementar índice

Ir a posición

Fin del programa

inicio

34

Page 35: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

main teachable cloc [6] a ;;numero de posiciones teachable int max, aprox, punto int i, contador ;;contador y auxiliar contador = 0 ;;establecer valor del contador loop ;;ciclo i = 0 ;;establecer valor de índice speed(max) ;;velocidad do if (i == 1) or (i == 3) or (i==5) then ;;cuando sea igual alguno speed(aprox) ;;bajar la velocidad printf("aproximarse a[{}]\n",i) appros(a[i],30) ;;aproximarse en linea recta printf("moverse a[{}]\n",i) speed(punto) ;;disminuir la velocidad move (a[i]) ;;ir al punto finish() ;;esperar que llegue delay(1000) ;;demora printf("alejarse a[{}]\n",i) depart(30) ;;separarse del punto i=i-1 speed(max) ;;aumentar velocidad printf("moverse a[{}]\n",i) move (a[i]) ;; ir una posicion anterior finish() i=i+1 ;;recuperar contador printf(" i = {}\n",i) else speed(max) ;;ir a puntos de acercamiento printf("Moverse a mas [{}]\n",i) move (a[i]) end if i= i +1 ;;incrementar contador until i > 5 ready() ;;ir a posicion ready finish() contador = contador +1 ;;incrementar contador printf("fin secuencia N= {}\n",contador) ;;mensaje end loop end main

35

Page 36: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

4. Realizar una secuencia de puntos designados por una matriz de una dimensión, además

que cuente con un botón de inicio conectado al GPIO no

si no si

Numero de veces

Contador de filas

Contador de columnas

Ir a posición [i,j]

Incrementar fila

Dentro de limite

Botón de inicio

Variables

inicio

36

Page 37: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

main int i,j ;;contador teachable cloc [5]a ;;variables matriz teachable cloc [2]b teachable int k,l ;;variable numero de ciclos después (k) ;;aca:: ;;numero de ciclos a realizar (l) printf("\n BOTON \n") ;;mensaje delay(500) ;;demora while input(1) == 0 ;;espera hasta que se oprime botón delay(200) printf("\n OPRIMIR BOTON \n") end while ready() ;;ir a posicion ready printf ("\n Ciclos a realizar {} \n",l) printf ("\n numero de ciclos despues {}\n",k) for j=1 to l speed(20) ;;establecer velocidad if (j == k)

printf("Condicion si\n") for i=0 to 1 printf("aproximarse al punto b[{}]\n",i) appro(b[i],80)

finish() printf("moverse al punto b[{}]\n",i) move(b[i])

finish() printf("alejarse del punto b[{}]\n",i) depart(80)

finish() end for end if i=0 printf("move, ciclo = {}\n",j) ;;comentario while i < 5 ;;ciclo move (a[i]) ;;mover a posicion finish() ;;detener hasta que termine el movimiento printf("lugar a[{}]\n",i) ;;mostrar lugar visitado i = 1+i ;;incrementar contador end while speed(60) ;;fin del ciclo delay(900) ;;demora en milisegundos ready () ;;ir a posicion ready printf("Fin del ciclo move\n") ;;mensaje speed(10) printf("moves, ciclo = {}\n",j)

37

Page 38: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

for i=0 to 4 ;;ciclo for

moves (a[i]) ;;mover finish() printf("lugar a[{}]\n",i) ;;indicar posicion visitada end for speed(60) delay(900) ;;demora en milisegundos ready () ;;ir a posicion ready printf("fin del ciclo moves\n") end for printf("\n FIN DEL PROGRAMA\n") end main

38

Page 39: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

5. Secuencia empleando una matriz de dos dimensiones, emplear el GPIO y los botones del

panel frontal que son programables (F1 y F2) indicando que botones se deben oprimir por medio de las luces

SI NO

inicio

variables

Botón de inicio

Ver estado de entrada

Entrada = 1

β

α

Mientras este dentro del numero de columnas

Mientras este dentro del numero de fila

β

Ir a posición (fila, columna)

Fin del programa

Ir a posición ready

Esperar por botón del panel frontal

α

39

Page 40: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

;; funcion regresar el estado de una entrada func int estado(int entrada) return input(entrada) end func main int i,j,x,f1,f2 teachable cloc [2][4] posicion inicio:: printf("boton de inicio \n") while input (2) == 0 ;;esperar por botón de inicio delay(200) end while speed(40) ;;establecer valor inicial i = 0 for j = 0 to 1 ;;hacer un ciclo do x= estado(1) ;;checar botón if (x==1) printf("boton\n") ;;se oprimio boton 1 speed(60) printf("ready\n") ;;ir a posicion ready ready() finish() goto fin ;;fin de condición

end if move (posicion[i,j]) ;;moverse

finish() printf("posicion [{}],[{}] \n", i, j)

printf(" i = {}\n",i) ;;indicar valores de contadores printf(" j = {}\n",j) i = 1 + i ;;aumentar contador

until i == 4 ;;establecer limite i = 0 ;;restablecer contador end for printf("\nFIN SECUENCIA\n") ;;mensaje fin:: f1 = panel_button(1) ;;obtener estado de boton F1 printf("\nEstado de F1 = {}\n",f1) f2 = panel_button(2) ;;obtener estado de boton F2 printf("Estado de F2 = {}\n",f2) printf(" OPRIMIR F1 \n")

40

Page 41: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

while panel_button(1) == f1 ;;esperar hasta que cambie F1

panel_light_set(1,1) ;;hacer toggle a luz de F1 delay(200) panel_light_set(1,0) delay(200)

end while ready() finish() printf(" OPRIMIR F2 \n") ;;esperar que cambie F2 while panel_button(2) == f2 ;;hacer toggle a luz F2

panel_light_set(2,1) delay(200) panel_light_set(2,0) delay(200)

end while goto inicio ;;saltar a inicio end main

41

Page 42: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

6. Programar secuencia empleando una matriz de dos dimensiones, monitorear dos entradas

del GPIO con una reinicia el ciclo y con otra espera que se oprima un botón del panel frontal, se va a ready y se debe oprimir alguno de los dos botones del panel frontal, con uno re regresa a la posición donde se activo la entrada, y con otro termina el programa

no

si

si si no no si no

inicio

variables

Fila = 0 Columna = 0

Dentro de limite de fila

Dentro de limite de columna

Estado de entradas

Entrada(1) = 1

Ir a ready

Entrada(2) = 1

Panel

1

Ir a posición (i,j)

Incrementar columna

Ultima columna α

Ultima fila

Incrementar fila

Columna = 0

α

α

β

β

1

42

Page 43: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

si no

Ir a ready

Esperar por F1

F2 Recuperar posición

α Fin del programa

Esperar por F1

Panel

43

Page 44: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

func int estado(int entrada) return input(entrada) end func main

teachable cloc [3,4] pos int i,j,en1,en2,en3,f1,f2 loop

inicio:: i=0 ;;establecer condiciones iniciales j=0 print("entradas analogicas ",analogs_get,"\n") speed(40) ;;velocidad

ciclo:: do

do en1=estado(1) ;;asegurar estado de entradas en2=estado(2) en3=estado(3) if (en1==1) ;;entrada 1 printf("entrada 1 \n") while input(1)==1 delay(75) ;;esperar por libre boton

end while ready() ;;ir a posicion de inicio finish() goto inicio ;;continuar desde la primera posicion

end if if (en2==1) ;;entrada 2

printf("entrada 2 \n") goto fin ;;fin del programa end if if (en3==1) ;;no esta habilitada printf("error\n") end if move (pos [i,j]) ;;ir a posicion finish()

printf("posicion [{}],[{}]\n", i,j) j=j+1 ;; incrementar contador until j > 3 ;;establecer limite

i=i+1 ;;siguiente fila j = 0 ;;contador until i == 3 ;;limite de filas speed(60) ;;termina secuencia ready()

44

Page 45: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

finish() printf("fin secuencia\n")

end loop ;;fin del ciclo

fin:: ;;fin f1 = panel_button(1) ;;obtener estado de boton F1 printf("\nOprimir F1\npara que se vaya a ready\n") while panel_button(1) == f1 ;;esperar hasta que cambie estado

panel_light_set(1,1) ;;encender indicador delay(200) ;;del boton panel_light_set(1,0)

delay(200) end while delay(500) ;;demora while (panel_button(1)==1) ;;hasta que este libre el boton printf("suelta F1\n") ;;mensaje todavia esta oprimido el boton delay(200) end while ready() ;;continua ciclo finish() delay(800) ;;demora evita rebote f1 = panel_button(1) ;;esperar boton F1 f2 = panel_button(2) printf("\n Oprimir F1 para terminar\n \n Oprimir F2 para continuar en \n la posicion anterior\n") while (panel_button(1) == f1 ) ;;or panel_button(2) == f2 panel_light_set(3,1) if panel_button(2) != f2 apagar::

panel_light_set(3,0) printf("Regresa\ni = {}, j = {}\n",i,j)

if j==0 and i == 0 ;;esta en primer posicion printf("iguales\ni = {}, j = {}\n",i,j) goto inicio end if

if j==0 ;;tiene que regresar una fila i= i-1 j= 3 printf("regresar fila\n i = {}, j = {}\n",i,j) goto ciclo else ;;entonces tiene que regresa una columna j= j -1

45

Page 46: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

printf("regresar columna\n i = {}, j = {}\n",i,j) goto ciclo end if

end if delay(100) ;; if panel_button(2) != f2 ;;pueden oprimir el boton aqui goto apagar ;;ir a checar estado de posicion end if panel_light_set(3,0) ;;apagar luces delay(100)

end while printf("\nFIN DEL PROGRAMA\n") ;;fin del programa end main

46

Page 47: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

7. Demostración de multitarea int enable = 0 main string [20] cmd int pid, cont cont = 0 pid = split() if pid == 0 then printf("Alterno pid = {} \n proceso principal de {}\n",getpid(),getppid()) loop delay(1000) if enable == 1 then printf("Contador = {}\n",cont) cont= cont +1 end if end loop else printf("Principal pid = {}\n proceso alterno {} \n",getpid(), pid)

delay(500) loop printf("\ninicio, paro, terminar o quitar >") readline(cmd,20) if cmd == "inicio" then ;;iniciar contador enable = 1 elseif cmd == "paro" then ;;detener el ciclo enable = 0 elseif cmd == "terminar" the ;;detener tarea alterna sigsend(pid,SIGHUP)

pid=0 elseif cmd == "quitar" then ;;terminar programa break else printf("\nerror\n") ;;error end if end loop if pid != 0 then ;;en caso de pid diferente de cero

;;error sigsend(pid,SIGHUP) ;;genera una interrupción y se

end if ;;apaga el controlador end if end main

47

Page 48: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

8. Estado del robot, utilizando los subprogramas mostrar el estado del

robot, leer entrada analógica, limite de ejes, etc. main

string [10] cad int [5] config int i,k, cont, e, eje, total, trans float kp, ki, kd float [8] poslim, neglim, radio,valor int [8] act_est int con, tiempo, cierto, tiempo1 int homed, done string [128] time_date cont = 0

tecla:: printf("Numero de veces a realizar \n") ;;numero de veces readline(cad,10) e = str_to_int(k,cad) ;;determinar error if (e < 0)

print("error dato debe ser un numero entero\n\n") goto tecla

end if while cont < k

robot_info(homed,done) ;;estado del robot homed y movimiento if (homed != 0 && done != 0)

print("El robot esta en home y no se esta moviendo\n") else if done == 0 print("robot en movimiento\n")

end if if homed == 0 print("Robot no ha ido a home\n") end if end if conf_get (config) ;;obtener configuracion del robot

for i= 0 to 4 ;; estan ordenado como sigue case i

of 0: printf("Codigo del producto ") of 1: printf("Cogigo del robot ") of 2: printf("Numero de ejes ") of 3: printf ("Configuracion ") of 4: printf("Estado de arm power ") else printf("NO puede llegar aqui ")

48

Page 49: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

end case print(config[i],"\n") delay(500) end for for i= 1 to 5 ;;obtener ganancias de cada eje gains_get(i,kp,ki,kd) ;;proporsional, integral, y diferencial printf("ganancia eje = {}\np= {}\ni= {}\nd= {}\n",i,kp,ki,kd) delay(500) end for axes_get(eje,trans,total) ;;limites de cada eje for con = 1 to eje jointlim_get(con,poslim[con-1],neglim[con-1]) printf("eje {} limite: + {} {} \n",con,poslim[con-1],neglim[con-1]) delay(500)

end for xratio_get(radio) ;;relacion de giro de cada eje for i = 0 to eje printf("radio eje {}= {}\n",i,radio[i]) delay(500) end for print("Entradas analogicas \n") analogs_get(valor) ;;obtener entradas analogicas print("Temperatura de tarjeta= ",valor[ANA_BOARDTEMP],"\n") delay(500) printf("Entrada analogica 1= {} \n",valor[ANA_USER1]) delay(500) printf("Entrada analogica 2= {} \n",valor[ANA_USER2]) delay(500) printf("Fuente interna de 24 = {} \n",valor[ANA_V24SUPPLY]) delay(500) printf("Fuente interna de 12 = {} \n",valor[ANA_V12SUPPLY])

delay(500) printf("Fuente interna de 5 = {} \n",valor[ANA_V5SUPPLY]) axis_status(act_est) ;;estado de cada eje

for i = 0 to eje print("estado eje ",i,"= ",act_est[i],"\n") delay (500) end for robot_odo(tiempo) ;;tiempo de funcionamiento print("Ha estado encendido ",tiempo," seg\n") tiempo1 = time() ;;obtener fecha cierto = time_to_str(time_date, tiempo1) ;;formato printf("Fecha: {}\n",time_date) cont= cont+1 printf("realizado = {}\n\n",cont) end while

end main

49

Page 50: 95910470 Manual Prog Crs

PROGRAMACIÓN ROBOTS CRS

REFERENCIA Los suiguientes archivo se encuentran en el software del robot el formato acrobat (extensión pdf)

1. A465 Robot System User Guide 2. Application Development Guide 3. Application Shell (ash) 4. Catalyst 5 Robot System User Guide 5. CROS and System User Guide 6. RALP-3 Language Reference Guide 7. Robcomm 3 8. Teach Pendant 9. Terminal Editor for C500C

50