Simulación de un proceso de ensamblaje por soldadura en RobotStudio

31
Simulaci´ on de un proceso de ensamblaje por soldadura en RobotStudio Universidad Carlos III de Madrid Rob ´ otica Industrial Simulaci´ on de un proceso de ensamblaje por soldadura en RobotStudio Autor: David Est´ evez Fern´ andez 16 Mayo 2013 1

description

Trabajo realizado para la asignatura de Robótica Industrial en la Universidad Carlos III de Madrid.

Transcript of Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Page 1: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

Universidad Carlos III de Madrid

Robotica Industrial

Simulacion de un proceso de ensamblajepor soldadura en RobotStudio

Autor:David Estevez Fernandez

16 Mayo 2013

1

Page 2: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

Indice

1 Introduccion 3

2 Descripcion de la estacion de trabajo 42.1 Cinta inteligente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2 Barrera inteligente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3 Descripcion de los objetos de trabajo 73.1 Objetos de trabajo del robot IRB2400 (posicionador) . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3.1.1 Pallet 01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73.1.2 Pallet 02 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73.1.3 Cinta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3.2 Objetos de trabajo del robot IRB1600 (soldador) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.2.1 Cinta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

4 Descripcion de las herramientas de trabajo 94.1 Ventosa inteligente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94.2 Pistola de soldadura (AW Gun PSF 25) inteligente . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

5 Descripcion de la solucion propuesta 115.1 Tarea del robot IRB2400 (Rob1, posicionador) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115.2 Tarea del robot IRB1600 (Rob2, soldador) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115.3 Modulo E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115.4 Diagramas de flujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125.5 Rutina TRAP como medida de seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135.6 Modulos RAPID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135.7 Vıdeos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

6 Modificaciones 146.1 Modificacion de una herramienta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146.2 Modificacion de un objeto de trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

7 Simulacion: puesta en marcha 16

8 Conclusion 198.1 Analisis de los objetivos alcanzados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198.2 Posibles ampliaciones del trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198.3 Comentarios acerca de la practicas y el trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

A Recursos consultados 20

