《ABBrobotstudio使用详细步骤.doc》由会员分享,可在线阅读,更多相关《ABBrobotstudio使用详细步骤.doc(28页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、搬运码垛工作站建模1、创建机器人系统2、创建动态输送链3、创建动态夹具4、工作站逻辑连接5、添加 IO(设置好需重启)6、示教目标点(同步到 RAPID)7、RAPID 编程一、创建机器人系统1、创建空工作站2、导入 IRB 260 机器人模型3、从布局创建机器人系统,勾选 Chinese 和 709-1 网络二、创建动态输送链二、创建动态输送链1、添加输送链并修改位置2、创建 600*400*200 的物料 并修改位置3、添加一个 smart 组件4、添加 source 组件5、设置物料本地原点6、添加 LINEMOVER 和 QUEUE 组件7 设置 LINEMOVER 属性8、添加面传感
2、器组件9、设置输送链不能被传感器检测10、设置 SC_输送链的属性连接11、设置信号连接12、添加信号处理组件,用于检测传感器下降沿13、传感器下降沿触发 source 进行 copyComment A1: 第四行有误14、传感器与 SC 输送链的输出联系15、添加仿真开始结束组件,用于激活传感器16、添加置位复位组件,对仿真开始结束信号进行保持17、18、进行仿真设定 选择 SC输送链 进行验证三、创建动态夹具三、创建动态夹具1、先制作一个吸盘模型,然后设置成工具,并安装到机器人法拉盘2、添加 SMART 组件3、添加 ATTACHER 和 DETACHER 组件4、设置属性5、添加一个线传
3、感器组件6、线传感器设置属性7、设置吸盘工具不能被传感器检测8、把线传感器安装到吸盘(不更新位置,保持当前位置)9、设置属性连接10、添加信号及连接11、添加信号处理取非和锁定组件12、继续信号连接13、添加一个示教物料14、应用手动线性验证 SC_工具四、工作站逻辑连接四、工作站逻辑连接五、参考代码五、参考代码MODULE MainMoudlePERS tooldata tGrip:=TRUE,0,0,200,1,0,0,0,25,0,0.00109327,116.889,1,0,0,0,0,0,0;!吸盘工具数据PERS loaddata LoadEmpty:=0.01,0,0,1,1,0
4、,0,0,0,0,0;PERS loaddata LoadFull:=40,0,0,50,1,0,0,0,0,0,0;!有效载荷数据PERS robtarget pHome:=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;!基准点PERS robtarget pActualPos:=1620,-1.87531E-14,1331.59,1.27986E-06,- 0.707107,-0.707107,1.27986E- 0
5、6,0,0,1,0,9E+09,9E+09,9E+09,9E+09,9E+09,9E+09;!实际点PERS robtarget pPick1:=1488.007792464,376.826660408,476.964684195,0,0.707106307,0.7071 07256,0,0,0,1,0,9E9,9E9,9E9,9E9,9E9,9E9;!1 路拾取目标点PERS robtarget pPlace1:=- 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+
6、09;!1 路放置基准点PERS robtarget pBase1_0:=- 292.446294945,1263.272085268,55.449220723,0,0.707107387,0.707106176,0,1, 0,2,0,9E9,9E9,9E9,9E9,9E9,9E9;!1 路放置 0 度姿态PERS robtarget pBase1_90:=- 391.976797324,1362.469634994,55.449159414,0,1,- 0.000030621,0,1,0,3,0,9E9,9E9,9E9,9E9,9E9,9E9;!1 路放置 90 度姿态PERS robtar
7、get pPick2:=1488.013130905,- 358.406014736,476.965039287,0,0.707106307,0.707107256,0,- 1,0,0,0,9E9,9E9,9E9,9E9,9E9,9E9;PERS robtarget pPlace2:=-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;PERS robtarget pBase2_0:=-317.378137718,- 1857.993871961,55.44
8、8967354,0,0.707107745,0.707105817,0,-2,0,- 1,0,9E9,9E9,9E9,9E9,9E9,9E9;PERS robtarget pBase2_90:=-407.525988074,- 1755.902485322,55.449282402,0,1,-0.000031217,0,- 2,0,0,0,9E9,9E9,9E9,9E9,9E9,9E9;PERS speeddata MinSpeed:=1000,300,5000,1000;PERS speeddata MidSpeed:=2500,400,5000,1000;PERS speeddata Ma
9、xSpeed:=4000,500,5000,1000;!搬运速度定义PERS bool bPalletFull1:=FALSE;PERS bool bPalletFull2:=FALSE;!逻辑布尔量,拾取后为 UE,放置后为 FALSEPERS num nCount1:=1;PERS num nCount2:=1;!输送链计数PROC Main()rInitAll;WHILE TRUE DOIF diBoxInPos1=1 AND diPalletInPos1=1 AND bPalletFull1=FALSE THENrPick1;rPlace1;ENDIFIF diBoxInPos2=1
10、AND diPalletInPos2=1 AND bPalletFull2=FALSE THENrPick2;rPlace2;ENDIFWaitTime 0.1;ENDWHILEENDPROCPROC rInitAll()Reset doGrip;pActualPos:=CRobT(tool:=tGrip);pActualPos.trans.z:=pHome.trans.z;MoveL pActualPos,MinSpeed,fine,tGripWObj:=wobj0;MoveJ pHome,MidSpeed,fine,tGripWObj:=wobj0;bPalletFull1:=FALSE;
11、nCount1:=1;bPalletFull2:=FALSE;nCount2:=1;ENDPROCPROC rPick1()MoveJ Offs(pPick1,0,0,400),MaxSpeed,z50,tGripWObj:=wobj0;MoveL pPick1,MinSpeed,fine,tGripWObj:=wobj0;Set doGrip;WaitTime 0.3;GripLoad LoadFull;MoveL Offs(pPick1,0,0,400),MinSpeed,z50,tGripWObj:=wobj0;ENDPROCPROC rPick2()MoveJ Offs(pPick2,
12、0,0,400),MaxSpeed,z50,tGripWObj:=wobj0;MoveL pPick2,MinSpeed,fine,tGripWObj:=wobj0;Set doGrip;WaitTime 0.3;GripLoad LoadFull;MoveL Offs(pPick2,0,0,400),MinSpeed,z50,tGripWObj:=wobj0;ENDPROCPROC rPlace1()rPosition1;MoveJ Offs(pPlace1,0,0,400),MidSpeed,z50,tGripWObj:=wobj0;MoveL pPlace1,MinSpeed,fine,
13、tGripWObj:=wobj0;Reset doGrip;WaitTime 0.3;GripLoad LoadEmpty;MoveL Offs(pPlace1,0,0,400),MidSpeed,z50,tGripWObj:=wobj0;MoveJ Offs(pPick1,0,0,400),MaxSpeed,z50,tGripWObj:=wobj0;nCount1:=nCount1+1;IF nCount120 THENbPalletFull1:=TRUE;ENDIFENDPROCPROC rPlace2()rPosition2;MoveJ Offs(pPlace2,0,0,400),Max
14、Speed,z50,tGripWObj:=wobj0;MoveL pPlace2,MinSpeed,fine,tGripWObj:=wobj0;Reset doGrip;WaitTime 0.3;GripLoad LoadEmpty;MoveL Offs(pPlace2,0,0,400),MidSpeed,z50,tGripWObj:=wobj0;MoveJ Offs(pPick2,0,0,400),MaxSpeed,z50,tGripWObj:=wobj0;nCount2:=nCount2+1;IF nCount220 THENbPalletFull2:=TRUE;ENDIFENDPROCP
15、ROC rPosition1()TEST nCount1CASE 1:pPlace1:=Offs(pBase1_0,0,0,0);CASE 2:pPlace1:=Offs(pBase1_0,600+10,0,0);CASE 3:pPlace1:=Offs(pBase1_90,0,400+10,0);CASE 4:pPlace1:=Offs(pBase1_90,400+10,400+10,0);CASE 5:pPlace1:=Offs(pBase1_90,800+20,400+10,0);CASE 6:pPlace1:=Offs(pBase1_0,0,600+10,200);CASE 7:pPl
16、ace1:=Offs(pBase1_0,600+10,600+10,200);CASE 8:pPlace1:=Offs(pBase1_90,0,0,200);CASE 9:pPlace1:=Offs(pBase1_90,400+10,0,200);CASE 10:pPlace1:=Offs(pBase1_90,800+20,0,200);CASE 11:pPlace1:=Offs(pBase1_0,0,0,400);CASE 12:pPlace1:=Offs(pBase1_0,600+10,0,400);CASE 13:pPlace1:=Offs(pBase1_90,0,400+10,400)
17、;CASE 14:pPlace1:=Offs(pBase1_90,400+10,400+10,400);CASE 15:pPlace1:=Offs(pBase1_90,800+20,400+10,400);CASE 16:pPlace1:=Offs(pBase1_0,0,600+10,600);CASE 17:pPlace1:=Offs(pBase1_0,600+10,600+10,600);CASE 18:pPlace1:=Offs(pBase1_90,0,0,600);CASE 19:pPlace1:=Offs(pBase1_90,400+10,0,600);CASE 20:pPlace1
18、:=Offs(pBase1_90,800+20,0,600);DEFAULT:TPErase;TPWrite “the Counter of line 1 is error,please check it!“;Stop;ENDTESTENDPROCPROC rPosition2()TEST nCount2CASE 1:pPlace2:=Offs(pBase2_0,0,0,0);CASE 2:pPlace2:=Offs(pBase2_0,600+10,0,0);CASE 3:pPlace2:=Offs(pBase2_90,0,400+10,0);CASE 4:pPlace2:=Offs(pBas
19、e2_90,400+10,400+10,0);CASE 5:pPlace2:=Offs(pBase2_90,800+20,400+10,0);CASE 6:pPlace2:=Offs(pBase2_0,0,600+10,200);CASE 7:pPlace2:=Offs(pBase2_0,600+10,600+10,200);CASE 8:pPlace2:=Offs(pBase2_90,0,0,200);CASE 9:pPlace2:=Offs(pBase2_90,400+10,0,200);CASE 10:pPlace2:=Offs(pBase2_90,800+20,0,200);CASE
20、11:pPlace2:=Offs(pBase2_0,0,0,400);CASE 12:pPlace2:=Offs(pBase2_0,600+10,0,400);CASE 13:pPlace2:=Offs(pBase2_90,0,400+10,400);CASE 14:pPlace2:=Offs(pBase2_90,400+10,400+10,400);CASE 15:pPlace2:=Offs(pBase2_90,800+20,400+10,400);CASE 16:pPlace2:=Offs(pBase2_0,0,600+10,600);CASE 17:pPlace2:=Offs(pBase
21、2_0,600+10,600+10,600);CASE 18:pPlace2:=Offs(pBase2_90,0,0,600);CASE 19:pPlace2:=Offs(pBase2_90,400+10,0,600);CASE 20:pPlace2:=Offs(pBase2_90,800+20,0,600);DEFAULT:TPErase;TPWrite “the Counter of line 1 is error,please check it!“;Stop;ENDTESTENDPROCPROC rModify()MoveJ pHome,MinSpeed,fine,tGripWObj:=wobj0;MoveJ pPick1,MinSpeed,fine,tGripWObj:=wobj0;MoveJ pBase1_0,MinSpeed,fine,tGripWObj:=wobj0;MoveJ pBase1_90,MinSpeed,fine,tGripWObj:=wobj0;MoveJ pPick2,MinSpeed,fine,tGripWObj:=wobj0;MoveJ pBase2_0,MinSpeed,fine,tGripWObj:=wobj0;MoveJ pBase2_90,MinSpeed,fine,tGripWObj:=wobj0;ENDPROCENDMODULE
限制150内