克鲁斯机械手多层焊在工作中应用

发表时间:2021/5/25   来源:《科学与技术》2021年5期   作者:郭立明、刘大明、高国星、张晓峰
[导读] 机械手在轨道客车转向架生产中发挥着越来越重要的作用,
        郭立明、刘大明、高国星、张晓峰
        中车长春轨道客车股份有限公司, 吉林省长春市130062
        摘要:
         机械手在轨道客车转向架生产中发挥着越来越重要的作用,本文将CLOOS的多层焊技术的窍门进行了简单的整理,从FILL等命令的基本应用到变量和子程序的使用使得多层多道焊技术使用的更灵活、更广泛、更实用。为CLOOS机械手的使用和程序编写提供了一种新途径,扩充了CLOOS机械手的编程方式和使用方法。
        关键词:
        CLLOS机械手  多层多道焊技术 程序 拓展
一、概述
1.1机械手在轨道客车转向架焊接中的应用
        现在机械手在轨道客车转向架焊接中有着十分广泛的应用。从小部件焊接到侧梁焊接;从横梁焊接到构架焊接,机械手焊接基本承担了整个转向架的70%以上的焊接任务。其中CLOOS机械手在侧梁焊接、构架焊接中都有着举足轻重的作用。
1.2CLOOS机械手工作中存在的问题及改进措施
        CLOOS机械手焊接质量稳定,是较好的焊接机械手之一。但是现在机械手在生产中应用越来越多,焊接的部件越来越复杂,对机械手的编程质量也要求越来越高,常规的示教点编程也越来越不能满足工作需要。
        为了更好地满足产品质量需求,我开发完善了CLOOS多层多道焊接技术,提高了编程速度、改善了产品质量、提高了机械手自动化程度。
二、CLOOS机械手多层多道技术
2.1 多层多道焊技术原理
        多层多道焊技术编程时只需要根据焊缝的几何形状定义一次根部焊缝的点的同时其他层都可以通过拷贝和偏移并且用补偿平移焊缝而实现。
2.2 多层多道焊技术指令及解释
        多层多道焊技术的核心命令式ROOTON、ROOTOFF和FILL。通过这三个命令可以完成简单的多层多道焊。
2.2.1 ROOTON,ROOTOFF
        ROOTON和ROOTOFF结合使用可以储存一个根层的焊缝、如下:
ROOTON (1)
GP (1)
GC (2,3)
GP (4)
ROOTOFF (1)
        这里从点1到点4都被存储到“1”这个定义的根部焊缝中。
2.2.2 FILL
        FILL命令用来完成填充运行的计算。
        FILL (a,b,c,d)是FILL命令的使用方式。其中a表示根层焊缝的编号;b表示填充运行的编号;c表示点编号,定义填充运行的偏移距离和方向;d表示开始点号码,即从此点开始填充
程序应用实例。
2.3 多层多道焊技术应用举例
    应用ROOT和FILL可以实现简单的简单的填充生成,比如可以给下图做一个完整的小程序。
    
    
MAIN
GP (1,2)
ROOTON (1)
GP (3)
GC (4)
ARC (4,5,6)
GC (7)
GP (8,9)
ROOTOFF (1)
FILL (1,1,10,13)
GP (13)
GC (14)
ARC (14,15,16)
GC (17)
GP (18,19)
GP (2,1)
END
2.4 多层多道焊技术应用拓展
        在实际工作中,为了更好地运用多层多道技术会常常将变量和其他一些命令综合使用,通过子程序来达到程序编写的目的。下面解释一下变量和一些常用的指令。
2.4.1 变量
        为了更多不同的使用例如产生点或平移等其他很多计算都能够编辑在一个程序里,所以要使用变量。变量必须先说明,后使用。变量名不可为系统的保留字。
        在CLOOS语言中用于变量的命令很多。常用的有计算操作,如:
         A:=0
         A:= 3000+B 等。
        有关系判断询问,如:
         IF SPD=0 THEN JUMP ST02
         IF QQ<>1 THEN RPOINTS (SSP,EEP)等。
2.4.2 常用指令举例
1)、 STORPOS
        STORPOS指令用来存储一个点的坐标信息,这个信息中的任何一个数值都可以用变量来表示。
2)、FOR_TO_DO BENGIN_END
    这是一个计算循环语句,用于计数。
3)、NEXTP
        用于决定以下存在点的编号,可识别和跳过点编号的间隔。
4)、RPOINTS
    这个指令能够记忆焊缝实际的变化并且存储生成新的实际点的位置。
2.5 程序应用实例
        以下截取了编制的武汉四号线型车侧梁程序中第一道焊缝的第一层与第二层焊接程序。阐述了多层多道了一些编写窍门。
