Sie sind auf Seite 1von 50

PROGRAMACIN ROBOTS CRS

RAPL-3

PROGRAMACIN ROBOTS CRS

INDICE

1) Introduccin. 2) Controlador. 3) Botones de emergencia 4) Control de una sola Persona. 5) Iniciar el Sistema. 6) Apagar el Sistema. 7) Programador Manual (Teach pendant). 8) Caractersticas del Teach Pendant. 9) Cambio de Control. 10) Mover el Robot. 11) Sistema de Coordenadas. 12) Home. 13) Ensear Posiciones. 14) Crear una Aplicacin. 15) Edicin de un Programa. 16) Cambio de Posiciones con el Teach. 17) Cambio de Posiciones desde la Computadora. 18) Tipos de variables. 19) Matriz.

4 6 7 7 7 8 8 8 11 12 12 15 16 16 17 21 22 22 22

PROGRAMACIN ROBOTS CRS

20) Creacin de nuevas Variables. 21) Asignacin de Valores a Variables. 22) Control de Flujo. 23) Puerto de Entradas y Salidas de Propsito General (GPIO). 24) Subrutinas y Funciones. 25) Subprogramas utilizados ms frecuentes. 26) Programas. 27) Referencia

23 23 24 26 27 28 31 50

PROGRAMACIN ROBOTS CRS

INTRODUCCIN.
La marca CRS cuenta con cuatro modelos diferentes de robots con caractersticas diferentes para cubrir necesidades especficas. Los modelos son los siguientes: CataLyst 3. CataLyst 5. A 465. F 3.

Las caractersticas 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 1 2 3 4 5

Rango 180 0 a +110 -125 a 0 110 180

Velocidad 210 /s 210 /s 210 /s 551 /s 1102 /s

Aceleracin 500 /s 500 /s 500 /s 1836 /s 3673 /s

Troqu 9.6 N m 9.6 N m 9.6 N m 3.4 N m 1.7 N m

PROGRAMACIN ROBOTS CRS A 465.

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

Eje 1 2 3 4 5 6

Rango 175 90 110 180 105 180

Velocidad 180 /s 180 /s 180 /s 171 /s 173 /s 171 /s

Aceleracin 720 /s 720 /s 720 /s 1430 /s 1430 /s 1430 /s

Torqu 39.5 N m 39.5 N m 39.5 N m 6.9 N m 6.9 N m 2.9 N m

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

Eje 1 2 3 4 5 6

Rango 180 -135 a +45 135 180 135 4096 vueltas

Velocidad 240 /s 240 /s 240 /s 375 /s 300 /s 375 /s

Aceleracin 879 /s 879 /s 879 /s 1098 /s 1098 /s 1098 /s

Troqu 74.5 N m 74.5 N m 74.5 N m 16.6 N m 16.6 N m 16.6 N m

PROGRAMACIN 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 configuracin interna diferente, as como su calibracin personalizada. El controlador se muestra en la siguiente imagen:

Dentro del sistema mnimo 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 alimentacin elctrica al robot as como la retroalimentacin 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 Propsito General (GPIO).

PROGRAMACIN ROBOTS CRS

BOTONES DE EMERGENCIA.
Cuando se oprime un botn de emergencia, se aplican los frenos a todos los ejes, desacelera, deshabilita la alimentacin del robot. Para volver a habilitar, se restablece el botn de emergencia, se alimenta al robot (es necesario liberar el botn de emergencia, para poder alimentar al robot). Adems 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 botn 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 estn libres y oprimir ARM POWER (alimentacin del robot).

PROGRAMACIN ROBOTS CRS

APAGAR EL SISTEMA. Desde el controlador.


Mantener oprimido Home, oprimir despus 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, ensear posiciones, crear variables y correr programas. Una vez que la aplicacin ya esta iniciada, por medio de variables aprendidas (teachables) es posible guardar posiciones, iniciar variables, etc.

CARACTERSTICAS FSICAS MANUAL (TEACH PENDANT).


Teclado Interruptor de seguridad Paro de emergencia Pantalla Sonidos

DEL

PROGRAMADOR

Teclado.
Muchas de las teclas son multifunciones, dependiendo de la aplicacin es la funcin que realizan.

PROGRAMACIN ROBOTS CRS

