一、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 Cs2401MoveJ *, 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:1LANGUAGE:ENGLISH%%%MODULE ABBPERS 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 platformPDispOff;!Find the displacement of p1 in 3 directionMoveJ *,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 directionMoveJ *,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 directionMoveJ *,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);ENDPROCPROC 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 ENDPROCENDMODULE二、SmarTac 调试方法的简要说明如上图所示,长方形平板和板中的两条黑线(表示焊缝)的相对位置始终保持不变,当长方形发生旋转和偏移时,黑线也跟随着偏移PPPPPP虽然他们相对位置没有变化,但是相对于机器人的焊枪来说位置却发生了变化,为了保证焊缝位置的精确,因此必须找出这一个相对的变化,本方法采用的是坐标变换的方法来进行焊缝纠正。
1、把第一次安装工件的位置作为标准的安装位置,然后按照三点法建立坐标系obREF。
2、在坐标系中obREF找三个标准点P1、P2、P3,每一个点都尽量靠近边缘位置。
3、按照SmarTac找寻方法,在每一个点的三个方向设定出起始寻找点StartPoint和终止寻找点SearchPoint。
具体的程序架构清参照上面的程序实例。
4、由上面可知,需要找出三围的旋转偏移变化需要采用九点法,(上图中没有画出前后的寻找点)。
5、在第一次设置的过程中pe1a,pe1b,pe1c,pe2a,pe2b,pe2c,pe3a,pe3b,pe3c等参数的值都应该为0,(因为此时还没有变化)。
6、建立新的坐标系统obNew。