您好,欢迎来到伴沃教育。
搜索
您的当前位置:首页ABB robotstudio使用详细步骤

ABB robotstudio使用详细步骤

来源:伴沃教育


搬运码垛工作站建模

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、添加面传感器组件

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_工具

四、工作站逻辑连接

五、参考代码

MODULE MainMoudle

PERS tooldata

tGrip:=[TRUE,[[0,0,200],[1,0,0,0]],[25,[0,0.00109327,116.8],[1,0,0,0],0,0,0]];

!吸盘工具数据

PERS loaddata LoadEmpty:=[0.01,[0,0,1],[1,0,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-06],[0,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

!实际点

PERS robtarget

pPick1:=[[1488.0077924,376.826660408,476.9684195],[0,0.707106307,0.707107256,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+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 robtarget 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.44673],[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 MaxSpeed:=[4000,500,5000,1000];

!搬运速度定义

PERS bool bPalletFull1:=FALSE;

PERS bool bPalletFull2:=FALSE;

!逻辑布尔量,拾取后为UE,放置后为FALSE

PERS num nCount1:=1;

PERS num nCount2:=1;

!输送链计数

PROC Main()

rInitAll;

WHILE TRUE DO

IF diBoxInPos1=1 AND diPalletInPos1=1 AND bPalletFull1=FALSE THEN

rPick1;

rPlace1;

ENDIF

IF diBoxInPos2=1 AND diPalletInPos2=1 AND bPalletFull2=FALSE THEN

rPick2;

rPlace2;

ENDIF

WaitTime 0.1;

ENDWHILE

ENDPROC

PROC rInitAll()

Reset doGrip;

pActualPos:=CRobT(\ool:=tGrip);

pActualPos.trans.z:=pHome.trans.z;

MoveL pActualPos,MinSpeed,fine,tGrip\\WObj:=wobj0;

MoveJ pHome,MidSpeed,fine,tGrip\\WObj:=wobj0;

bPalletFull1:=FALSE;

nCount1:=1;

bPalletFull2:=FALSE;

nCount2:=1;

ENDPROC

PROC rPick1()

MoveJ Offs(pPick1,0,0,400),MaxSpeed,z50,tGrip\\WObj:=wobj0;

MoveL pPick1,MinSpeed,fine,tGrip\\WObj:=wobj0;

Set doGrip;

WaitTime 0.3;

GripLoad LoadFull;

MoveL Offs(pPick1,0,0,400),MinSpeed,z50,tGrip\\WObj:=wobj0;

ENDPROC

PROC rPick2()

MoveJ Offs(pPick2,0,0,400),MaxSpeed,z50,tGrip\\WObj:=wobj0;

MoveL pPick2,MinSpeed,fine,tGrip\\WObj:=wobj0;

Set doGrip;

WaitTime 0.3;

GripLoad LoadFull;

MoveL Offs(pPick2,0,0,400),MinSpeed,z50,tGrip\\WObj:=wobj0;

ENDPROC

PROC rPlace1()

rPosition1;

MoveJ Offs(pPlace1,0,0,400),MidSpeed,z50,tGrip\\WObj:=wobj0;

MoveL pPlace1,MinSpeed,fine,tGrip\\WObj:=wobj0;

Reset doGrip;

WaitTime 0.3;

GripLoad LoadEmpty;

MoveL Offs(pPlace1,0,0,400),MidSpeed,z50,tGrip\\WObj:=wobj0;

MoveJ Offs(pPick1,0,0,400),MaxSpeed,z50,tGrip\\WObj:=wobj0;

nCount1:=nCount1+1;

IF nCount1>20 THEN

bPalletFull1:=TRUE;

ENDIF

ENDPROC

PROC rPlace2()

rPosition2;

MoveJ Offs(pPlace2,0,0,400),MaxSpeed,z50,tGrip\\WObj:=wobj0;

MoveL pPlace2,MinSpeed,fine,tGrip\\WObj:=wobj0;

Reset doGrip;

WaitTime 0.3;

GripLoad LoadEmpty;

MoveL Offs(pPlace2,0,0,400),MidSpeed,z50,tGrip\\WObj:=wobj0;

MoveJ Offs(pPick2,0,0,400),MaxSpeed,z50,tGrip\\WObj:=wobj0;

nCount2:=nCount2+1;

IF nCount2>20 THEN

bPalletFull2:=TRUE;

ENDIF

ENDPROC

PROC rPosition1()

TEST nCount1

CASE 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:

pPlace1:=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);

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:=Offs(pBase1_90,800+20,0,600);

DEFAULT:

TPErase;

TPWrite \"the Counter of line 1 is error,please check it!\";

Stop;

ENDTEST

ENDPROC

PROC rPosition2()

TEST nCount2

CASE 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(pBase2_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 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(pBase2_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;

ENDTEST

ENDPROC

PROC rModify()

MoveJ pHome,MinSpeed,fine,tGrip\\WObj:=wobj0;

MoveJ pPick1,MinSpeed,fine,tGrip\\WObj:=wobj0;

MoveJ pBase1_0,MinSpeed,fine,tGrip\\WObj:=wobj0;

MoveJ pBase1_90,MinSpeed,fine,tGrip\\WObj:=wobj0;

MoveJ pPick2,MinSpeed,fine,tGrip\\WObj:=wobj0;

MoveJ pBase2_0,MinSpeed,fine,tGrip\\WObj:=wobj0;

MoveJ pBase2_90,MinSpeed,fine,tGrip\\WObj:=wobj0;

ENDPROC

ENDMODULE

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- bangwoyixia.com 版权所有 湘ICP备2023022004号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务