Está en la página 1de 12

Ejercicio Feedback Nº3.

Unidad Didáctica 6

Tenemos un Sistema de Robot que se utiliza para descargar una cinta trasportadora que lleva
dos tipos de piezas: CUBOS Y CILINDROS.
Una vez que llega la pieza al final de la cinta, hay un detector que indica al robot la presencia de
pieza y además hay una estación de identificación que le indica el tipo de pieza.
El robot procede a recoger la pieza y dependiendo del modelo la dejara en una de las 2 cajas
dispuestas al efecto.
En la caja para los cubos, hay espacio para 5 piezas y en la de cilindros 3 piezas.
Cuando las cajas estén llenas, el Robot dará orden para que se produzca el cambio manualmente
mediante un operario.

ENTRADAS
EPieza_OK Cuando pasa a 1 indica que hay una pieza en la cinta.
ECubo Cuando pasa a 1 indica que se trata de un cubo.
ECil Cuando pasa a 1 indica que es un cilindro.
ECubo_OK Mientras está a 1 indica que la caja de cubos está dispuesta
para que puedan descargar los cubos.
ECil_OK Mientras está a 1 indica que la caja de Cilindros está dispuesta
para que puedan descargar los cilindros.

SALIDAS

SCubo Cuando se quiera cambiar la caja de cubos, tendrá que pasar a 1.


SCil Cuando se quiera cambiar la caja de Cilindros, tendrá que pasar a 1.

VARIABLES NUMERICAS

ContCub Contador que sirve para contar los cubos que colocamos en la caja.
ContCil Contador que sirve para contar los Cilindros que colocamos en la caja.

Ejercicio feedback Página 1 de 12


Esta es la configuración de las entradas mostrando cada estado de la misma, mostrando la
estación completa en medio a la funcionalidad de la misma.

Imagen 1: Configuración de Entradas y Estado.

Funcionalidad del proceso mediante las figuras la elaboración del programa antes descripto
mostrados a través de imágenes, pautando los movimientos del sistema.

Imagen 2. Proceso de llenado de cubos

Ejercicio feedback Página 2 de 12


Estado de inicio del programa las entradas de función deben de estar seleccionada o activada de
esta manera darán paso a la función del sistema si una de esta no esta encendida es porque se
esta efectuado dicha función.

Imagen 3. Restauración del Sistema.

Imagen 4. Sistema de llenado Cilindros.

Ejercicio feedback Página 3 de 12


Al completar cada fila o columna de la caja el programa se detiene y evalúa la siguiente
función a ejecutar de esta manera cada ves que el contador de las diferentes cajas
completa las cantidades preprogramadas esta realiza la acción programada. “Limpiar”

Imagen 5. Sistema Completado.

Una ves completada la caja el manipulador se detiene y se activa la desactiva la acción


de la caja que este completa “Cilindros” o “Cubos”

Imagen 6. Limpieza de Elementos.

Ejercicio feedback Página 4 de 12


Configuración del componente inteligente, en este realizamos mediante dispositivos
virtuales la acciones que estos deberán realizar durante la ejecución del proceso, por
ejemplo este componente es el encargado de general las diferentes piezas de una mane
elegible, tomando en cuenta que de esta manera podemos elegir el tipo de pieza que
queremos.

Bueno de manera general, el funcionamiento de este componente es: mediante dos


compuertas lógica and, controlamos la selección del tipo de pieza combinando el pulso
de las entradas que queremos accionar, esto nos permite que solo cuando se detecte dos
uno a la entrada de esta compuerta esta permita pasar un uno a su salida logrando con
esto la opción de seleccionar el tipo de pieza.

Esta su vez la comunicamos con una fuente predefinidas con el tipo de pieza y las
coordenadas de donde queremos situarla, de esta manera esta al recibir la activación nos
generan una copia del elemento que ya hemos de finido.

Esta a su ves la conectamos a un “Queue”, el cual se comporta como un seleccionador y


organizador de piezas colocando esta en frente y organizando una cola de la misma de
acuerdo a la necesidad.

Este a su vez lo colocamos con un movimiento linear, el cual ya esta preprogramado


con la velocidad de movimiento y la dirección en la cual el objeto debe moverse, este es
activado con la entrada de Motor_Cinta, cuando este es detectado por el SCubo. Sensor
de salida detiene la cinta.

