Programar en Modo ASH Robot

21
Programar en modo ASH. Para programar en modo ASH es necesario realizar varias tareas de inicio. Paso 1. Llevar el robot a HOME. Paso 2. Escribir el comando W0 (cero). Esto es para que la computadora nos proporcione las coordenadas actuales del robot, para saber hacia donde tenemos que dirigirnos. Como cualquier Lenguaje el RAPL3, cuenta con un editor y un compilador, que también se encuentran en el ROBCOMM3, el Programa fuente es un archivo que debe de contener la extensión r3, y podrá ser escrito en otro editor, siempre que contenga dicha extensión. La Estructura general para un programa en RAPL3 es similar a los programas en lenguaje “C”, en donde hay que respetar las estructuras programáticas El formato es el siguiente: definición de variables: (puede ser antes o después de definir el segmento principal main) teachable cloc a,b.....z,a1.... a xx, [10] puntos, etc...... ploc m,n,p int i, a1....axx, float b.... etc. Para el caso en que las variables se refieran a ubicación de puntos grabados en el controlados del robot, se especifica el tipo de exactitud de las variables (cloc, ploc) en dónde cloc (localización cartesiana) se refiere a que se va a referenciar para la exactitud en sistema de coordenadas cartesiano, y ploc (puntos de localización) lo hará directamente de los puntos provenientes de los “decoders” del robot; se obtiene más precisión con el tipo ploc La estructura main es la principal de todo programa, empieza con la palabra main y al final del programa end main. Programa No 1 teachable cloc a,b main ;; define el segmento principal, comienzo de todo programa ;; Es conveniente poner comentarios cuando se realiza

description

PROGRAACION BASICA POR COMANDOS EN ASH

Transcript of Programar en Modo ASH Robot

Page 1: Programar en Modo ASH Robot

Programar en modo ASH.

Para programar en modo ASH es necesario realizar varias tareas de inicio.Paso 1. Llevar el robot a HOME.Paso 2. Escribir el comando W0 (cero). Esto es para que la computadora nos proporcione las coordenadas actuales del robot, para saber hacia donde tenemos que dirigirnos.Como cualquier Lenguaje el RAPL3, cuenta con un editor y un compilador, que también se encuentran en el ROBCOMM3, el Programa fuente es un archivo que debe de contener la extensión r3, y podrá ser escrito en otro editor, siempre que contenga dicha extensión.La Estructura general para un programa en RAPL3 es similar a los programas en lenguaje “C”, en donde hay que respetar las estructuras programáticas El formato es el siguiente:definición de variables: (puede ser antes o después de definir el segmento principal main)teachable cloc a,b.....z,a1.... a xx, [10] puntos, etc......ploc m,n,pint i, a1....axx, float b.... etc. Para el caso en que las variables se refieran a ubicación de puntos grabados en el controlados del robot, se especifica el tipo de exactitud de las variables (cloc, ploc) en dónde cloc (localización cartesiana) se refiere a que se va a referenciar para la exactitud en sistema de coordenadas cartesiano, y ploc (puntos de localización) lo hará directamente de los puntos provenientes de los “decoders” del robot; se obtiene más precisión con el tipo plocLa estructura main es la principal de todo programa, empieza con la palabra main y al final del programa

end main.

Programa No 1teachable cloc a,bmain ;; define el segmento principal, comienzo de todo programa

;; Es conveniente poner comentarios cuando se realiza y ;;Estructura un programa para una mejor comprensión , lo ;;cual se hace poniendo dos puntos y comas seguidos (;;), y a ;;continuación los comentarios deseados

ready() ;; comandos con dos paréntesis al finalmove (a)move (b)ready() ;;Fin del programa

end main ;; fin del segmento principal

Esta es la estructura básica de los programas, con la cual debe contar todo programa para interactuar con la interface del robot

Page 2: Programar en Modo ASH Robot

4.2.-CREANDO UN PROGRAMA CON EL ROBCOMM3Dentro de un programa la sintaxis de los comandos cambia, es necesario añadirle dos paréntesis, para la creación de ellos se debe de hacer lo siguiente:1.-Abra el ROBCOMM3,En el menú File seleccione la opción de New, o haga un clic en el icono New Doc. Aparece la pantalla siguiente:

