高 飛,馬 駿,鄒家生,高 翔
(1.江蘇科技大學 先進焊接技術省級重點實驗室, 鎮(zhèn)江 212003) (2.無錫鑫德勝自動化科技有限公司, 無錫 214072)
在我國船舶舾裝件制造企業(yè)中,常需要在金屬板材表面堆焊出空心字符,首先在部件表面打點沖出字形,然后根據(jù)沖點軌跡進行手工電焊條堆焊,形成封閉的空心字焊縫,最終經(jīng)涂裝處理形成產(chǎn)品.然而,手工焊接的方法生產(chǎn)效率低,焊縫成形差,較高的勞動力成本和用工荒,也不利于船舶部件批量生產(chǎn).隨著計算機控制技術、人工智能技術以及網(wǎng)絡控制技術的發(fā)展,以智能化為核心的焊接機器人離線編程技術逐步替代傳統(tǒng)手工焊接[1-2].離線編程軟件RobotMaster適用于當前各種主流機器人,通過導入CAD文件,內(nèi)置CAM功能快速生成路徑,經(jīng)模擬仿真無誤后,生成機器人程序,功能較為強大[3].但該軟件價格相對昂貴,不符合我國船舶制造企業(yè)的承受能力.因此,如何在提高生產(chǎn)效率的同時控制成本、增加企業(yè)的國際競爭力是我國船舶工業(yè)面臨的一大難題[4].針對上述問題,文中提出了基于C++二次開發(fā)機器人專用堆焊制字離線編程系統(tǒng),研究了平面復雜字形軌跡的信息提取以及機器人程序語言的生成,進行了機器人離線編程平面堆焊制字試驗,并結(jié)合實際焊縫成形進行了一定的誤差分析,為空間復雜軌跡的離線編程提供了技術參考.
軟件系統(tǒng)開發(fā)的流程規(guī)劃一般包括需求確認、樣稿設計、詳細設計、編碼、集成測試、系統(tǒng)測試以及日后的維護.針對本次基于C++的二次開發(fā)機器人離線編程軟件設計,提出了以下的設計步驟,流程如圖1.
圖1 軟件設計流程Fig.1 Software design flow chart
基于C++的二次開發(fā)弧焊機器人離線編程系統(tǒng)主要由KUKA KR16型號機器人、Fronius公司TPS5000數(shù)字化焊接電源及其配套送絲機構(gòu)組成.
為了便于準確描述機器人運動路徑中指令點相對于某一個坐標系的值,坐標形式一般表示為(X,Y,Z,A,B,C),其中X、Y、Z表示點位信息,A、B、C表示點的方向,每一個坐標對應機器人的一個末端姿態(tài).在離線編程試驗中,將主要運用機器人的基坐標系與工件坐標系的位置關系,因焊裝平臺為固定裝置,將平面鋼板固定在工作臺上,以機器人一軸底盤法蘭中心為基坐標系原點,測得平板上靠近機器人一側(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,將坐標數(shù)值寫入程序語言基坐標系與工件坐標系框架中.
基于矢量字庫TrueType Font[5]輸入目標字符,利用API變換函數(shù)GetGlyphOutline[6]獲取顯示字符的圖形數(shù)據(jù),還原字形軌跡.
GetGlyphOutline 函數(shù)字體格式部分聲明如下:
m-sTextEdit=dlg.getsTextEdit();
m-iFontHeight=dlg.getiFontHeight();
m-iFontSpace=dlg.getiFontSpace();
定義句柄,使其指向輸入界面的目標字符,讀取字體的點信息并存儲在loPoint數(shù)組中,任意一個字符被化分成若干個點,每一個點的坐標信息都得到存儲.
部分代碼如下:
int i;
for (i=0; i { lpPoint[i].x=x+mapfxy(apfx[i].x); lpPoint[i].y=y-mapfxy(apfx[i].y); } 在上文中,基于已經(jīng)獲取的字形坐標信息,預覽字形軌跡必不可少.利用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的基礎上實現(xiàn)的[7].基于C++開發(fā)環(huán)境設計,定義UVectorFornt的會話窗類,添加了4個文本輸入框和多個靜態(tài)文本顯示按鈕,可對待焊字形的相關參數(shù)進行設置,整體輸入界面如圖2.點擊確定按鈕,字形軌跡如圖3. 圖2 字形參數(shù)輸入界面Fig.2 Input interface of font parameters 圖3 字形軌跡Fig.3 Font path 針對機器人源代碼中一些基礎配置信息如機器人型號、基坐標系、工具坐標系等,將根據(jù)現(xiàn)場測試值作為定值設置在編程語言中.為了保證與現(xiàn)場相一致的工作環(huán)境,需要對每一個坐標點的x,y,z進行函數(shù)轉(zhuǎn)化,因本次試驗在平面進行,所有的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軸旋轉(zhuǎn)的角度,E1,E2,E3,E4,E5,E6為外部軸的旋轉(zhuǎn)角度,均為0. 一條完整焊縫的機器人焊接運動指令應遵循順序:Home點→安全點→起弧點→焊接→熄弧點→安全點→Home點[8-9].為了避免起弧點、熄弧點對字形成形的影響,設置if、else函數(shù)語句,將起弧點、熄弧點和常規(guī)焊接點區(qū)分開,使得每次運動到熄弧點后,焊槍抬起移動到下一個起弧點的上方,作為新的安全點,開始下一道焊縫的焊接過程.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指令表示當前點與下一點之間連續(xù)施焊,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左右,焊字軌跡在平板上平穩(wěn)運行.采用MAG焊工藝,保護氣為混合氣80%Ar+20%CO2,氣體流量為13 L/min.基板材料為5 mm厚度低碳鋼Q235B,送絲速度為3.0 m/min.焊接材料為京雷實芯焊絲GML-56,直徑1.2 mm.焊接工藝參數(shù)見表1,最終的楷體“木”字打印成形,如圖4. 表1 木字焊接工藝參數(shù)Table 1 Process parameters of weld of mu 在機器人離線編程系統(tǒng)還進行了宋體字“木”的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 經(jīng)測量,焊縫字形平均余高為2.5 mm左右,字體基本落在平板中間位置,焊接過程平穩(wěn),飛濺較少,程序可行. (1) 建立了基于C++的機器人離線編程堆焊制字系統(tǒng),該系統(tǒng)可以完成平板堆焊制字的試驗. (2) 建立了友好的人機界面,利用C++編程實現(xiàn)語言格式轉(zhuǎn)化,只需輸入待焊字符,即可生成機器人所能識別的src和dat文件. (3) 進行了常規(guī)漢字和字母機器人離線編程3D打印試驗,字形焊縫工整圓滑,成形良好.作為專用平面堆焊制字軟件,能夠很好地完成平面堆焊的任務,提高了工作效率,且開發(fā)成本較低.2.2 字形軌跡生成
3 人機界面設計
4 生成src和dat文件
5 3D打印制字試驗
6 結(jié)論