Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 57

COSIMIR

Program start:
When starting the COSIMIR program we will see this window that we will
close by clicking OK.
(Khi chương trình cosimir bắt đầu , cửa sổ này sẽ xuất hiện và chúng tôi
sẽ đóng bằng cách nhấp vào OK.)

Next we will see the following window, which we will close before starting the program.
(Tiếp theo chúng ta sẽ thấy
cửa sổ tiếp theo, chúng tôi sẽ đóng
trước khi bắt đầu chương trình.)

The next step is to create a new project with the project assistant (Project Wizard):
Bước tiếp theo là tạo một dự án mới với trợ lý dự án (Project Thuật sĩ):

File > Project Wizard

Fill in the requested fields with lower case,


and then click Next>

Điền vào các trường được yêu cầu với


chữ thường, và sau đó bấm vào
Tiếp theo>.
In the next window that appears we select the
Robot Type RV-2AJ and in the Programming
Language section we select the option
MELFA-BASIC IV.
We press Finish.

Trong cửa sổ tiếp theo xuất hiện


chúng tôi đã chọn Loại Robot RV-2AJ và trong
phần Ngôn ngữ lập trình
chúng tôi chọn tùy chọn MELFA-BASIC
IV.
Chúng tôi nhấn Kết thúc.

press OK to close the popup window that appears in the


1st plane.
Nhấn OK để đóng cửa sổ bật lên mà chúng tôi
xuất hiện trong mặt phẳng thứ 1.
Work windows:

The screen has been divided


into 4 working windows.
When we want to work in one
of them we must first click on
it so that in this way we activate
the tools available for that particular
window.

So, clicking on window 1, where the


robot is located, activates the visualization options.

Cửa sổ làm việc:


Màn hình đã được chia thành 4
cửa sổ làm việc.
Khi chúng tôi muốn làm việc với một trong số họ
đầu tiên chúng ta phải nhấp vào nó để
bằng cách này, chúng tôi kích hoạt các công cụ
có sẵn cho cửa sổ cụ thể đó

Display options:

The 3 push buttons located inside the red ellipse, serve to:
- move / frame the robot image in the viewing window,
- - rotate / rotate the robot image in the viewing window,
- Zoom
Tùy chọn hiển thị:

3 nút ấn nằm bên trong hình elip màu đỏ, phục vụ cho:
- di chuyển / đóng khung hình ảnh robot trong cửa sổ xem,
- - xoay / xoay hình ảnh robot trong cửa sổ xem,
- Thu phóng

The 4 push buttons located inside the red


ellipse, serve to select the different display
options: wireframe and shading.

4 nút ấn nằm bên trong hình elip màu đỏ,


phục vụ để chọn các tùy chọn hiển thị khác
nhau: khung dây và bóng
Movements with the robot:
Chuyển động với robot:

Extras > Teach-In

In the pop-up window that appears, we will select one of the options:
- XYZ Jog (position the hand)
- JOINT Jog (position articulations)
- TOOL Jog (position the tool)

Trong cửa sổ bật lên xuất hiện, chúng tôi sẽ chọn một
trong các tùy chọn:

- XYZ Jog (định vị tay)


- LIÊN chạy bộ (khớp nối vị trí)
- CÔNG CỤ Chạy bộ (định vị dụng cụ)

Through this window we can also adjust the movement speed with the Jog Override option
and open / close the hand with the Open / Close Hand option

Thông qua cửa sổ này, chúng ta cũng có thể điều chỉnh tốc độ di chuyển với tùy chọn Ghi đè
Chạy bộ và mở / đóng tay bằng tùy chọn Mở / Đóng tay

Once we have placed the robot in the desired


position, the program will memorize that position
(angle of the joints) by clicking on the button:
Khi chúng tôi đã đặt robot vào vị trí mong muốn,
chương trình sẽ ghi nhớ vị trí đó (góc của khớp) bằng
cách nhấp vào nút

Current Position → Pos. List

The list of memorized points appears in the work window 2.


Danh sách các điểm ghi nhớ xuất hiện trong cửa sổ làm việc 2.

After having finished entering a series of robot positions, we will execute the programming
assistant to write the program lines. To carry out this action we will proceed as follows:
Sau khi hoàn thành việc nhập một loạt các vị trí robot, chúng tôi sẽ thực
hiện trợ lý lập trình để viết các dòng chương trình. Để thực hiện hành
động này, chúng tôi sẽ tiến hành như sau:
1- We will place the mouse pointer in the work
window 3 and we will click (in this way we
activate the options available for window 3).

2- Edit> Programming Wizard After pressing


OK in window 3, the program editor is
activated.

1- Chúng tôi sẽ đặt con trỏ chuột


trong cửa sổ làm việc 3 và chúng tôi
sẽ nhấp (theo cách này chúng tôi
kích hoạt các tùy chọn có sẵn cho
cửa sổ 3).

2- Chỉnh sửa> Trình hướng dẫn lập


trình Sau khi nhấn OK trong cửa sổ
3, trình chỉnh sửa chương trình được
kích hoạt.
Now we have to compile the program,
for which we will click the button indicated
in the image (Compile + Link)
Bây giờ chúng ta phải biên dịch chương trình,
trong đó chúng ta sẽ nhấp vào nút được chỉ định
trong hình ảnh (Biên dịch + Liên kết).

For the robot to execute the program


automatically, we will use the 4 buttons
marked in the image:
Để robot tự động thực hiện
chương trình, chúng tôi sẽ sử
dụng 4 nút được đánh dấu trong
hình ảnh:

- The two on the right are to run the


program step by step. (Next Step) -
(Previous Step)
Hai bên phải là để chạy
chương trình từng bước. (Bước
tiếp theo) - (Bước trước)
- The two on the left are to execute the whole sequence and to stop the program. (Start) -
(Stop)
- Hai bên trái là để thực hiện toàn bộ chuỗi và dừng chương trình. (Băt
đâu dưng)

If we want to change the order of execution of the movements of the robot:


Nếu chúng ta muốn thay đổi thứ tự thực hiện các chuyển động của
robot:

1st. We will edit the program in the work window 3.


1 Chúng tôi sẽ chỉnh sửa chương trình trong cửa sổ làm việc 3.

So, if we have these instructions: ... ... ... we modify them by these:
Vì vậy, nếu chúng tôi có các hướng dẫn sau: ... ... ... chúng tôi sửa đổi
chúng bằng cách:
2nd. We compile (Compile + Link Push)
3º. We execute the sequence (Start button)

3º. Chúng tôi thực hiện chuỗi (nút Bắt đầu)


Robot-tool connection:

With the Model Explorer button we


access a window where we are
shown, among other things, the
objects loaded in the simulator. In
the case shown in the image we
can see that at the moment we
have two objects: Gripper and RV-
2AJ.

By displaying the menus of Gripper and RV-2AJ we


can see, among other things, the inputs and outputs
(Inputs / Outputs) that will govern the communication
between the different objects.

If we open the Gripper Inputs menu, the Input Close will


appear. When clicking on it, information will appear to
the right of the window, where we can see how this Input
is connected to the Output HCLOSE1 of the RV-2AJ
object..

If we display the Outputs menu of RV-


2AJ, Output HCLOSE1 will appear.
When clicking on it we will see
information, to the right of the window,
where we can verify that this Output is
connected with the Input Close of the
Gripper object.

If we eliminate the connection between


Gripper and RV-2AJ then the Gripper
will not act and therefore we will not be
able to open / close the clamp.
We can eliminate the connection in two ways:

1.- Place the mouse pointer over Objects /


Gripper / Inputs / Close and click with the
right mouse button. In the drop-down
menu that appears we select the option
Remove connection. We see how in the
part of the right of the window the
information about the object to which the
Gripper is connected disappears..
If we now place the mouse pointer over
Objects / RV-2AJ / Outputs / HCLOSE1,
we see that in the right part of the window
there is no longer any information about
the object to which that output is connected.

2.- We can also eliminate the connection by placing the mouse pointer over Objects /
RV-2AJ / Outputs / HCLOSE1 and clicking with the right mouse button. In the drop-
down menu that appears we select the option Remove connection. We see how the
information on the object to which it is connected to the output HCLOSE1 of object
RV-2AJ disappears in the part on the right of the window.

Once the connection is eliminated (following steps 1 or 2), we can check that it is not
possible to open / close the clamp: Extras> Teach-In> Close / Open Hand We will have
to deactivate Model Explorer so that the Teach- In.

If we want to re-establish the connection


between the Gripper and RV-2AJ objects,
we will do the following:

In the Model Explorer window, we display


the Inputs of the Gripper object and
the Outputs of the RV-2AJ object.
Click on RV-2AJ / Outputs so that
the entire Outputs list appears in
the right part of the window.
Click and drag the Output HCLOSE1 and
release it on Gripper / Inputs / Close.

