Manual Prog Crs
Manual Prog Crs
Manual Prog Crs
RAPL-3
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
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
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
Grados de libertad : 6 Carga Nominal : 2 kg. Alcance : 710 mm. Repetibilidad : 0.05 mm
Eje 1 2 3 4 5 6
F3.
Grados de libertad : 6 Carga Nominal : 3 kg. Alcance : 710 mm. Repetibilidad : 0.05 mm
Eje 1 2 3 4 5 6
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).
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:
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).
DEL
PROGRAMADOR
Teclado.
Muchas de las teclas son multifunciones, dependiendo de la aplicacin es la funcin que realizan.
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
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
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
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
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
12
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
13
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
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.
15
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.
16
EDICIN DE UN PROGRAMA.
Para realizar un programa es necesario seguir los pasos que a continuacin se enumeran: 1) Abrir el Robcomm3.
17
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
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
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.
21
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
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
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
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.
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
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.
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
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
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
=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
32
2. Realizar una secuencia de cuatro puntos, adems por medio de una variable dada por el teach realizar un ciclo inicio Variables
Contador = 0
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
no
no
Ir a posicin
Ir a posicin
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
no
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
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
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
;;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
no
Entrada(1) =1 no
Ir a ready
Entrada(2) =1 no
si
Panel
42
Panel
Esperar por F1
43
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
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
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
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