賈 冬
(中國航空制造技術研究院機器人系統集成中心,北京100024)
在飛機機身壁板的蒙皮與長桁T型接頭激光焊接過程中,需要將長桁T型接頭與蒙皮壓緊,使兩者在水平和垂直方向上達到工藝要求。傳統的壓緊方式是使用固定的工裝,如圖1所示。這種壓緊方式雖然可靠,但是每一種工裝僅可以對一種工件的固定。而機身壁板焊接件在研制時,焊接件具有批量小,品種多的特點。使用固定工裝會消耗大量的資金,并且固定卡具的制作加工周期也比較長。

圖1 傳統的壓緊裝置
因此,設計一種柔性的壓緊工裝是十分必要的。文獻[1-4]從理論和設計角度出發,對壓緊工裝進行了研究。
本文首先介紹了由雙庫卡機器人、壓緊末端執行器、外部控制器組成的T型接頭壓緊系統。然后介紹了壓級系統控制系統的設計。然后對機器人和外部控制器進行通信配置,設計了機器人控制系統與外部控制器的通信協議,并設計了機器人和外部控制器的通信程序。最后,通過實驗,驗證了機器人離線編程數據傳輸可靠性;在雙機器人程序同步運行的情況下,實現了對T型長桁模擬件的壓緊和夾緊功能。
雙機器人壓緊系統由兩臺庫卡機器人KR360 R2830,壓緊末端執行器,集成控制臺組成。壓緊末端執行器包括雙夾緊裝置,雙壓緊裝置組成。每個夾緊裝置由兩對四個導向輪、以及相對應的驅動氣缸組成。夾緊裝置保證T型長桁在水平方向上與保持焊接時所需要的姿態。壓緊裝置由兩個壓緊導向輪以及相對應的驅動氣缸組成,壓緊裝置是T型長桁在垂直方向上保證焊接要求的姿態。壓緊末端執行器如圖2所示。

圖2 機器人壓緊末端執行器置
機器人壓緊控制系統由集成控制臺內的工控機、機器人控制柜以及機器人控制柜內的IO模塊組成。機器人控制系統為KRC4,機器人控制柜內的X44擴展接口通過EtherCAT總線耦合器EK1100連接。EK1100后面安裝EL6695模塊和IO數字量模塊。EL6695模塊是機器人與外部控制系統TwinCAT3數據交換的橋接模塊,數字量IO模塊用于實現壓縮空氣氣壓監測,以及壓緊末端執行器的壓級、夾緊控制。
機器人控制系統KRC4與TwinCAT3通過EL6695來實現數據交換,數據交換的類型只能是整數型。由于機器人的工作半徑是2 832 mm,坐標值精度為小數點后兩位,因此,交換數據的長度定位為32位。在庫卡機器人項目配置軟件WorkVisual中,配置EL6695模塊的輸入/輸出變量為32個DWORD型數據。
TwinCAT3向機器人控制系統KRC4發送的內容包括:離線編程生成的機器人工具坐標軌跡、雙機器人系統控制同步信號,以及庫卡機器人外部運行所需要的控制信號等。
機器人控制系統KRC4向TwinCAT3發送的內容包括:機器人接受數據的控制信號,機器人接收離線編程數據定位,雙機器人控制系統的同步控制信號等。
機器人控制器指令執行是逐步執行,而Twin-CAT3系統中語句指令是逐行掃描,周期性刷新,兩者的指令執行周期沒有固定的關系。兩個控制器通信方式設計為:機器人控制系統請求數據通信,TwinCAT3響應。以TwinCAT3向機器人控制系統發送離線編程數據為例,流程圖如圖3所示。

圖3 離線編程數據傳輸
本文應用兩個機器人與TwinCAT3系統通信,實現了兩個機器人之間的程序的同步控制,其原理是每個機器人運行每一步程序前,都向TwinCAT3系統發送程序運行到達的信號,當TwinCAT3系統根據兩個機器人程序信號,發送下一步程序開始的控制信號,當機器人末端執行器由初始點運行至壓緊工件位時,機器人發送壓緊控制信號給TwinCAT3控制系統,其控制流程如圖4所示。