Este a su vez se conecta con el “Attacher”, el cual toma el objeto y lo sujeta hasta se
colocado en la posición o en la caja correspondiente.

Este a su vez se conecta con el “Detacher”, para dejar la pieza en su lugar de destino
final.

En esta componente tenemos dos sensores que son los encargados de detectar las piezas
según su tipo, “SCubo” y “SCil”, de esta manera se ha creado mediante Rapid una
lógica de programación de unos comparadores tanto para el tipo de piezas como para los
contadores del sistema con los cuales de manera oportuna se realiza la selección de las
diferentes opciones mediante las interacciones de los dispositivos empleados en este
componente inteligente.

Ejercicio feedback Página 5 de 12


Imagen 7. Componente Inteligente.

La comunicación entre lo que es el controlador y la parte del manipulador es una


convergencia de las entradas y las salidas del sistema. Por ejemplo las entradas en las
controladoras son salidas para el manipulador y de manera inversa del manipulador a la
controladora.

Imagen 8. Conexiones del Controlador y Manipulador

Ejercicio feedback Página 6 de 12


Imagen 9. Funciones del Programa.

Estado del programa para dejar los diferentes objetos en las cajas asignada.

Imagen 10. Programa en Proceso.

Ejercicio feedback Página 7 de 12


Bueno a qui le dejo el código del programa, como el pack And Go del mismo.

MODULE Module1

