1 / 28
文档名称:

ABBrobotstudio使用详细步骤.pdf

格式:pdf   大小:1,924KB   页数:28页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

ABBrobotstudio使用详细步骤.pdf

上传人:小辰GG 2022/11/24 文件大小:1.88 MB

下载得到文件列表

ABBrobotstudio使用详细步骤.pdf

文档介绍

文档介绍:该【ABBrobotstudio使用详细步骤 】是由【小辰GG】上传分享,文档一共【28】页,该文档可以免费在线阅读,需要了解更多关于【ABBrobotstudio使用详细步骤 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:.
搬运码垛工作站建模
1、创建机器人系统
2、创建动态输送链
3、创建动态夹具
4、工作站逻辑连接
5、添加IO(设置好需重启)
6、示教目标点(同步到RAPID)
7、RAPID编程
:.
一、创建机器人系统
1、创建空工作站
2、导入IRB260机器人模型
3、从布局创建机器人系统,勾选Chinese和709-1网络:.
二、创建动态输送链
1、添加输送链并修改位置
2、创建600*400*200的物料并修改位置
:.
3、添加一个smart组件
4、添加source组件
:.
5、设置物料本地原点
6、添加LINEMOVER和QUEUE组件
7设置LINEMOVER属性:.
8、添加面传感器组件
9、设置输送链不能被传感器检测:.
10、设置SC_输送链的属性连接
:.
11、设置信号连接
12、添加信号处理组件,用于检测传感器下降沿
13、传感器下降沿触发source进行copy:.
14、传感器与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
PERStooldata
tGrip:=[TRUE,[[0,0,200],[1,0,0,0]],[25,[0,,],[1,0,0,0],0,0,0]];
!吸盘工具数据
PERSloaddataLoadEmpty:=[,[0,0,1],[1,0,0,0],0,0,0];
PERSloaddataLoadFull:=[40,[0,0,50],[1,0,0,0],0,0,0];
!有效载荷数据
PERSrobtargetpHome:=[[,-,],[-06,-,-
,-06],[0,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
!基准点
PERSrobtargetpActualPos:=[[1620,--14,],[-06,-
,-,-
06],[0,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];:.
!实际点
PERSrobtarget
pPick1:=[[,,],[0,,
07256,0],[0,0,1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
!1路拾取目标点
PERSrobtargetpPlace1:=[[-
,,],[0,,,0],[1,0,2,0],[9E+09,9E+09,9E+09,
9E+09,9E+09,9E+09]];
!1路放置基准点
PERSrobtargetpBase1_0:=[[-
,,],[0,,,0],[1,
0,2,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
!1路放置0度姿态
PERSrobtargetpBase1_90:=[[-
,,],[0,1,-
,0],[1,0,3,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
!1路放置90度姿态
PERSrobtargetpPick2:=[[,-
,],[0,,,0],[-
1,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
PERSrobtargetpPlace2:=[[-,-
,],[0,,,0],[-2,0,-
1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
PERSrobtargetpBase2_0:=[[-,-
,],[0,,,0],[-2,0,-
1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
PERSrobtargetpBase2_90:=[[-,-
,],[0,1,-,0],[-
2,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
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
;
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;
;
GripLoadLoadFull;
MoveLOffs(pPick1,0,0,400),MinSpeed,z50,tGrip\WObj:=wobj0;
ENDPROC
PROCrPick2()
MoveJOffs(pPick2,0,0,400),MaxSpeed,z50,tGrip\WObj:=wobj0;
MoveLpPick2,MinSpeed,fine,tGrip\WObj:=wobj0;
SetdoGrip;
;
GripLoadLoadFull;
MoveLOffs(pPick2,0,0,400),MinSpeed,z50,tGrip\WObj:=wobj0;
ENDPROC
PROCrPlace1()
rPosition1;
MoveJOffs(pPlace1,0,0,400),MidSpeed,z50,tGrip\WObj:=wobj0;
MoveLpPlace1,MinSpeed,fine,tGrip\WObj:=wobj0;
ResetdoGrip;
;:.
GripLoadLoadEmpty;
MoveLOffs(pPlace1,0,0,400),MidSpeed,z50,tGrip\WObj:=wobj0;
MoveJOffs(pPick1,0,0,400),MaxSpeed,z50,tGrip\WObj:=wobj0;
nCount1:=nCount1+1;
IFnCount1>20THEN
bPalletFull1:=TRUE;
ENDIF
ENDPROC
PROCrPlace2()
rPosition2;
MoveJOffs(pPlace2,0,0,400),MaxSpeed,z50,tGrip\WObj:=wobj0;
MoveLpPlace2,MinSpeed,fine,tGrip\WObj:=wobj0;
ResetdoGrip;
;
GripLoadLoadEmpty;
MoveLOffs(pPlace2,0,0,400),MidSpeed,z50,tGrip\WObj:=wobj0;
MoveJOffs(pPick2,0,0,400),MaxSpeed,z50,tGrip\WObj:=wobj0;
nCount2:=nCount2+1;
IFnCount2>20THEN
bPalletFull2:=TRUE;
ENDIF
ENDPROC
PROCrPosition1()
TESTnCount1
CASE1:
pPlace1:=Offs(pBase1_0,0,0,0);
CASE2:
pPlace1:=Offs(pBase1_0,600+10,0,0);:.
CASE3:
pPlace1:=Offs(pBase1_90,0,400+10,0);
CASE4:
pPlace1:=Offs(pBase1_90,400+10,400+10,0);
CASE5:
pPlace1:=Offs(pBase1_90,800+20,400+10,0);
CASE6:
pPlace1:=Offs(pBase1_0,0,600+10,200);
CASE7:
pPlace1:=Offs(pBase1_0,600+10,600+10,200);
CASE8:
pPlace1:=Offs(pBase1_90,0,0,200);
CASE9:
pPlace1:=Offs(pBase1_90,400+10,0,200);
CASE10:
pPlace1:=Offs(pBase1_90,800+20,0,200);
CASE11:
pPlace1:=Offs(pBase1_0,0,0,400);
CASE12:
pPlace1:=Offs(pBase1_0,600+10,0,400);
CASE13:
pPlace1:=Offs(pBase1_90,0,400+10,400);
CASE14:
pPlace1:=Offs(pBase1_90,400+10,400+10,400);
CASE15:
pPlace1:=Offs(pBase1_90,800+20,400+10,400);
CASE16:
pPlace1:=Offs(pBase1_0,0,600+10,600);
CASE17:
pPlace1:=Offs(pBase1_0,600+10,600+10,600);:.
CASE18:
pPlace1:=Offs(pBase1_90,0,0,600);
CASE19:
pPlace1:=Offs(pBase1_90,400+10,0,600);
CASE20:
pPlace1:=Offs(pBase1_90,800+20,0,600);
DEFAULT:
TPErase;
TPWrite"theCounterofline1iserror,pleasecheckit!";
Stop;
ENDTEST
ENDPROC
PROCrPosition2()
TESTnCount2
CASE1:
pPlace2:=Offs(pBase2_0,0,0,0);
CASE2:
pPlace2:=Offs(pBase2_0,600+10,0,0);
CASE3:
pPlace2:=Offs(pBase2_90,0,400+10,0);
CASE4:
pPlace2:=Offs(pBase2_90,400+10,400+10,0);
CASE5:
pPlace2:=Offs(pBase2_90,800+20,400+10,0);
CASE6:
pPlace2:=Offs(pBase2_0,0,600+10,200);
CASE7:
pPlace2:=Offs(pBase2_0,600+10,600+10,200);
CASE8::.
pPlace2:=Offs(pBase2_90,0,0,200);
CASE9:
pPlace2:=Offs(pBase2_90,400+10,0,200);
CASE10:
pPlace2:=Offs(pBase2_90,800+20,0,200);
CASE11:
pPlace2:=Offs(pBase2_0,0,0,400);
CASE12:
pPlace2:=Offs(pBase2_0,600+10,0,400);
CASE13:
pPlace2:=Offs(pBase2_90,0,400+10,400);
CASE14:
pPlace2:=Offs(pBase2_90,400+10,400+10,400);
CASE15:
pPlace2:=Offs(pBase2_90,800+20,400+10,400);
CASE16:
pPlace2:=Offs(pBase2_0,0,600+10,600);
CASE17:
pPlace2:=Offs(pBase2_0,600+10,600+10,600);
CASE18:
pPlace2:=Offs(pBase2_90,0,0,600);
CASE19:
pPlace2:=Offs(pBase2_90,400+10,0,600);
CASE20:
pPlace2:=Offs(pBase2_90,800+20,0,600);
DEFAULT:
TPErase;
TPWrite"theCounterofline1iserror,pleasecheckit!";
Stop;
ENDTEST:.
ENDPROC
PROCrModify()
MoveJpHome,MinSpeed,fine,tGrip\WObj:=wobj0;
MoveJpPick1,MinSpeed,fine,tGrip\WObj:=wobj0;
MoveJpBase1_0,MinSpeed,fine,tGrip\WObj:=wobj0;
MoveJpBase1_90,MinSpeed,fine,tGrip\WObj:=wobj0;
MoveJpPick2,MinSpeed,fine,tGrip\WObj:=wobj0;
MoveJpBase2_0,MinSpeed,fine,tGrip\WObj:=wobj0;
MoveJpBase2_90,MinSpeed,fine,tGrip\WObj:=wobj0;
ENDPROC
ENDMODULE