(完整版)ABB机器人SmarTac程序实例

  • 格式:doc
  • 大小:44.05 KB
  • 文档页数:6

一、 SmarTac 程序实例 在实际的应用中,smartac有两种方法对焊缝进行纠偏,第一种是用search1D指令检测单个焊缝的偏移,比如寻找起弧点和收弧点,寻找的方向可以使1维的也可以是2维和3维的。这种方法适用于每一条焊缝的变化都是相对对立的并且焊缝相对于检测方向不能有太大的角度变化,比如开关柜。这种方法是直接找到偏移量然后用P-disp frame(P-DispSet指令) 直接在工件坐标系里面偏移相应的坐标值。例如: 找点程序 PDispOff; MoveJ *, v1000, z5, tSensor\WObj:=Wobj_StnA; MoveJ *, v1000, z5, tSensor\WObj:=Wobj_StnA; Search_1D Cs2401, *, scp2_4_x, v100, tSensor\WObj:=Wobj_StnA\SchSpeed:=3; MoveL *, v1000, z5, tSensor\WObj:=Wobj_StnA; MoveL *, v1000, z5, tSensor\WObj:=Wobj_StnA; Search_1D Cs2401,*,scp2_4_z,v100, tSensor\WObj:=Wobj_StnA\PrePDisp:=Cs2401\SchSpeed:=3; MoveL *, v1000, z5, tSensor\WObj:=Wobj_StnA; MoveL *, v1000, z5, tSensor\WObj:=Wobj_StnA; MoveL *, v1000, z5, tSensor\WObj:=Wobj_StnA; Search_1DCs2401,*,scp2_4_y,v100, tSensor\WObj:=Wobj_StnA\PrePDisp:=Cs2401\SchSpeed:=3; MoveL *, v1000, z5, tSensor\WObj:=Wobj_StnA; MoveJ *, v1000, z5, tSensor\WObj:=Wobj_StnA; Search_1D s2400,*, sp2400_x, v100, tSensor\WObj:=Wobj_StnA\SchSpeed:=3; MoveJ *, v1000, z5, tSensor\WObj:=Wobj_StnA; Search_1D s2400, *, sp2400_y, v100, tSensor\WObj:=Wobj_StnA\PrePDisp:=s2400\SchSpeed:=3; PDispSet Cs2401 MoveJ *, v1000, z5, tSensor\WObj:=Wobj_StnA; MoveJ *, v1000, z5, tSensor\WObj:=Wobj_StnA; ArcLStart p2401, v1000, seam1,wd01_16\Weave:=Weave1,fine, tWeldGun\Wobj:=Wobj_StnA; PDispoff; PDispSet Cs2400; ArcLEnd p2400, v1000, seam1, wd01_16\Weave:=weave1, fine, tWeldGun\WObj:=Wobj_StnA; PDispOff;

方法2:通过计算工件坐标(oframe)的变化来进行焊缝纠正,原理是当工件坐标系发生变化后,通过寻找在新的工件坐标系中相同坐标点的位置来纠正位置的变化。这个变化指的是焊缝在新坐标系里面的位置和原来的坐标系并没有发生变化而是随着坐标系整体进行了偏移。例如工件整体发生了平移(比如由夹具的定位引起的平移)如果焊缝相对于坐标系的位置发生了变化就不适用了。 注:这个程序是通过计算相对坐标系的变化来对焊缝就行纠正的,并不适合所有的焊缝偏移形势。 %%% VERSION:1 LANGUAGE:ENGLISH %%%

MODULE ABB PERS wobjdata obREF:=[FALSE,TRUE,"",[[0,0,0],[1,0,0,0]],[[0,0,0],[1,0,0,0]]]; PERS wobjdata obNEW:=[FALSE,TRUE,"",[[0,0,0],[1,0,0,0]],[[0,0,0],[1,0,0,0]]]; PERS robtarget p1:=*; PERS robtarget p2:=*; PERS robtarget p3:=*;

PERS robtarget Newp1:=*; PERS robtarget Newp2:=*; PERS robtarget Newp3:=*;