Teclas de funcin.
Cada men tiene una tecla de funcin, 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 funcin especifica. Teclas con un cuadro de color verde parte superior derecha del programador. TECLA GRIP HOME READY LIMP ALL NOLIMP ALL MOVE SPEED UP SPEED DOWN FUNCIN Abrir o cerrar gripper Mover cada eje al punto de Referencia Ir a posicin ready Liberar ejes del robot Mantener en la posicin ejes Ir a la posicin seleccionada 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 FIRST LAST TYPE UP DOWN FUNCIN Seleccionar el primer elemento Seleccionar el ultimo elemento No usado Incrementar ndice Decrementar ndice

PROGRAMACIN ROBOTS CRS

Teclas de entrada de datos.


Cada tecla de eje (flechas verdes), de movimiento (cuadro verde) y de matriz (cuadro amarillo) tambin cuentan con letras o nmeros. Estas teclas representan. TECLA Letras Nmeros SHIFT FUNCIN Se usan para crear una variable, Seguridad. Y para bsqueda de variables o aplicaciones Seleccionar un determinado ndice de matriz, O crear una variable y especificar el tamao Se usa junto con F1 para mostrar una bitcora 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 condicin de habilitar durante este movimiento provoca la interrupcin de alimentacin del brazo y por esto el brazo se para sbitamente.

Botn de emergencia.
Por razones de seguridad interrumpe la alimentacin del robot.

Pantalla.
Los diferentes mens son mostrados por medio de la pantalla. Por medio de las teclas de funcin se puede acceder. Por medio de la tecla ESC se va al men anterior

10

PROGRAMACIN ROBOTS CRS

Sonidos.
El programador manual esta equipado con una pequea bocina que es capaz de producir un sonido, estos sonidos tienen un significado SONIDO Corto y grave Corto y agudo Tres cortos y agudos Largo y agudo EVENTO Una tecla valida a sido Oprimida Una tecla no valida a sido oprimida Se ha inicializado una accin y necesita confirmacin Error EJEMPLO Desde el men Aplicacin oprimir F1 Desde el men Aplicacin oprimir move Desde el men manual Oprimir Home 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, enva el control al teach.

11

PROGRAMACIN 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, segn 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. 2. 3. 4. Eje (joint) Sistema cartesiano Sistema cilndrico 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 mxima 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 numeracin de los ejes va de la base hasta el efector final.

12

PROGRAMACIN ROBOTS CRS

Sistema cartesiano (world).


Toma como origen el centro de la base del robot.

COORDENADA Eje x Eje y Eje z Rotacin Z Rotacin Y Rotacin X

TECLA 1 2 3 4 5 6

DESCRIPCIN Mover efector final adelante atrs Mover efector final derecha izquierda Mover efector final arriba - abajo Rotar el efector final en base al eje Z Rotar el efector final en base al eje Y 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

PROGRAMACIN ROBOTS CRS

Sistema cilndrico.
COORDENADATECLA EJE DESCRIPCIN 1 mover la base del robot (theta) 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 lnea horizontal formada en efector final y el robot. Este sistema solo puede ser usado desde el programador manual (teach pendant).

14

PROGRAMACIN 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 atrs 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 incremntales se deben poner a cero en una posicin 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 estn 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

PROGRAMACIN ROBOTS CRS

ENSEAR POSICIONES.
Para ensear una posicin debe existir una variable donde guardar la posicin,

Desde el teach.
1. 2. 3. 4. 5. 6. 7. Comando tch F1 (var) Nombre de la variable make, type y dim (especificar el tipo, y la dimensin de la variable) Ir a posicin a guardar Oprimir F1 (tch) Si se desean ms variables seguir paso 1

Desde la terminal.
Es necesario estar en una aplicacin par poder lograrlo. Dentro de la aplicacin se mueve el brazo y se guarda la posicin. Con el comando here nom donde nom es el nombre de la variable.

CREAR UNA APLICACIN


Dentro de Robocomm3 1. Seleccionar el puerto de comunicacin y la velocidad de transmisin / recepcin 2. Crear un nuevo documento (Editor de texto) 3. Crear una aplicacin(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

PROGRAMACIN ROBOTS CRS

EDICIN DE UN PROGRAMA.
Para realizar un programa es necesario seguir los pasos que a continuacin se enumeran: 1) Abrir el Robcomm3.