2.-Edite el programa.Comience a escribir su programa fuente, al terminar guárdelo con un nombre procurando ponerle la extensión r3.

3.-Compilar el programa escrito.Seleccione del menú application la opción compile, o haga un clic con el Mouse sobre el icono compile.Después de compilar, si no existe ningún error en el programa fuente, se enviara un mensaje en la siguiente pantalla.En el caso de errores saldrá el tipo de error y la línea en la cual se encuentra el error.

4.-Creando una Aplicación.Una vez salvado el programa, es necesario crear una aplicación que sirve de vinculo para que trabaje el robot, valla a la ventana del menú aplicación Selecciona new app, póngale el mismo nombre del archivo fuente Verifique en el Menú aplicación setup que todas las líneas deben de estar llenas con el mismo nombre como se ve en la siguiente pantalla.

5.-Cargando el programa en el controladorEl programa una vez compilado se queda en la PC por lo que es necesario mandar el archivo objeto al controlador, para ello es necesario realizar el procedimiento siguiente:Haga un clic con el Mouse en el icono send app, o Desde el menú application, seleccionar send, o desde la ventana del editor, haciendo clic en el botón derecho del Mouse se despliega un menú donde se selecciona send.

6.- Una vez que se tiene el programa, que este ha sido compilado y enviado al controlador y que las posiciones han sido verificadas o grabadas, se procede a ejecutar el programa de la siguiente forma:Desde el teach pendant, se selecciona la aplicación, y se corre el programa con la opción run confirmando la ejecución.Desde la PC. Dentro del Robcomm3 y una vez que aparece el prompt se selecciona la aplicación que fue grabada, cuando aparece la aplicación se teclea run y se le da enter ejecutándose asi el programa.

Page 3: Programar en Modo ASH Robot

Cuando el proceso de Crear programa fuente, Compilar y Crear aplicación se ha terminado se deben de tener tres archivos en el directorio de trabajo, que son los siguientes:nombre.r3 Programa fuentenombre.app Aplicación (archivo de enlace)nombre Archivo Objeto (aplicación de terminal)

4.3.-COMANDOS QUE SOLO FUNCIONAN

