Vous êtes sur la page 1sur 17

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
tambin se encuentran en el ROBCOMM3, el Programa fuente es un archivo
que debe de contener la extensin r3, y podr ser escrito en otro editor,
siempre que contenga dicha extensin.
La Estructura general para un programa en RAPL3 es similar a los programas
en lenguaje C, en donde hay que respetar las estructuras programticas
El formato es el siguiente:
definicin de variables: (puede ser antes o despus 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 ubicacin de puntos grabados en
el controlados del robot, se especifica el tipo de exactitud de las variables (cloc,
ploc) en dnde cloc (localizacin cartesiana) se refiere a que se va a referenciar
para la exactitud en sistema de coordenadas cartesiano, y ploc (puntos de
localizacin) lo har directamente de los puntos provenientes de los
decoders del robot; se obtiene ms precisin 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 y ;;Estructura un
programa para una mejor comprensin , lo ;;cual se hace poniendo dos puntos
y comas seguidos (;;), y a ;;continuacin los comentarios deseados
ready() ;; comandos con dos parntesis al final
move (a)
move (b)
ready() ;;Fin del programa
end main ;; fin del segmento principal

Esta es la estructura bsica de los programas, con la cual debe contar todo
programa para interactuar con la interface del robot
4.2.-CREANDO UN PROGRAMA CON EL ROBCOMM3
Dentro de un programa la sintaxis de los comandos cambia, es necesario
aadirle dos parntesis, para la creacin de ellos se debe de hacer lo siguiente:
1.-Abra el ROBCOMM3,
En el men File seleccione la opcin 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 gurdelo con un nombre
procurando ponerle la extensin r3.
3.-Compilar el programa escrito.
Seleccione del men application la opcin compile, o haga un clic con el Mouse
sobre el icono compile.
Despus de compilar, si no existe ningn 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 lnea en la cual se encuentra el
error.
4.-Creando una Aplicacin.
Una vez salvado el programa, es necesario crear una aplicacin que sirve de
vinculo para que trabaje el robot, valla a la ventana del men aplicacin
Selecciona new app, pngale el mismo nombre del archivo fuente
Verifique en el Men aplicacin setup que todas las lneas deben de estar
llenas con el mismo nombre como se ve en la siguiente pantalla.
5.-Cargando el programa en el controlador
El 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 botn
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 aplicacin, y se corre el programa con
la opcin run confirmando la ejecucin.
Desde la PC. Dentro del Robcomm3 y una vez que aparece el prompt se
selecciona la aplicacin que fue grabada, cuando aparece la aplicacin se
teclea run y se le da enter ejecutndose asi el programa.

Cuando el proceso de Crear programa fuente, Compilar y Crear aplicacin se ha


terminado se deben de tener tres archivos en el directorio de trabajo, que son
los siguientes:
nombre.r3 Programa fuente
nombre.app Aplicacin (archivo de enlace)
nombre Archivo Objeto (aplicacin de terminal)
4.3.-COMANDOS QUE SOLO FUNCIONAN
EN UN PROGRAMA
Hay un conjunto de comandos que solo funcionan dentro de un programa, la
tabla siguiente muestra algunos de ellos.
SINTAXIS
SIGNIFICADO
delay(#)
Espera el tiempo especificado por # en milisegundos
finish()
Le da fin la instruccin anterior antes de ejecutar la siguiente
Printf()
Manda a Imprimir en la pantall
Programa No 2
Construya un programa que realiza movimientos de los ejes del robot, como el
que se da a continuacin , ejecute primero los movimientos antes que lo haga
el programa.
main
ready()
speed(40)
joint(1,-170) ;; Moverse Eje # 1 170 grados en el sentido de las manecillas
finish()
delay(3000) ;; Espera dos segundos
joint(1,340)
finish()
delay(3000) ;; Espera dos segundos
joint(1,-170) ;; Regresa a la posicin Inicial
finish()
delay(3000)
joint(2,-90) ;; Moverse Eje # 2
finish()
delay(3000) ;; Espera dos segundos
joint(2,180)
finish()
delay(3000)
joint(2,-90)
finish()
delay(3000)
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

4.4.-LAS VARIABLES EN RAPL3


En el Rapl3 los nombres
de las variables pueden ser de cualquier longitud, sin embrago los primeros 32
caracteres son los importantes. Nmeros y guin bajo pueden ser utilizados

como primer carcter en un nombre.


Los tipos de variables se muestran en la siguiente tabla:
Smbolo
Tipo
Ninguno
Entero
%
Flotante
$
Cadena
Guin bajo (_)
Cloc(cartesiano)
#
Ploc(punto de precisin)
Esto es importante cuando queremos asignar desde la terminal un tipo de
variable deseada.
Asignacin de variables
Las variables que son asignadas dentro del programa Rapl3, pueden ser
asignadas ya sea en la declaracin de lnea, o en cualquier parte del programa.
La asignacin 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 asignacin de valores en codigo ASCII para caracteres, usando
el carcter 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 asignacin de la variable va a ser suministrada por el usuario
desde la terminal antes de correr el programa.
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( precisin), si no se declara el tipo por default es cloc.
Otra manera de asignar valores a variables que no cambiarn su valor, y para
una mejor comprensin al utilizarlas, es darle valores predeterminados a estas
variables definindolas desde el comienzo de los programas con la herramienta
(.include), como se muestra a continuacin.
.define alta 100
.define media 40
Con 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 estn debajo del end if , en caso de que la
condicin no se cumpla, se ejecutan los comandos debajo del else y luego se
sigue con los que estn debajo del end if. El elemento else, no es necesario si
no se va a ejecutar ningn comando en el caso de que no se cumpla la
condicin.
Tambin es posible utilizar elseif condicin, tantos como se deseen.

4.6 CICLOS CONDICIONALES


Una de las herramientas mas poderosas en la programacin de cualquier
lenguaje, son los ciclos, que permiten realizar un conjunto de instrucciones las
veces que se desee.
Ciclo Do until
La sintaxis de esta estructura es:
do
...........Instrucciones
...........
............
............
Until CONDICION
Inicia con la palabra do y se ejecutan las instrucciones que estn despus del
do y hasta antes del until, todas las veces que sea hasta que la condicin sea
verdadera, pero, si se llega por primera vez al ciclo do y la condicin es
verdadera, solo se ejecuta el ciclo de ordenes en una sola ocasin, veamos el
siguiente ejemplo:
Programa No 3
teachable cloc a,b ;; Declaracin de variables
int c=1 ;; Declaracin de una variable entera
main
ready()
do
if c >= 3
move(a)
finish()
delay(3000)
else
move(b) ;; Se mover al punto b para c= 1 c = 2
finish()
delay(3000)
end if
c=c+1
ready()
finish()
delay(3000)
until c>5
end main
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 printf
La expresin 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 lnea aadiendo un \n, ejemplo
Int a =12
Printf( el valor de a es {}\n,a);;esta lnea se imprimir en la pantalla como:
;; el valor de a es 12

Programa No 4
Main
int i
teachable cloc a,b
grip_open()
speed(80)
i=1
do
printf("ENTRANDO AL DO UNTIL I = {}\n",i)
delay(3000)
speed(30)
move(a)
printf("MOVINDOSE AL PUNTO a{}\n")
finish()
delay(3000)
grip_close()
speed(10)
move(b)
printf("MOVINDOSE AL PUNTO b{}\n")
delay(3000)
finish()
grip_open()
i++
if i==2
break ;;Instruccin para Salir inmediatamente del ciclo
end if
until i> 3
end main
Ciclo while ..... end while
La sintaxis de esta estructura es :
while CONDICION
........instrucciones

........
........
end while
Este ciclo se repetir todas las veces que sean necesarias mientras la condicin
sea verdadera, si se llega al while por primera vez y la condicin es falsa, no se
ejecutan ninguna de las instrucciones que estn dentro, se empiezan a
ejecutar las que estn despus del end while; Como se ver en el siguiente
ejemplo:
Programa No 5
teachable cloc a,b
int c = 0
.define alta 50
.define media 30
.define baja 10
main
speed(baja)
while c 5
break
end if
end loop
move(d)
delay(5000)
ready()
end main

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 Variable

of: 1
..........Instrucciones
of: 2,3..
..........
of 7 to 9:
..........
of 10 to 12, 13 to 16, 19:
..........
else
..........
end case
Las instrucciones que se ejecutaran dependern del valor de la variable, y en cada caso solo
una de ellas, debajo de else estarn las instrucciones que se ejecutaran para todos los casos
no contemplados en los case.
Programa No 9
teachable cloc a,b,c,d
main
int e=1
string[23] mensaje1
mensaje1 = "El valor de e = {},\n"
ready()
printf("Los case son 16 \n")
loop
delay(3000)
case e
of 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()
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)
else
printf("Nada ")
printf(mensaje1,e)
delay(2000)
end case
e = e+1
if e >17
break
end if
end loop
ready()
finish()
printf("Fin del programa.....Adios\n")
end main

4.9.-SUBRUTINAS
Otra caracterstica especial de este tipo de lenguajes, es la compilacin por mdulos o
separada, lo que permite que se puedan definir subrutinas separadas del programa principal
y utilizarse llamndolas cuando sea necesario; estas subrutinas por lo general contienen
partes de un programa o secuencia fijos, es decir, que no varan aunque la
secuencia de su utilizacin as como otras acciones se puedan controlar desde
el programa principal.
Para la utilizacin de subrutinas en un programa, es necesario incluirlas en las
declaraciones que va a usar el programa principal por medio de la funcin
.include tal como se muestra a continuacin; y el formato de los archivos que

contengan las subrutinas, no debern contener la funcin 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 aplicacin nexo y programa y cree un conjunto nuevo con este listado,
que se llame General.r3
teachable cloc a,b
.include rutina1.r3
.include rutina2.r3
main
ready()
move(a)
printf("movi a punto a y espera de 3 segn\n")
finish()
delay(3000)
printf("Ejecutando Rutina 1 y espera de 5 segn")
rutina1() ;; Ejecucin de Rutina 1
printf("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 slvela con el nombre
derutina1.r3
teachable cloc c
sub rutina1()
finish()
delay(3000)
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 slvela con el


nombre de rutina2.r3
teachable cloc d
sub 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 aplicacin asigne las
nuevas variables directamente al controlador, por medio del comando new a
(para asignar variables tipo cartesiano se agrega el smbolo de guin bajo _ ,
y para variables del tipo de precisin, el smbolo de numero # )
En la pantalla de terminal, teclee el comando list, para observar las variables
existentes (observara que las variables aparecen precedidas del smbolo * ,
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.

CAPITULO V RECONOCIMIENTO DE SEALES


Distribucin fsica 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 DISEO 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 sistema
La capacidad de corriente que puede manejar la fuente interna es de mximo 1
Ampere, por lo que si la aplicacin 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, estn conectadas a un punto en comn, y estn 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 pginas
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; tambin 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
GPIO
Conecte el cable tipo listn al conector DD-50 y por el otro extremo al
controlador del robot
Encienda el controlador y abra la pantalla de terminal del robcomm3, abra
cualquier aplicacin 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, retrelo de la terminal 5 y vuelva a verificar el estado de la entrada 1 y
haga lo mismo con algunas otras entradas.

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 multmetro ajustado para medir voltaje de DC, en la
escala que soporte al menos 24 VDC, conecte la terminal positiva del
multmetro a la terminal 1 2 del conector DD-50, y la negativa a la terminal
21, observe la lectura del multmetro; ahora, aplique a la pantalla de terminal el

comando output 1,1 (formato: output #salida, valor lgico) 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 multmetro para medir
resistencia (si tiene la capacidad de tono audible cuando se detecta resistencia cercana a
cero, actvela); con mucho cuidado, conecte una de las terminales del multmetro 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; despus 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.

REALICE LA SIGUIENTE PRACTICA


Abra una pantalla de edicin 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 seleccin de entrada\n")
delay(5000)
finish()
if input(1)==1
move(a)
finish()
printf("entrada uno conectada, muevo posicin 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)==1
move(b)
finish()
printf("entrada dos conectada, muevo posicin b\n")
printf("y espero a que active la entrada 3\n")
while input(3)==0
end while
printf("entrada 3 pulsada, continuo con el programa\n")
end if
if input(4)==1
move(c)
finish()
printf("entrada cuatro conectada, muevo posicin c\n")
end if
if input(15)==1
printf("entrada 15 conectada, termino programa en 5 seg\n")
delay(5000)
finish()
goto final

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 aplicacin 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

Vous aimerez peut-être aussi