RESTART
EXTERNAL PROC CLEAN,CLS,SYN,BLAS FROM MASTER
VAR SP,EP,NP,PR,SPD,STA,ANF,I,IPOL,STAT,X,Y,Z,AL,BE,GA,E1,E2,E3,E4
VAR X1,Y1,Z1,X2,Y2,Z2,XV,YV,X3,Y3,Z3,AL1,BE1,GA1,EV
VAR XX,XZ,XS,STP,X11,YS,YE,ZS,SP2,EP2,EP1,I1,XV0,XV1,PT,RR
VAR SSP,EEP,SP1,QQ,LAY,SEAM,SEL,PT1,L,L1,L2,L3,L4,L5,L6
!!!VAR是设置变量名称,注意变量名字不能喝命令指令相同。
LIST 98 = (3011,0,0,57,100,0,700,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
LIST 99 = (3011,0,0,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
LISTE 1 = (3011,3,0,15,90,-20,550,0,197,10,0,0,0,0,0,300,15,0,0,0,0,0)
!***************  第一层焊接参数
LIST 10 = (3011,3,0,30,118,-20,545,0,208,41,-10,0,0,0,0,0,1,0,0,0,0,0)
LIST 11 = (3011,3,0,29,118,-20,570,0,208,41,-10,0,0,0,0,0,1,0,0,0,0,0)
!*************** 第二层焊接参数
LIST 20 = (3011,3,0,23,120,-15,535,0,167,74,-10,0,0,5,0,0,0,0,0,0,0,0)
LIST 21 = (3011,3,0,18,115,-25,535,0,156,110,-10,0,0,8,0,0,0,0,0,0,0,0)
LIST 22 = (3011,3,0,17,117,-22,540,0,156,116,-10,0,0,8,0,0,0,0,0,0,0,0)

PROC SM11                      !!!第一层焊接子程序。
 IF SP=100 THEN L2:=10        !!!变量赋值。有起点赋值和参数赋值。
 IF SP=100 THEN L3:=11
GP (SP)
 $ (L2)
 SSPD (12,12)
 GC (SP+1,SP+2)
 $ (L3)
 GC (SP+3)                     !!!焊接部分。(这个程序中的点信息是事先编译完成的。)
 GC (SP+4,SP+5,SP+6)
 GC (SP+7)
 GC (SP+8,SP+9)
 $ (L2)
 GC (SP+10,SP+11)
ENDP

PROC SMMT                     !!!第一层焊接点生成运用点。
GETVAR (1,SP)                     
 GETVAR (2,EP)                   !!! GETVAR是从数据库得到数据。
 GP (SP-1)
 GP (SP)
 STORPOS (SP+3000,100,1,0)    !!!生成第二层需要赋值的点的信息。(点号自选。)
 SEAM:=1                      !!!Seam赋值1为程序中断做准备。
 SSP:=3000+SP+1
 EEP:=3000+EP
 $ (10)
 SSPD (12,12)
 IF QQ<>1 THEN RPOINTS (SSP,EEP)    !!!Rpoints 生成点SSP到EEP。
CALL SM11
 SEAM:=0
 QQ:=0
 GP (EP+1)
ENDP

PROC REP               !!! 寻找中断点程序
 SSP:=3000+SP
 EEP:=3000+EP
 ST1:
 NEXTP (SSP;NP,PR,STA) !!!寻找下一点指令,用于寻找中断位置。
 GETPOSA (SSP;SPD,IPOL,STAT;1;X,Y,Z,AL,BE,GA;E1,E2,E3,E4)
IF SPD=0 THEN JUMP ST02
 IF NP<>SSP+1 THEN JUMP ST2
 SSP:=NP
 JUMP ST1
 ST02:
 SSP:=SSP-1
 FOR I:=SSP TO EEP DO BEGIN
 STORPOS (I,100,1,0)
 END
 ST2:
 SP1:=SSP+1-3000
 WRITE (SP1)
 WAITS (2)
 SSP:=3000+SP1
 EEP:=3000+EP
 QQ:=1                  !!!寻找完毕 QQ赋值1。
ENDP

PROC SC                 !!!寻找完毕使用子程序,有多个跳转可直接找到焊接点位置。
IF SP=100 THEN L2:=10
 IF SP=100 THEN L3:=11
 $ (L2)
 SSPD (12,12)
 RPOINTS (SSP,EEP+1)  
 IF SP1=SP+1 THEN JUMP L001
 IF SP1=SP+2 THEN JUMP L002
 IF SP1=SP+3 THEN JUMP L003
 IF SP1=SP+4 THEN JUMP L004
 IF SP1=SP+5 THEN JUMP L005
 IF SP1=SP+6 THEN JUMP L006
 IF SP1=SP+7 THEN JUMP L007
 IF SP1=SP+8 THEN JUMP L008
 IF SP1=SP+9 THEN JUMP L009
 IF SP1=SP+10 THEN JUMP L010
 IF SP1=SP+11 THEN JUMP L011
 L001: GC (SP+1)
 L002: GC (SP+2)
 L003: $ (L3)
       GC (SP+3)
 L004: $ (L3)
       GC (SP+4)
 L005: $ (L3)
       GC (SP+5)               !!!焊接部分。(与SM11程序中点为相同点。)
 L006: $ (L3)
       GC (SP+6)
 L007: $ (L3)
       GC (SP+7)
 L008: $ (L3)
       GC (SP+8)
 L009: $ (L3)
       GC (SP+9)       
 L010: $ (L2)
       GC (SP+10)
 L011: GC (SP+11)
 SEAM:=0                       !!!Seam和QQ重新赋值为0,保证程序正常运行。
 QQ:=0
 GP (EP+1)
ENDP

PROC FIL                     !!!第二层生成程序,关键程序。   
 GETVAR (1,SP)                 
 GETVAR (2,EP)                        
 GETVAR (3,PT)
 FOR I:=SP-SP TO EP-SP DO      !!!FOR..to..do指令为了得到需要的点的数量。
 BEGIN                         !!!Begin..End得到需要点的点号。(点号自选。)
 STORPOS (9000+I,100,1,0)
 END
 ROOTON (1)                    !!!Rooton..Rootoff
 $(98)
 GC (9000..9000+EP-SP)
 ROOTOFF (1)  
 GP (SP-1)
 COPYP (SP+3000..EP+3000,9000) !!!将SP+3000到EP+3000点的信息拷贝从9000点开始。
 GP (SP+2000+PT)                               
FILL (1,1,SP+2000+PT,9000)   !!!从9000点开始生成填充层
GETPOSA (9000;SPD,IPOL,STAT;1;X,Y,Z,AL,BE,GA;E1,E2,E3,E4)
 SASTOPAT (0;9000)            !!!该指令为了保证机械手位置的惟一性。
 IF SP=100 THEN IF PT=2 THEN YS:=1000
 STORPOSA (9000,SPD,IPOL,STAT;1;X,Y+YS,Z,AL,BE,GA;E1,E2,E3,E4)  !!!改变焊缝起点位移量。
IF SP=100 THEN IF PT=2 THEN YE:=1000
 STORPOSA (EP+9000-PT1,SPD,IPOL,STAT;1;X,Y-YE,Z,AL,BE,GA;E1,E2,E3,E4)
!!!改变焊缝终点位移量。

IF SP=100 THEN IF PT=2 THEN L:=20  
 IF SP=100 THEN IF PT=2 THEN L1:=21
 IF SP=100 THEN IF PT=2 THEN L4:=22
 GP (9000)
 SSPD (10,10)
 $ (L)
 GC (9001)
 GC (9002)
 SSPD (8,8)
 $ (L1)
 GC (9003)
 GC (9004,9005)               !!!焊接部分。(点为生成点,根据第一层点的信息变化而变化。)
 $ (L4)
 GC (9006)
 $ (L1)
 GC (9007)
 GC (9008)
 SSPD (10,10)
 $ (L)
 GC (9009,9010)
 GC (9011)
ENDP

PROC ROOTWELD                !!!第一层焊接指引程序,用于寻找相应的子程序。
 IF SEAM =1 THEN CALL REP    !!!Seam=1说明在SMMT子程序中断,需要寻找中断点,所以跳转到 REP子程序
 IF QQ=1 THEN JUMP J01       !!!QQ=1说明寻找完毕,跳转到SC子程序继续焊接。
 SETVAR (1,SP)
 SETVAR (2,EP)
 CALL SMMT                   !!!Seam和QQ=0时执行程序SMMT。
 JUMP J02
 J01:
 CALL SC
 J02:
ENDP

MAIN
FUNCON ARCCON
 FUNCON ONLCON
 FUNCON ENDCON
 FUNCOFF ONLCON,WIRE
 FUNCOFF EXTOFF,10
 IF IN(5) THEN RESET(5) IF IN(5) THEN SET(6)
 CALL SYN
 DECH
 PTPM (45)
 IF SEAM=1 THEN IF SP=100 THEN JUMP NO1
 GP(1)

!******************* ROOT *************************
!******************* NO.1 *************************
 GP (98,99)
SP:=100 SETVAR (1,SP)   !!!确定第一层的起点和终点。
 EP:=111 SETVAR (2,EP)
 NO1: CALL ROOTWELD      !!!第一层焊接和生成第二层的运用点。
 DECH
 GP (112,99,98)

!********************* FILL 2 **********************
!******************* FILL NO.1 *********************
 SP:=100 SETVAR (1,SP)
 EP:=111 SETVAR (2,EP)    !!!确定第二层的运用点。
 PT:=2 SETVAR (3,PT)
 CALL FIL                 !!!生成第二层并焊接。
 GP (112,99,98)
GP (1)

 FUNCOFF ARCCON
 FUNCOFF ONLCON
 FUNCOFF ENDCON
END
        熟练掌握以上多层多道的编辑方法和小窍门,可以极大提高编程速度,减少编程难度,提高焊接产品质量。多
结论
        通过以上对克鲁斯机械手程序的改进结果,发现多层多道焊能够更好地满足转向架自动焊接的质量需求。
       
投稿 打印文章 转寄朋友 留言编辑 收藏文章
  期刊推荐
1/1
转寄给朋友
朋友的昵称:
朋友的邮件地址:
您的昵称:
您的邮件地址:
邮件主题:
推荐理由:

写信给编辑
标题:
内容:
您的昵称:
您的邮件地址: