Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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.
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.
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.
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.
Estado del programa para dejar los diferentes objetos en las cajas asignada.
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
!***********************************************************
!
! 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;
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()
MoveJ Inicio,v1000,z100,MyTool\WObj:=wobj0;
WaitTime 1;
MoveL P1_1,v1000,fine,MyTool\WObj:=Cilindros_0;
SetDO Coger_Robot,1;
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
Elvis Ortiz