2) Crear una Aplicacin. En el menu Application, seleccionar New Application.

17

PROGRAMACIN ROBOTS CRS

En ese momento aparecer un cuadro de mensaje en donde pedir el nombre de la aplicacin que se desea generar.

Nota: Evitar borrar la extensin app.. Una vez que se ha realizado la aplicacin, si se desea se puede verificar la creacin de los archivos que componen la aplicacin, esto se hace en el menu Application en su opcin Setup, como de muestra a continuacin.

18

PROGRAMACIN ROBOTS CRS

3) Ingresar el Programa. En esta parte es donde se va a capturar todo el cdigo 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 cdigo.

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

5) Enviar el Programa.

19

PROGRAMACIN ROBOTS CRS Al enviar el programa lo que estamos realizando es enviar el cdigo hacia el controlador. Para esto es indispensable que la configuracin 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 opcin de los iconos del men.

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

Desde aqu ser posible ensear variables, ejecutar los programas y mover el robot de forma manual.

20

PROGRAMACIN ROBOTS CRS

Ejemplo main teachable cloc a,b move(a) move(b) ready() end main ;;declarar variables ;;moverse a posicion a ;;moverse a posicion b ;;ir a posicion ready ;;termina el programa

Para poder enviarlo al controlador es necesario compilarlo, (cambia de lenguaje), y posteriormente si no existe algn error enviarlo a controlador. Para correr el programa desde el teach seleccionar la aplicacin 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 aplicacin escribir ash (stands for applications shell) e indica cuales aplicaciones tenemos, escribir el nombre de nuestra aplicacin y finalmente escribir run. Tambin 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. 2. 3. 4. 5. 6. 7. 8. 9. 10. Seleccionar aplicacin Escoger editar F1 Escoger variable F1 Seleccionar variable a editar Seleccionar variable F1 Moverse a la nueva posicin Guardar posicin (tch F1) Confirmar que se desea guardar la variable (F1) Oprimir ESC para regresar al men anterior Si se desea modificar mas variables seguir paso de 3 al 9

21

PROGRAMACIN ROBOTS CRS

CAMBIO DE POSICIONES DESDE LA COMPUTADORA.


Comprobar que este en la Aplicacin correcta, (ventana terminal) ir a nueva posicin, escribir here variable, y continuar cambiando posiciones si se desea cambiar ms posiciones.

TIPOS DE VARIABLE.
SMBOLO PREFIJO TIPO Int Ninguno Entero float % Fraccin string $ Cadena cloc _ Posicin cartesiana ploc # Posicin de precisin

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

MATRIZ.
Tambin 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

PROGRAMACIN ROBOTS CRS

CREACIN DE NUEVAS VARIABLES. Desde el teach.


Asegurarse que esta en la aplicacin, correcta. 1. 2. 3. 4. 5. F1 (var) Nombre de la variable type (F2) y dim (F3) especificar el tipo, y tamao de la variable crear variable (F1) Si se desean ms variables seguir paso 1 al 5

Desde le ventana terminal.


Asegurarse que esta en la aplicacin correcta. 1. new prefijo nombre ;emplear el prefijo de la variable.

ASIGNACIN DE VALORES DE VARIABLES TEACHABLES. Desde el teach.


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

7. Desde la computadora.

Asegurarse que esta en la aplicacin correcta. En el prompt de la ventana terminal escribir Set = nombre = valor Nombre = nombre de la variable Valor = valor de la variable

23

PROGRAMACIN ROBOTS CRS

CONTROL DE FLUJO.
1. 2. 3. 4. 5. 6. 7. 8. BREAK LOOP CASE WHILE FOR DO IF 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. Segn la comparacin es lo que realiza. Ejemplo int contado case contado of 0: move(a) of 2,3,5: move (b) of 6 to 30: ready() end case ;;comprobar estado de contador ;;si es igual cero ;;muvete a posicin a ;;si es igual 2 , 3 o 5 ;;muvete a posicin b ;;si esta dentro del rango 6 a 30 ;;ve a ready

24

PROGRAMACIN ROBOTS CRS

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

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

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

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

25

PROGRAMACIN ROBOTS CRS if (contador < 5] move(a) move(b) else if (contado >5) move(b) move(a) end if ;;si en contador es menor a 5 ;;ir a posicin a ;;ir a posicin b ;;si en con ;;ir a posicin b ;;ir a posicin c