EN UN PROGRAMAHay un conjunto de comandos que solo funcionan dentro de un programa, la tabla siguiente muestra algunos de ellos.SINTAXISSIGNIFICADOdelay(#)Espera el tiempo especificado por # en milisegundosfinish()Le da fin la instrucción anterior antes de ejecutar la siguientePrintf()Manda a Imprimir en la pantall

Programa No 2Construya un programa que realiza movimientos de los ejes del robot, como el que se da a continuación , ejecute primero los movimientos antes que lo haga el programa.mainready()speed(40)joint(1,-170) ;; Moverse Eje # 1 170 grados en el sentido de las manecillasfinish()delay(3000) ;; Espera dos segundosjoint(1,340)finish()delay(3000) ;; Espera dos segundosjoint(1,-170) ;; Regresa a la posición Inicialfinish()delay(3000)joint(2,-90) ;; Moverse Eje # 2 finish()delay(3000) ;; Espera dos segundosjoint(2,180)finish()delay(3000)joint(2,-90)finish()delay(3000)

Page 4: Programar en Modo ASH Robot

joint(3,-24) ;; Moverse Eje # 3 finish()delay(3000)joint(3,204)finish()delay(3000)joint(3,-180)finish()delay(3000)joint(4,-180) ;; Moverse Eje # 4 finish()delay(3000)joint(4,360)finish()delay(3000)joint(4,-180)finish()delay(3000)joint(5,-104) ;; Moverse Eje # 5 finish()delay(3000) joint(5,208)finish()delay(3000)joint(5,-104)finish() delay(3000) joint(6,-180) ;; Moverse Eje # 5 finish() delay(3000)joint(6,360)finish()delay(3000)joint (6,-180)finish() delay(3000)end main

Page 5: Programar en Modo ASH Robot

4.4.-LAS VARIABLES EN RAPL3En el Rapl3 los nombres

de las variables pueden ser de cualquier longitud, sin embrago los primeros 32 caracteres son los importantes. Números y guión bajo pueden ser utilizados como primer carácter en un nombre.

Los tipos de variables se muestran en la siguiente tabla:

SímboloTipoNingunoEntero%Flotante$CadenaGuión bajo (_)Cloc(cartesiano)#Ploc(punto de precisión)

Esto es importante cuando queremos asignar desde la terminal un tipo de variable deseada.Asignación de variables

Las variables que son asignadas dentro del programa Rapl3, pueden ser asignadas ya sea en la declaración de línea, o en cualquier parte del programa. La asignación de una variable ocurre cuando la variables es cargada con un valor actual.Las variables del tipo teachable, le pueden ser asignados valores en el prompt de ash, usando el comando set. Para asignar los valores a las variables se usa el operador ”=”, ejemplo:

Prueba> set A_VALOR=5

Rapl3 soporta la asignación de valores en codigo ASCII para caracteres, usando el carácter actual encerado entre comillas simples, ejemplo:

Char =”A”

Variables del tipo teachable

Las variables de este tipo son aquellas que son declaradas en el programa Rapl3 y corresponden a posiciones del robot. Para crear este tipo de variables, se debe de usar la palabra teachable antes de la variable que se está declarando. La asignación de la variable va a ser suministrada por el usuario desde la terminal antes de correr el programa.

Page 6: Programar en Modo ASH Robot

Las variables teachable son declaradas al comienzo del programa principal o bien en un subprograma. Esta variable es global por naturaleza, todos los subprogramas y el programa principal de cualquier archivo van a compartir el valor de esas variables Este tipo de variables no pueden ser declaradas y a la vez asignarles un valor o inicializarlas.

Las variables teachables pueden ser de dos tipos, cloc ( cartesiana ) o ploc( precisión), si no se declara el tipo por default es cloc.

Otra manera de asignar valores a variables que no cambiarán su valor, y para una mejor comprensión al utilizarlas, es darle valores predeterminados a estas variables definiéndolas desde el comienzo de los programas con la herramienta (.include), como se muestra a continuación..define alta 100.define media 40Con esto definido en un programa se puede enviar las ordenes siguientes.speed(alta)move(a)speed(baja)move(b)

4.5.-ESTRUCTURA PROGRAMATICA IF –ELSE-ENDIF

La sintaxis de esta estructura funciona de la siguiente forma:

If CONDICION...........Comandos...................................else...........Comandos...........end if

Nota: Todas las condiciones de igualdad en cualquier estructura programatica llevan un doble signo igual.

Si se cumple la CONDICION, se ejecutan los comandos de abajo hasta antes del else, y luego se sigue con los que estén debajo del end if , en caso de que la condición no se cumpla, se ejecutan los comandos debajo del else y luego se sigue con los que estén debajo del end if. El elemento else, no es necesario si no se va a ejecutar ningún comando en el caso de que no se cumpla la

condición.

Page 7: Programar en Modo ASH Robot

También es posible utilizar elseif condición, tantos como se deseen.

4.6 CICLOS CONDICIONALESUna de las herramientas mas poderosas en la programación de cualquier lenguaje, son los ciclos, que permiten realizar un conjunto de instrucciones las veces que se desee.Ciclo Do untilLa sintaxis de esta estructura es:do...........Instrucciones...................................Until CONDICIONInicia con la palabra do y se ejecutan las instrucciones que están después del do y hasta antes del until, todas las veces que sea hasta que la condición sea verdadera, pero, si se llega por primera vez al ciclo do y la condición es verdadera, solo se ejecuta el ciclo de ordenes en una sola ocasión, veamos el siguiente ejemplo:

Programa No 3

teachable cloc a,b ;; Declaración de variablesint c=1 ;; Declaración de una variable entera

mainready()do

if c >= 3move(a)finish()delay(3000) else move(b) ;; Se moverá al punto b para c= 1 ó c = 2finish()delay(3000) end ifc=c+1ready()finish()delay(3000) until c>5

end main

Page 8: Programar en Modo ASH Robot

Imprimir en pantalla

Imprimir mensajes en la pantalla de la PC, es útil para depurar programas, enviar avisos, y poder saber que esta haciendo el programa en los momentos que uno desee.El comando para realizar esto es printfLa expresión que se quiere que salga en pantalla se debe de encerrar entre comillas, como la siguiente:

Printf(“el robot esta trabajando”)Se puede utilizar un salto de línea añadiendo un \n, ejemploInt a =12Printf(“ el valor de a es {}\n”,a);;esta línea se imprimirá en la pantalla como:;; el valor de a es 12

Programa No 4Mainint iteachable cloc a,bgrip_open()speed(80)i = 1doprintf("ENTRANDO AL DO UNTIL I = {}\n",i)delay(3000)speed(30)move(a)printf("MOVIÉNDOSE AL PUNTO a{}\n")finish()delay(3000)grip_close()speed(10)move(b)printf("MOVIÉNDOSE AL PUNTO b{}\n")delay(3000)finish()grip_open()i++if i==2 break ;;Instrucción para Salir inmediatamente del cicloend ifuntil i> 3

end main

Page 9: Programar en Modo ASH Robot

Ciclo while ..... end whileLa sintaxis de esta estructura es :while CONDICION........instrucciones................

end while

Este ciclo se repetirá todas las veces que sean necesarias mientras la condición sea verdadera, si se llega al while por primera vez y la condición es falsa, no se ejecutan ninguna de las instrucciones que están dentro, se empiezan a ejecutar las que estén después del end while; Como se verá en el siguiente ejemplo:

Programa No 5teachable cloc a,bint c = 0.define alta 50.define media 30.define baja 10

mainspeed(baja)while c 5breakend ifend loopmove(d)delay(5000)ready()end main

Page 10: Programar en Modo ASH Robot

4.8.-ESTRUCTURA case variable of #Este tipo de estructura se usa en lugar de muchas condiciones del tipo if_endif y con un mayor potencial , la sintaxis es la siguiente:

Case Variableof: 1..........Instruccionesof: 2,3............of 7 to 9:..........of 10 to 12, 13 to 16, 19:..........else..........end caseLas instrucciones que se ejecutaran dependerán del valor de la variable, y en cada caso solo una de ellas, debajo de else estarán las instrucciones que se ejecutaran para todos los casos no contemplados en los case.

Programa No 9teachable cloc a,b,c,dmain int e=1string[23] mensaje1mensaje1 = "El valor de e = {},\n"ready()printf("Los case son 16 \n")loopdelay(3000)case eof 1:printf("al punto a ")printf(mensaje1,e)move(a)finish()delay(2000)ready()of 2,3,5:printf("al punto b ")printf(mensaje1,e)move(b)finish()

Page 11: Programar en Modo ASH Robot

delay(2000)ready()of 6 to 8:move(c)finish()delay(2000)ready()printf("al punto c de 6 a 8 e ={}\n",e)of 9 to 10, 12 to 14, 16:move(d)finish()delay(2000)ready()printf("al punto d de 9,10 12,13,14,16, e ={}\n",e)elseprintf("Nada ")printf(mensaje1,e)delay(2000)end case

e = e+1if e >17breakend ifend loopready()finish()printf("Fin del programa.....Adios\n")end main

4.9.-SUBRUTINAS

Otra característica especial de este tipo de lenguajes, es la compilación por módulos o separada, lo que permite que se puedan definir subrutinas separadas del programa principal y utilizarse llamándolas cuando sea necesario; estas subrutinas por lo general contienen

partes de un programa o secuencia fijos, es decir, que no varían aunque la secuencia de su utilización así como otras acciones se puedan controlar desde el programa principal.

Page 12: Programar en Modo ASH Robot

Para la utilización de subrutinas en un programa, es necesario incluirlas en las declaraciones que va a usar el programa principal por medio de la función .include tal como se muestra a continuación; y el formato de los archivos que contengan las subrutinas, no deberán contener la función main, y en vez de esto, tener como encabezado y fin de las subrutinas, las sentencias sub nombre() y end sub respectivamente.

Programa No 10

Cierre aplicación nexo y programa y cree un conjunto nuevo con este listado, que se llame General.r3teachable cloc a,b.include rutina1.r3.include rutina2.r3

main

ready()move(a)printf("movió a punto a y espera de 3 según\n")finish()delay(3000)printf("Ejecutando Rutina 1 y espera de 5 según")rutina1() ;; Ejecución de Rutina 1printf("termina la Rutina 1, se mueve al punto b y espera de 3 seg\n") move(b)finish()delay(3000)printf("ejecutando Rutina2 y espera de 5 seg\n")rutina2()printf("termina la Rutina 2, se mueve a b y espera 3 seg\n") move(b)delay(2000)finish()ready()printf("Termina el programa\n") end main

Abra otro archivo y escriba la siguiente subrutina y sálvela con el nombre derutina1.r3teachable cloc csub rutina1()finish()delay(3000)

Page 13: Programar en Modo ASH Robot

move(c)printf("se movió al punto b en Rutina1 y espera de 3 seg\n")finish()delay(3000)end sub

De nuevo abra un nuevo editor y escriba la siguiente subrutina y sálvela con el nombre de rutina2.r3

teachable cloc dsub rutina2()finish()delay(3000)move(d)finish()printf("Se movió al punto a en Rutina 2 y espera de 3 seg\n")move(a)delay(3000)finish()end sub

RECOMENDACIONES A LA HORA DE PROGRAMAR:

La mejor forma de programar, es interactuando directamente con el robot e ir asignando las variables aun sin haber realizado el listado del programa; esto permite el ir moviendo el robot con los comandos de terminal o con el “teach pendant” e ir asignando la secuencia de variables que se utilizara en el programa; a su vez y puede ser de forma paralela, el ir creando el listado del programa conforme a los movimientos que se van realizando y a las variables que se van asignando.Desde la pantalla de terminal, cuando se crea una nueva aplicación asigne las nuevas variables directamente al controlador, por medio del comando “new a” (para asignar variables tipo cartesiano se agrega el símbolo de guión bajo “_” , y para variables del tipo de precisión, el símbolo de numero “#” )En la pantalla de terminal, teclee el comando “list”, para observar las variables existentes (observara que las variables aparecen precedidas del símbolo “ * ” , lo que indica que no han sido asignadas

posiciones a estas variables) mueva el robot a las posiciones deseadas con los comando joint 1,100, depart, appro y asigne las posiciones a las variables por medio del comando “here”. teclee de nuevo el comando “list” y observe.

Page 14: Programar en Modo ASH Robot

CAPITULO V RECONOCIMIENTO DE SEÑALES

Distribución física de puertos de entradas y salidas digitales y conectores.

Puerto de entradas / salidas digitales gpio

El controlador C500C del robot cuenta con un juego de entradas y salidas digitales, con las cuales poder interactuar en tiempo real con el medio externo y poder monitorear o controlar dispositivos externos; este controlador cuenta con 16 entradas digitales opto aisladas, 4 salidas con contactos de relevador y 12 salidas opto aisladas.

5.1.-CONSIDERACIONES EN EL DISEÑO DE CIRCUITOS

Si se va a usar el puerto GPIO, se deben tener en cuenta las siguientes consideraciones.

Para los robots A255 y A465, se puede usar tanto la fuente interna de 24 VDC que provee el equipo o una externa que conecte al sistemaLa capacidad de corriente que puede manejar la fuente interna es de máximo 1 Ampere, por lo que si la aplicación que se va a manejar es de mayor capacidad, use una fuente externa.Las salidas opto aisladas son de baja capacidad en corriente, manejan hasta 50 mA cada una de ellas.Las salidas relevadas manejan hasta 3 Ampers cada una. Todas las salidas de relevador, están conectadas a un punto en común, y están protegidas por un relevador que se encuentra en el panel frontal.PRECAUCION.- Apague el interruptor principal delcontrolador antes de conectar cualquier alambre al controlador.

Los diagramas del patillaje correspondientes se muestran en las páginas siguientes:

REALICE LA SIGUIENTE PRACTICA

Aplique el comando shutdown now a la pantalla de terminal para apagar el robot, Cierre todas las aplicaciones y el programa robcomm3 y apague el controlador.Del conector DD-50, conecte las terminales 1 y 3, o bien la 2 y 4, para utilizar la fuente interna de 24 volts de DC; también conecte las terminales 47 a la 49, o bien la 48 a la 50, para cerrar el lazo a tierra de los circuitos internos del GPIOConecte el cable tipo listón al conector DD-50 y por el otro extremo al controlador del robotEncienda el controlador y abra la pantalla de terminal del robcomm3, abra cualquier aplicación existente (ash xxxxx) de la pantalla terminal Introduzca el comando input 1, haga lo mismo con las 16 entradas y observe.Con mucho cuidado, conecte un alambre largo a la terminal 49 ó 50 del conector DD-50 y a la terminal 5 del mismo; aplique el comando input 1 y oberve, retírelo de la terminal 5 y vuelva a verificar el estado de la entrada 1 y haga lo mismo con algunas otras entradas.

Page 15: Programar en Modo ASH Robot

NOTA: TAL COMO SE OBSERVO, LA SALIDA SE HACE VALIDA (VALOR DE 1) CUANDO SE CONECTA A TIERRA LA ENTRADA CORRESPONDIENTE

Ahora, con la ayuda de un multímetro ajustado para medir voltaje de DC, en la escala que soporte al menos 24 VDC, conecte la terminal positiva del multímetro a la terminal 1 ó 2 del conector DD-50, y la negativa a la terminal 21, observe la lectura del multímetro; ahora, aplique a lapantalla de terminal el comando output 1,1 (formato: output #salida, valor lógico) y observe; ahora el comando output 1,0 y note el cambio de estados de aprox. cero Volts a aprox. 24 VDC que es el voltaje de la fuente interna del controlador. Haga lo mismo con algunas salidas de la 2 a la 12.

NOTA: CUANDO SE USEN LAS SALIDAS DIGITALES, DE PREFERENCIA UTILICE YA SEA LA FUENTE INTERNA O UNA EXTERNA, DE MAXIMO 24 VDC Y LAS CARGAS O DISPOSITIVOS A ENCENDER (TAL COMO UN RELEVADOR) DEL MISMO VALOR DE VOLTAJE.

Para el caso de las salidas de la 13 a la 16, existe la diferencia de que estas son contactos de relevador, con un punto en comun. Para verificar, ajuste el multímetro para medir resistencia (si tiene la capacidad de tono audible cuando se detecta resistencia cercana a cero, actívela); con mucho cuidado, conecte una de las terminales del multímetro a la terminal 43 ó 44 del conector DD-50, y la otra a la terminal 36 del DD-50; introduzca el comando output 13,1 y observe la lectura del medidor; después de el comando output 13,0 y observe; conecte ahora de la terminal 43 ó 44 a la 35 y repita los dos comandos anteriores.

Con estas herramientas, se pueden realizar programas mas complejos que involucren el uso de entradas y salidas digitales, para poder controlar dispositivos externos, o coordinar acciones determinadas dependientes de esos dispositivos, a ambas cuestiones.

Page 16: Programar en Modo ASH Robot

REALICE LA SIGUIENTE PRACTICA

Abra una pantalla de edición de programas nuevos y teclee el siguiente programa:

teachable cloc a,b,c

main

loop

while input(16)==1

printf("activada la entrada 16 y espero selección de entrada\n")delay(5000)finish()

if input(1)==1move(a)finish()printf("entrada uno conectada, muevo posición a\n")printf("y activo salida 13 por 5 segundos a\n")output (13,1)delay(5000)output_set (13,0)end if

if input(2)==1move(b)finish()printf("entrada dos conectada, muevo posición b\n")printf("y espero a que active la entrada 3\n")while input(3)==0end whileprintf("entrada 3 pulsada, continuo con el programa\n")end if

if input(4)==1move(c) finish()printf("entrada cuatro conectada, muevo posición c\n")end ifif input(15)==1printf("entrada 15 conectada, termino programa en 5 seg\n")delay(5000)finish()goto final

Page 17: Programar en Modo ASH Robot

end if

end while

printf("no esta activada la entrada 16 y espero 5 seg\n")delay(5000)

end loop

final::

printf("fin del curso...... felicidades y buen viaje\n")

end main

Salve el programa, cree la aplicación y el nexo, asigne las tres posiciones y ejecute el programa, siguiendo cuidadosamente el diagrama de conexiones y las instrucciones del instructor, si tiene cualquier duda, no proceda con el paso siguiente hasta estar seguro de lo que va a hacer.Realice modificaciones y observe