1、8、添加面传感器组件9、设置输送链不能被传感器检测10、设置SC_输送链的属性连接11、设置信号连接12、添加信号处理组件,用于检测传感器下降沿13、传感器下降沿触发source进行copy14、传感器与SC输送链的输出联系15、添加仿真开始结束组件,用于激活传感器16、添加置位复位组件,对仿真开始结束信号进行保持17、18、进行仿真设定 选择SC输送链 进行验证三、创建动态夹具1、先制作一个吸盘模型,然后设置成工具,并安装到机器人法拉盘2、添加SMART组件3、添加ATTACHER和DETACHER组件4、设置属性5、添加一个线传感器组件6、线传感器设置属性7、设置吸盘工具不能被传感器检测8
2、、把线传感器安装到吸盘(不更新位置,保持当前位置)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,0,0,0,0,0; PERS loaddata LoadFull:=40,0,0,50,
3、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;实际点
4、PERS robtarget pPick1:=1488.007792464,376.826660408,476.964684195,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.
5、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.7071063
6、07,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.448967354,0,0.707107745,0.707105817,0,-2,0,-1,0,9E9,9E9,9E9,9E9,9E9,9E9;
7、 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
8、 bool bPalletFull2:逻辑布尔量,拾取后为UE,放置后为FALSE PERS num nCount1:=1; PERS num nCount2:输送链计数 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; WaitTi
9、me 0.1; ENDWHILE ENDPROC PROC rInitAll() Reset doGrip; pActualPos:=CRobT(tool:=tGrip); pActualPos.trans.z:=pHome.trans.z; MoveL pActualPos,MinSpeed,fine,tGripWObj:=wobj0; MoveJ pHome,MidSpeed,fine,tGripWObj: bPalletFull1: nCount1: bPalletFull2: nCount2: PROC rPick1() MoveJ Offs(pPick1,0,0,400),MaxSp
10、eed,z50,tGripWObj: MoveL pPick1,MinSpeed,fine,tGripWObj: Set doGrip; WaitTime 0.3; GripLoad LoadFull; MoveL Offs(pPick1,0,0,400),MinSpeed,z50,tGripWObj: PROC rPick2() MoveJ Offs(pPick2,0,0,400),MaxSpeed,z50,tGripWObj: MoveL pPick2,MinSpeed,fine,tGripWObj: MoveL Offs(pPick2,0,0,400),MinSpeed,z50,tGri
11、pWObj: PROC rPlace1() rPosition1; MoveJ Offs(pPlace1,0,0,400),MidSpeed,z50,tGripWObj: MoveL pPlace1,MinSpeed,fine,tGripWObj: GripLoad LoadEmpty; MoveL Offs(pPlace1,0,0,400),MidSpeed,z50,tGripWObj:=nCount1+1; IF nCount120 THEN=TRUE; PROC rPlace2() rPosition2; MoveJ Offs(pPlace2,0,0,400),MaxSpeed,z50,
12、tGripWObj: MoveL pPlace2,MinSpeed,fine,tGripWObj: MoveL Offs(pPlace2,0,0,400),MidSpeed,z50,tGripWObj:=nCount2+1; IF nCount2 PROC rPosition1() TEST nCount1 CASE 1: pPlace1:=Offs(pBase1_0,0,0,0); CASE 2:=Offs(pBase1_0,600+10,0,0); CASE 3:=Offs(pBase1_90,0,400+10,0); CASE 4:=Offs(pBase1_90,400+10,400+1
13、0,0); CASE 5:=Offs(pBase1_90,800+20,400+10,0); CASE 6:=Offs(pBase1_0,0,600+10,200); CASE 7:=Offs(pBase1_0,600+10,600+10,200); CASE 8:=Offs(pBase1_90,0,0,200); CASE 9:=Offs(pBase1_90,400+10,0,200); CASE 10:=Offs(pBase1_90,800+20,0,200); CASE 11:=Offs(pBase1_0,0,0,400); CASE 12:=Offs(pBase1_0,600+10,0
14、,400); CASE 13:=Offs(pBase1_90,0,400+10,400); CASE 14:=Offs(pBase1_90,400+10,400+10,400); CASE 15:=Offs(pBase1_90,800+20,400+10,400); CASE 16:=Offs(pBase1_0,0,600+10,600); CASE 17:=Offs(pBase1_0,600+10,600+10,600); CASE 18:=Offs(pBase1_90,0,0,600); CASE 19:=Offs(pBase1_90,400+10,0,600); CASE 20:=Off
15、s(pBase1_90,800+20,0,600); DEFAULT: TPErase; TPWrite the Counter of line 1 is error,please check it!; Stop; ENDTEST PROC rPosition2() TEST nCount2 pPlace2:=Offs(pBase2_0,0,0,0);=Offs(pBase2_0,600+10,0,0);=Offs(pBase2_90,0,400+10,0);=Offs(pBase2_90,400+10,400+10,0);=Offs(pBase2_90,800+20,400+10,0);=O
16、ffs(pBase2_0,0,600+10,200);=Offs(pBase2_0,600+10,600+10,200);=Offs(pBase2_90,0,0,200);=Offs(pBase2_90,400+10,0,200);=Offs(pBase2_90,800+20,0,200);=Offs(pBase2_0,0,0,400);=Offs(pBase2_0,600+10,0,400);=Offs(pBase2_90,0,400+10,400);=Offs(pBase2_90,400+10,400+10,400);=Offs(pBase2_90,800+20,400+10,400);=
17、Offs(pBase2_0,0,600+10,600);=Offs(pBase2_0,600+10,600+10,600);=Offs(pBase2_90,0,0,600);=Offs(pBase2_90,400+10,0,600);=Offs(pBase2_90,800+20,0,600); PROC rModify() MoveJ pHome,MinSpeed,fine,tGripWObj: MoveJ pPick1,MinSpeed,fine,tGripWObj: MoveJ pBase1_0,MinSpeed,fine,tGripWObj: MoveJ pBase1_90,MinSpeed,fine,tGripWObj: MoveJ pPick2,MinSpeed,fine,tGripWObj: MoveJ pBase2_0,MinSpeed,fine,tGripWObj: MoveJ pBase2_90,MinSpeed,fine,tGripWObj:ENDMODULE
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1