圖4 雙機器人同步控制
雙機器人壓緊控制系統的程序設計包括Twin-CAT3程序、以及機器人程序三部分。
TwinCAT3程序設計主要實現機器人末端執行器動作邏輯運算、向機器人控制系統傳輸離線編程數據,控制兩個機器人程序同步運行。關鍵程序代碼如下所示:
varRobotcounter:=getcounter(varRobotRequest);//獲取機器人傳輸的第幾個點
IF varRobotcounter>0 THEN
robotReq: =getFlagStatus (varRobotRequest,robotReqFlag);
IF robotReq THEN
posCounter:=varRobotcounter;
varOUTX:=robotXPos[posCounter];
varOUTY:=robotXPos[posCounter];
varOUTZ:=robotXPos[posCounter];
varOUTA:=robotXPos[posCounter];
varOUTB:=robotXPos[posCounter];
varOUTC:=robotXPos[posCounter];
varRobotAck:=1;//傳輸完成
End_if
Robot1Start:=SetRobot1Start(robot1PrjEnd);
//機器人1程序第N條語句執行完畢
Robot2Start:=SetRobot1Start(robot2PrjEnd);
//機器人2程序第N條語句執行完畢
If Robot1Start=Robot2Start then
Robot1Start:=setRobotPrgStart(robot1Start);
//機器人1程序第N+1條語句執行
Robot2Start:=setRobotPrgStart(robot2Start);
//機器人2程序第N+1條語句執行
機器人程序主要實現壓緊末端執行器運行軌跡的。機器人的程序如下所示,機器人首先由執行PTP P18指令,使機器人待機位置,然后與TwinCAT3進行數據通信,獲取離線編程坐標點,其中,變量varinx,variny,varinz,varina,varinb,varinc,分別是各個點與P18點的差值。因為傳輸數據的格式只能是整數形式,所以需要將數據處理,乘以0.01.機器人程序獲取離線編程數據后,通過wait for等待Twin-CAT 3發送的第一條同步執行語句,執行第一步語句后,兩個機器人分別發送S1End信號給TwinCAT3,然后等待第二條語句開始信號。如此便實現了兩臺機器人語句同步執行。程序代碼如下:
PTP XP18;機器人運行至初始位置
for counter=1 to 10;以傳輸10個離線編程點為例
varInputReq=TRUE;機器人向請求數據輸入
varInputReqCounter=counter;機器人發送傳輸第幾個點
varInputFinished=FALSE;
WAIT for varExternInput;等待 TwinCAT3 數據傳輸完成
robotPos[counter]=$POS_ACT;保存機器人HOME點S,T變量信息
robotPos[counter].x=robotPos[counter].x+varinx*0.01;保存離線編程點X
robotPos[counter].y=robotPos[counter].y+variny*0.01;保存離線編程點Y
robotPos[counter].z=robotPos[counter].z+varinz*0.01;保存離線編程點Z
robotPos[counter].a=robotPos[counter].a+varina*0.01;保存離線編程點A
robotPos[counter].b=robotPos[counter].b+varinb*0.01;保存離線編程點B
robotPos[counter].c=robotPos[counter].c+varinc*0.01;保存離線編程點C
varInputReq=FALSE;接受離線編程數據完畢后,請求輸入復位
varInputFinished=TRUE;接受數據標志完成位置位
ENDFOR
varInputReqCounter=0;數據傳輸完畢
lin robotpos[1];
s1End=TRUE
wait for s1Start
lin robotpos[2]
s2End=true
在 TwinCAT3 的 robotXpos,robotYpos,robotZpos,robotApos,robotBpos,robotCpos的數組分別讀入數值為{100,200,300,400,500,600,700,800,900},然后運行選擇機器人程序,程序運行第一條同步程序后,在機器人示教器上查看機器人程序變量,分別輸入變量名為robotPos[1..10],顯示結果如表1所示。機器人坐標顯示值分別為:
robotPos [1]={1446.20,- 4208.69,2193.54 ,178.93,45.09,-179.94}
robotPos[2]={1447.20,-4207.69,2194.54 ,179.93,46.09,-178.94}
robotPos[3]={1448.20,-4206.69,2195.54 ,180.93,47.09,-177.94}
……
robotPos[1]={1455.20,-4199.69,2202.54 ,187.93,54.09,-170.94}
通過以上數據可以看出可以看出,機器人程序中robotPos[1]—robotPos[10],相鄰的兩個坐標產在X,Y,Z,A,B,C 差值為 1,即 100*0.01,與傳輸值完全一致。
選擇機器人程序,雙機器人實現了程序同步運行。采用這種機器人同步的方式,有一個特點是當機器人連續執行兩條lin指令,機器人自動會做軌跡逼近,如果機器人執行的兩個lin指令中間有IO操作的指令,機器人控制器會中斷兩個lin指令的逼近。這樣會使機器人精確定位到該點,但是也會降低機器人運行效率。
在兩個機器人示教器上分別選擇程序,并運行至BCO,然后在集成操作臺操作界面上選擇離線編程數據傳輸,并啟動機器人同步控制,機器人帶動壓緊末端執行器運行至離線編程的第一個點,機器人控制器輸出數字量DO控制信號,控制夾緊驅動氣缸和壓緊驅動氣缸運動,對T型長桁進行壓緊和夾緊。然后雙機器人同步執行指令運行至程序結束,如圖5所示。

圖5 壓緊末端執行器實驗驗證
(1)利用機器人與集成控制臺TwinCAT3控制系統的通信協議,可以使不同程序運行周期、不同運行機制的庫卡機器人控制系統和TwinCAT3系統實現數據的傳輸、雙機器人程序同步執行。利用這種通信協議,也可以實現對機器人的軌跡校正,用于焊接機器人的焊縫跟蹤、搬運機器人的定位校正等。
(2)利用“發送—等待信號”機制,可以實現雙機器人程序的同步控制,并且這種機制會使機器人精確運行至離線編程輸出的目標點,但是使機器人控制系統取消了兩條語句之間的程序逼近算法,會降低機器人運行效率。
(3)通過機器人運行程序,運用實驗驗證了控制系統實現雙壓級機器人系統導入離線編程數據、控制機器人同步運行,對T型長桁進行壓級和夾緊,實現了機器人柔性壓緊工裝的功能,從而縮短了小批量焊件的生產周期。