賈 旭,盧曉紅,王鑫鑫,賈振元
(大連理工大學(xué)精密與特種加工教育部重點(diǎn)實(shí)驗(yàn)室,遼寧大連 116024)
目前,隨著PC硬件水平和數(shù)控軟件設(shè)計(jì)水平的提高,PC在數(shù)控領(lǐng)域的應(yīng)用不斷增多,出現(xiàn)了多種基于PC機(jī)的開(kāi)放式數(shù)控系統(tǒng)體系,其中PC+NC型數(shù)控系統(tǒng)以其靈活的擴(kuò)展方式、良好的兼容性和開(kāi)放的開(kāi)發(fā)環(huán)境應(yīng)用最為廣泛[1]。所研發(fā)的微銑床在硬件結(jié)構(gòu)上采用“PC+運(yùn)動(dòng)控制器”型開(kāi)放式數(shù)控系統(tǒng),即利用工控機(jī)作為主體,選用Visual C++作為上位機(jī)系統(tǒng)軟件平臺(tái),將PMAC運(yùn)動(dòng)控制卡作為下位機(jī)插在PCI總線插槽上,通過(guò)專(zhuān)用電纜與各伺服單元和I/O單元連接,X、Y、Z軸方向采用伺服電機(jī)加滾珠絲杠的方式進(jìn)行驅(qū)動(dòng),實(shí)現(xiàn)對(duì)三軸的精確控制。數(shù)控加工系統(tǒng)以代碼為依據(jù)進(jìn)行數(shù)控加工,數(shù)控代碼是數(shù)控系統(tǒng)中的主要信息流,對(duì)數(shù)控代碼進(jìn)行譯碼的方式最主要有兩種:解釋和編譯。解釋即直接解釋執(zhí)行代碼,或者將代碼翻譯成某種中間表示形式后再加以執(zhí)行,速度較慢,且譯碼效果十分有限;編譯則是將NC代碼轉(zhuǎn)換成數(shù)據(jù)流,并在計(jì)算機(jī)上運(yùn)行該數(shù)據(jù)流,最終由控制系統(tǒng)直接讀取并執(zhí)行,速度快,譯碼效果理想[2]。在“PC+運(yùn)動(dòng)控制器”型開(kāi)放式數(shù)控系統(tǒng)中,G代碼需要被翻譯成可供PMAC卡直接執(zhí)行的目標(biāo)程序格式,即完成數(shù)控代碼功能的識(shí)別,并將提取的關(guān)鍵字轉(zhuǎn)換為運(yùn)動(dòng)控制器中對(duì)應(yīng)的運(yùn)動(dòng)函數(shù)中的參數(shù),也就是將所有的命令轉(zhuǎn)化為圓弧和直線插補(bǔ)。本文基于編譯原理技術(shù)及軟件工程思想,實(shí)現(xiàn)了基于PMAC的微型數(shù)控銑床控制系統(tǒng)中G代碼接口編譯功能,并通過(guò)具有復(fù)雜幾何特征的微小零件加工對(duì)所實(shí)現(xiàn)的G代碼編譯功能進(jìn)行了驗(yàn)證。
數(shù)控編程作為數(shù)控加工準(zhǔn)備階段的主要內(nèi)容之一,是指從零件圖紙到獲得數(shù)控加工程序的全過(guò)程,其主要任務(wù)是通過(guò)計(jì)算加工過(guò)程中的刀位點(diǎn),來(lái)確定刀具運(yùn)動(dòng)的運(yùn)動(dòng)軌跡。目前數(shù)控編程主要包括手工編程和自動(dòng)編程兩種方法[3]。
手動(dòng)編程主要用于幾何形狀比較簡(jiǎn)單(如平面、方形槽)的零件加工,而對(duì)于具有空間自由曲面、復(fù)雜型腔的零件,刀具軌跡數(shù)據(jù)計(jì)算相當(dāng)繁瑣,工作量大而且容易出錯(cuò)。自動(dòng)編程,編程人員只需根據(jù)零件圖樣的要求,使用數(shù)控語(yǔ)言,由計(jì)算機(jī)自動(dòng)地進(jìn)行數(shù)值計(jì)算及后置處理,編寫(xiě)出零件加工程序單,加工程序通過(guò)直接通信的方式送入數(shù)控機(jī)床,指揮機(jī)床工作。自動(dòng)編程使得一些計(jì)算繁瑣、手工編程困難或無(wú)法編出的程序能夠順利地完成。實(shí)現(xiàn)自動(dòng)編程的 CAM軟件常用的有 UG,Pro/E,MASTERCAM等[4],可以實(shí)現(xiàn)多軸聯(lián)動(dòng)的自動(dòng)編程并進(jìn)行仿真模擬。對(duì)于微銑削加工,由于所加工的零件幾何尺寸較小,形狀較復(fù)雜,宜采用自動(dòng)編程。
本文加工的零件首先在Pro/E平臺(tái)上,根據(jù)其實(shí)際結(jié)構(gòu)、尺寸建立三維模型,然后通過(guò)數(shù)控加工模塊(Pro/NC)自動(dòng)生成刀具軌跡和刀位數(shù)據(jù)文件。但所搭建的微銑床的數(shù)控系統(tǒng)并不能識(shí)別Pro/E生成的刀具軌跡和刀位數(shù)據(jù)文件,因此,還需要利用Pro/NC模塊中的G_post后置處理器將刀位數(shù)據(jù)文件轉(zhuǎn)化為數(shù)控系統(tǒng)能識(shí)別的G代碼程序,進(jìn)而完成零件數(shù)控加工程序的編制。
使用Pro/NC模塊設(shè)計(jì)加工程序的流程如圖1所示,具體流程說(shuō)明如下[5]:
(1)建立制造模型:一般由設(shè)計(jì)模型和工件裝配組成。
(2)設(shè)置制造數(shù)據(jù)庫(kù):包括機(jī)床設(shè)置、刀具設(shè)置、夾具設(shè)置等項(xiàng)目。
(3)定義操作:一般包括定義機(jī)床、定義CL輸出坐標(biāo)系、操作注釋、定義起始點(diǎn)和返回點(diǎn)等。
圖1 Pro/NC模塊加工流程圖
(4)定義NC序列:通過(guò)定義NC序列的類(lèi)型、切削參數(shù)和制造參數(shù),由系統(tǒng)自動(dòng)生成刀具軌跡。
(5)校驗(yàn)及生成NC代碼文件:通過(guò)仿真操作刀具軌跡,如果符合要求,則可以通過(guò)后置處理,生成G代碼文件。
為了完成微銑削加工,要求PMAC卡必須能夠識(shí)別Pro/E生成的G代碼,因此,需要對(duì)G代碼進(jìn)行編譯。
本文利用VC++6.0開(kāi)發(fā)的數(shù)控系統(tǒng)控制軟件包含代碼處理模塊,如圖2所示。編譯時(shí)首先載入Pro/E生成的G代碼文件并對(duì)其進(jìn)行語(yǔ)法、語(yǔ)義檢查,然后將其轉(zhuǎn)換成符合PMAC要求的加工文件(.PMC文件),只有檢查無(wú)誤的代碼才能進(jìn)行轉(zhuǎn)換,因此所設(shè)計(jì)的G代碼編譯程序包括兩部分功能,即輸入代碼的校驗(yàn)功能和代碼轉(zhuǎn)換功能。
圖2 控制軟件代碼處理模塊
2.1.1 G代碼的分類(lèi)存儲(chǔ)
待處理的G代碼一般都是以文件格式存儲(chǔ)的,這種形式不便于在程序中的處理使用。因此,本文采用結(jié)構(gòu)體鏈表技術(shù),利用命令結(jié)構(gòu)體對(duì)讀入的G代碼進(jìn)行分類(lèi)存儲(chǔ),有效地節(jié)省了內(nèi)存。
根據(jù)微銑床的設(shè)計(jì)需求和數(shù)控加工程序的特點(diǎn),將所用到的G代碼分為四組:G00~G04:加工類(lèi)指令;G17~G19:半徑補(bǔ)償平面選擇類(lèi)指令;G54~G59,G92:坐標(biāo)系選擇指令;G90,G91:坐標(biāo)方式設(shè)定指令。M代碼僅用到M03,M04主軸方向指令和M00~M02程序停止及結(jié)束指令。最終設(shè)計(jì)的結(jié)構(gòu)體如下:
2.1.2 G代碼的校驗(yàn)規(guī)則
G代碼的校驗(yàn)主要滿(mǎn)足兩項(xiàng)功能:①對(duì)出錯(cuò)的類(lèi)型及修改方式進(jìn)行精確定位;②給出錯(cuò)誤提示,方便用戶(hù)修改。代碼的校驗(yàn)主要從語(yǔ)法、語(yǔ)義兩方面進(jìn)行檢查。首先去除其中的無(wú)效字符,如注釋信息、空格、N指令等;然后再按設(shè)定的規(guī)則對(duì)代碼進(jìn)行處理。為了滿(mǎn)足微銑床加工的要求,最終遵循的校驗(yàn)規(guī)則如下:
(1)語(yǔ)法方面:要求每一命令行必須有指令且不能出現(xiàn)NGXYZ[IJ/R]HDFSTM以外的未知指令,同時(shí)要求指令應(yīng)大寫(xiě)。
(2)語(yǔ)義方面:
①指令需按如下順序排列:NGXYZ[IJ/R]HDFSTM;
②對(duì)指令的賦值應(yīng)滿(mǎn)足約定的數(shù)值類(lèi)型且數(shù)值不可超量程;
③同組G指令不可重復(fù);
④對(duì)N指令應(yīng)逐行遞增;
⑤對(duì)G02-03指令要求半徑R不可為零且圓心應(yīng)在起點(diǎn)與終點(diǎn)的垂直平分線上。
在上述校驗(yàn)規(guī)則的基礎(chǔ)上,校驗(yàn)的流程圖如圖3所示。
PMAC卡允許執(zhí)行機(jī)床類(lèi)型的RS-274(G代碼)程序,為了使PMAC能夠運(yùn)行標(biāo)準(zhǔn)G代碼來(lái)控制機(jī)床運(yùn)行,須根據(jù)加工需要編寫(xiě)特定的解釋程序——PROG 1000,并將其下載到PMAC內(nèi)存中。在此過(guò)程中,PMAC卡將G代碼作為子例程來(lái)調(diào)用,指令Gnn是指調(diào)用PROG 1000的nn000行程序。Gnn隨后的數(shù)值作為nn000行指令的參數(shù)對(duì)待,然后返回,執(zhí)行該行G代碼的余下部分[6]。
根據(jù)所搭建的微銑床系統(tǒng)需要滿(mǎn)足的加工能力,編寫(xiě)了幾種常見(jiàn)的 G 代碼(G00,G01,G02,G03,G90,G91)編譯程序(其他G代碼的編譯程序,還有待進(jìn)一步開(kāi)發(fā))。編寫(xiě)的PROG 1000程序如下:
為了讓PMAC卡能夠識(shí)別校驗(yàn)后的G代碼,編寫(xiě)的上位機(jī)軟件還應(yīng)具備如下功能:
(1)在經(jīng)過(guò)校驗(yàn)的G代碼開(kāi)頭添加坐標(biāo)系、坐標(biāo)軸定義并為該段G代碼在PMAC卡內(nèi)存中開(kāi)辟緩沖區(qū)[7]。程序開(kāi)頭添加清空緩沖區(qū)(CLEAR)指令,末尾添加關(guān)閉緩沖區(qū)(CLOSE)指令,轉(zhuǎn)換后的G代碼如圖4所示。
圖3 代碼校驗(yàn)流程圖
(2)將轉(zhuǎn)換后的G代碼程序存儲(chǔ)到PMAC加工文件(.PMC)中。
(3)調(diào)用PamcDownloadA()函數(shù)下載上述加工文件到PMAC卡中。
圖4 轉(zhuǎn)換后的G代碼
為對(duì)所設(shè)計(jì)的G代碼編譯程序進(jìn)行驗(yàn)證,在搭建的微型數(shù)控銑床上開(kāi)展微小零件的微銑削試驗(yàn)。首先在Pro/E中建立包含直線、圓弧等加工軌跡的三維零件模型并生成數(shù)控G代碼,經(jīng)過(guò)代碼校驗(yàn)、轉(zhuǎn)換等編譯環(huán)節(jié)后,將其下載到PMAC卡內(nèi)存中,完成微小零件的自動(dòng)加工。
采用直徑為0.2mm的銑刀在黃銅件上加工阿基米德螺旋線的超景深顯微鏡觀察圖片如圖5所示。螺旋線中心起始圓半徑0.5mm,每圈增量3mm,切削深度為100μm,螺旋線圓弧輪廓清晰,成型質(zhì)量較高。加工實(shí)例證明了所設(shè)計(jì)的G代碼校驗(yàn)程序及其與PMAC的接口實(shí)現(xiàn)方法達(dá)到了預(yù)期要求。
圖5 加工阿基米德螺旋線實(shí)例圖片
本文針對(duì)“PC+運(yùn)動(dòng)控制器”型開(kāi)放式數(shù)控系統(tǒng),利用編譯原理、軟件工程的思想及VC++6.0軟件,設(shè)計(jì)實(shí)現(xiàn)了G代碼編譯模塊程序。將G代碼的編譯過(guò)程分成代碼的校驗(yàn)功能和代碼轉(zhuǎn)換功能。所設(shè)計(jì)實(shí)現(xiàn)的G代碼編譯模塊程序?yàn)橛脩?hù)提供柔性化和集成化的現(xiàn)代控制;同時(shí)具有良好的通用性和較高的開(kāi)放性。加工實(shí)例證明該方法能夠?qū)崿F(xiàn)具有復(fù)雜幾何特征的微小零件的自動(dòng)加工。
[1]周凱.PC數(shù)控原理、系統(tǒng)與應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2006.
[2]張學(xué)飛,李健.開(kāi)放式數(shù)控系統(tǒng)G代碼的編譯模塊設(shè)計(jì)[J].機(jī)械設(shè)計(jì)與制造,2010(10):87-88.
[3]桂艷,周建來(lái),田桂祥.基于PC機(jī)的數(shù)控系統(tǒng)G代碼的編譯設(shè)計(jì)[J].淮海工學(xué)院學(xué)報(bào),2009,18(4):14-17.
[4]張慶,姚錫凡.一種開(kāi)放式數(shù)控系統(tǒng)NC代碼解釋器設(shè)計(jì)與實(shí)現(xiàn)[J].組合機(jī)床與自動(dòng)化加工技術(shù),2010(2):59-61.
[5]白晶,胡仁喜,陶春生.精通Pro/ENGINEER野火版3.0數(shù)控加工[M].北京:電子工業(yè)出版社,2007.
[6]PMAC User Manual.Delta Tau Data Systems Inc.1998.
[7]羅先全,黃學(xué)良,王偉,等.基于PMAC卡數(shù)控的G代碼自動(dòng)生成[J].現(xiàn)代制造工程,2007(7):14-16.