CONST robtarget
Inicio:=[[4709.158995349,718.41269369,0],[0.134922335,0.134922335,0.694115238,0
.694115238],[0,-1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget
P1_1:=[[4592.379096615,1247.5,56.614953781],[0,0,0.707106781,0.707106781],[0,-
1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget
P2_2:=[[2949.244096615,1256.134241133,1814.961953781],[0.5,-0.5,0.5,0.5],[0,0,-
1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget P3_3:=[[2949.244096615,1829.794,1814.961953781],[0.5,-
0.5,0.5,0.5],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget
P1:=[[4587.379096615,1247.5,56.613953781],[0,0,0.707106781,0.707106781],[0,-
1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget
P2:=[[3731.471096615,1229.184024528,1859.068953781],[0.353553391,-
0.353553391,0.612372436,0.612372436],[0,-
1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget P3:=[[3731.471096615,1820.12,1859.068953781],[0.353553391,-
0.353553391,0.612372436,0.612372436],[0,-
1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
VAR num CXC:=0; !Contador de X
VAR num CYC:=0; !Contador de Y
VAR num offsCx:=0; !offs de posicion en X
VAR num offsCy:=0; !offs de posicion en Y
VAR num offsCz:=0; !offs de posicion en Z
VAR num CXCil:=0; !Contador de X
VAR num CYCil:=0; !Contador de Y
VAR num offsCilx:=0; !offs de posicion en X
VAR num offsCily:=0; !offs de posicion en Y
VAR num offsCilz:=0; !offs de posicion en Z
VAR num Count_Cilindros:=0; !contador de Cilindros_0 en caja
VAR num Count_Cubos:=0; !Contador de Cubos en caja

!***********************************************************
!
! Módulo: Module1
!
! Descripción:
! <Selecion de Productos y Paletixado>
!
! Autor: Ing. Elvis Ortiz

Ejercicio feedback Página 8 de 12


!
! Versión: 1.0
!
!***********************************************************

!***********************************************************
!
! Procedimiento Main
!
! Este es el punto de entrada de su programa
!
!***********************************************************

PROC main()

SetDO Coger_Robot,0;
SetDO Pieza_OK_Robot,0;
SetDO Motor_Cinta_Robot,0;
WaitTime 2;

SetDO Pieza_OK_Robot,1;
SetDO Motor_Cinta_Robot,1;
WaitDI SCubo_Robot,1;
SetDO Motor_Cinta_Robot,0;
Select;
Limpiar;

ENDPROC

PROC Select()
IF SCubo_Robot=1 AND SCil_Robot=1 THEN
Cubo;
ELSEIF SCubo_Robot=1 AND SCil_Robot=0 THEN
Cilindro;
ENDIF

ENDPROC

PROC Limpiar()
IF Count_Cubos >4 THEN
SetDO ECil_OK_Robot,0;
ELSEIF Count_Cilindros >2 THEN
SetDO ECubo_OK_Robot,0;

Ejercicio feedback Página 9 de 12


ENDIF
ENDPROC

PROC Cubo()
WHILE CYC <2 DO
WHILE CXC<3 DO
MoveJ Inicio,v1000,z100,MyTool\WObj:=wobj0;
WaitTime 1;
MoveL P1,v1000,fine,MyTool\WObj:=Cubos_0;

SetDO Coger_Robot,1;
MoveJ Inicio,v1000,z100,MyTool\WObj:=wobj0;
MoveJ P2,v1000,z100,MyTool\WObj:=Cubos_0;
MoveJ offs(P3,offsCX,offsCY,offsCz),v1000,z100,MyTool\WObj:=Cubos_0;
MoveJ P2,v1000,z100,MyTool\WObj:=Cubos_0;
MoveJ Inicio,v1000,z100,MyTool\WObj:=wobj0;

WaitTime 1.5;
SetDO Coger_Robot,0;
offsCx:=offsCx-260;
CXC:=CXC+1;
Count_Cubos:=Count_Cubos+1;
main;
ENDWHILE
offsCx:=0;
offsCy:=offsCy-206;
CYC:=CYC+1;
CXC:=0;
Count_Cubos:=Count_Cubos+1;
main;

ENDWHILE

ENDPROC

PROC Cilindro()

WHILE CYC <2 DO


WHILE CXC<2 DO

MoveJ Inicio,v1000,z100,MyTool\WObj:=wobj0;
WaitTime 1;
MoveL P1_1,v1000,fine,MyTool\WObj:=Cilindros_0;

SetDO Coger_Robot,1;

Ejercicio feedback Página 10 de 12


MoveJ Inicio,v1000,z100,MyTool\WObj:=wobj0;
MoveJ P2_2,v1000,z100,MyTool\WObj:=Cilindros_0;
MoveJ
offs(P3_3,offsCX,offsCY,offsCx),v1000,fine,MyTool\WObj:=Cilindros_0;
MoveJ P2_2,v1000,z100,MyTool\WObj:=Cilindros_0;
MoveJ Inicio,v1000,z100,MyTool\WObj:=wobj0;

WaitTime 1.5;
SetDO Coger_Robot,0;
offsCx:=offsCx-138.98;
CXC:=CXC+1;
Count_Cilindros:=Count_Cilindros+1;
main;
ENDWHILE
offsCx:=0;
offsCy:=offsCy-106.23;
CYC:=CYC+1;
CXC:=0;
Count_Cilindros:=Count_Cilindros+1;
main;

ENDWHILE
ENDPROC

! PROC Cilindros()
! MoveJ Inicio,v1000,z100,MyTool\WObj:=wobj0;
! MoveJ P1_1,v1000,z100,MyTool\WObj:=Cilindros_0;
! MoveJ Inicio,v1000,z100,MyTool\WObj:=wobj0;
! MoveJ P2_2,v1000,z100,MyTool\WObj:=Cilindros_0;
! MoveJ P3_3,v1000,z100,MyTool\WObj:=Cilindros_0;
! MoveJ P2_2,v1000,z100,MyTool\WObj:=Cilindros_0;
! MoveJ Inicio,v1000,z100,MyTool\WObj:=wobj0;
! ENDPROC
! PROC Cubos()
! MoveJ Inicio,v1000,z100,MyTool\WObj:=wobj0;
! MoveJ p1,v1000,z100,MyTool\WObj:=Cubos_0;
! MoveJ Inicio,v1000,z100,MyTool\WObj:=wobj0;
! MoveJ P2,v1000,z100,MyTool\WObj:=Cubos_0;
! MoveJ P3,v1000,z100,MyTool\WObj:=Cubos_0;
! MoveJ P2,v1000,z100,MyTool\WObj:=Cubos_0;
! MoveJ Inicio,v1000,z100,MyTool\WObj:=wobj0;
! ENDPROC
ENDMODULE

Ejercicio feedback Página 11 de 12


Muchas gracias por los conocimientos a portados de los cuales hoy en día estoy
sacándole frutos, sin detenerme y avanzando hacia un mejor futuro gracias….

Elvis Ortiz

Ejercicio feedback Página 12 de 12

También podría gustarte