The connection is now restored.


Now we will check that
we can now Open / Close the clamp
Change gripper:
1.- Selection of gripper

With the Model Libraries button


we access the library where
we will find, among other things,
all available grippers.

We display the Miscellaneous Grippers


menu, select Pliers Gripper and then click
on Add..
Once this is done we close this window
by clicking on Close..

At the base of the robot we see a part of


the two grippers of the new gripper. We
can interpret that we have removed the
new gripper from the warehouse and we
have it prepared, at the base of the robot, to
mount it and connect it.

In the list of available objects shown in the


Model Explorer we see that now we see a new
object called Pliers Gripper.

Next we have to assemble and connect the new gripper.


2.- Gripper assembly

In the Model Explorer we deploy the


object RV-2AJ and click on RV-2AJ>
Roll> Gripper points..

In the right part of the window we


can see that we only have one
Gripper Point called Flange

Click with the right mouse button on top of Flange


and in the drop-down menu that appears we select
Properties..
In the window that appears, displaying the section
Grips grip point we see all the grippers available to
be mounted.

We select the new Pliers


Flange gripper and it
immediately appears
mounted on the robot.
When mounting the new gripper,
the previous one has fallen and is
now at the base of the robot.

If we activate the opening / closing


of clamps with Extras> Teach-In>
Close / Open Hand, we will check
that we are acting on the clamps
that are seen in the base.

By pressing the Collision detection


button the program warns us that there is
an element in the base that could collide
with the robot..
It is the previous gripper.
To solve this we go to Model Explorer,
click with the right mouse button the
Gripper object and in the drop-down menu
that appears we select Properties.

Now we will change the position of the gripper located in the base to avoid
collisions. We will move it, for example, 100 units down.

Once this is done we can check,


with the Collision detection button,
that there are no more collision
problems.

We can also verify that the opening


and closing of clamps is
still carried out
in the
gripper below
2.- Gripper connection

First we will eliminate the existing connection


between robot and gripper:

We place the mouse pointer over Objects /


Gripper / Inputs / Close and click with the right
mouse button. In the drop-down menu that
appears we select the option Remove
connection.

Now we will establish the new


connection between Pliers Gripper
and RV-2AJ objects:

In the Model Explorer window, we


display the Inputs of the Pliers
Gripper object and the Outputs of the
RV-2AJ object. We click on RV-2AJ /
Outputs so that in the part of the right
of the window we see the whole
Outputs relation. Click and drag
Output HCLOSE1 and release it on
Pliers Gripper / Inputs / Close.

We already have the new gripper


operative.
Introduction of a box:
With the Model Libraries button we
access the library where we will find,
among other things, the available boxes.
We display the Miscellaneous
Primitives menu, select Box and then
click on Add. In window 1 we see the
box located at the base of the robot.
Once this is done we close this window
by clicking on Close.

In the list of available objects shown in


the Model Explorer we will see that now a
new object called Box appears.

We unfold it and click on Box / Base, so


Box1 appears on the right side of the
window.
Click on Box1 with the right mouse button
and a window opens that will allow us to
change the position, color and dimensions
of the box.

We set the new dimensions of the box


(50x50x50) and assign it a new position
(300, 100, 0)

Selecting the option View> Show Workspace, we will


verify that we have placed the box inside the robot
workspace.
Para poder coger la caja con el gripper
debemos asignarle un Grip Point.

Para ello desplegamos el objeto Box y


clicamos en Box/Base con el botón derecho
del ratón. En el menú desplegable que nos
aparece seleccionamos New>Grip Point

En el Model Explorer desplegamos el objeto


Box y clicamos en Box/Base/Grip Points de
forma que en la parte derecha de la ventana
aparece Grippoint_1
Clicamos con el botón derecho del ratón
encima de Grippoint_1 y en el menú
desplegable que nos aparece ponemos los
siguientes valores: X=325, Y=125, Z=25
Esto asignará como Grip Point el centro de la
pieza, ya que la habíamos colocado en la
posición (300, 100, 0) y tiene unas
dimensiones de 50x50x50.

A continuación ejecutamos Extras > Teach-In y comprobamos que ya podemos coger


la pieza con el robot.

Introducción a la programación:

Vamos a realizar un pequeño programa que hará lo siguiente:

Partiendo el robot de una posición inicial dada P1 (355,0,550) cogerá una caja de
medidas 50x50x50, situada en el punto P2 (300,100,0), esperará 1s y volverá a la
posición inicial P1 donde esperará 3 segundos, soltará la caja en el punto P3 (100,-
200,0) y esperará 1 s, pasará por el punto inicial P1 donde esperará 3 segundos, volverá
al punto P3 para coger nuevamente la caja (esperará 1 s.), pasará por el punto P1 donde
esperará 3 segundos, irá al punto P2 para soltar la caja y esperar 1 s, volverá al punto P1
donde esperará 3s y finalizará el ciclo. Cuando el robot lleve la caja, su velocidad será
del 10% y cuando no la lleve su velocidad será del 100%

Para realizar este ejercicio utilizaremos las siguientes instrucciones:


HOPEN 1: apertura de pinza JOVRD 50: velocidad 50%
HCLOSE 1: cierre de pinza GOTO 10: ir a la línea 10
DLY 2: espera 2 segundos GOSUB 300: ir a la línea 300 y volver
Paso1:

Situamos el robot y la caja en la posición indicada en el


enunciado.
Pulsamos Current Position→Pos. List para memorizar
el punto P1. En la ventana de visualización 2 nos
aparece el punto P1 con sus coordenadas (355, 0, 550)

Paso2:

Situamos el robot en la posición de la imagen actuando


sobre las articulaciones Shoulder y Pitch.

Paso3:

Situamos el robot en la posición de la imagen dándole


las siguientes coordenadas: X=325, Y=125, Z=25.
Pulsamos Current Position→Pos. List para memorizar
el punto P2. En la ventana de visualización 2 nos
aparece el punto P2 con sus coordenadas (325, 125, 25)

A continuación cerramos la pinza para coger la pieza.

Paso4:

Situamos el robot en la posición de la imagen dándole


las siguientes coordenadas: X=125, Y=-175, Z=25.
Pulsamos Current Position→Pos. List para memorizar el
punto P3. En la ventana de visualización 2 nos aparece el
punto P3 con sus coordenadas.

A continuación abrimos la pinza para soltar la pieza.

Paso5:

Clicamos en la ventana de visualización 3 (para que se


nos activen las opciones)
Edit>Programming Wizard
En la ventana 3 nos aparece el editor de programas.
Paso6:

Editamos el programa
cumpliendo las condiciones que
nos marca el enunciado del
ejercicio.

Paso7:

Al finalizar la edición
renombramos para que las líneas
de programa sean correlativas.
Para ello clicamos en la ventana
2 y ejecutamos la instrucción
Edit>Renumber.

Ahora compilamos y vemos si


hay errores en la edición.

Ya podemos ejecutar el programa

Si queremos que el robot repita la secuencia


indefinidamente (hasta que pulsemos STOP) deberemos
añadir la instrucción GOTO 30, indicando así al programa
que debe saltar a la línea 30.

Para simplificar el programa podemos crear una subrutina


utilizando el comando GOSUB.
La subrutina que creemos deberá finalizar con el comando
RETURN.
Sensor de color y LED:

A continuación añadiremos un sensor de color capaz de detectar la caja, un LED rojo


que se ilumine cuando detecte la caja y un LED verde que se ilumine cuando el sensor
no detecte la caja.

Con el pulsador Model Libraries accedemos a la


biblioteca donde encontraremos, entre otras cosas, todos
los LED disponibles.
Desplegamos el menú Miscellaneous LEDs,
seleccionamos LED, green y a continuación clicamos en
Add. De mismo modo añadimos el LED, red.

Los LED se han colocado en la base del robot y


los tenemos que mover a la posición deseada. Para
ello, en la ventana Model Explorer clicamos con el
botón derecho encima del objeto LEDGreen y en
el desplegable que aparece seleccionamos
Properties. Entramos en la pestaña Position y le
damos la posición deseada. (X=400, Y=-500).

Lo mismo hacemos con el objeto LEDRed.


Le damos p.e. la posición (X=190, Y=-500).

Con el pulsador Model Libraries accedemos a la


biblioteca donde encontraremos, entre otras
cosas, todos los sensores disponibles.
Desplegamos el menú Miscellaneous Sensors,
seleccionamos Color Sensor y a continuación
clicamos en Add.

El sensor se ha colocado en la base del robot y


