山推工程機械股份有限公司(山東 272023)劉志凱 劉 偉 張明明
五面體加工中心是目前國內大型加工設備中比較先進的。以我廠現使用中的沈機中捷THA57200×400、GMC2560r2、GMC2560wr3為例,控制系統采用西門子840D。沈陽機床廠通常采用兩種方式來補償立、臥頭的差值:
(1)執行轉頭程序L01就完成補償變換。
(2)執行完轉頭程序L01后,再通過執行子程序L11完成變換。
其實這兩種方式本質上沒有什么區別,只是方式1中的L01程序整合了方式2中的L01和L11程序。
下面我們通過沈陽機床廠提供的說明及程序源碼來分析一下其誤差補償程序的原理。
首先,機床廠提供一個用戶數據文件UGUD.arc:

HEAD[1]變量來表示當前頭,如HEAD[1]=1表示當前是1號頭,HEAD[1]=2表示當前是2號頭……0為立頭。
上述對當前頭號的標識由廠商添加到相應子程序中,如在HEAD_1.SPF子程序結束符“M17”之前添加“HEAD[1]=1”;在HEAD_2.SPF子程序結束符“M17”之前添加“HEAD[1]=2”等。
DTT[]用于表示臥頭在各個角度時相對于立頭的偏差值:

上面的各個數據由廠商在調試時自己測量并設定到用戶變量里面去。
我們通過查看L11程序,發現廠商使用的補償方法其實是修改基準零點坐標系BNS來實現的。
如1號臥頭處于0°方向時:

1號臥頭處于180°方向時:

兩者簡單地對基準零點坐標系BNS進行正向或負向的偏移來實現補償。
通過上面的分析我們發現了機床廠商提供的這套補償方案的不合理之處。
(1)修改了基準零點坐標系BNS。這個坐標系是處于我們常用的可設定零點坐標系ENS(就是G54、G55等所建立的坐標系)的上層的。如果修改了BNS的偏移值,我們常用的G53、G500命令是不能屏蔽BNS偏移值的,帶著這個偏移值進行移動,機床有可能會無法到達正確的換刀點、換頭點,也可能發生碰撞!所以廠商要求必須將換刀程序、換頭程序中的G53命令全部用SUPA命令代替,SUPA命令可以屏蔽BNS偏移值。通常情況下我們的機床不在基準零點坐標系設置偏移,普通工人都認為可設定零點坐標系上層直接就是機床坐標系。這個干涉習慣的基準零點坐標系設定方式并不容易為普通工人所接受,且一旦修改內容有誤不易被發覺,容易出錯。
(2)這個程序只能應付0°、90°、180°、270°四個最常用的方向。我們的臥頭是5分度或2.5分度的,在其他非正交分度時無法用此程序補償。
(3)由于機床臥頭旋轉存在誤差,在相對方向的偏差值往往是不同的。如我廠初步驗收時,在未補償的情況下,90°和270°方向的X向誤差超過0.05mm,Z向誤差超過0.06mm(后經廠商調試,控制在0.03mm以內),而原L11誤差補償程序是無法補償這個誤差的,相反,還有可能會放大這個誤差。比如我們假設廠商在90°時測量出X值相對于立頭向正向偏移了0.03mm,他把DTT[14]設為了0.03,那么當臥頭轉到270°時,程序會把X向負向補償0.03mm,而實際中我們測得的270°X向偏差值可能是正向的,這樣無疑增大了誤差。如此會造成轉頭加工孔的同軸度較差,不能滿足有嚴格同軸度要求的零件的加工。
(4)原L11補償程序不提供坐標系的旋轉。這往往需要操作者根據實際情況使用G17、G18、G19命令來選擇加工平面。這種方式在使用CYCLE81等循環時需要注意返回平面的正負號、圖樣尺寸在各個坐標系方向的變化,編程不方便。我們通常將工件坐標系建立為:Z軸始終沿著主軸方向,加工平面選用G17平面(即XY平面),這樣很方便根據圖樣編程。
為了克服上述缺點,我們采用新思路編制了新的坐標系補償程序。
(1)添加GUD4用戶自定義數據用來表示各個角度的偏移補償:

由于我廠除了立頭外,僅使用了一個臥頭,所以僅添加了一組數組:U_0[3]、U_90[3]、U_180[3]、U_270[3]。
U_0[0]、U_0[1]、U_0[2]分別表示臥頭在0°時與立頭的X、Y、Z差值。
同樣:

以上參數全部手工測量,可以在“參數->用戶數據->GUD4”下查詢和修改。
我們定義了最常用的四個方向的補償值,有效解決了不同方向補償誤差的微小區別。
(2)建立一個用戶循環,用于可設定零點坐標系ENS建立時的偏移設定:
LHYSET(INT XPOS, INT YPOS, INT ZPOS)記錄當前的測量狀態,在LHY[]數組中記錄立頭坐標系與當前坐標系的差值,建立坐標系補償。每次找正工件建立坐標系的時候都需要執行一次,且僅執行一次就行。
參數XPOS、YPOS、ZPOS分別表示三個軸測量時的臥頭角度。如為立軸所打,記為-1。
如:先用立軸測出Y值,再換臥頭轉到90°測出X和Z值。將測量值錄入到G54、G55……完成后,需在程序開頭執行:
LHYSET(90,-1,90)
這將在機床坐標系和工件坐標系之間建立一個補償。以前不使用這個程序,在建立工件坐標系時我們需要通過手工計算得出當前坐標值與立頭坐標值,比較麻煩。
原程序部分內容如下:


(3)建立一個用戶循環,根據臥頭角度旋轉偏移坐標系并建立補償。
LHY程序將ENS坐標系中的偏移值加上數組LHY[]所記錄的立頭與ENS坐標系差值得出立頭的坐標系,再加上當前臥頭對應的立臥差值得到當前工件坐標系的正確值。
程序如下:


(1)先將測量的坐標系值輸入G54或其他ENS中。
(2)執行LHYSET(INT XPOS, INT YPOS,INT ZPOS)指令。
(3)使用換頭指令L01后,在G54等代碼后面需添加LHY指令來偏移旋轉坐標系。在工件程序中需要再次偏移或旋轉坐標系的,請使用相對偏移或旋轉指令(即ATRANS和AROT,而不是TRANS和ROT),如需恢復再次執行LHY指令即可。
由于刀具長度補償默認補償在機床坐標的Z軸,故臥頭不使用D1等刀具長度補償指令,而是在LHY執行后采用下面的指令取代:



如此,改進后的補償程序完成。