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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SmarTac 程序实例在实际的应用中,smartac有两种方法对焊缝
进行纠偏,第一种是用searchlD指令检测单个焊缝的偏移,比如寻找起弧点和收弧点,寻找的方向可以使 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 Search3DPoi nts()
!The 3 point must in the platform
PDispOff;
!Find the displaceme nt of p1 in 3 directi on
MoveJ *,V200,fi ne,tWeldGu n\Wobj:=obREF;
Seach_1D pe1a,*,*,v200,tWeldGu n\Wobj:=obREF;
MoveL *,V200,fi ne,tWeldGu n\Wobj:=obREF;
Seach_1D pe1b,*,*,v200,tWeldGu n\Wobj:=obREF;
MoveL *,V200,fi ne,tWeldGu n\Wobj:=obREF;
Seach_1D pe1c,*,*,v200,tWeldGu n\Wobj:=obREF;
!Find the displaceme nt of p2 in 3 directi on
MoveJ *,V200,fi ne,tWeldGu n\Wobj:=obREF; Seach_1D pe2a,*,*,v200,tWeldGu n\Wobj:=obREF;
MoveL *,V200,fi ne,tWeldGu n\Wobj:=obREF;
Seach_1D pe2b,*,*,v200,tWeldGu n\Wobj:=obREF;
MoveL *,V200,fi ne,tWeldGu n\Wobj:=obREF;
Seach_1D pe2c,*,*,v200,tWeldGu n\Wobj:=obREF;
!Find the displaceme nt of p3 in 3 directi on
MoveJ *,V200,fi ne,tWeldGu n\Wobj:=obREF; Seach_1D pe3a,*,*,v200,tWeldGu n\Wobj:=obREF;
MoveL *,V200,fi ne,tWeldGu n\Wobj:=obREF;
Seach_1D pe3b,*,*,v200,tWeldGu n\Wobj:=obREF;
MoveL *,V200,fi ne,tWeldGu n\Wobj:=obREF;
Seach_1D pe3c,*,*,v200,tWeldGu n\Wobj:=obREF;
MoveL *,V200,fi ne,tWeldGu n\Wobj:=obREF;
pe1:=PoseAdd(pe1a,pe1b,pe1c);
pe2:=PoseAdd(pe2a,pe2b,pe2c);
pe3:=PoseAdd(pe3a,pe3b,pe3c);
obNew:=OFrameCha nge(obREF,p1,p2,p3,pe1,pe2,pe3);
pe1_1:=PoseAdd(pe1a,pe1b);
pe1:=PoseAdd(pe1_1,pe1c);
obNew:=OFrameCha nge(obREF,p1,p2,p3,pe1,pe2,pe3);
ENDPROC
PROC SmarTac_Test()
MoveJ *,V200,fi ne,tWeldGu n\Wobj:=obNEW;
MoveL *,V200,fi ne,tWeldGu n\Wobj:=obNEW;
MoveL *,V200,fi ne,tWeldGu n\Wobj:=obNEW;
MoveL *,V200,fi ne,tWeldGu n\Wobj:=obNEW;
MoveL *,V200,fi ne,tWeldGu n\Wobj:=obNEW;
! you could add some arcweld in struct ion here ENDPROC ENDMODULE
二、SmarTac调试方法的简要说明
P1 P2
P3
如上图所示,长方形平板和板中的两条黑线(表示焊缝)的相对
位置始终保持不变,当长方形发生旋转和偏移时,黑线也跟随着偏移, 虽然他们相对位置没有变化,但是相对于机器人的焊枪来说位置却发生了变化,为了保证焊缝位置的精确,因此必须找出这一个相对的变化,本方法采用的是坐标变换的方法来进行焊缝纠正。

1、把第一次安装工件的位置作为标准的安装位置,然后按照三
点法建立坐标系obREF。

2、在坐标系中obREF找三个标准点P1、P2、P3,每一个点都尽
量靠近边缘位置。

3、按照SmarTac找寻方法,在每一个点的三个方向设定出起始
寻找点StartPoint和终止寻找点SearchPoin。

具体的程序架
构清参照上面的程序实例。

4、由上面可知,需要找出三围的旋转偏移变化需要采用九点法,
(上图中没有画出前后的寻找点)。

5、在第一次设置的过程中pe1a,pe1b,pe1c,
pe2a,pe2b,pe2c,
pe3a,pe3b,pe3C等参数的值都应该为0,(因为此时还没有变
化)。

6、建立新的坐标系统obNew。

(obNew可以从obRef复制来)
7、在坐标系obNew 下示教两条黑线(焊缝),因此就建立P1,
P2,P3 与黑线的相对关系,当平板发生偏移或旋转变化时
此时黑线也跟着变化。

8、建立关系以后如果坐标系变化,再利用九点法寻找变化计算
新的obNew 坐标系。

在新的obNew 坐标系里面找到相对应
的焊缝位置点。

注意:在第一次示教的过程中,一定要先建立好obNew 后才能开始示教焊缝,并且应尽量保证示教的精度。

相关文档
最新文档