bh-SS
比E炖
1;■甘崛胃
■e怙
^84*■
%•■*-
即■•■Sawr
Soi«ra<7vl
Gw±
3tal|MU«
1.诂|■帝-|WT|
E
LTa^iFmr
『E詰
1-.rirHu-IjEHj
A.jj-.
11■!
&lu
|亡Pj"UJfclz_!
」-:
■:
:
ffiJU-」-「亠4ll'f-
上dh>
g=¥_S・3?
S玄
包SC■逸醉知
住工g主*騙二壬总I?
更.•
K»匚辱
F,nr
R^e
-m.ri
^PiHrw
■"■TV9i-
la«T«
皿,
Qw
1'I-!
>1raT
JIfivti-d1
QiiHi-
TnhrIF
L\grSw*-凶E1
AlRt
l'lflpl
Ti(^j亀
17、
輕sc输送谍
了对显栩ft
JTd…亠
[-上■如如丄
-
三、创建动态夹具
1、先制作一个吸盘模型,然后设置成工具,并安装到机器人法拉盘
心6C
组件SMART、添力廿
2.
DETACHER组件和、添加3ATTACHER.
、设置属性
jfliifffttt^nffa
应列HTl(UHDAddJni亡
津5\S_丁只X
刪sc_rM阿二
臥丛箱抽比耳幡站谢
-TH■變轉矗M明违*BXK1«
l屈<ir广且
3JHU与淫曲借号相辻扩斛
干/mrt
A.1tnclHiF
石丈■个丽
叭纽40尸
抵总一"己ST粧丈金
、添加一个线传感器组件5.
、线传感器设置属性
7、设置吸盘工具不能被传感器检测
rESI?
iLWWEJIEV•
礼|口_M__L«X
翩SC工具
工甘鼻炀址
、把线传感器安装到吸盘(不更新位置,保持当前位置)
苫1161jkTtfjttr*«
9、设置属性连接
、添加信号及连接
“矯3CJCB
丄:
站TocLtr甘It-^cktr
£L1*uJ<1iL,
£trl*X
:
lilY
耳存TnSfc-ri-,
豎伍・
15■■:
-兰
添加信号处理取非和锁定组件11
I'.l
*
■BCOJL
Bad|f1
«R
lUBJfeO.H兀2器_出.
1
化眈栄
WIT
jdpan
—
继续信号连接
12
押SC__L具J
■霍He豈二丸m
a慎巧
VFIEP虫二且:
■
比世
囂珂羊0Ft二鼻KHI.1
SF-S
HU7iF
a■亠
■raa
Jud!
:
#;tf
du;u.a&
tir^«Hi
klluho-
Fkm«■
、添加一个示教物料13
工具SC、应用手动线性验证
ff>f
uuMsidu常g
K>詐
¥
ffiwc■
1j:
r
-pit
Si3id.=
F"fWHkl
bCQB
皿准
■FfL
UW1V
UW
La.MMBr
*E■»・■&■!
liH1fa:
-w
IiHd.
XuBiin_*.r^nE]
~i^Lh
1如
3.3
I?
™d.i
四、工作站逻辑连接
■lAp-ruMMrvxr
l>*5>lr«fMSTFM"klj!
-!
7L:
H-flLI*"*'
lUMriBLilMLilfM:
3d」■
Zli.1■.rrh.n乙崔WE.1J1L»—..1.»n.B|!
<11
五、参考代码
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];
!
有效载荷数据
PERSrobtarget
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]];
!
基准点
PERSrobtarget
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]];
!
实际点
PERSrobtarget
pPick1:
=[[1488.007792464,376.826660408,476.964684195],[0,0.707106307,0.707107256,0],[0,0,1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
!
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路放置基准点
PERSrobtarget
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度姿态
PERSrobtargetpBase1_90:
=[[-391.976797324,1362.469634994,55.449159414],[0,1,-0.000030621,0],[1,0,3,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
!
1路放置90度姿态
PERSrobtargetpPick2:
=[[1488.013130905,-358.406014736,476.965039287],[0,0.707106307,0.707107256,0],[-1,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
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]];
PERSrobtargetpBase2_0:
=[[-317.378137718,-1857.993871961,55.448967354],[0,0.707107745,0.707105817,0],[-2,0,-1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
PERSrobtargetpBase2_90:
=[[-407.525988074,-1755.902485322,55.449282402],[0,1,-0.000031217,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=FALSETHENrPick1;
rPlace1;
ENDIF
IFdiBoxInPos2=1ANDdiPalletInPos2=1ANDbPalletFull2=FALSETHENrPick2;
rPlace2;
ENDIF
WaitTime0.1;
ENDWHILE
ENDPROC
PROCrInitAll()
ResetdoGrip;
pActualPos:
=CRobT(\tool:
=tGrip);
pActualPos.trans.z:
=pHome.trans.z;
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;
MoveLpPick2,MinSpeed,fine,tGrip\WObj:
=wobj0;
SetdoGrip;
WaitTime0.3;
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;
WaitTime0.3;
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;
WaitTime0.3;
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;
TPWriteheCounterofline1iserror,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;
TPWriteheCounterofline1iserror,pleasecheckit!
;Sto