Documentos de Académico
Documentos de Profesional
Documentos de Cultura
con
un robot Staubli TX60.
1. Objetivo. ................................................................................................. 3
2. Introducción. ......................................................................................... 3
5. ANEXOS. ............................................................................................... 8
1. Objetivo.
El objeto del presente proyecto consiste en realizar una aplicación mediante el programa
VAL3 Studio que permita a un robot Staubli TX60 construir una pirámide, con piezas
rectangulares, cuyo número de pisos sea especificado por el usuario.
2. Introducción.
Pirámide G13 se trata de una aplicación que permite al usuario realizar una pirámide con
el número de pisos que este desee, así como cambiar las dimensiones de la pieza que se
emplean.
3
3. Puntos de referencia.
En el presente apartado, se muestran los puntos que se han tomado inicialmente para
realizar la construcción de la pirámide a través de la aplicación realizada.
En primer lugar, se cogió como referencia un punto pOrigen (ver figura 2) situado en la
esquina de la tabla donde se construye la pirámide para situar la pieza a recoger por el
robot siempre en el mismo lugar.
4
4. Funcionamiento del programa
En el presente apartado, se muestran una serie de figuras de la pantalla de Usuario del
MCP con lo que se explicará el funcionamiento del programa.
Al presionar la tecla F1 de la pantalla de Usuario del MCP, el robot procede a construir
la pirámide con el número de pisos que se hayan especificado (3 pisos en el presente
caso).
5
Al presionar la tecla F2 de la pantalla de Usuario del MCP, la aplicación permite al
usuario cambiar las características de las piezas con las que se va a realizar la pirámide.
6
Al presionar la tecla F3 de la pantalla de Usuario del MCP, la aplicación permite al
usuario especificar el número de pisos de la pirámide que desea construir.
4
Figura 6. Pantalla de Usuario del MCP. Función F3.
Aparece por pantalla un texto informativo que indica al usuario que introduzca el número
de pisos de la pirámide “Introduzca el nº de pisos de la pirámide.” En el ejemplo de la
figura 6, inicialmente la pirámide se iba a construir de 3 pisos, pero tras seleccionar la
función F3, modificar el número de pisos de la pirámide a 4 y pulsar la tecla ‘enter’ el
número de pisos de la pirámide cambia a 4 y por tanto el número de pisos que quedan por
colocar también se modifica al mismo valor, dejando el número de pisos colocados a cero
ya que todavía no se ha procedido a construir la pirámide.
7
5. ANEXOS.
En el presente apartado, se muestran las líneas del código, con comentarios explicativos,
que se han escrito para realizar la aplicación.
INFO ()
begin
// Piramide G13
// ------------
// AUTOR
// -----
// María del Carmen Salas Casas.
// DNI: 54201252G.
//
// DESCRIPCION DEL PROGRAMA
// -------------------------
// Construir una pirámide, con piezas rectangulares, cuyo número de pisos sea
especificado por el usuario.
//
// FUNCIONALIDAD
// -------------
// - F1: Monta una pirámide con el número de pisos indicados por el usuario.
// - F2: El usuario modifica las caracteristicas de la pìeza.
// - F3: El usuario introduce el numero de pisos de la piramide.
// - F8: Sale de la aplicacion.
//
// REQUISITOS
// ----------
// - Antes de trasladar debe haber una pieza en la posicon origen y
// debe estar libre la posicion destino.
//
// SITUACION INICIAL
// -----------------
// - El brazo del robot se encontrará en su posición inicial.
// - No debe haber ninguna pieza en la posición de Destino.
// DATOS
// -----
// - Plataforma = 400x300
// - Pieza = 70x22x12
// - Herramienta: Pinza
end
VAR_GLOBAL ()
begin
// BOOL
// - bContinua: autoriza movimientos
// - bFin: indicador de finalizacion
// - bSalir: orden de abandonar la ejecucion de la aplicacion
// - bTraslada: orden de trasladar pieza
//
// JOINT
// - jHome: brazo en la posicion de referencia
//
// MDESC
// - mNomSpeed: descriptor de movimiento a velocidad nominal
8
// - mVelAprox: descriptor de movimiento a velocidad de aproximacion
//
// NUM
// - nAlto: valor del alto de la pieza a emplear para construir la pirámide
// - nAncho: valor del ancho de la pieza a emplear para construir la pirámide
// - nLargo: valor del largo a emplear para construir la pirámide
// - nCV: valor actual del contador de maniobras realizadas
// - nCV1: valor actual del contador de maniobras realizadas 1
// - nPV: valor de preselecion (inicial) del contador de maniobras
// - nPisos: valor actual del contador de pisos de la pirámide
// - nPisosQ: valor actual del número de pisos que han sido construidos
//
// POINT
// - pDestino: posicion de destino del movimiento
// - pDestino1: posicion de destino del movimiento 1 que se empleará para
recuperar la posición de destino inicial tras construir la pirámide
// - pOrigen: Posicion de origen del movimiento
//
// STRING
// - sMensaje: Mensaje que se muestra por pantalla
//
// TOOL
// - tPinza: Herramienta empleada por el robot para trasladar las piezas de
una posición a otra (Pinza).
//
// TRSF
// - trAprox: Transformación de aproximación posición pick/place.
end
Initializ ()
begin
// Inicialización de las variables globales.
// Cadenas de caracteres
sMensaje=""
sMensaje1=""
sMensaje2=""
end
Start ()
begin
9
//Se llama a al programa Initializ para que inicialice las variables
globales
call Initializ()
Stop ()
begin
waitEndMove()
end
NumPiezas ()
begin
gotoxy(0,11)
sMensaje=""
end
DimensionesPiez ()
begin
10
//Se pide el Alto de las piezas
gotoxy(0,11)
sMensaje=" Alto de las piezas (mm): "
//El mensaje sale por pantalla
put(sMensaje)
//El usuario introduce el Alto de la pieza
get(nAlto)
gotoxy(0,11)
sMensaje=""
end
robotMotion ()
begin
11
for nCV=0 to nPisos-1
// Espera la orden de continuar
sMensaje="Pulse 'enter' si desea continuar."
wait(bContinua)
bContinua=false
sMensaje=""
// Orden de coger una de las piezas de la posición de Origen
// Se aproxima a la posicion origen
pAprox=appro(pOrigen,trAprox)
movej(pAprox,tPinza,mNomSpeed)
movel(pOrigen,tPinza,mVelAprox)
// Cierra la pinza
waitEndMove()
tPinza.gripper=false
delay(tPinza.ctime)
// Se aleja de la posicion origen.
movel(pAprox,tPinza,mVelAprox)
// Orden de Colocar una de las piezas de la posición de Destino
// Se aproxima a la posicion destino
pAprox=appro(pDestino,trAprox)
movej(pAprox,tPinza,mNomSpeed)
movel(pDestino,tPinza,mVelAprox)
pDestino.trsf.x=pDestino.trsf.x-(nLargo)
waitEndMove()
// Abrir pinza
tPinza.gripper=true
delay(tPinza.otime)
// Se aleja de la posicion destino
movel(pAprox,tPinza,mVelAprox)
//Se realiza un bucle que se esté ejecutando hasta que coloque las
piezas del piso correspondiente.
for nCV1=0 to nPisos-1
12
tPinza.gripper=false
delay(tPinza.ctime)
// Se aleja de la posicion indicada.
movel(pAprox,tPinza,mVelAprox)
endIf
endWhile
bTraslada=false
//Se recupera la posición de Destino inicial.
pDestino=pDestino1
//El número de pisos colocados vuelve a cero tras terminar de construir
la pirámide.
nPisosQ=0
sMensaje2=" "
put(sMensaje2)
//Mensaje de que la pirámide ha finalizado
sMensaje1=" Pirámide finalizada. "
//El mensaje sale por pantalla
put(sMensaje1)
endIf
// Da paso a la siguiente tarea
delay(0)
endWhile
13
// Finalizacion de la tarea
bFin=true
end
userInterface ()
begin
//CONTROLAR LA PANTALLA DEL MANDO MANUAL(MCP)
// Establece el titulo
title("Pirámide G13")
// Borra la pantalla
cls()
gotoxy(5,13)
put("DimPZ")
gotoxy(11,13)
put("NumPZ")
gotoxy(35,13)
put("EXIT")
14
put("Alto de las piezas(mm): ")
put(nAlto)
gotoxy(0,9)
put("Ancho de las piezas(mm): ")
put(nAncho)
15