GOTO
Ir a una etiqueta.

PUERTO DE ENTRADA / SALIDA DE PROPSITO 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 lnea comn Una entrada analgica 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

PROGRAMACIN 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 ningn 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 (parmetros) declaracin end sub Formato para llamar una subrutina. Identificador_sub (parmetro) El tipo de parmetro debe coincidir con el especificado en la declaracin de la subrutina, (un error comn) tambin deben coincidir el numero de parmetro.

Funciones.
Una funcin 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 (parmetros)

27

PROGRAMACIN 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 funcin.


Existen dos formas de llamar una funcin. Como parte de una expresin Por ella misma como una condicin

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 segn la tarea que realizan. Entrada analgica Calibracin Entradas y salidas digitales Panel frontal Gripper Home Posicin Movimiento

ENTRADAS ANALGICAS.
analogs_get boardtemp_get Regresa en valor de las ocho entradas analgicas al controlador C500C Regresa la temperatura en grados centgrados de la tarjeta del controlador C500C

28

PROGRAMACIN ROBOTS CRS

CALIBRACIN.
calrdy motor pos_get pos_set ready Mover robot a posicin de calibracin Rotar en motor un especifico numero de pulsos Obtener posicin del robot Poner posicin del robot Mover el robot a posicin ready

ENTRADAS Y SALIDAS DIGITALES.


input inputs output_get output_pulse output outputs_set Regresa el estado de una entrada Regresa un mapa estado de las entradas digitales Regresa estado de una salida Poner la salida en un estado, espera y cambia de estado Poner el estado de una salida 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 botn mientras se oprime se mantiene ON y cuando se suelta regresa a OFF. Los botones se encuentran etiquetados como sigue onbutton panel_button panel_button_wait panel_buttons panel_light_get panel_light_set panel_lights_get panel_lights_set Los botones estn numerado como sigue Espera por un botn que sea oprimido Regresa cierto si un botn es oprimido Espera por un botn en particular Regresa el estado de los botones Obtiene estado de una luz Pone el estado de una luz particular Obtiene estado de las luces Poner estado de las luces

29

PROGRAMACIN ROBOTS CRS

F1 F2 Pause continue Home

=1 =2 =4 =8

GRIPPER.
grip grip_close grip_finish grip_open Mover el los dedos del gripper una distancia Cerrar gripper Mantener en espera el programa hasta que el gripper termine su movimiento Abrir gripper

HOME.
Home Especificar el home de ejes

POSICIN.
here Guardar posicin

MOVIMIENTO.
appro appros calrdy depart departs finish halt Aproximarse a un punto, no forzar movimiento en lnea recta Aproximarse a un punto, forzar movimiento en lnea recta Ir a posicin de calibracin Alejarse dela posicin Alejarse dela posicin en lnea recta Esperar hasta que no exista movimiento. Para movimiento del robot 30

PROGRAMACIN ROBOTS CRS wx,wy,wz zrot, yrot, xrot wxs,wys,wzs zrots, yrots, xrots joint limp lock move moves nolimp ready speed unlock Mover el robot en sistema cartesiano Mover el robot en sistema cartesiano, forzar en lnea recta Mover un eslabon Quitar energa a motores Asegurar un eje Ir a una posicin Ir a una posicin en lnea recta Energizar motores despus de un limp Ir a posicin ready Velocidad Liberar eje despus 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 propsito 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, segn 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 condicin. 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

PROGRAMACIN ROBOTS CRS end main

32

PROGRAMACIN ROBOTS CRS

2. Realizar una secuencia de cuatro puntos, adems por medio de una variable dada por el teach realizar un ciclo inicio Variables

Contador = 0

Hasta que Contador > Numero

