高 飞,马 骏,邹家生,高 翔
(1.江苏科技大学 先进焊接技术省级重点实验室, 镇江 212003) (2.无锡鑫德胜自动化科技有限公司, 无锡 214072)
在我国船舶舾装件制造企业中,常需要在金属板材表面堆焊出空心字符,首先在部件表面打点冲出字形,然后根据冲点轨迹进行手工电焊条堆焊,形成封闭的空心字焊缝,最终经涂装处理形成产品.然而,手工焊接的方法生产效率低,焊缝成形差,较高的劳动力成本和用工荒,也不利于船舶部件批量生产.随着计算机控制技术、人工智能技术以及网络控制技术的发展,以智能化为核心的焊接机器人离线编程技术逐步替代传统手工焊接[1-2].离线编程软件RobotMaster适用于当前各种主流机器人,通过导入CAD文件,内置CAM功能快速生成路径,经模拟仿真无误后,生成机器人程序,功能较为强大[3].但该软件价格相对昂贵,不符合我国船舶制造企业的承受能力.因此,如何在提高生产效率的同时控制成本、增加企业的国际竞争力是我国船舶工业面临的一大难题[4].针对上述问题,文中提出了基于C++二次开发机器人专用堆焊制字离线编程系统,研究了平面复杂字形轨迹的信息提取以及机器人程序语言的生成,进行了机器人离线编程平面堆焊制字试验,并结合实际焊缝成形进行了一定的误差分析,为空间复杂轨迹的离线编程提供了技术参考.
软件系统开发的流程规划一般包括需求确认、样稿设计、详细设计、编码、集成测试、系统测试以及日后的维护.针对本次基于C++的二次开发机器人离线编程软件设计,提出了以下的设计步骤,流程如图1.
图1 软件设计流程Fig.1 Software design flow chart
基于C++的二次开发弧焊机器人离线编程系统主要由KUKA KR16型号机器人、Fronius公司TPS5000数字化焊接电源及其配套送丝机构组成.
为了便于准确描述机器人运动路径中指令点相对于某一个坐标系的值,坐标形式一般表示为(X,Y,Z,A,B,C),其中X、Y、Z表示点位信息,A、B、C表示点的方向,每一个坐标对应机器人的一个末端姿态.在离线编程试验中,将主要运用机器人的基坐标系与工件坐标系的位置关系,因焊装平台为固定装置,将平面钢板固定在工作台上,以机器人一轴底盘法兰中心为基坐标系原点,测得平板上靠近机器人一侧的顶点坐标值为(1 450,130,1 080,0,0,0),机器人TCP坐标值为(1.422,1.51,411.026,-135,-45,0).字体在平板上的位置由字形轨迹在输出界面的上下距离确定,为了确保字形轨迹落在平板中间位置,字体需向X方向偏移120.523 6 mm,Y方向偏移131.685 4 mm,将坐标数值写入程序语言基坐标系与工件坐标系框架中.
基于矢量字库TrueType Font[5]输入目标字符,利用API变换函数GetGlyphOutline[6]获取显示字符的图形数据,还原字形轨迹.
GetGlyphOutline 函数字体格式部分声明如下:
m-sTextEdit=dlg.getsTextEdit();
m-iFontHeight=dlg.getiFontHeight();
m-iFontSpace=dlg.getiFontSpace();
定义句柄,使其指向输入界面的目标字符,读取字体的点信息并存储在loPoint数组中,任意一个字符被化分成若干个点,每一个点的坐标信息都得到存储.
部分代码如下:
int i;
for (i=0; i { lpPoint[i].x=x+mapfxy(apfx[i].x); lpPoint[i].y=y-mapfxy(apfx[i].y); } 在上文中,基于已经获取的字形坐标信息,预览字形轨迹必不可少.利用line to指令,从起点开始连接当前点与下一点,直至末尾点,生成字形轨迹图.部分代码声明如下: int i; for (i=0; i { lpPoint[i].x=x+mapFXY(apfx[i].x); lpPoint[i].y=y-mapFXY(apfx[i].y); } switch (wType) 友好的人机界面是在基础类库MFC的基础上实现的[7].基于C++开发环境设计,定义UVectorFornt的会话窗类,添加了4个文本输入框和多个静态文本显示按钮,可对待焊字形的相关参数进行设置,整体输入界面如图2.点击确定按钮,字形轨迹如图3. 图2 字形参数输入界面Fig.2 Input interface of font parameters 图3 字形轨迹Fig.3 Font path 针对机器人源代码中一些基础配置信息如机器人型号、基坐标系、工具坐标系等,将根据现场测试值作为定值设置在编程语言中.为了保证与现场相一致的工作环境,需要对每一个坐标点的x,y,z进行函数转化,因本次试验在平面进行,所有的z值将赋值为0.dat部分代码如下: fprintf (fpWrite,"DECL E6POS XP%d={X %d, Y %d, Z %d, A-0.1153, B-9.9121, C-178.6701, E1 0.0, E2 0.0, E3 0.0, E4 0.0, E5 0.0, E6 0.0}
DECL FDAT FP%d={TOOL-NO2,BASE-NO1,IPO-FRAME#BASE}
",pointj,points[i][0],points[i][1],0,pointj);} 其中:X,Y,Z为轨迹点的坐标;A,B,C的值分别为焊枪绕Z轴、Y轴、X轴旋转的角度,E1,E2,E3,E4,E5,E6为外部轴的旋转角度,均为0. 一条完整焊缝的机器人焊接运动指令应遵循顺序:Home点→安全点→起弧点→焊接→熄弧点→安全点→Home点[8-9].为了避免起弧点、熄弧点对字形成形的影响,设置if、else函数语句,将起弧点、熄弧点和常规焊接点区分开,使得每次运动到熄弧点后,焊枪抬起移动到下一个起弧点的上方,作为新的安全点,开始下一道焊缝的焊接过程.Src部分代码如下: for(int i=2;i {if(points[i][0]==-1)//开始施焊 {fprintf(fpWritesrc,"$VEL.CP=0.2;200mm/s
;FOLD LIN P%d Vel=0.2 m/s LDAT1 ARC-ON PS S Seam1 Tool[2] Base[1];%%{PE}%%R 1.3.4,%% M KUKA TPARC,%%CARC-ON,%%VLIN,%%P 1:LIN, 2:P%d, 3:C-DIS, 5:0.2, 7:LDAT1, 9:1, 10:S, 12:1
$BWDSTART=FALSE
LDAT-ACT=LLDAT1
FDAT-ACT=FP%d
BAS(#CP-PARAMS,0.2)
A10(#PRE-ARC-ON,A10BS,A-W-PARA-ACT,A-E-PARA-ACT,1)
LIN XP%d
A10(#ARC-STRT)
;ENDFOLD
; Arc is On
$VEL.CP=0.125;125mm/s
",pointj,pointj,pointj,pointj); … fprintf(fpWritesrc,";Arc is Off
;FOLD PTP P%d Vel=50%% PDAT1 Tool[2] Base[1];%%{PE}%%R5.4.33,%%MKUKATPBASIS,%%CMOVE,%%VPTP,%%P1:PTP,2:P%d,3:,5:50,7:PDAT1
$BWDSTART=FALSE
PDAT-ACT=PPDAT1
FDAT-ACT=FP%d
BAS(#PTP-PARAMS,50)Nptp XP%d
;ENDFOLD
",pointj,pointj,pointj,pointj); fclose(fpWritesrc)} } 其中,Arc is On和Arc is Off分别代表起弧和熄弧指令,200mm/s代表机器人最快运动速度,PS指令表示当前点与下一点之间连续施焊,Tool[2]和Base[1]分别表示当前坐标系为2号工具坐标系和1号基坐标系,PTP指令表示点到点运动,PTP-PARAMS,50表示机器人实际焊接速度为0.5m/min. 生成的程序语言dat和src文件将被保存在电脑桌面,部分代码如下: FILE *fpWrite=fopen ("C: \ Users \ fgds \ Desktop \ zi.dat","w+"); if (fpWrite==NULL) { MessageBox (-T("datfile error")); } 将焊字程序示教运行,焊丝端部距工件表面的距离为1 mm左右,焊字轨迹在平板上平稳运行.采用MAG焊工艺,保护气为混合气80%Ar+20%CO2,气体流量为13 L/min.基板材料为5 mm厚度低碳钢Q235B,送丝速度为3.0 m/min.焊接材料为京雷实芯焊丝GML-56,直径1.2 mm.焊接工艺参数见表1,最终的楷体“木”字打印成形,如图4. 表1 木字焊接工艺参数Table 1 Process parameters of weld of mu 在机器人离线编程系统还进行了宋体字“木”的3D打印成形,选定焊接电流为100 A,焊接速度为0.45 m/min,送丝速度为3.2 m/min,图5为宋体汉字“木”打印成形图. 图4 楷体打印Fig.4 Printing of Kai typeface 图5 宋体打印Fig.5 Printing of Song typeface 经测量,焊缝字形平均余高为2.5 mm左右,字体基本落在平板中间位置,焊接过程平稳,飞溅较少,程序可行. (1) 建立了基于C++的机器人离线编程堆焊制字系统,该系统可以完成平板堆焊制字的试验. (2) 建立了友好的人机界面,利用C++编程实现语言格式转化,只需输入待焊字符,即可生成机器人所能识别的src和dat文件. (3) 进行了常规汉字和字母机器人离线编程3D打印试验,字形焊缝工整圆滑,成形良好.作为专用平面堆焊制字软件,能够很好地完成平面堆焊的任务,提高了工作效率,且开发成本较低.2.2 字形轨迹生成
3 人机界面设计
4 生成src和dat文件
5 3D打印制字试验
6 结论