los tenemos que mover a la posición deseada.
Para ello, en la ventana Model Explorer
clicamos con el botón derecho encima del
objeto SensorColor y en el desplegable que
aparece seleccionamos Properties. Entramos en
la pestaña Position y le damos la posición
deseada. (P.e. los valores de la imagen →).

Una vez colocados los LEDs y el sensor en las posiciones


indicadas, tendremos que establecer la comunicación entre
ellos.
A continuación conectaremos el Output del sensor con el Input de los LED.
En el Model Explorer desplegamos el menú de los objetos SensorColor, LEDRed y
LEDGreen.
Clicamos en Objects/SensorColor/Outputs/out_red, lo arrastramos y los soltamos en
Objects/LEDGreen/Inputs/On.
Clicamos en Objects/SensorColor/Outputs/out_red, lo arrastramos y los soltamos en
Objects/LEDRed/Inputs/On.

Al realizar esta conexión, si el sensor está detectando la pieza roja, se encienden los dos
LED.

Si queremos que el LED rojo se ilumine cuando no


haya pieza, clicaremos con el botón derecho del
ratón en Objects/LEDRed/Inputs/On y activaremos
la opción Invert.

Al activar esta opción vemos como, si el sensor está


detectando la pieza roja, se apaga el LED rojo

Ejecutando el programa que habíamos realizado


anteriormente, observaremos las alternancias de
encendido de los dos LED.
Banda Transportadora:

1.- Abriremos un proyecto nuevo.


2.- Accedemos a Model Libraries>Miscellaneous
Primitives, importamos una caja (Box), la redimensionamos
(50x50x50), la situamos en el punto (300,200,0) y le
definimos un Grip Point en el punto (325,225,25).
3.- Accedemos a Model Libraries>Miscellaneous
Mechanisms, importamos una banda transportadora (Conveyor Belt 1) y la resituamos
en el punto (475,-800,-480) clicando con el botón derecho del ratón encima de
Objects>ConveyorBelt y seleccionando la opción Properties en el desplegable que nos
aparece.

Para gobernar la banda transportadora con


el robot deberemos conectar los Inputs de la
banda (BeltOn, BeltBackw) con Outputs del
robot.
Clicaremos con el botón derecho del ratón
en Objects>RV2AJ>Outputs>[inactive000]
y en el desplegable seleccionamos Rename
y renombramos la salida como BandaOn.
Clicaremos con el botón derecho del ratón
en Objects>RV2AJ>Outputs>[inactive001]
y en el desplegable seleccionamos Rename
y renombramos la salida como BandaInv.

A continuación clicamos en la salida del


robot BandaOn y arrastramos y
soltamos encima de la entrada de la
banda BeltOn.
También clicamos en la salida del robot
BandaInv y arrastramos y soltamos
encima de la entrada de la banda
BeltBackw.
Pulsando simultáneamente las teclas “Mayúsculas F9” nos aparecerá una ventana donde
se nos muestran los Outputs del robot.

Ahora vamos a comprobar el funcionamiento de la banda transportadora.

Clicamos en la ventana 3 y a continuación en la barra de menú


seleccionamos Edit>Programming Wizard.
Se nos abrirá el editor de programas con las líneas 10 y 20 →→,
y nosotros escribimos las líneas 12, 14 y 16.

A continuación compilamos, ejecutamos el programa y ya podemos ver la caja en


movimiento. Pulsamos STOP para detener la ejecución del programa.
Para invertir el sentido de giro de la banda modificar la línea 14 por la siguiente: 14
M_OUT(1)=0.
Compilamos, ejecutamos el programa y veremos el movimiento inverso de la banda.
Conexiones con condiciones:

A continuación realizaremos una aplicación que incluirá banda transportadora, sensor


de color y robot en movimiento. Incluiremos un sensor de color al sistema, de forma que
la caja se desplazará encima de la banda transportadora hasta llegar a un punto en que
será detectada por el sensor. Entonces la banda se parará y el robot empezará la
secuencia de movimientos programada.
1.- Accedemos a Model Libraries>Miscellaneous Mechanisms, importamos una banda
transportadora (Conveyor Belt 1), la situamos en el punto (475,-800,-480) y la
conectamos según lo indicado en el apartado anterior.
2.- Importamos una caja y la situamos en las coordenadas World (300,200,0) y su Grip
Point en (325,225,25).
Abrimos el Teach Pendant y le damos al robot los siguientes puntos P1, P2 y P3:
P1(355,0,550); P2(325,225,25); P3(325,-225,25). P2 y P3 tienen Roll 0º y Pitch 180º.
Situamos la caja en P3 para ver el punto donde instalamos el sensor.
3.- Accedemos a Model Libraries>Miscellaneous Sensors, seleccionamos Color Sensor
y a continuación clicamos en Add.
El sensor se ha colocado en la base del robot y los tenemos que mover a la posición
deseada. Para ello, en la ventana Model Explorer clicamos con el botón derecho encima
del objeto SensorColor y en el desplegable que aparece seleccionamos Properties.
Entramos en la pestaña Position y lo colocamos en la posición (450,-250,25) Roll -180º
y Pitch 90º.

Como en este caso solo detectaremos caja roja, solo utilizaremos la salida out_red del
sensor. Esta salida la conectaremos con una Input del robot, que habilitaremos para
recibir esta señal en concreto.

Para ello clicaremos con el botón derecho del ratón


en Objects>RV2AJ>Intputs>[inactive000] y en el
desplegable seleccionamos Rename y renombramos
la salida como Sensor.
A continuación clicamos en la salida del sensor
out_red y arrastramos y soltamos encima de la
entrada del robot Sensor.

Ahora ya podemos hacer el programa, que quedará


como sigue:

Después de escribir el programa, clicamos


Edit>Renumber.

Para finalizar compilamos y ejecutamos.


Alimentador de piezas:

A continuación realizaremos una aplicación que incluirá banda transportadora,


alimentador de piezas, sensor de color y robot en movimiento.
Para realizar el nuevo proyecto haremos lo siguiente:

1.- Accedemos a Model Libraries>Miscellaneous Mechanisms, importamos una banda


transportadora (Conveyor Belt 1), la situamos en el punto (475,-800,-480) y la
conectamos asignando sus Inputs con Outputs del robot.

2.- Accedemos a Model Libraries>Miscellaneous Mechanisms, importamos un


alimentador de piezas (Parts Feeder 1) y lo posicionamos en el punto (300, 800,0)
entrando en la ventana del Model Explorer y clicando con el botón derecho del ratón en
Objects>Feeder1 y seleccionando Properties en el desplegable que aparece.

Para conectar el alimentador


habilitaremos un nuevo Output del
robot, que arrastraremos y soltaremos
encima del Input del Feeder 1.

Clicando en I/O Connections (en el Model Explorer) podemos ver las conexiones
realizadas por el momento.

Ahora colocamos un sensor de color en la posición (425,-250,15) Roll 180º y Pitch 90º;
y conectamos la salida out_red a una nueva entrada que habilitaremos en el robot, por
ejemplo lo conectamos a la entrada 000.
Entramos los puntos:

P1(355,0,550), P2(300,-240,0), P3(-200,-300,0).

Ejecutamos este programa: Este otro programa es equivalente,


utilizando la instrucción GOSUB.

Reinicialización del alimentador:

Una vez ejecutado el programa, para devolver


las piezas al alimentador clicaremos en
Edit>Reset Workcell. (Esta instrucción
solamente estará disponible cuando haya
finalizado la ejecución del programa).

Vemos como automáticamente los discos han


vuelto a su posición inicial y podemos ejecutar
nuevamente el programa.
A continuación incluiremos dos nuevas líneas de programa para que el robot posicione
de forma ordenada las piezas que recoge de la banda transportadora, para lo que
utilizaremos la instrucción IF THEN ELSE.

Ahora realizaremos un ejercicio similar pero colocando cuatro alimentadores, uno


encima del otro, con lo que tendremos un total de 16 discos. En el destino colocaremos
los discos encima de una mesa (caja), y nos deberán quedar dispuestos en una matriz
(pallet) de 5x3. Además conectaremos directamente la salida del sensor (out_red) con la
entrada de la banda BeltOn (con lo que ya no necesitaremos habilitar en el robot el
Output BandaOn) y con el input del robot (SensorRed).

1º. Situaremos la banda, el sensor y el alimentador Feeder2 en las posiciones indicadas


en el ejercicio anterior.

2º Situaremos los alimentadores 2, 3 y 4 (Feeder2_1, Feeder2_2, Feeder2_3):


- coordenadas X eY igual que el alimentador 1,
- la coordenada Z será 120, 240 y 360 respectivamente.

3º Colocaremos una caja de color marrón de dimensiones 300x200x200, en la posición


(-250,-350,0)

4º Habilitaremos las siguientes entradas en el robot: Input 0: SensorRed


