王賢虎,郭 微 (安徽水利水電職業(yè)技術(shù)學(xué)院機械工程系,安徽 合肥231603)
近十幾年來,數(shù)控技術(shù)的發(fā)展非常迅猛。利用計算機完成從產(chǎn)品設(shè)計、工藝設(shè)計、數(shù)控代碼 (NC代碼)仿真到加工裝配等所有環(huán)節(jié),不僅可以大大縮短產(chǎn)品研發(fā)周期,還大大降低了生產(chǎn)成本[1]。為此,筆者對數(shù)控仿真系統(tǒng)中NC代碼的處理問題進行了研究,以便實現(xiàn)數(shù)控代碼的快速、高效翻譯過程。
數(shù)控代碼翻譯模塊包括NC代碼讀入、分析和執(zhí)行3個子模塊。首先,將編輯好的數(shù)控程序讀入到仿真系統(tǒng)中,然后對代碼進行分析,包括詞法分析、語義分析等,如果沒有發(fā)現(xiàn)代碼錯誤,則數(shù)控程序可以進入實施階段。
機床加工過程中主要運動形式包括直線運動和圓弧運動[2]。如果能得到刀具軌跡上各斷點的坐標(biāo)值,就能實現(xiàn)直線運動或圓弧運動。其中起始點的坐標(biāo)值在語義分析完成后就能夠得到,軌跡上其他點坐標(biāo)值需要通過插補運算來得到。對于上述坐標(biāo)值可采用隊列的形式存儲。當(dāng)產(chǎn)生新的坐標(biāo)值時,在隊列尾部增加節(jié)點來存儲這些數(shù)據(jù)。當(dāng)然不是將整個程序所得到的坐標(biāo)值一起存儲在一個隊列中,而是按照程序段進行存儲,一個程序段對應(yīng)一個隊列,若隊列中為空,意味著機床在此沒有產(chǎn)生運動,可以繼續(xù)執(zhí)行后續(xù)的程序段,直至整個程序執(zhí)行完成。
在完成NC代碼的翻譯之后,將獲得的機床運行相關(guān)信息輸出到運動仿真模塊,從而驅(qū)動模型進行數(shù)控加工過程的仿真。數(shù)控代碼處理過程如圖1所示。
圖1 數(shù)控代碼處理流程圖
數(shù)控程序采取逐行執(zhí)行的方式,也就是執(zhí)行完一行程序段再去執(zhí)行下行程序段,直至整個數(shù)控程序結(jié)束。為此選擇一個單向鏈表結(jié)構(gòu)來存儲數(shù)控代碼的各個程序段,鏈表中的一個節(jié)點對應(yīng)一行程序段。下面為一個列表的具體結(jié)構(gòu):
通過NC代碼讀入子模塊,可以將數(shù)控程序文件中的內(nèi)容存儲在一個單向鏈表中。其中,鏈表中的每一個字符串對應(yīng)數(shù)控程序的一行程序段。然后分析每個字符中的內(nèi)容,也就是要將每行程序段指令字后的數(shù)值單獨取出后為程序執(zhí)行階段所用。具體可以通過以下方式完成:
考慮到上述數(shù)據(jù)在程序執(zhí)行階段會被經(jīng)常使用,可以選擇雙向鏈表來存儲取出的指令字后的數(shù)值,具體內(nèi)容如下:
其中tool_center_x、tool_center_y、tool_center_z存儲每個程序段刀具中心位置坐標(biāo)。
利用NC代碼分析子模塊可以得到存儲各指令字后數(shù)值的雙向鏈表line_data,但鏈表中并沒有存儲刀具軌跡路徑上其他斷點的坐標(biāo)值。要獲得相應(yīng)坐標(biāo)值,需要通過插補運算的方法來獲得,具體過程如下:數(shù)控程序經(jīng)過讀入階段和分析階段后,可以得到每個程序段指令字、起始點坐標(biāo)值、刀具中心坐標(biāo)值等相關(guān)信息,從而能夠做出象限的判斷、終點判別等操作,并為后續(xù)的插補運算提供所需信息。插補運算的算法較多,筆者選擇了逐點比較法[3],其具體內(nèi)容如下:
以上定義的單向鏈表是用來存儲各個節(jié)點的插補指令、各節(jié)點的坐標(biāo)平面代碼值、當(dāng)前節(jié)點的象限值。其中2個聯(lián)合是為了實現(xiàn)終點判別和象限轉(zhuǎn)換。因為在數(shù)控加工過程中,各軸的進給方向是根據(jù)后一點相對于當(dāng)前點所處的象限來確定的。由于空間中有很多象限,這樣在每個象限都需要進行插補運算判別,這樣較為繁瑣,同時效率不高。為此采用直線插補的方式建立如下函數(shù),并將函數(shù)值賦予變量quad[4]:
圖2 正在加工的數(shù)控仿真車床圖
其中x_start,y_start,x_end,y_end分別為前后程序段中的刀心的插補起、終點坐標(biāo)值。
以VC6.0編程軟件為基礎(chǔ),探討了數(shù)控仿真系統(tǒng)中NC代碼的處理問題并實現(xiàn)了數(shù)控加工過程的仿真 (見圖2)。由于數(shù)控仿真系統(tǒng)的應(yīng)用可以大大降低產(chǎn)品試制次數(shù),從而縮短產(chǎn)品上市周期。因此,對于數(shù)控仿真系統(tǒng)中的數(shù)控代碼翻譯模塊的研究具有重要的現(xiàn)實意義。
[1]王太勇 .基于動態(tài)四叉樹的數(shù)控銑削加工仿真的研究 [J].機床與液壓,2006(9):21-23.
[2]嚴(yán)蔚敏,吳偉民 .數(shù)據(jù)結(jié)構(gòu) [M].北京:清華大學(xué)出版社,1997.
[3]王賢虎 .數(shù)控車削仿真系統(tǒng)的研究 [D].合肥:合肥工業(yè)大學(xué),2006.
[4]張幸兒 .計算機編譯原理 [M].北京:科學(xué)出版社,1999.