Posiciones main teachable cloc a,b,c teachable ploc d teachable int i int j for j=0 to i speed(40) ready () printf("Ir a posicion ready\n") move (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

;;inicio del programa ;;condicion ;;velocidad ;;ir a posicion ready ;;moverse a punto a

33

PROGRAMACIN ROBOTS CRS 3. Realiza una secuencia, que se aproxime a ciertos puntos, llegue al punto, se aleje, hacer esto bajando la velocidad. inicio

Variables Establecer ndice

Dentro de ndice si Posicin de aproximacin si Disminuir velocidad Acercarse a posicin

no

Fin del programa

no

Ir a posicin

Ir a posicin

Alejarse Incrementar ndice

34

PROGRAMACIN 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 main

end

35

PROGRAMACIN ROBOTS CRS 4. Realizar una secuencia de puntos designados por una matriz de una dimensin, adems que cuente con un botn de inicio conectado al GPIO inicio

Variables

Botn de inicio si Numero de veces Contador de filas

no

Contador de columnas Ir a posicin [i,j] Incrementar fila no Dentro de limite si

36

PROGRAMACIN 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 despus (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 botn 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

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

38

PROGRAMACIN 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 inicio

variables Ir a posicin (fila, columna) Botn de inicio Ir a posicin ready Mientras este dentro del numero de fila Fin del programa Mientras este dentro del numero de columnas Esperar por botn del panel frontal

Ver estado de entrada

Entrada = 1 NO

SI

39

PROGRAMACIN 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 delay(200) end while

;;esperar por botn de inicio

speed(40) ;;establecer valor inicial i=0 for j = 0 to 1 ;;hacer un ciclo do x= estado(1) ;;checar botn 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 condicin 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") fin:: f1 = panel_button(1) printf("\nEstado de F1 = {}\n",f1) f2 = panel_button(2) printf("Estado de F2 = {}\n",f2) printf(" OPRIMIR F1 \n") ;;mensaje ;;obtener estado de boton F1 ;;obtener estado de boton F2

40

PROGRAMACIN ROBOTS CRS while panel_button(1) == f1 panel_light_set(1,1) delay(200) panel_light_set(1,0) delay(200) end while ready() finish() printf(" OPRIMIR F2 \n") while panel_button(2) == f2 panel_light_set(2,1) delay(200) panel_light_set(2,0) delay(200) end while goto inicio end main ;;esperar hasta que cambie F1 ;;hacer toggle a luz de F1

;;esperar que cambie F2 ;;hacer toggle a luz F2

;;saltar a inicio

41

PROGRAMACIN 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 botn 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 posicin donde se activo la entrada, y con otro termina el programa inicio 1 Ir a posicin (i,j)

variables Fila = 0 Columna = 0 Dentro de limite de fila Dentro de limite de columna Estado de entradas

Incrementar columna

Ultima columna si Incrementar fila

no

si Ultima fila si no Columna = 0

Entrada(1) =1 no

Ir a ready

Entrada(2) =1 no

si

Panel

42

PROGRAMACIN ROBOTS CRS

Panel

Esperar por F1

Ir a ready Esperar por F1 si F2 no Fin del programa Recuperar posicin

43

PROGRAMACIN 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

PROGRAMACIN 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 panel_light_set(1,1) delay(200) panel_light_set(1,0) delay(200) end while delay(500) while (panel_button(1)==1) printf("suelta F1\n") delay(200) end while ;;esperar hasta que cambie estado ;;encender indicador ;;del boton

;;demora ;;hasta que este libre el boton ;;mensaje todavia esta oprimido el boton

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

PROGRAMACIN ROBOTS CRS printf("regresar columna\n i = {}, j = {}\n",i,j) goto ciclo end if end if delay(100) if panel_button(2) != f2 goto apagar end if panel_light_set(3,0) delay(100) end while ;; ;;pueden oprimir el boton aqui ;;ir a checar estado de posicion ;;apagar luces

printf("\nFIN DEL PROGRAMA\n") end main

;;fin del programa

46

PROGRAMACIN ROBOTS CRS 7. Demostracin de multitarea int 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 interrupcin y se end if ;;apaga el controlador end if end main enable = 0

47

PROGRAMACIN ROBOTS CRS 8. Estado del robot, utilizando los subprogramas mostrar el estado del robot, leer entrada analgica, 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

PROGRAMACIN 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

PROGRAMACIN ROBOTS CRS REFERENCIA Los suiguientes archivo se encuentran en el software del robot el formato acrobat (extensin pdf) 1. 2. 3. 4. 5. 6. 7. 8. 9. A465 Robot System User Guide Application Development Guide Application Shell (ash) Catalyst 5 Robot System User Guide CROS and System User Guide RALP-3 Language Reference Guide Robcomm 3 Teach Pendant Terminal Editor for C500C

50

Das könnte Ihnen auch gefallen