Habilitaremos las siguientes salidas: Output 0: BandaInv, Output 1: AlimentadorOn

5º Realizaremos las siguientes conexiones: (* = invert)

Output Objeto Input Objeto


BandaInv RV-2AJ BeltBckw ConveyorBelt
AlimentadorOn RV-2AJ NextPart Feeder2
AlimentadorOn RV-2AJ NextPart Feeder2_1
AlimentadorOn RV-2AJ NextPart Feeder2_2
AlimentadorOn RV-2AJ NextPart Feeder2_3
out_red SensorColor BeltOn * ConveyorBelt
out_red SensorColor SensorRed RV-2AJ

6º Con el Teach Pendant le damos los siguientes puntos al robot:

P1 (355,0,550), P2(300,-240,0), P3(-200,-325,200, Pitch 180, Roll 0))


- Accedemos al asistente de programación
Edit>Programming Wizard, y escribimos
las líneas de programa.

- Compilamos y comprobamos que no hay


errores.

- Ejecutamos el programa
Este otro programa hace lo mismo que el anterior, pero en esta ocasión hemos utilizado
dos bucles FOR NEXT anidados.

Existe una función especialmente diseñada para realizar lo que acabamos de hacer en
los dos ejercicios anteriores. Se trata de la función DEF PLT (define pallet).
A continuación introduciremos algunas instrucciones adicionales que nos
permitirán definir un poco más el movimiento.

MVS P1: se moverá al punto P1 en línea recta.


MOV P1,-50: se aproximará al punto P1 deteniéndose a una distancia de 50mm.
MVS P1,-50: se aproximará al punto P1 moviéndose en línea recta y deteniéndose a
una distancia de 50mm. Si el robot ya estaba en el punto 1 al recibir la instrucción,
entonces se alejará del punto P1 moviéndose en línea recta y deteniéndose a una
distancia de 50mm.
JOVRD 80: cuando utilicemos el comando MOV el robot se moverá a una velocidad
del 80%.
SPD 10: cuando utilicemos el comando MVS el robot se moverá a una velocidad del
10%.
DEF INTE L: definimos una variable entera L.

ACLARACIÓN:
Una salida (output) puede conectarse a tantas entradas (inputs) como queramos, pero
una entrada solamente puede estar conectada a una salida.
Trabajo con varios robots: (ejemplo con 3 robots)

Arrancamos COSIMIR, iniciamos el asistente de


proyectos Project Wizard y creamos un proyecto
nuevo que llamaremos “celda robotica”.
Abrimos el Model Libraries y, dentro del
apartado Mitsubishi-Robots, seleccionamos el
robot RV-2AJ. Clicamos 2 veces en Add para
añadir 2 robots.

En el listado de objetos disponibles mostrado en el Model Explorer veremos que,


además del robot inicial RV-2AJ, ahora nos aparecen dos nuevos objetos: RV-2AJ_1 y
RV-2AJ_2. Los nuevos robots se han colocado en la misma posición que el robot inicial
y los tenemos que mover a la posición deseada.

Para ello, en la ventana Model Explorer clicamos


con el botón derecho encima del objeto RV-2AJ_1 y
en el desplegable que aparece seleccionamos
Properties. Entramos en la pestaña Position y lo
colocamos en la posición (0, 400,0).

De igual forma situamos el robot RV-2AJ_2 en la


posición (0, -400,0).

Colocación de gripper en robot RV-2AJ_1: Accedemos a Model Libraries, desplegamos


el menú Miscellaneous Grippers, seleccionamos Pliers Gripper y clicamos en Add.
El gripper se nos ha colocado automáticamente en el robot RV-2AJ_2.

Para moverlo al robot RV-2AJ_1 accedemos al Model


Explorer, desplegamos el objeto RV-2AJ_1 y clicamos
en RV-2AJ_1>Roll>Gripper points. En la parte
derecha de la ventana podemos ver que solo tenemos
un Gripper Point llamado Flange_1.
Clicamos con el botón derecho del ratón encima de
Flange_1 y en el menú desplegable que nos aparece
seleccionamos Properties. En la ventana que nos
aparece, clicando en la pestaña General y
desplegando el apartado Grips grip point vemos todos
los grippers disponibles para ser montados.
Seleccionamos el nuevo gripper Pliers Flange e inmediatamente nos aparece montado
en el robot RV-2AJ_1. Una vez montado el gripper, tenemos que conectarlo: en la
ventana Model Explorer desplegamos los Inputs del objeto Pliers Gripper y los
Outputs del objeto RV-2AJ_1. Clicamos encima de RV-2AJ_1/Outputs de forma que en
la parte de la derecha de la ventana nos aparezca toda la relación de Outputs.
Renombramos el Output257 como HCLOSE1. Clicamos y arrastramos el Output
HCLOSE1 y lo soltamos encima de Pliers Gripper/Inputs/Close.
Colocación de gripper en robot RV-2AJ_2: Accedemos a Model Libraries, desplegamos
el menú Miscellaneous Grippers, seleccionamos Threee jaw gripper y clicamos en Add.
Para montarlo en el robot RV-2AJ_2 accedemos al
Model Explorer, desplegamos el objeto RV-2AJ_2 y
clicamos en RV-2AJ_2>Roll>Gripper points. En la
parte derecha de la ventana podemos ver que solo
tenemos un Gripper Point llamado Flange_2.
Clicamos con el botón derecho del ratón encima de
Flange_2 y en el menú desplegable que nos aparece
seleccionamos Properties. En la ventana que nos
aparece, desplegando el apartado General>Grips grip
point vemos todos los grippers disponibles para ser
montados.
Seleccionamos el nuevo gripper Grp3BackFlange e inmediatamente nos aparece
montado en el robot RV-2AJ_2.

Una vez montado el gripper tenemos


que conectarlo: en la ventana Model
Explorer desplegamos los Inputs del
objeto Pliers Gripper y los Outputs
del objeto RV-2AJ_2. Clicamos
encima de RV-2AJ_2/Outputs de
forma que en la parte de la derecha de
la ventana nos aparezca toda la
relación de Outputs. Renombramos el
Output257 como HCLOSE1.
Clicamos y arrastramos el Output
HCLOSE1 y lo soltamos encima de
Chuck3Gripper/Inputs/Close.

Para comprobar el funcionamiento de los Gripper


accederemos a Execute/Controller Selection y nos
aparecerá una ventana emergente que nos permitirá
seleccionar el robot que queremos utilizar.
Ahora con el Teach Penant comprobaremos los grippers.
A continuación crearemos un proyecto nuevo por cada robot añadido adicionalmente.
Para ello clicaremos en Execute/Project Management…

En la ventana emergente que nos aparece, en el desplegable


seleccionamos el robot RV-2AJ_1 y clicamos en el icono Add
new Project (situado en la parte superior izquierda).

En la nueva ventana que nos aparece:


- seleccionamos la carpeta celda robótica (c:\Archivos de programa\COSIMIR
Educational\Projects\celda robotica), que es el nombre que le habíamos dado a
nuestro proyecto;
- le damos nombre al nuevo proyecto: celda robotica_1
- clicamos en Abrir, y en la nueva ventana que aparece clicamos OK.

Ahora repetimos el proceso para crear el nuevo proyecto celda robotica_2:


Con la ventana Project Management abierta, en el desplegable seleccionamos el robot
RV-2AJ_2 y clicamos en el icono Add new Project.
En la nueva ventana que nos aparece:
- seleccionamos la carpeta celda robótica (c:\Archivos de programa\COSIMIR
Educational\Projects\celda robotica), que es el nombre que le habíamos dado a
nuestro proyecto;
- le damos nombre al nuevo proyecto: celda robotica_2
- clicamos en Abrir, y en la nueva ventana que aparece clicamos OK.

Ahora vemos que en la parte izquierda de la ventana Project Management nos aparecen
un total de tres proyectos (uno por cada robot): celda robotica, celda robotica_1 y celda
robotica_2.
Cuando en el desplegable seleccionamos el robot RV-2AJ_2, el proyecto celda
robotica_2 aparece en negrita.
Cuando en el desplegable seleccionamos el robot RV-2AJ_1, el proyecto celda
robotica_1 aparece en negrita.
Cuando en el desplegable seleccionamos el robot RV-2AJ el proyecto celda robotica no
aparece en negrita, lo que significa que tenemos que vincular este robot con su proyecto.
Para ello seleccionamos en el desplegable el robot RV-2AJ, clicamos en el proyecto
celda robotica, y a continuación clicamos en el pulsador que tiene el dibujo de un
martillo (Set as Active Project). ¿Asignar proyecto al robot activo RV-2AJ? ACEPTAR
¿Compilar el Proyecto ahora? NO
Clicando primero en celda
robótica y después en Files,
vemos el archivo de
posiciones (.POS) y el
archivo de programa (.MB4)
asociados al proyecto celda
robotica.

Clicando en proyecto
robótica_1 y después en
Files, vemos que no tiene
archivos asociados.
Lo mismo sucede con el
proyecto robótica_2.

Para crear los archivos donde guardaremos la lista de posiciones y el programa del robot
RV-2AJ_1 haremos lo siguiente:
- clicamos primero en celda robótica_1 y después en Files,
- clicamos con el botón derecho del ratón encima de la barra azul (situada donde
deberían estar los archivos asociados),
- clicamos en Add Files,
- en Tipo seleccionamos (*.MB4).
- En la ventana que nos aparece, copiamos el archivo
celda robótica y lo pegamos en la misma ventana.
Renombramos el archivo Copia de celda robotica
como celda robotica_1. Ahora clicamos encima del
nuevo archivo de forma que en el campo Nombre
aparezca celda robotica_1, y una vez hecho esto
clicamos en Abrir.

Ya nos aparece el archivo de programa asociado a celda robotica_1.

En el apartado compile mode hay que seleccionar Main Program.


Para generar el archivo de posiciones del robot RV-2AJ_1 haremos lo siguiente:
- clicamos primero en celda robótica_1 y después en Files,
- clicamos con el botón derecho del ratón encima del recuadro azul (situado
debajo del archivo celda robotica_1.MB4),
- clicamos en Add Files,
- en Tipo seleccionamos (*.POS).
- En la ventana que nos aparece, copiamos el archivo celda robótica y lo pegamos
debajo. Renombramos el archivo Copia de celda robotica como celda
robotica_1. Ahora clicamos encima del nuevo archivo de forma que en el campo
Nombre aparezca celda robotica_1, y una vez hecho esto clicamos en Abrir.

Repetimos el proceso para generar los archivos asociados al proyecto celda robotica_2,
copiando y renombrando los archivos como celda robotica_2.
No olvidar poner Main Program en el apartado Compile Mode.

Una vez generados los archivos asociados, los abriremos para tenerlos visibles en el
escritorio.

En la parte izquierda de la ventana


Project Management seleccionamos
RV-2AJ_1 y celda robotica_1.
Hacemos doble clic encima de los dos
archivos asociados de la parte derecha
de la ventana.

En la parte izquierda de la ventana


Project Management seleccionamos
RV-2AJ_2 y celda robotica_2.
Hacemos doble clic encima de los dos
archivos asociados de la parte derecha
de la ventana.

Redimensionamos las
cuatro nuevas ventanas que
se nos han abierto de forma
que el escritorio nos quede
como el de la imagen.
Ahora vamos a hacer la lista de posiciones de cada robot:

- Abrimos el control de selección de robot


(Execute>Controller Selection)
- Abrimos el Teach Pendant (Extras Teach-In)
- Seleccionamos un robot y le damos las
distintas posiciones.
Repetimos la operación para los tres robots.

Ahora vamos a hacer un programa para cada robot:

- Clicamos encima de la ventana donde escribiremos el programa del robot RV-


2AJ para activarla.
- Iniciamos el asistente de programación Edit>Programming Wizard.
- Escribimos el programa.

Repetimos la operación para los tres robots.

Para finalizar compilaremos de la siguiente forma:

- Abrimos el Project
Management (Execute>Project Management)
- En el desplegable seleccionamos el robot RV-2AJ
- Con el botón derecho del ratón clicamos en el
proyecto celda robotica.
- En el desplegable que nos aparece clicamos la
opción compile celda robotica-Project y
comprobamos que no hay errores.

Repetimos la operación para los tres robots con sus respectivos proyectos.

Ahora ya podemos ejecutar el programa y ver a los tres robots en movimiento.


Modelización de un alimentador de bandejas:

Abrimos el programa e iniciamos un nuevo proyecto con el asistente de proyectos


File<Project Wizard. Accedemos a Model Libraries y cargamos los siguientes objetos:
- 2 alimentadores de piezas - Miscellaneous Mechanisms>Parts Feeder 1
(clicamos dos veces en Add para añadir 2 alimentadores).
- 9 cajas - Miscellaneous Primitives >
Box. (clicamos nueve veces en Add para
añadir 9 cajas).

Desplegando el Model Explorer y clicando


encima de cada objeto con el botón derecho del
ratón, situaremos los diferentes objetos en las
siguientes posiciones:
- Alimentador Feeder1: posición (300,-300,0).
- Aliment. Feeder1_1: posición (300,-300,120).
- Caja Box : posición (0,100,0).
- Caja Box_1: posición (200,0,0).
- Caja Box_2: posición (200,150,0).
- Caja Box_3: posición (200,300,0).
- Caja Box_4: posición (200,450,0).
- Caja Box_5: posición (450,0,0).
- Caja Box_6: posición (450,150,0).
- Caja Box_7: posición (450,300,0).
- Caja Box_8: posición (450,450,0).

También a través de Model Explorer,


modificamos las dimensiones de las cajas para
adaptarlas a nuestras necesidades:

- Caja Box:
Medidas (100, 200, 200) - Color: azul.
Esta caja será una mesa donde dejaremos las
piezas que están actualmente en el interior de
los alimentadores.

- Cajas Box (de 1 hasta 8):


Medidas (200, 100, 10).
Estas cajas serán bandejas donde el robot
dejará las piezas para ser posteriormente
transportadas y seguir con el proceso.
Para sacar las 8 piezas del alimentador y dejarlas encima de la mesa, definiremos 8
gripper points en la superficie de la mesa.
Un Gripper Point es un punto de amarre donde podremos fijar Grip Points.

Para ello clicaremos con el botón derecho del ratón en


Objects>Box>Base, y en el desplegable que nos
aparece clicamos en New>Gripper Point.
Vemos que nos ha aparecido el gripper point
Gripper_1

Clicamos con el botón derecho encima de


Box>Base>Gripper Points y en el desplegable
que aparece clicamos en New>Gripper Point.
Vemos que nos ha aparecido el gripper point
Gripper_2. Repetimos el proceso hasta generar
un total de 8 gripper points (uno por cada pieza
que queramos almacenar en la mesa).

Una vez definidos los Gripper Points, los renombraremos. Clicamos con el botón
derecho encima de Gripper_1 y en el desplegable que aparece seleccionamos Rename.
Los renombraremos como Mesa_1, Mesa_2, Mesa_3, Mesa_4, Mesa_5,… y Mesa_8.

A continuación los situaremos en la posición requerida.


Clicamos con el botón derecho encima de Mesa_1. En el desplegable que nos aparece
clicamos en Properties, y en la pestaña “Position” le damos las coordenadas.
Repetimos la operación para los 8 gripper de la mesa.
Las posiciones que les daremos serán las siguientes (Coordinate system: Section):
Mesa_1:(25,25,200);Mesa_2:(25,75,200); Mesa_3:(25,125,200); Mesa _4:(25,175,200);
Mesa _5:(75,25,200);Mesa_6:(75,75,200);Mesa _7:(75,125,200);Mesa _8:(75,175,200).

Ahora sacaremos los discos que están en el


interior de los alimentadores y los situaremos en
la mesa.
En el Model Explorer, el objeto M1Discs
contiene los 4 discos del Feeder1. Clicamos en
M1Discs>M1Disc1>Base>Grip Points, y en la
ventana de la derecha clicamos con el botón
derecho encima del Grip Point M1Disc1 y en el
desplegable que nos aparece seleccionamos
Properties.

En la pestaña “General”, en el apartado “Initialization - Gripped by”


seleccionamos Mesa_1.
Vemos como el Disc1 se nos ha situado en la mesa.
Repetimos la operación para los 3 discos restantes
del Feeder1.

Repetimos la operación para los 4 discos del


Feeder1_1, contenidos en el objeto M1Discs_1.

Vemos como los dos alimentadores han quedado


vacíos.

Antes de colocar las bandejas en el interior de Feeder1 y Feeder1_1, vamos a hacer dos
modificaciones a las bandejas:
- vamos a definir un Grip Point en la base de cada bandeja (para que la bandeja se
pueda fijar al Feeder),
- vamos a definir una conveyor surface en la superficie superior (para que luego la
bandeja pueda coger piezas),

Definir Grip Point en la base de cada bandeja:


Box1: Clicamos con el botón derecho en
Objects>Box1>Base y en el desplegable que nos
aparece seleccionamos New>Grip Point.
En la ventana de la derecha clicamos con el botón
derecho encima de Grippoint_1, seleccionamos
Rename y lo renombramos como Bandeja1.
Clicamos nuevamente encima de Bandeja1 con el
botón derecho, seleccionamos Properties y en la pestaña Position le damos las
siguientes coordenadas (Coordinate system: Section): (100,50,0).