B Modulos RAPID 21B.1 Modulo de datos del robot IRB2400 (CalibData) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21B.2 Modulo principal del robot IRB2400 (ModuleRob1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22B.3 Modulo de datos del robot IRB1600 (CalibData) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27B.4 Modulo principal del robot IRB1600 (ModuleRob2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

C Recursos consultados 31

2

Page 3: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

1 Introduccion

El objetivo de este trabajo es simular un proceso industrial en el que participen robots industriales.

Para ello, el autor ha seleccionado un proceso sencillo, el montaje de unas lamparas de estilo moderno, ya quela geometrıa de las mismas, pese a ser basica, permite a los robots realizar sobre ella tanto trayectorias linealescomo circulares.

El proceso de montaje elegido emplea dos robots ABB de distintas caracterısticas, y sirve al autor para ilustrardistintos tipos de tareas que pueden realizar los robots industriales, ası como la implementacion de un protocolobasico de sincronizacion entre robots a traves de entradas y salidas digitales.

La estructura del trabajo es la siguiente:

• En los apartados 2, 3 y 4 se describen tanto la estacion en la que se va a trabajar, como los objetos yherramientas con los que trabajaran los robots.

• Posteriormente, se procedera a explicar la solucion propuesta, ası como las tareas que llevan a cabo los distintosrobots en el apartado 5.

• En el apartado 6 se explicaran las consecuencias de realizar los cambios sobre el TCP de una herramienta yun objeto de trabajo propuestos por el profesor.

• Las instrucciones sobre la puesta en marcha de la simulacion se proporcionaran en el apartado 7.

• Por ultimo, en el apartado 8, se comentaran los resultados de la simulacion, y se enumeraran las posiblesmejoras que es posible realizar al trabajo.

3

Page 4: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

2 Descripcion de la estacion de trabajo

La estacion de trabajo cuenta con dos robot ABB de dos modelos distintos, IRB2400 y IRB1600. Uno de ellos seencarga de las labores de posicionamiento de piezas y el otro lleva a cabo la soldadura de las mismas. Los modelosfueron seleccionados atendiendo a su capacidad y alcance maximos, segun la tarea que deben realizar.

Vista general de la estacion de trabajo.

Planta simplificada de la estacion de trabajo

Las piezas a ensamblar son proporcionadas al robot de posicionamiento a traves de dos pallets, que pueden contenerun maximo de 7 piezas apiladas.

4

Page 5: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

Por ultimo, la estacion cuenta con una cinta transportadora en la que se depositan las piezas para su ensamblado,y su posterior transporte a las siguientes fases del proceso de fabricacion (Por ejemplo, pintado de las piezas).

2.1 Cinta inteligente

La cinta transportadora puede ser accionada a traves de una entrada digital (diCinta) por un robot y transportarala pieza hasta el final de la misma. Una vez allı la pieza pasara a la siguiente etapa del montaje (en la simulacionsimplemente desaparecera) y se activara una salida digital (doCinta) indicando que la cinta esta libre y lista paraotra pieza.

A continuacion se muestra el diagrama de bloques de la cinta inteligente:

5

Page 6: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

2.2 Barrera inteligente

Como medida de seguridad, la estacion cuenta con una barrera laser que detecta si alguna persona u objeto la cruzamientras el robot esta ejecutando su tarea.

Este evento genera una salida digital (doBarrera) que esta conectada a una interrrupcion, de forma que los robots sedetengan inmediatamente, evitando posibles accidentes. La barrera laser se encuentra siempre activada por defecto.

6

Page 7: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

3 Descripcion de los objetos de trabajo

Al utilizar un sistema de dos robots disponemos de distintos objetos de trabajo para cada uno de ellos. A contin-uacion procederemos a su descripcion.

3.1 Objetos de trabajo del robot IRB2400 (posicionador)

El robot posicionador posee tres objetos de trabajo distintos, uno por cada pallet, y otro para la cinta transportadoradonde deposita las piezas.

3.1.1 Pallet 01

El sistema de referencia del usuario se encuentra en la esquina del pallet, y el sistema de referencia del objeto seencuentra en el centro de la superficie externa de la primera pieza que se encuentra en el pallet01, con la orientacionadecuada para la aproximacion de la herramienta de ventosa que la transportara.

3.1.2 Pallet 02

Los sistemas de referencia del pallet02 son identicos a los del pallet01, debido a las similitudes geometricas de ambospallets y piezas que soportan.

(La pieza se muestra transparente para una mejor apreciacion de lossistemas de referencia. )

7

Page 8: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

3.1.3 Cinta

El sistema de referencia del usuario en la cinta se encuentra en una de sus esquinas, y el sistema de referencia delobjeto se halla en la posicion en la que se encontrarıa el centro de la superficie de la pieza al ser colocada en lacinta. De esta forma es muy sencillo referenciar el punto de destino de la pieza, pues es el origen. La orientaciondel sistema de referencia del objeto se corresponde con la orientacion del TCP de la herramienta ventosa.

3.2 Objetos de trabajo del robot IRB1600 (soldador)

El robot encargado de llevar a cabo las soldaduras tiene un solo objeto de trabajo, la cinta donde se colocan laspiezas que ha de soldar.

3.2.1 Cinta

El sistema de referencia del usuario en la cinta se encuentra, como en el caso anterior, en una de sus esquinas, y elsistema de referencia del objeto se situa en el centro de la superficie de la pieza al ser colocada sobre la cinta. Laorientacion del mismo, sin embargo, es distinta a la del sistema de la cinta para el otro robot, ya que se encuentraorientado segun el TCP de la pistola de soldadura que porta este robot.

8

Page 9: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

4 Descripcion de las herramientas de trabajo

4.1 Ventosa inteligente

Esta herramienta es la ventosa creada por el alumno en la practica 4, con unas dimensiones de 300x300x50mm. ElTCP de la herramienta se encuentra en el centro del extremo de la ventosa, a 100mm del TCP de la muneca delrobot que la porta.

La ventosa posee una entrada digital, diVentosa, para que el robot accione la misma. Cuando esta activa, el sensorde lınea detecta si hay alguna pieza cortandolo. De ser ası, la pieza queda conectada a la ventosa, y se movera conella, a la vez que se acciona la salida digital doVentosa, indicando que se ha llevado a cabo la accion correctamente.Al desactivar la entrada diVentosa, la ventosa se desconectara de la pieza a la que estaba conectada previamente,y pondra la salida digital doVentosa a 0.

Diagrama de bloques de la ventosa.

9

Page 10: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

4.2 Pistola de soldadura (AW Gun PSF 25) inteligente

La pistola de soldadura AW Gun PSF 25 es una de las herramientas proporcionada por ABB en su biblioteca decomponentes, cuyas dimensiones aproximadas son 230x100x400mm.

Usando este componente como base se desarrollo un componente inteligente para simular la tarea de soldadurasobre las piezas. Este componente inteligente posee dos sensores de lınea horizontales colocados sobre la cintatrasportadora, que detectan las piezas a ser soldadas. Cuando las dos estan colocadas una sobre la otra en la cinta,y se acciona el soldador, ambas son detectadas y unidas.

Detalle de los sensores de lınea.

A continuacion se muestra el diagrama de bloques del componente inteligente como referencia.

10

Page 11: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

5 Descripcion de la solucion propuesta

El proceso industrial simulado consiste en el montaje de unas lamparas de diseno moderno. Estas lamparas estancompuestas de unas piezas circulares de cristal amarillo rodeadas por una parte metalica y una parte de formacuadrada que contiene la lampara en sı.

Estas piezas son montadas en otra estacion y son introducidas en la lınea de montaje en pales. Tras ser sol-dadas juntas, estas pasan a otras etapas del montaje de la lampara, como el control de calidad, que tambien estanautomatizadas.

La empresa que las fabrica sigue una metodologıa ”just-in-time”, por lo que le interesa que solo se fabriquenlas unidades demandadas por el cliente. Por ello, el numero de componentes en los pales puede ser variable, lo cualse ha tenido en cuenta en el programa, y antes de montar un lote, el robot preguntara al operario cuantas lamparasseran montadas.

5.1 Tarea del robot IRB2400 (Rob1, posicionador)

El robot IRB2400 esta equipado con la herramienta ventosa, y su tarea es la de coger los componentes de cada unode los pales y colocarlos en la cinta, donde la tarea de soldadura sera llevada a cabo.

Una vez soldadas las piezas, el robot acciona la cinta transportadora y espera a que pase a la siguente etapaantes de colocar la siguiente pieza.

5.2 Tarea del robot IRB1600 (Rob2, soldador)

El robot IRB1600 esta equipado con un soldador. Su tarea consiste en realizar unas soldaduras sobre la partecuadrada para unir ciertos componentes internos, y posteriormente, una vez colocado el cristal redondo en suposicion de montaje, soldar ambas piezas juntas.

5.3 Modulo E/S

A continuacion se describe el modulo de entradas/salidas usado en la estacion simulada, nombrando las senales, eltipo de senal, a que robot esta conectada esa senal y una breve descripcion de las mismas.

Nombre Tipo de senal Robot Descripcion

diBarrera entrada digital Rob1/Rob2 Senal conectada a la salida de la barrera inteligente paradetectar que se ha cruzado la misma.

diCinta entrada digital Rob1 Senal conectada a la salida de la cinta inteligente, la cualindica que la cinta esta en marcha.

diFinishedTaskRob1 entrada digital Rob1 Senal conectada a la salida doFinishedTaskRob2 del robot2, de forma que un protocolo de sincronizacion pueda serestablecido.

diFinishedTaskRob2 entrada digital Rob2 Senal conectada a la salida doFinishedTaskRob1 del robot1, de forma que un protocolo de sincronizacion pueda serestablecido.

diVentosa entrada digital Rob1 Senal conectada a la salida de la ventosa inteligente, la cualdetecta la presencia del objeto cogido.

doCinta salida digital Rob1 Senal conectada a la entrada de la cinta inteligente para supuesta en marcha.

doFinishedTaskRob1 salida digital Rob1 Senal conectada a la entrada diFinishedTaskRob2 del robot2, de forma que un protocolo de sincronizacion pueda serestablecido.

11

Page 12: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

doFinishedTaskRob2 salida digital Rob2 Senal conectada a la entrada diFinishedTaskRob1 del robot1, de forma que un protocolo de sincronizacion pueda serestablecido.

doSoldar salida digital Rob2 Senal conectada a la entrada del soldador inteligente parasu puesta en marcha.

doVentosa salida digital Rob1 Senal conectada a la entrada de la ventosa inteligente parasu accionamiento.

5.4 Diagramas de flujo

12

Page 13: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

5.5 Rutina TRAP como medida de seguridad

Un robot industrial en funcionamiento puede ser peligroso para los operarios de la planta si no se toman las precau-ciones adecuadas. Para evitar posibles accidentes debidos al acceso de operarios al espacio de trabajo de los robotsse ha implementado una rutina de interrupcion TRAP conectada a la salida de la barrera inteligente.

Cuando la barrera detecta que un objeto la ha cruzado, los robots se paran de inmediato, y en el caso del robotsoldador, la herramienta de soldadura es desactivada. Un mensaje de error es mostrado en el FlexPendant, y unmenu para que el usuario confirme que el problema se ha solventado. Tras la confirmacion el sitema volvera a laposicion de reposo, y la ejecucion del programa debera ser reiniciada.

A continuacion se proporciona la rutina TRAP para el robot IRB2400 como muestra:

TRAP paradaEmergencia

StopMove\Quick;

TPErase;

IF DInput(diBarrera)=1 THEN

TPWrite "ERROR: la barrera ha sido cruzada. Parando robots.";

ENDIF

TPReadFK dummy,"Para reanudar el sistema pulse ’Reanudar’","Reanudar","","","","";

StartMove;

irReposo;

ENDTRAP

5.6 Modulos RAPID

El codigo RAPID para los robots IRB2400 (Rob1) y IRB1600 (Rob2) puede consultarse en el apendice B.

5.7 Vıdeos

En la carpeta “videos” se pueden encontrar los vıdeos de la estacion simulada, tanto llevando a cabo su funcionalidadprincipal (RutinaPrincipal.mp4) como demostrando la funcion TRAP de seguridad (RutinaSeguridad.mp4).

13

Page 14: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

6 Modificaciones

6.1 Modificacion de una herramienta

Para llevar a cabo este apartado, se escalo la herramienta “ventosa” al 50%, reduciendo ası sus dimensiones, y seactualizaron los datos de la herramienta en el codigo de RAPID de acuerdo a los cambios realizados.

Como la tarea de colocacion de objetos que realiza el robot que porta la ventosa no depende de forma crıticade la longitud de la herramienta, este cambio no afecta al correcto funcionamiento de la estacion, por lo que no seaprecian cambios.

En las imagenes adjuntas podemos apreciar que, pese a que hemos cambiado la herramienta, con una simpleactualizacion del tooldata “ventosa” el robot ejecuta su tarea sin modificar el resto de modulos del programa.

El archivo que contiene esta estacion se puede encontrar en la carpeta “pack&go” bajo el nombre “EstacionCam-bioHerramienta”.

14

Page 15: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

6.2 Modificacion de un objeto de trabajo

Para la realizacion de este apartado se ha movido uno de los pallets (“pallet 01”), junto con su objeto de trabajo,para comprobar el efecto en la simulacion de este cambio.

En teorıa, al mover el objeto de trabajo junto con el objeto, y estar el resto del programa escrito con puntos relativosal objeto de trabajo, la ejecucion no deberıa sufrir cambios notables. La razon detras de usar objetos de trabajoen RAPID es precisamente esa, poder modificar la ubicacion de un objeto y solo tener que cambiar la ubicacion deese objeto de trabajo sin modificar el resto de instrucciones en el programa.

En la practica, al llevar a cabo la simulacion, la nueva posicion elegida para el pallet devuelve un fallo durantela ejecucion, ya que la configuracion de los ejes para alcanzar esos puntos no es la misma que la configuracion deejes para alcanzarlos con el pallet en la posicion anterior. En este caso, para que el programa funcionase de nuevocorrectamente habrıa que especificar una nueva configuracion de ejes en los puntos relativos al “pallet 01”.

El archivo que contiene esta estacion se puede encontrar en la carpeta “pack&go” bajo el nombre “EstacionCam-bioWObj”.

15

Page 16: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

7 Simulacion: puesta en marcha

1. Abrir la estacion. Dentro del archivo zip proporcionado, en la carpeta “pack&go”, se encuentra el archivoPack and Go que contiente la estacion a simular, llamado “EstacionPrincipal”. Para abrirlo, seleccionamosen la pantalla de inicio de RobotStudio la opcion Compartir>Unpack and Work, y seguimos las instruccionesdel asistente que aparecera en pantalla.

2. Ajuste de las piezas. Una vez abierta la estacion, el siguiente paso (opcional) a seguir es ajustar lavisibilidad de las piezas. El programa RAPID que controla la estacion funciona con diversos tamanos de lote.Por defecto, 2 unidades de cada tipo de pieza estan visibles y detectables por el sistema, pero se proporcionanotras 5 unidades ocultas en caso de que se quiera probar la funcionalidad de la estacion con otro tamano delote.

3. Abrir el FlexPendant. Para la correcta ejecucion de la simulacion, el dispositivo FlexPendant debe estarabierto. Para ello nos situamos en la pestana superior “Controlador” y selecionamos la opcion “FlexPendant”.

El dispositivo “FlexPendant” deberıa aparecer en pantalla a continuacion.

16

Page 17: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

4. Configurar la simulacion. A continuacion cambiamos a la pestana “Simulacion”, y abrimos la ventana“Opciones de simulacion”.

En el apartado “Tiempo virtual” seleccionamos “Ejecucion libre”.

Una vez configurado podremos simular el proceso.

17

Page 18: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

5. Simulacion del proceso. Para simular el proceso, en la misma pestana “Simulacion” hacemos click en “Re-producir”. Una vez los robots han llegado a la posicion de reposo, el FlexPendant nos hara unas preguntassobre el proceso a realizar.

Si estamos llevando a cabo la simulacion con el numero de piezas por defecto, la cantidad a seleccionarsera “2”.

A continuacion se nos preguntara por la ubicacion de las piezas cuadradas. El programa de RAPID estadisenado de tal manera que el orden de colocacion de los pallets no es relevante, pudiendose seleccionar alinicio de la tarea. Por defecto, las piezas cuadradas estaran en el “Pallet 2”.

Una vez realizados estos pasos, solo queda observar como los robots llevan a cabo el proceso.

18

Page 19: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

8 Conclusion

8.1 Analisis de los objetivos alcanzados

El objeto principal de este trabajo era aprender a usar el entorno de programacion para robots ABB “RobotStudio”,junto con la implementacion de un proceso industrial con los mismos.

La seleccion de un proceso industrial sencillo ha servido al alumno para familiarizarse con el entorno, priorizandoel aprendizaje de la herramienta (RobotStudio) frente a la resolucion de un problema excesivamente complejo.

Pese a ello, gracias a la inclusion de dos robots que realizan tareas distintas, se ha podido abarcar un rangode procedimientos mas amplio, ejecutando tanto movimientos punto a punto en caso del robot que transporta laspiezas con la ventosa, como de trayectorias lineales y circulares, en caso del robot soldador.

Ademas, el uso de dos robots ha requerido la implementacion de un protocolo de sincronizacion basico, el cualse ha llevado a cabo a traves de las entradas/salidas del robot.

Por tanto, el autor cree que los objetivos planteados para el trabajo han sido cumplidos satisfactoriamente.

8.2 Posibles ampliaciones del trabajo

Una vez el alumno ha aprendido a manejar el entorno y las distintas funcionalidades de la herramienta RobotStudio,el trabajo podrıa ser ampliado implementando un proceso mas complejo que requiera, ademas del correcto uso delprograma, un desarrollo mas elaborado. Esto podrıa conseguirse cambiando los objetos con los que trabajan losrobots por elementos mas pequenos o de una geometrıa mas irregular, que podrıan llegar a la estacion por mediode una cinta transportadora en lugar de llegar en pallets, lo cual resultarıa a su vez mas fiel a la realidad.

Por otro lado, para evitar posibles errores durante el uso del sistema disenado, se podrıa colocar algun tipo desensor de proximidad extra en el robot que porta la ventosa, de forma que si el operario introduce por error unnumero incorrecto de piezas el robot no colisione con ellas. De esta forma se podrıa, ademas, realizar un sistemamas autonomo ya que el robot no necesitarıa conocer el numero de piezas, sino que las estimarıa gracias a estesensor, y emitirıa un aviso para su reposicion inmediata cuando detectase que no quedan piezas en el pallet.

Por ultimo, se podrıa incluir un tercer robot en el sistema que paletizase o empaquetase las lamparas una vezmontadas por los otros dos robots.

8.3 Comentarios acerca de la practicas y el trabajo

La opinion personal del autor es que en las practicas con los robots ABB reales el alumno tiene un contacto muyescaso con los robots, ya que los grupos son numerosos y los instructores escasos. El autor entiende que los recursosde los que se dispone son limitados, por lo que propone que las sesiones practicas realizadas en las aulas informaticassean reducidas en favor de las sesiones con robots, y que se realicen antes para que los alumnos puedan asistir a lassesiones con los robots con un mınimo contacto previo con la interfaz del FlexPendant, que puede ser simulado enRobotStudio, para un mayor aprovechamiento.

Por otra parte, el autor considera que la curva de aprendizaje del software RobotStudio tiene una pendiente muyelevada, y que serıa conveniente proporcionar a los alumnos algun tutorial mas al estilo de los manuales de laspracticas, explicando algunas de las “rarezas” de RobotStudio que resultan poco intuitivas.

19

Page 20: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

A Recursos consultados

• Create tool with RobotStudio: http://www.robotstudio.com/tutorial/15b/CreateTool.html

• Create System from Layout (YouTube video): http://youtu.be/Ur1zuGR-d_M

• Input and Output signals in RobotStudio:http://www.docstoc.com/docs/32766659/Practice-5-Input-and-Output-Signal-in-Robot-Studio

• ABB RobotStudio - How to use it:http://www.abb.com/product/ap/seitp327/f7890149122101c6c125798a004ee0e2.aspx

• RAPID Reference Manual: http://rab.ict.pwr.wroc.pl/irb1400/overviewrev1.pdf

• ABB Robotics - Manuals:http://developercenter.robotstudio.com/index.aspx?devcenter=devcentermanualstore

20

Page 21: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

B Modulos RAPID

B.1 Modulo de datos del robot IRB2400 (CalibData)

MODULE CalibData

! Definicion de los datos del robot 1:

! ------------------------------------------------------------------------------

! Definir la herramienta ventosa

PERS tooldata ventosa:=[TRUE,[[0,0,100],[1,0,0,0]],[1,[0,0,1],[1,0,0,0],0,0,0]];

! Definir los objetos de trabajo

TASK PERS wobjdata pallet_01:=[FALSE,TRUE,"",[[1100,-1300,145],[1,0,0,0]],

[[400,600,100],[0,0,1,0]]];

TASK PERS wobjdata pallet_02:=[FALSE,TRUE,"",[[1100,100,145],[1,0,0,0]],

[[400,600,100],[0,-0.707106781,0.707106781,0]]];

TASK PERS wobjdata cinta:=[FALSE,TRUE,"",[[500,2035,435],[0,0,0,1]],[[500,535,100],[0,1,0,0]]];

! Definir puntos

CONST robtarget origen:=[[0,0,0],[1,0,0,0],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];

CONST jointtarget reposoR1:=[[90,0,0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];

! Definir cargas

PERS loaddata loadCuadrado:=[1,[0,0,50],[1,0,0,0],0,0,0];

PERS loaddata loadCristal:=[2,[0,0,50],[1,0,0,0],0,0,0];

! Definir variables

VAR num num_piezas;

VAR num pallet_cuadrado;

VAR num dummy;

CONST num grosor_pieza:=100;

ENDMODULE

21

Page 22: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

B.2 Modulo principal del robot IRB2400 (ModuleRob1)

MODULE ModuleRob1

! Variable para la interrupcion de la funcion TRAP

VAR intnum interrupt;

! Proceso principal

PROC MAIN()

! Preparacion previa:

! -----------------------------------------------------

! Inicializar se~nales:

Reset doFinishedTaskRob1;

Reset doVentosa;

Reset doCinta;

! Sin Carga:

GripLoad load0;

! Asignar rutina de interrupcion:

CONNECT interrupt WITH paradaEmergencia;

ISignalDI diBarrera,1,interrupt;

! Hilo principal

! ------------------------------------------------------

WHILE TRUE DO

! Llevar al robot a la posicion de reposo

irReposo;

! Pedir al usuario datos del numero de piezas y ubicacion del pallet

! de los cuadrados

TPErase;

TPReadNum num_piezas,"¿Cuantas piezas se montaran?";

TPReadFK pallet_cuadrado,"¿En que pallet estan situados los cuadrados?",

"Pallet 1","Pallet 2","","","";

! Montaje de un lote completo

WHILE num_piezas>0 DO

! Activar la vigilancia de la interrupcion de la barrera

IWatch interrupt;

! Colocar el cuadrado

waitTime\InPos,1;

waitdi diFinishedTaskRob1,1;

! Seleccionar el pallet segun donde esten los cuadrados

IF pallet_cuadrado=1 THEN

cogerPallet1 0,num_piezas,0;

ELSE

cogerPallet2 0,num_piezas,0;

ENDIF

irReposo;

Set doFinishedTaskRob1;

22

Page 23: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

WaitTime\InPos,1;

! Colocar el cristal

WaitDI diFinishedTaskRob1,1;

Reset doFinishedTaskRob1;

IF pallet_cuadrado=1 THEN

! Seleccionar el pallet segun donde esten los cristales

cogerPallet2 1,num_piezas,1;

ELSE

cogerPallet1 1,num_piezas,1;

ENDIF

irReposo;

Set doFinishedTaskRob1;

WaitTime\InPos,1;

! Activar cinta

WaitDI diFinishedTaskRob1,1;

Reset doFinishedTaskRob1;

Set doCinta;

WaitTime\InPos,1;

WaitDI diCinta,0;

Reset doCinta;

! Substraer la pieza ya completada al contador

num_piezas:=num_piezas-1;

ENDWHILE

! Levantar la proteccion de interrupcion

ISleep interrupt;

ENDWHILE

ENDPROC

! Ir a la posicion de reposo / inicial

! ----------------------------------------------------

PROC irReposo()

MoveAbsJ reposoR1,v1000,z100,ventosa\WObj:=wobj0;

ENDPROC

! Coger una pieza en el pallet 1

! -----------------------------------------------------

PROC cogerPallet1(num tipo,num numPieza,num destino)

IF numPieza<8 and numPieza>0 THEN ! Maximo de piezas: 8

IF destino=0 or destino=1 THEN ! Solo dos destinos

! Mover la ventosa hasta el pallet1

MoveJ Offs(origen,0,0,altura(8)),v1000,z5,ventosa\WObj:=pallet_01;

MoveL Offs(origen,0,0,altura(numPieza)),v300,fine,ventosa\WObj:=pallet_01;

! Activar la ventosa

Set doVentosa;

23

Page 24: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

WaitTime 0.3;

IF (DInput(diVentosa)=0) THEN

TPWrite("Sucedio un error al coger la pieza (¿piezas agotadas?)");

Stop;

ENDIF

! Coger la carga

IF tipo=0 THEN ! Es un cuadrado

GripLoad loadCuadrado;

ELSE ! Es un cırculo

GripLoad loadCristal;

ENDIF

! Levantar la pieza

MoveL Offs(origen,0,0,-800),v200,fine,ventosa\WObj:=pallet_01;

! Llevarlo a la cinta

MoveJ Offs(origen,0,0,-510),v800,z5,ventosa\WObj:=cinta;

MoveL Offs(origen,0,0,-100*destino),v100,fine,ventosa\WObj:=cinta;

! Soltar carga (desactivar ventosa)

Reset doVentosa;

WaitTime 0.3;

GripLoad load0; ! Quitar la carga

! Volver con cuidado al origen

MoveL Offs(origen,0,0,-510),v500,fine,ventosa\WObj:=cinta;

ELSE

TPWrite("El destino seleccionado no existe.");

ENDIF

ELSE

TPWrite("Numero maximo de piezas excedido");

ENDIF

ENDPROC

! Coger una pieza en el pallet 2

! -----------------------------------------------------

PROC cogerPallet2(num tipo,num numPieza,num destino)

IF numPieza<8 and numPieza>0 THEN ! Maximo de piezas: 8

IF destino=0 or destino=1 THEN ! Solo dos destinos

! Necesario para evitar la singularidad cerca del pallet

ConfJ\Off;

ConfL\Off;

! Mover la ventosa hasta el pallet2

MoveJ Offs(origen,0,0,-800),v1000,z5,ventosa\WObj:=pallet_02;

MoveJ Offs(origen,0,0,altura(numPieza)),v500,fine,ventosa\WObj:=pallet_02;

! Activar la ventosa

Set doVentosa;

WaitTime 0.3;

IF DInput(diVentosa)=0 THEN

TPWrite("Sucedio un error al coger la pieza (¿piezas agotadas?)");

Stop;

24

Page 25: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

ENDIF

! Coger la carga correspondiente

IF tipo=0 THEN

GripLoad loadCuadrado; ! Es un cuadrado

ELSE

GripLoad loadCristal; ! Es un cristal

ENDIF

! Levantar la pieza

MoveL Offs(origen,0,0,-800),v200,fine,ventosa\WObj:=pallet_02;

! Llevarlo a la cinta

MoveJ Offs(origen,0,0,-510),v800,z5,ventosa\WObj:=cinta;

MoveL Offs(origen,0,0,-100*destino),v200,fine,ventosa\WObj:=cinta;

! Soltar carga (desactivar ventosa)

Reset doVentosa;

WaitTime 0.3;

GripLoad load0; ! Soltar la carga

! Volver con cuidado al origen

MoveL Offs(origen,0,0,-510),v500,fine,ventosa\WObj:=cinta;

! Restaurar seguimiento de las configuraciones

ConfJ\On;

ConfL\On;

ELSE

TPWrite("El destino seleccionado no existe.");

ENDIF

ELSE

TPWrite("Numero maximo de piezas excedido");

ENDIF

ENDPROC

! Devuelve la altura a la que esta un determinado item en la pila

! a partir de su grosor.

FUNC num altura(num item)

RETURN -grosor_pieza*(item-1);

ENDFUNC

! Para el robot en caso de que la barrera sea cruzada por alguien

! mientras los robots estan operativos

TRAP paradaEmergencia

StopMove\Quick;

TPErase;

IF DInput(diBarrera)=1 THEN

TPWrite "ERROR: la barrera ha sido cruzada. Parando robots.";

ENDIF

TPReadFK dummy,"Para reanudar el sistema pulse ’Reanudar’","Reanudar","","","","";

StartMove;

irReposo;

ENDTRAP

25

Page 26: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

ENDMODULE

26

Page 27: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

B.3 Modulo de datos del robot IRB1600 (CalibData)

MODULE CalibData

! Definicion de los datos del robot 2:

! ------------------------------------------------------------------------------

! Definir la herramienta pistola soldadora

PERS tooldata AW_Gun:=[TRUE,[[119.5,0,352],[0.890213743,0,0.455543074,0]],

[1,[0,0,100],[1,0,0,0],0,0,0]];

! Definir el objeto de trabajo cinta

TASK PERS wobjdata cinta:=[FALSE,TRUE,"",[[500,2035,435],[0,0,0,1]],[[500,535,100],

[0,-0.707106781,0.707106781,0]]];

! Definicion de puntos

CONST robtarget center:=[[0,0,0],[1,0,0,0],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];

CONST jointtarget reposoR2:=[[-90,0,0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];

CONST jointtarget trabajoR2:=[[0,0,0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];

CONST robtarget inicioCirculo:=[[0,-radioCirculo,-20],[1,0,0,0],[-1,0,-1,0],

[9E9,9E9,9E9,9E9,9E9,9E9]];

CONST robtarget medioCirculo:=[[0,radioCirculo,-20],[1,0,0,0],[0,-1,0,0],

[9E9,9E9,9E9,9E9,9E9,9E9]];

! Definicion de variables y constantes:

CONST num ladoCuadrado:=600;

CONST num radioCirculo:=300;

VAR num dummy; ! Usada en la gestion de errores

ENDMODULE

27

Page 28: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

B.4 Modulo principal del robot IRB1600 (ModuleRob2)

MODULE ModuleRob2

! Variable para la interrupcion de la funcion TRAP

VAR intnum interrupt;

PROC MAIN()

! Inicializar se~nales del robot

Reset doFinishedTaskRob2;

Reset doSoldar;

! Asignar rutina de interrupcion

CONNECT interrupt WITH paradaEmergencia;

ISignalDI diBarrera, 1, interrupt;

! Mover el robot a la posicion inicial

irReposo;

Set doFinishedTaskRob2;

WaitTime\InPos,0.5;

WHILE TRUE DO

! Activar la vigilancia de la interrupcion:

IWatch interrupt;

! Esperar hasta que el cuadrado este en posicion

WaitDI diFinishedTaskRob2,1;

Reset doFinishedTaskRob2;

soldarCuadrado;

Set doFinishedTaskRob2;

WaitTime\InPos,0.5;

! Esperar hasta que el cırculo este en posicion

WaitDI diFinishedTaskRob2,1;

Reset doFinishedTaskRob2;

soldarCirculo;

Set doFinishedTaskRob2;

WaitTime\InPos,0.5;

ENDWHILE

ISleep interrupt;

ENDPROC

! Posiciona el robot en la posicion de espera

! ----------------------------------------------------------

PROC irReposo()

MoveAbsJ reposoR2,v1000,z100,AW_Gun\WObj:=wobj0;

ENDPROC

! Suelda el cuadrado

28

Page 29: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

! ----------------------------------------------------------

PROC soldarCuadrado()

! Aproximarse al primer punto de soldadura

MoveJ Offs(center,ladoCuadrado/2,ladoCuadrado/2,-500),v1000,z100,AW_Gun\WObj:=cinta;

MoveL Offs(center,ladoCuadrado/2,ladoCuadrado/2,0),v100,fine,AW_Gun\WObj:=cinta;

! Asegura que el robot no se queda bloqueado mientras suelda debido a singularidades

ConfJ\Off;

ConfL\Off;

! Enciende el soldador

Set doSoldar;

! Suelda el contorno

MoveL Offs(center,ladoCuadrado/2,-ladoCuadrado/2,0),v500,fine,AW_Gun\WObj:=cinta;

MoveL Offs(center,-ladoCuadrado/2,-ladoCuadrado/2,0),v500,fine,AW_Gun\WObj:=cinta;

MoveL Offs(center,-ladoCuadrado/2,ladoCuadrado/2,0),v500,fine,AW_Gun\WObj:=cinta;

MoveL Offs(center,ladoCuadrado/2,ladoCuadrado/2,0),v500,fine,AW_Gun\WObj:=cinta;

! Apaga el soldador

Reset doSoldar;

! Reestablece el chequeo de configuraciones

ConfJ\On;

ConfL\On;

! Vuelve a la posicion de reposo

MoveL Offs(center,ladoCuadrado/2,ladoCuadrado/2,-500),v100,fine,AW_Gun\WObj:=cinta;

irReposo;

ENDPROC

! Suelda el cristal

! ----------------------------------------------------------

PROC soldarCirculo()

! Aproximarse al primer punto de soldadura

MoveJ Offs(center,0,-radioCirculo,-500),v1000,z100,AW_Gun\WObj:=cinta;

MoveL inicioCirculo,v100,fine,AW_Gun\WObj:=cinta;

! Asegura que el robot no se queda bloqueado mientras suelda debido a singularidades

ConfJ\Off;

ConfL\Off;

! Enciende el soldador

Set doSoldar;

! Suelda el contorno

MoveL inicioCirculo, v300, fine, AW_Gun\WObj:=cinta;

MoveC Offs( center, -300, 0, -20), medioCirculo ,v300, fine, AW_Gun\WObj:=cinta;

MoveC Offs( center, 300, 0, -20), inicioCirculo ,v300, fine, AW_Gun\WObj:=cinta;

! Apaga el soldador

Reset doSoldar;

29

Page 30: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

! Reestablece el chequeo de configuraciones

ConfJ\On;

ConfL\On;

! Vuelve a la posicion de reposo

MoveL Offs(center,radioCirculo,0,-500),v100,fine,AW_Gun\WObj:=cinta;

irReposo;

ENDPROC

! Para el robot en caso de que la barrera sea cruzada por alguien

! mientras los robots estan operativos

TRAP paradaEmergencia

Reset doSoldar; ! Desactivar el soldador antes de nada para evitar accidentes.

StopMove \Quick;

TPErase;

IF DInput( diBarrera) = 1 THEN

TPWrite "ERROR: la barrera ha sido cruzada. Parando robots.";

ENDIF

TPReadFK dummy, "Para reanudar el sistema pulse ’Reanudar’", "Reanudar", "", "", "", "";

StartMove;

irReposo;

ENDTRAP

ENDMODULE

30

Page 31: Simulación de un proceso de ensamblaje por soldadura en RobotStudio

Simulacion de un proceso de ensamblaje por soldadura en RobotStudio

C Recursos consultados

• Create tool with RobotStudio: http://www.robotstudio.com/tutorial/15b/CreateTool.html

• Create System from Layout (YouTube video): http://youtu.be/Ur1zuGR-d_M

• Input and Output signals in RobotStudio:http://www.docstoc.com/docs/32766659/Practice-5-Input-and-Output-Signal-in-Robot-Studio

• ABB RobotStudio - How to use it:http://www.abb.com/product/ap/seitp327/f7890149122101c6c125798a004ee0e2.aspx

• RAPID Reference Manual: http://rab.ict.pwr.wroc.pl/irb1400/overviewrev1.pdf

• ABB Robotics - Manuals:http://developercenter.robotstudio.com/index.aspx?devcenter=devcentermanualstore

31