搬运码垛工作站建模
1创建机器人系统
2、创建动态输送链
3、创建动态夹具
4、工作站逻辑连接
5添加IO(设置好需重启)
6、示教目标点(同步到RAPID
7RAPID编程
一、创建机器人系统
1、创建空工作站
2、导入IRB260机器人模型
3、从布局创建机器人系统,勾选Chinese709-1网络
二、创建动态输送链
1、添加输送链并修改位置
2、创建600*400*200的物料并修改位置
3、添加一个smart组件
4、添加source组件
5、设置物料本地原点
6、添加LINEMOVERQUEUE组件
7设置LINEMOVER属性
8、添加面传感器组件
9、设置输送链不能被传感器检测
10、设置SC_输送链的属性连接
11、设置信号连接
12、添加信号处理组件,用于检测传感器下降沿
13、传感器下降沿触发source进行copy
14、传感器与cs怎么加机器人SC输送链的输出联系
15、添加仿真开始结束组件,用于激活传感器
16、添加置位复位组件,对仿真开始结束信号进行保持
17
18、进行仿真设定选择SC——输送链进行验证
三、创建动态夹具
1、先制作一个吸盘模型,然后设置成工具,并安装到机器人法拉盘
2、添加SMART组件
3、添加ATTACHER和DETACHER组件
4、设置属性
5、添加一个线传感器组件
6、线传感器设置属性
7、设置吸盘工具不能被传感器检测
8、把线传感器安装到吸盘(不更新位置,保持当前位置)
9、设置属性连接
10、添加信号及连接
11、添加信号处理取非和锁定组件
12、继续信号连接
13、添加一个示教物料
14、应用手动线性验证SC_工具
四、工作站逻辑连接
五、参考代码
MODULEMainMoudle
PERStooldatatGrip:=[TRUE,[[0,0,200],[1,0,0,0]],[25,[0,0.00109327,116.889],[1,0,0,0],0,0,0]];
!吸盘工具数据
PERSloaddataLoadEmpty:=[0.01,[0,0,1],[1,0,0,0],0,0,0];
PERSloaddataLoadFull:=[40,[0,0,50],[1,0,0,0],0,0,0];
!有效载荷数据
PERSrobtargetpHome:=[[1620.00,-0.00,1331.59],[1.27986E-06,-0.707107,-0.707107,1.27986E-06],[0,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
!基准点
PERSrobtargetpActualPos:=[[1620,-1.87531E-14,1331.59],[1.27986E-06,-0.707107,-0.707107,1.27986E-06],[0,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
!实际点
1路拾取目标点
PERSrobtargetpPlace1:=[[-292.446,1263.27,55.4492],[0,0.707107,0.707106,0],[1,0,2,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
1路放置基准点
1路放置0度姿态
1路放置90度姿态
PERSrobtargetpPlace2:=[[-317.378,-1857.99,55.449],[0,0.707108,0.707106,0],[-2,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
PERSspeeddataMinSpeed:=[1000,300,5000,1000];
PERSspeeddataMidSpeed:=[2500,400,5000,1000];
PERSspeeddataMaxSpeed:=[4000,500,5000,1000];
!搬运速度定义
PERSboolbPalletFull1:=FALSE;
PERSboolbPalletFull2:=FALSE;
!逻辑布尔量,拾取后为UE,放置后为FALSE
PERSnumnCount1:=1;
PERSnumnCount2:=1;
!输送链计数
PROCMain()
rInitAll;
WHILETRUEDO
IFdiBoxInPos1=1ANDdiPalletInPos1=1ANDbPalletFull1=FALSETHEN
rPick1;
rPlace1;
ENDIF
IFdiBoxInPos2=1ANDdiPalletInPos2=1ANDbPalletFull2=FALSETHEN
rPick2;
rPlace2;
ENDIF
WaitTime0.1;
ENDWHILE
ENDPROC
PROCrInitAll()
ResetdoGrip;
pActualPos:=CRobT(\tool:=tGrip);
MoveLpActualPos,MinSpeed,fine,tGrip\WObj:=wobj0;
MoveJpHome,MidSpeed,fine,tGrip\WObj:=wobj0;
bPalletFull1:=FALSE;
nCount1:=1;
bPalletFull2:=FALSE;
nCount2:=1;
ENDPROC
PROCrPick1()
MoveJOffs(pPick1,0,0,400),MaxSpeed,z50,tGrip\WObj:=wobj0;
MoveLpPick1,MinSpeed,fine,tGrip\WObj:=wobj0;
SetdoGrip;
WaitTime0.3;
GripLoadLoadFull;
MoveLOffs(pPick1,0,0,400),MinSpeed,z50,tGrip\WObj:=wobj0;
ENDPROC
PROCrPick2()
MoveJOffs(pPick2,0,0,400),MaxSpeed,z50,tGrip\WObj:=wobj0;