Repetimos la operación para las 8 cajas, renombrando como Bandeja1, Bandeja2, …,


Bandeja8. Las coordenadas (Coordinate system: Section): (100,50,0) serán las mismas
para todas las bandejas.

Definir Conveyor surface:


Box1: Clicamos con el botón derecho en Objects>Box1>Base y en el desplegable que
nos aparece seleccionamos New>Conveyor surface.

Repetimos la operación para las 8 bandejas.

Ahora colocaremos las 8 bandejas en los alimentadores Feeder1 y Feeder1_1, para lo


cual procederemos de la siguiente forma:

Colocación bandeja1:
Clicamos en Objects>Box_1>Base>Grip Points. En la ventana de la derecha clicamos
encima de Bandeja1 con el botón derecho del ratón, y en el desplegable que aparece
seleccionamos Properties. En la pestaña “General”, en el apartado “Initialization -
Gripped by” seleccionamos M1Top1.
Vemos como la Bandeja1 se nos ha situado en el Feeder1.
Repetimos la operación para todas las bandejas seleccionando los siguientes Gripper
Points para cada bandeja:
Bandeja1: M1Top1 Bandeja2: M1Top2 Bandeja3: M1Top3 Bandeja4: M1Top4
Bandeja5:M1Top1_1;Bandeja6:M1Top2_1;Bandeja7:M1Top3_1;Bandeja8:M1Top4_1

Ya tenemos modelizado un alimentador con 8 bandejas.

A continuación vamos a comprobar el funcionamiento, para lo que incorporaremos a


nuestra celda de trabajo los siguientes elementos adicionales:

- ConveyorBelt – Posición: (100,-100,-355) (Roll 180, Pitch 0, Yaw 0)


- ConveyorBelt_1 – Posición: (450, -500,-480) (Roll 90, Pitch 0, Yaw 0)
- Alimentador1 (Feeder2) – Posición: (-1000,-250,120)
- Alimentador2 (Feeder2_1) – Posición: (-1000,-250,240)
- Alimentador3 (Feeder2_2) – Posición: (-1000,-250,360)
- Alimentador4 (Feeder2_3) – Posición: (-1000,-250,480)
- Alimentador5 (Feeder2_4) – Posición: (-1000,-250,600)
- Alimentador6 (Feeder2_5)– Posición: (-1000,-250,720)
- Sensor de color1 - Posición: (0,-400,140) (Roll -90, Pitch 90, Yaw 0)
- Sensor de color2 - Posición: (150,100,8) (Roll 0, Pitch 90, Yaw 0)
- Robot RV-2AJ - Position: (600,100,0) - (Roll 180, Pitch 0, Yaw 0)
- Vacuum Gripper (para instalar y conectar al nuevo robot)

Como el suelo se ha quedado pequeño, lo


redimensionaremos clicando en Extras>Settings>Floor,
y en el campo Size damos los siguientes valores:
X=3000; Y=3000
Conexiones: Habilitamos las entradas y conectamos las salidas.
(*)= invert

Robot RV-2AJ:

Input Conectada con Output de Objeto


(1) SensorRed out_red SensorColor
(2) SensorRed1 out_red SensorColor_1

Output Conectada con Input de Objeto


(0) PiezaOn NextPart Feeder2
(0) PiezaOn NextPart Feeder2_1
(0) PiezaOn NextPart Feeder2_2
(0) PiezaOn NextPart Feeder2_3
(0) PiezaOn NextPart Feeder2_4
(1) PiezaOn NextPart Feeder2_5

(2) BandejaOn NextPart Feeder1


(1) BandejaOn NextPart Feeder1_1

(2) BandaInv BeltBackw ConveyorBelt


(3) BandaInv1 BeltBackw ConveyorBelt_1

SensorColor: Output Conectada con Input de Objeto


out_red (0) SensorRed robot RV-2AJ
out_red (*) BeltOn ConveyorBelt

SensorColor_1: Output Conectada con Input de Objeto


out_red (1) SensorRed1 robot RV-2AJ
out_red (*) BeltOn ConveyorBelt _1

Input Conectada con Output de Objeto

Feeder2 NextPart (0) PiezaOn robot RV-2AJ


Feeder2_1 NextPart (0) PiezaOn robot RV-2AJ
Feeder2_2 NextPart (0) PiezaOn robot RV-2AJ
Feeder2_3 NextPart (0) PiezaOn robot RV-2AJ
Feeder2_4 NextPart (0) PiezaOn robot RV-2AJ
Feeder2_5 NextPart (0) PiezaOn robot RV-2AJ

Feeder1 NextPart (1) BandejaOn robot RV-2AJ


Feeder1_1 NextPart (1) BandejaOn robot RV-2AJ
Robot RV-2AJ:

Ejecutamos el programa del robot RV-2AJ para


ver que, por ahora, realiza correctamente su
trabajo.

Pero este no será todavía el programa definitivo


para este robot.

Para que no haya colisiones deberemos hacer que los dos robots trabajen
sincronizadamente, es decir, que uno no empiece a actuar hasta que el otro haya
finalizado su parte del trabajo y viceversa.
Para conseguirlo habilitaremos una nueva entrada y salida en cada robot (p.e. i/o 10) y
las conectaremos como sigue:

Robot RV-2AJ:

Input Conectada con Output de Objeto


(10) Robot1 Robot2 Robot RV-2AJ_1

Output Conectada con Input de Objeto


(10) Robot1 Robot2 Robot RV-2AJ_1

Robot RV-2AJ_1:

Input Conectada con Output de Objeto


(10) Robot2 Robot1 Robot RV-2AJ

Output Conectada con Input de Objeto


(10) Robot2 Robot1 Robot RV-2AJ

Una vez hecho esto los programas de ambos robots quedarían de la siguiente forma,
(para llenar y mover la primera bandeja):
Una vez finalizada la ejecución del programa debemos clicar 2 veces en
Edit>ResetWorkcell para que se nos resetee correctamente el alimentador de bandejas.
Y por último haremos las modificaciones necesarias en el programa para que se repita el
ciclo para el resto de bandejas.

¿Qué pasa si eliminamos la instrucción


DLY 2 de las líneas de programa 310
del robot RV-2AJ y 160 del robot RV-
2AJ_1?

Para que la simulación funcione correctamente


también deberemos hacer una modificación en los
parámetros del Grip Point de la Bandeja 1:

fijaremos el Grip range en 25

Podemos variar el número de discos que se alojan en cada bandeja modificando las
variables “L” y “A” en las líneas 170 y 180 del programa del robot RV-2AJ.
Así pues haciendo L=2, compilando y ejecutando nuevamente el programa, veremos
como se nos apilan bandejas de 2x2 discos.
Modelización de un cilindro empujador:

Abrimos el programa e iniciamos un nuevo proyecto con el asistente de proyectos


File<Project Wizard. Accedemos a Model Libraries y cargamos los siguientes objetos:
- 2 cajas - Miscellaneous Primitives > Box.
(clicamos dos veces en Add para añadir 2 cajas).
- 2 alimentadores de piezas - Miscellaneous Mechanisms>Parts Feeder 1
(clicamos dos veces en Add para añadir 2 alimentadores).
- 1 cilindro empujador - Miscellaneous Mechanisms>Push Cylinder

Desplegando el Model Explorer y clicando encima de cada objeto con el botón derecho
del ratón, situaremos los diferentes objetos en las siguientes posiciones:

- Caja Box : posición (-200,200,0).


- Caja Box_1: posición (200,-400,0).
- Alimentador Feeder1: posición (300,-150,200).
- Alimentador Feeder1_1: posición (300,-150,320).
- Push Cylinder: posición (300,-200,200) (Roll 90, Pitch 0, Yaw 0).

También a través de Model Explorer,


modificamos las dimensiones de las cajas:

- Caja Box: Medidas (200, 100, 200)


Color: azul.
Esta caja será la mesa donde el robot dejará las
piezas que están actualmente en el interior de los
alimentadores.
- Cajas Box_1: Medidas (200, 400, 200)
Color: azul.
Esta caja será la mesa de donde el robot cogerá las
piezas.

Conexiones:

Robot RV-2AJ:
Output Conectada con Input de Objeto
(0) PiezaOn NextPart Feeder1
(0) PiezaOn NextPart Feeder1_1

(1) PusherOn PushForward PushCylinder

PushCylinder:
Input Conectada con Output de Objeto
PushForward (1) PusherOn robot RV-2AJ

Input Conectada con output de Objeto


Feeder1 NextPart (0) PiezaOn robot RV-2AJ
Feeder1_1 NextPart (0) PiezaOn robot RV-2AJ
Modelización de un actuador rotativo:

Abrimos el programa e iniciamos un nuevo proyecto con el asistente de proyectos


File<Project Wizard. Accedemos a Model Libraries y cargamos los siguientes objetos:
- 2 cajas - Miscellaneous Primitives > Box.
(clicamos dos veces en Add para añadir 2 cajas.
- 2 alimentadores de piezas - Miscellaneous
Mechanisms>Parts Feeder 1 (clicamos dos
veces en Add para añadir 2 alimentadores).
- 1 cilindro empujador -
Miscellaneous Mechanisms>Push
Cylinder
- 1 actuador rotativo –
Miscellaneous
Mechanisms>Turning Mover

Desplegando el Model Explorer y clicando encima de cada objeto con el botón derecho
del ratón, situaremos los diferentes objetos en las siguientes posiciones y con las
siguientes medidas:
- Caja Box : posición (-200,200,0) - Medidas (200, 100, 200) - Color: azul.
- Caja Box_1: posición (200,-400,0) - Medidas (400, 400, 200) - Color: azul.
- Alimentador Feeder1: posición (500,-150,200).
- Alimentador Feeder1_1: posición (500,-150,320).
- Push Cylinder: posición (500,-200,200) (Roll 90, Pitch 0, Yaw 0).
- Turning Mover: posición (430,-30,200) (Roll 90, Pitch 0, Yaw 0).

Configuramos el ángulo de desplazamiento del actuador


rotativo: en el Model Explorer clicamos con el botón
derecho del ratón en TurningMover>Joint1 y en el
desplegable que aparece seleccionamos Properties. En
la pestaña General fijamos los siguientes valores:
Lower axis limit: -12º; Upper axis limit: 192º

Repetimos la operación para TurningMover>Joint2 y le damos los mismos valores:


Lower axis limit: -12º; Upper axis limit: 192º

Conexiones:
Robot RV-2AJ:
Input Conectada con Output de Objeto
(0) EnPosicionA AtPositionA TurningMover
(1) EnPosicionB AtPositionB TurningMover
(2) PiezaDisponible PartAvailable Feeder1
(3) MaximaExtesion MaxReached PushCylinder

Output Conectada con Input de Objeto


(0) PiezaOn NextPart Feeder1
(0) PiezaOn NextPart Feeder1_1
(1) PusherOn PushForward PushCylinder
(2) PosicionA ToPositionA TurningMover
(3) PosicionB ToPositionB TurningMover
(4) AgarraPieza Grip TurningMover
(5) SueltaPieza Release TurningMover
Primero ejecutaremos este sencillo programa para
observar el funcionamiento del actuador rotativo.
(No hace falta archivo de posiciones, ya que por el
momento el robot no hace ningún movimiento).

A continuación complementaremos el programa


para que el robot nos coloque las piezas en la
mesa.
(Ahora sí necesitamos archivo de posiciones).

Antes de ejecutar el programa hacemos


Edit>Reset Workcell.
Modelización de una mesa giratoria:

A través del Model Libraries incorporamos los siguientes


elementos:
- Mesa giratoria: Miscellaneous Mechanisms>Turn Table.
A través del Model Explorer la situamos en la posicion
(300,300,0).
- Caja: Miscellaneous Primitives>Box.
(Más tarde la posicionaremos y redimensionaremos)

Dimensionado:
La mesa giratoria consta de dos partes:
- Base (pie cilíndrico)
- MoveSegment (Tablero circular)

Dimensionado del pie cilíndrico:


en el Model Explorer clicamos en TurnTable>Base, y en
la ventana de la derecha clicamos con el botón derecho
del ratón en el elemento Cylinder 1 y en el desplegable que nos
aparece seleccionamos Properties (pestaña General).
Modificando las variables Radius y Heigth modificaremos el
Radio y la altura.
Vamos a fijar, por ejemplo, el radio en 30 y la altura en 250.

Dimensionado del tablero circular:


en el Model Explorer clicamos en TurnTable> MoveSegment, y
en la ventana de la derecha clicamos con el botón derecho del
ratón en el elemento Cylinder 2 y en el desplegable que nos
aparece seleccionamos Properties (pestaña General).

Modificando las variables Radius y Heigh


modificaremos el Radio y el espesor del tablero.
Vamos a fijar, por ejemplo, el radio en 150 y el espesor
en 20.
Clicando en la pestaña Position podemos dar una nueva
posicion al tablero, por ejemplo Coordinate system
World (300,300,250).
Si modificamos las dimensiones y posición del tablero
deberemos modificar también las dimensiones y
posicion de la superficie adherente Conveyor Surface 1, clicando en
TurnTable>MoveSegment y en la ventana
de la derecha clicando en el elemento
Conveyor Surface 1 veremos donde está
situada. Para modificar sus propiedades
clicaremos con el botón derecho encima de
Conveyor Surface 1: a través de la pestaña
General le daremos las nuevas medidas
(Length X:300, Length Y:300), y a través
de la pestaña Position la nueva posición
Coordinate system world (150,150,270).
Configuración:

Clicando con el boton derecho del raton en


TurnTable>MoveSegment y en el desplegable que nos aparece
seleccionando Properties pestaña General, podremos configurar
los grados que girará la mesa cada vez que reciba la senal de
accionamiento.

- Upper axis limit: marca el punto de inicio de giro (en principio pondremos siempre 0)
- Lower axis limit: indica el ángulo de giro (siempre en negativo: -30, -45, -90,…).
- Max. Axis speed: indica la velocidad y el sentido de giro (+ ó -)

Para poder observar los movimientos de la mesa giratoria


situaremos la caja (Box) en la posición (300,300,270), la
redimensionaremos (10,100,100) y le daremos un grip point que
situaremos en la posición (305,350,300).

Para dar la señal para que la mesa gire deberemos renombrar


una salida del robot (p.e. renombramos la salida 000 como
“Girar”) y conectarla con la entrada de la mesa “TurnOnce”.
Como ya hemos visto con anterioridad la conexión se realiza
clicando (la salida) y arrastrando y soltando (en la entrada).

A continuación comprobaremos el funcionamiento de la


mesa giratoria ejecutando el siguiente programa:

Pararemos la ejecución (pulsando STOP), cambiaremos la configuración de grados y


sentido de giro, y volveremos a ejecutar el programa.

Podemos cambiar de sitio la caja Box y poner un PushCylinder en


la mesa giratoria (posición 375,300,270), pero para que este gire
solidariamente con la caja deberemos definirle un grip point .
Modelización de celda robótica

Modificaremos las medidas del suelo de nuestra modelización para ajustarlas a la


realidad: Extras>Settings>Floor. Size X:1000 Grid Lines X: 20
Y:1500 Lines Y: 0

- Robot RV-2AJ: Posición (0, 0, 8)

- Box (base del robot): Posición: (-175,-120,0) Medidas: (270, 240, 8) Color: Gris

- 5 Parts Feeder 1 (alimentador de tapones):


Posiciones: (85,-245,30) (85,-245,150) (85,-245,270) (85,-245,390) (85,-245,510)

- Push Cylinder: Posición: (40,-245,30)

- Box_1 (prolongación base push cylinder):


Posición: (115,-280,0) Medidas:(120, 70, 30) Color: Crema claro

- Box_2 (soporte sensores inductivo y capacitivo):


Posición: (235,-280,0) Medidas: (50, 70, 60) Color: Crema claro

- Sensor de proximidad Capacitivo:


Posición: (215,-245,50) Roll 180 Pitch 90 Yaw 0 Color: Azul oscuro
Medidas (Base): radio 10, altura 80
SensorCapacitive>Properties>Sensor> Hysteresis:<100 mm>

- Sensor de proximidad Inductivo:


Posición: (265,-201,50) Roll -90 Pitch 90 Yaw 0 Color: Violeta
Medidas (Base): radio 10, altura 80

- Box_3 (bandeja de paletizado):


Posición: (205,-105,0) Medidas: (200, 200, 5) Color: Rojo

Agujeros bandeja: añadimos 9 cilindros (base>new cylinder)


Cilindros: Medidas: radio 20, altura 6 Color: Verde
Posiciones (World): C1 (245, -60,0) C2 (245, 0,0) C3 (245, 60,0)
C4 (305, -60,0) C5 (305, 0,0) C6 (305, 60,0)
C7 (365, -60,0) C8 (365, 0,0) C9 (365, 60,0)

- Box_4 (Estructura cinta transportadora):


Posición: (107, 270, 0) Medidas: (46, 400, 120) Color: Azul medio

- Conveyor Belt (Cinta Transportadora):


Posición: (146, 270, 121) Roll 90 Color: Gris claro (Fill surface)

Belt> Conveyor surface: Medidas: (400,30) Speed 100 mm/s

- Sensor HN24MGV (Sensor instalado en la entrada de la cinta transportadora):


Posición: (105, 300, 140) Roll 0 Pitch 90 Yaw 0
- Sensor de color (montado en el gripper): (coordenadas con el robot en el punto P0)

Color Sensor: Posición (World): (300,-40,558) Roll 0 Pitch 0 Yaw 90º

En el elemento base del sensor, poner a cero(0.01) las dimensiones de los elementos
Box1, Box3 y Box4. Redimensionar Box2: (Length X: 25, Length Y: 40, Z: 20).

En el Gripper definir un gripper point (Gripper>Base>New>Gripper Point), situarlo en


la posición (World): (300,-40,558) Roll 0 Pitch 0 Yaw 0 y renombrarlo como
GripperSensor. (Si se desconecta el Gripper, volver a conectarlo al final del proceso).

En el sensor color definir un grip point (SensorColor>Base>New>GripPoint), posición


(World): (300,-40,558) Roll 0 Pitch 0 Yaw 0. Establecer el grip range en 10mm.

Unirlo al gripper point llamado GripperSensor.

(Ahora es cuando volveremos a realizar la conexion entre el Gripper y el Robot,


renombrando el Output 257 del robot como HCLOSE1 y conectandolo al Input Close
del Gripper).
- Box_5 (orientador de tapones con sensor de color):
Posición: (155, 130, 0) Medidas: (50, 115, 20) Color: Gris oscuro

Añadimos 2 cilindros: uno para posicionar el tapón y otro para orientarlo.

Cilindro posicionador: C1- Medidas: radio 20, altura 21 Color: Gris claro
Posición (World): (180, 155, 0)

Cilindro orientador: C2- Medidas: radio 1.50, altura 52 Color: Azul oscuro
Posición (World): (180, 170, 0)

- Sensor de color_1 (montado en el Box 5):


Posición: (180, 240, 21) Roll 90º Color: Gris medio

En el elemento base del sensor, poner a cero las dimensiones de los elementos Box1,
Box3 y Box4. (Box2: Length X: 40, Length Y: 40, Length Z: 20).

El robot orientará cualquier tapón (rojo, negro, metálico) que tenga enroscada tapa azul,
ya que la función de la base orientadora de tapones es desenroscar la tapa azul.
Para ello deberemos simular (en los tapones) los tres agujeros existentes en ellos y la
tapa azul. A continuación se detallan los pasos a seguir en el disco M1Disc1, aunque
cuando ejecutemos el programa podremos realizar esta simulación (tapón con tapa azul
y tres agujeros) en cualquiera de los discos del alimentador, pero solo en uno (ya que en
la base real de desenroscado que estamos simulando solo cabe un tapón).

- Simulación de 3 agujeros a 120º en el tapón:


Añadiremos 3 cilindros (C2,C3,C4) en el interior del disco M1Disc1:
(M1Discs>M1Disc1>Base>New Cylinder)
Medida – Radius: 3, Heigth: 33 Color: Verde
Posiciones (Section): C2 (15, 0, 29) – C3 (-7.5, -12.99, 29) – C4 (-7.5, 12.99, 29)

En el sensor de color_1 (propiedades>sensor) hay que definirle este verde, sino no


detectará los “agujeros”.

- Simulación de tapa azul en el tapón:


Añadiremos 1 cilindro (C5) en el interior del disco M1Disc1:
(M1Discs>M1Disc1>Base>New Cylinder)
Medida – Radius: 20, Heigth: 2 Color: Azul
Posición (Section): (0, 0, 59)

En el sensor de color_1 hay que definirle el azul elegido, sino no detectará la “tapa”.
2 Parts Feeder 2 (Depósito vertical de tapones):

- Feeder2: Posición (World): (290, 230, 0)


- Feeder2_1: Posición (World): (290, 230,90)

Colocar Mesa (Box_6) para sacar los discos del interior de los alimentadores, para lo
cual definiremos 8 gripper points en ella (Box6>Base>New>Gripper Point) que
renombraremos como Mesa_1, Mesa_2,…, Mesa_8:

Box_6: Posición: (-100, 200, 0) Medidas: (100, 200, 100) Color: Marrón

Gripper Points: (posiciones Section)


Mesa1:(25, 25, 100); Mesa2:(25, 75, 100); Mesa3:(25, 125, 100); Mesa4:(25, 175, 100)
Mesa5:(75, 25, 100); Mesa6:(75, 75, 100); Mesa7:(75, 125, 100); Mesa8:(75, 175, 100)

Una vez definidos los 8 gripper points, vamos a cada uno de los grip points de los 8
discos (4 M2Discs + 4 M2Discs_1) y les asignamos los 8 gripper points definidos
anteriormente en la mesa Box 6.

Ya tenemos modelizada la celda robótica del aula de la escuela.


Para simular tapones metálicos y tapones negros de polipropileno que pasaran al sensor
inductivo deberemos incorporar los materiales, que posteriormente asignaremos a los
tapones que queramos.
Esta operación la realizaremos a través de Model Libraries>Miscellaneous Materials, e
incorporaremos los siguientes materiales: Polypropylen (PP) y Iron.

- Simulación de tapón metalico:


Seleccionamos (por ejemplo) el tapon M1Disc2:
Clicamos en M1Discs>M1Disc2>Base. A continuación clicamos con el botón derecho
del ratón encima del elemento Cylinder 1 (que aparece en la ventana de la derecha) y en
el desplegable que aparece seleccionamos Properties:
- En la pestaña General,Clicamos encima de Material:<<No material>>, y en la
parte inferior de la ventana emergente cambiamos el material seleccionando
Iron.
- En la pestaña Visualization cambiamos el color rojo por blanco.

Si repetimos esta operación (además de con el disco M1Disc2) con los discos
M1Disc2_3 y M1Disc3_4, estaremos simulando un total de 3 tapones metálicos.

- Simulación de tapón negro de polipropileno:


En este caso si nos limitamos a cambiar el material del disco, este nos quedara
transparente y no lo distinguiremos. Para resolver esto crearemos otro cilindro
concéntrico al cilindro negro, pero con un diámetro de 1 mm mas grande.

Seleccionamos (por ejemplo) el tapon M1Disc3 y añadimos 1 nuevo cilindro:


(M1Discs>M1Disc3>Base>New Cylinder) y se nos crea en la ventana de la derecha el
elemento Cylinder2:
Medida – Radius: 21, Heigth: 29 Material: Polypropylen(PP)
Posiciones (Section): (0, 0, 30,28)
A continuación vamos al cilindro interior Cylinder 1 (el que teníamos de antes) y le
cambiamos el color rojo por el negro.

Si repetimos esta operación (además de con el disco M1Disc3)


con los discos M1Disc3_1, M1Disc1_2, M1Disc2_2,
M1Disc4_2, M1Disc4_3, M1Disc2_4,estaremos simulando un
total de 7 tapones negros de polipropileno.

En nuestra simulación tenemos 5 alimentadores (Feeder 1) con 4


tapones cada uno. Hemos modificado los 20 tapones de la
siguiente forma: 1 tapón rojo con tapa azul, 9 rojos sin tapa azul,
3 tapones metálicos y 7 negros de polipropileno.
A continuación procederemos a realizar las conexiones entre el robot y los distintos
elementos (sensores, alimentadores y cinta transportadora).

Conexiones:
Robot RV-2AJ:
Output Conectada con Input de Objeto
(0) PiezaOn NextPart Feeder1
(0) PiezaOn NextPart Feeder1_1
(0) PiezaOn NextPart Feeder1_2
(0) PiezaOn NextPart Feeder1_3
(0) PiezaOn NextPart Feeder1_4

(1) DepositoOn NextPart Feeder2


(1) DepositoOn NextPart Feeder2_1

(2) BandaOn BeltOn ConveyorBelt

Input Conectada con Output de Objeto


(0) GripperSensorB out_blue SensorColor
(1) GripperSensorR out_red SensorColor

(2) SensorCapacitivo output SensorCapacitive

(3) SensorInductivo output SensorInductive

(4) Orientador out_green SensorColor_1

(5) SensorBanda detect HN24MGV

PushCylinder:
Input Conectada con Output de Objeto
PushForward PartAvailable Feeder1

Lista de posiciones:
Programa:
Con este programa el robot hace lo siguiente:

Sitúa cualquier pieza con tapa azul en la base orientadora.


Coloca en el pallet los tapones rojos sin tapa azul.
Almacena en el depósito vertical los tapones negros de propileno sin tapa azul.
Sitúa en la banda transportadora los tapones metálicos sin tapa azul.
Lluis Soriano: 644137768 lsoriano.ls@gmail.com

You might also like