PERS pose pe1a:=[[0,0,0],[1,0,0,0]]; PERS pose pe1b:=[[0,0,0],[1,0,0,0]]; PERS pose pe1c:=[[0,0,0],[1,0,0,0]];

PERS pose pe2a:=[[0,0,0],[1,0,0,0]]; PERS pose pe2b:=[[0,0,0],[1,0,0,0]]; PERS pose pe2c:=[[0,0,0],[1,0,0,0]];

PERS pose pe3a:=[[0,0,0],[1,0,0,0]]; PERS pose pe3b:=[[0,0,0],[1,0,0,0]]; PERS pose pe3c:=[[0,0,0],[1,0,0,0]];

PERS pose pe1:=[[0,0,0],[1,0,0,0]]; PERS pose pe2:=[[0,0,0],[1,0,0,0]]; PERS pose pe3:=[[0,0,0],[1,0,0,0]]; PROC Search3DPoints() !The 3 point must in the platform PDispOff; !Find the displacement of p1 in 3 direction MoveJ *,V200,fine,tWeldGun\Wobj:=obREF; Seach_1D pe1a,*,*,v200,tWeldGun\Wobj:=obREF; MoveL *,V200,fine,tWeldGun\Wobj:=obREF; Seach_1D pe1b,*,*,v200,tWeldGun\Wobj:=obREF; MoveL *,V200,fine,tWeldGun\Wobj:=obREF; Seach_1D pe1c,*,*,v200,tWeldGun\Wobj:=obREF;

!Find the displacement of p2 in 3 direction MoveJ *,V200,fine,tWeldGun\Wobj:=obREF; Seach_1D pe2a,*,*,v200,tWeldGun\Wobj:=obREF; MoveL *,V200,fine,tWeldGun\Wobj:=obREF; Seach_1D pe2b,*,*,v200,tWeldGun\Wobj:=obREF; MoveL *,V200,fine,tWeldGun\Wobj:=obREF; Seach_1D pe2c,*,*,v200,tWeldGun\Wobj:=obREF;

!Find the displacement of p3 in 3 direction MoveJ *,V200,fine,tWeldGun\Wobj:=obREF; Seach_1D pe3a,*,*,v200,tWeldGun\Wobj:=obREF; MoveL *,V200,fine,tWeldGun\Wobj:=obREF; Seach_1D pe3b,*,*,v200,tWeldGun\Wobj:=obREF; MoveL *,V200,fine,tWeldGun\Wobj:=obREF; Seach_1D pe3c,*,*,v200,tWeldGun\Wobj:=obREF; MoveL *,V200,fine,tWeldGun\Wobj:=obREF;

pe1:=PoseAdd(pe1a,pe1b,pe1c); pe2:=PoseAdd(pe2a,pe2b,pe2c); pe3:=PoseAdd(pe3a,pe3b,pe3c); obNew:=OFrameChange(obREF,p1,p2,p3,pe1,pe2,pe3);

pe1_1:=PoseAdd(pe1a,pe1b); pe1:=PoseAdd(pe1_1,pe1c);

pe2_1:=PoseAdd(pe2a,pe2b); pe2:=PoseAdd(pe2_1,pe2c);

pe3_1:=PoseAdd(pe3a,pe3b); pe3:=PoseAdd(pe3_1,pe3c); obNew:=OFrameChange(obREF,p1,p2,p3,pe1,pe2,pe3); ENDPROC PROC SmarTac_Test() MoveJ *,V200,fine,tWeldGun\Wobj:=obNEW; MoveL *,V200,fine,tWeldGun\Wobj:=obNEW; MoveL *,V200,fine,tWeldGun\Wobj:=obNEW; MoveL *,V200,fine,tWeldGun\Wobj:=obNEW; MoveL *,V200,fine,tWeldGun\Wobj:=obNEW; ! you could add some arcweld instruction here ENDPROC

ENDMODULE

二、 SmarTac 调试方法的简要说明

如上图所示,长方形平板和板中的两条黑线(表示焊缝)的相对位置始终保持不变,当长方形发生旋转和偏移时,黑线也跟随着偏移,

P1 P2 P3 P1 P2

P3