国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

數(shù)控車床仿真系統(tǒng)中指令解釋器的設(shè)計(jì)與實(shí)現(xiàn)

2013-12-03 02:08董立巖尹相杰辛?xí)匀A李永麗
關(guān)鍵詞:圓弧步長代碼

董立巖,尹相杰,田 耕,辛?xí)匀A,李永麗,張 亮,孫 鵬

(1.吉林大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,長春 130012; 2.東北師范大學(xué) 計(jì)算機(jī)科學(xué)與信息技術(shù)學(xué)院,長春 130117)

數(shù)控機(jī)床是現(xiàn)代機(jī)械加工的主要生產(chǎn)技術(shù),使用越來越普遍,但數(shù)控加工設(shè)備的價(jià)格較高,給數(shù)控技術(shù)的普及和推廣帶來了難題[1-2].數(shù)控仿真系統(tǒng)有效地解決了該問題,它能在計(jì)算機(jī)上完全模擬真實(shí)機(jī)床的工作.在仿真系統(tǒng)中,用戶通過指令和機(jī)床進(jìn)行交互,但這些指令是為了用戶能方便使用與記憶而開發(fā)的一門高級指令語言,系統(tǒng)無法讀懂這些語言.指令解釋器的出現(xiàn)使該問題迎刃而解.指令解釋器作為用戶與系統(tǒng)交互的橋梁,是仿真系統(tǒng)的核心部分,它能從詞法、 語法和語義上檢查用戶輸入指令代碼的正確性,以獲取刀具的加工位置和運(yùn)動(dòng)趨勢信息[3],按一定的機(jī)制解釋出能使機(jī)床系統(tǒng)讀懂的命令串,真正控制機(jī)床運(yùn)動(dòng).因此,設(shè)計(jì)一種速度快、 精度高且具有很強(qiáng)通用性和兼容性的指令解釋器是設(shè)計(jì)高效仿真系統(tǒng)的前提.本文介紹了指令解釋器的原理,并給出一個(gè)快速、 高效解釋器的設(shè)計(jì)過程.

1 指令解釋器的工作原理

圖1 指令解釋器工作原理Fig.1 Working scheme of command interpreter

指令解釋器通過對用戶輸入的NC程序進(jìn)行解釋,生成仿真系統(tǒng)可執(zhí)行的代碼,從而驅(qū)動(dòng)加工過程.解釋器從結(jié)構(gòu)上主要分為NC程序的預(yù)處理和NC程序的翻譯兩部分.NC程序的預(yù)處理是從語法、 語義對程序進(jìn)行檢查[4-5],發(fā)現(xiàn)代碼錯(cuò)誤則進(jìn)行相應(yīng)的處理,并對缺省指令進(jìn)行補(bǔ)充[6];NC程序的翻譯則是先把程序翻譯成系統(tǒng)能讀懂的代碼,再把結(jié)果返回給系統(tǒng),控制系統(tǒng)工作[3,6-7],工作原理如圖1所示.

2 指令解釋器各模塊的分析和設(shè)計(jì)

2.1 指令的格式化 用戶輸入的程序格式具有多樣性,但不管格式怎么多樣系統(tǒng)都應(yīng)該能正確地識別和分析指令.為處理方便,需在對指令分析前,先統(tǒng)一格式化這些指令,實(shí)現(xiàn)步驟如下:1) 去除指令中無用的信息;2) 字符串統(tǒng)一轉(zhuǎn)換為大寫形式;3) 根據(jù)英文字符作為標(biāo)識,對模塊進(jìn)行劃分;4) 在各模塊之間添加空格作為標(biāo)識.

通過上述處理即可返回統(tǒng)一格式的字符串.在這種格式中指令類型和參數(shù)之間、 參數(shù)和參數(shù)之間都以空格隔開.如指令G01 X100 Z100,G01 X100 Z100,G01 X100 Z100這3條指令實(shí)際上都是指同一條指令,經(jīng)過格式化處理在內(nèi)部都變?yōu)榻y(tǒng)一格式G01 X100 Z100[5].

2.2 詞法和語法檢查 用詞法分析對數(shù)控程序進(jìn)行初步檢查,主要包括程序是否以數(shù)字或非法字符開頭、 在負(fù)號前是否出現(xiàn)了非坐標(biāo)功能字、 小數(shù)點(diǎn)的前后是否都是數(shù)字等情況.語法分析是根據(jù)指令的規(guī)則對代碼檢查,檢查指令類型是否合法、 后面的參數(shù)是否完整等[8].本文在實(shí)現(xiàn)時(shí)將二者混合在一起.

本文采用CMDI格式存儲(chǔ)模式.CMDI格式是先在CMDI類中合理地定義靜態(tài)變量,再把提取到的信息放到相應(yīng)的變量中,如G01中把G賦給m_Type,把01賦給m_Instruction.CMDI格式除了能較好地對指令信息進(jìn)行高效存取,還能方便地實(shí)現(xiàn)指令的補(bǔ)充[9].因?yàn)樵谥噶罨騾?shù)有缺省的情況下可直接繼承上次指令中的信息,以達(dá)到補(bǔ)充指令的目的.實(shí)現(xiàn)過程如下.

輸入:要進(jìn)行處理的指令串tempLine;

輸出:通過檢查輸出true,否則輸出false;

1) strs←tempLine.Split(‘ ’): 以空格為分隔符,把指令串分割成字部分放到字符串?dāng)?shù)組strs中;

2)v←Foreach(strs): 遍歷字符串v,如果遍歷完成,則轉(zhuǎn)6);

3) first_value←v.substring(0,1): 得到字符串v的第一個(gè)字符;

argument←v.substring(1): 得到第一個(gè)字符后面的字符串;

4) check_result←check(first_value,argument): 根據(jù)first_value和argument,進(jìn)入到check函數(shù)相應(yīng)的處理部分,進(jìn)行詞法和語法檢查;

5) 如果check_result==false,返回false,否則轉(zhuǎn)2);

6) return true.

2.3 語義檢查 主要檢查參數(shù)數(shù)值是否合理,如檢查數(shù)值是否越界,所給點(diǎn)是否能真正地構(gòu)成圓弧等.語義檢查的設(shè)計(jì)過程如下:

1) 根據(jù)CMDI格式中存儲(chǔ)的m_Type和m_Instruction判斷該指令類型;

2) 通過switch和case多分支開路語句定位到該指令的語義檢查函數(shù),其中每個(gè)語義檢查函數(shù)都是針對每種指令專門設(shè)計(jì)的;

3) 在語義檢查函數(shù)中,對指令中參數(shù)的合理性進(jìn)行檢查,其中參數(shù)可直接訪問CMDI格式中相應(yīng)的變量;如對G01,只需獲取DestinationX和DestinationZ對數(shù)值是否越界經(jīng)行檢查,取F對步長是否過大進(jìn)行檢查;

4) 當(dāng)語義合理時(shí)返回true,否則返回false.

2.4 指令解釋 指令解釋作為指令解釋器的核心,把通過詞法、 語法、 語義檢查,并補(bǔ)充后的指令解釋成系統(tǒng)能讀懂的命令串,作為刀具移動(dòng)的根據(jù).本文為每種類型的指令都單獨(dú)設(shè)計(jì)了指令解釋函數(shù).函數(shù)TranslateMDI_All作為指令解釋的總?cè)肟?根據(jù)m_Type和m_Instruction的組合即可確定需要調(diào)用的指令解釋函數(shù).每條指令解釋時(shí)所需的參數(shù)確定,可先在CMDI中得到具體的參數(shù),再根據(jù)參數(shù),最終把一條指令翻譯成可使系統(tǒng)理解的指令串[10-12].刀具的軌跡由直線和圓弧構(gòu)成.

1) 直線類型關(guān)鍵算法的算法描述.

解釋直線型指令時(shí),已知刀具當(dāng)前的位置(CurrentX,CurrentZ)、 指令要使刀具到達(dá)的位置(DestinationX,DestinationZ)和步長F(指定在Z方向上每次移動(dòng)的距離).在仿真系統(tǒng)中要真正模擬實(shí)際應(yīng)用中的機(jī)床運(yùn)動(dòng)過程,不能僅依靠提供簡單的兩個(gè)點(diǎn),在系統(tǒng)中要根據(jù)幾何的無限逼近思想,把指令解釋成X_Z_的形式.根據(jù)兩點(diǎn)可以確定直線的斜率:k=(DestinationZ-CurrentZ)/(DestinationX-CurrentX),把F賦值給X方向的步長stepX,由斜率可確定X每走一步后Z方向的移動(dòng)步長stepZ=(stepX)/k.這樣X方向每走一步,Z方向移動(dòng)相應(yīng)的步長,然后在最后一步做好越界的判斷處理,即可模擬出一條直線的軌跡,步長越小軌跡越接近一條直線,如圖2所示.

圖2 直線形解釋原理Fig.2 Linear explanation scheme

當(dāng)起點(diǎn)位置和終點(diǎn)位置的X或Z相同時(shí)算法較簡單,本文只考慮兩者都不相等的情況.假設(shè)起點(diǎn)sp為(x1,z1),終點(diǎn)ep為(x2,z2).定義變量rx和rz分別表示起點(diǎn)到終點(diǎn)位置在X方向和Z方向的矢量距離;變量DirX和DirZ分別表示在X和Z矢量方向的正負(fù),1表示為正,-1表示為負(fù);tx和tz分別表示已經(jīng)走的矢量位移,初始值都為0;slope=rx/(rz)表示直線的斜率;Step表示指令的步長;result存儲(chǔ)解釋后得到的命令串,初始為空.算法如下.

輸入:起點(diǎn)sp和終點(diǎn)ep.

輸出:系統(tǒng)可以讀懂的指令串result.

1) 如果((tx!=rx)||(tz!=rz))則轉(zhuǎn)2),否則轉(zhuǎn)8);

2) 如果 abs(tz+Step*DirZ)≤rz則轉(zhuǎn)3),否則轉(zhuǎn)5);

3) result←result+“X”+(Step*DirZ×slope).ToString( )+“;”

result←result+“Z”+(Step*DirZ).ToString( )+“;”,更新result;

4)tx←tx+Step×DirZ×slope,tz←tz+ Step×DirZ,更新tx,tz,轉(zhuǎn)1);

5) disx←rx-tx,disz←rz-tz計(jì)算x和z方向的位移余量;

6) result←result+“X”+disx.ToString( )+“;”;

result←result+“Z”+disz.ToString( )+“;”,更新result;

7)tx←rx,tz←rz,更新tx,tz,轉(zhuǎn)2);

8) result←result+“End”,在result后添加“End”作為命令串結(jié)束的標(biāo)識;

9) return result.

2) 圓弧類型的關(guān)鍵算法描述.

圖3 圓弧形解釋原理Fig.3 Arc-shaped explain principle

圓弧類型命令解釋的算法借鑒于求圓周率的割圓法,割圓法用一個(gè)邊數(shù)足夠多的外切多邊形無限接近于圓,本文在解釋指令過程中用多邊形的軌跡模擬圓弧軌跡,在命令解釋時(shí)圓弧的接近程度受限于指令中所指定的步長,步長越小,越接近圓弧.解釋后的結(jié)果和直線解釋結(jié)果的表示形式相同,用X_Z_的形式表示.解釋原理如圖3所示.

在車床中所畫的圓弧不會(huì)出現(xiàn)一個(gè)z值有兩個(gè)x值對應(yīng)的情況,所以本文只考慮z和x的值都滿足單調(diào)性的圓,并在最后一次不夠步長的情況特殊考慮.與直線情況一樣,分別定義變量rx,rz,tx,tz,DirX,DirZ,step和result,并分別賦予相應(yīng)的值.定義dir表示順弧還是逆弧,順弧為1,逆弧為-1; sp和ep分別表示起點(diǎn)和終點(diǎn);cz和cx表示所到點(diǎn)的z軸和x軸的坐標(biāo)值,分別初始化為起點(diǎn)的坐標(biāo)值;dx為臨時(shí)存儲(chǔ)z軸移動(dòng)后x軸的坐標(biāo)值.算法如下.

輸入:起點(diǎn)sp,終點(diǎn)ep,半徑R.

輸出:系統(tǒng)可讀懂的指令串result.

1) round_center←Center(sp,ep,R,dir,DirZ),求出圓心round_center;

2) 如果tz!=rz,轉(zhuǎn)3);否則轉(zhuǎn)9);

3) 如果abs(tz+step+DirZ)≤abs(rz),轉(zhuǎn)4),否則轉(zhuǎn)8);

4)tz←tz+step+DirZ,cz←sp.z+tz,更新tz和cz;

5)dx←Get_X(sp,ep,round_center,R,cz,dir,DirZ),根據(jù)信息求出dx;

6) result←result+“X”+(dx-cx).ToString( )+“;”;

result←result+“Z”+(step+DirZ).ToString( )+“;”,更新result;

7)cx←dx,更新cx,轉(zhuǎn)2);

8)tz←rz,cz=ep.z,轉(zhuǎn)5);

9) result←result+“End”,在result后添加“End”作為命令串結(jié)束的標(biāo)識;

10) return result.

3 實(shí)例驗(yàn)證分析

把指令解釋器整合到機(jī)床系統(tǒng)中,運(yùn)行一段經(jīng)典的NC程序,再把解釋后的指令串result傳遞給系統(tǒng).下面分別從宏觀和微觀層面上進(jìn)行效果分析.

3.1 宏觀分析 圖4和圖5分別為仿真軟件制造商斯沃的車床系統(tǒng)與本文開發(fā)系統(tǒng)運(yùn)行同一程序的二維效果圖.比較圖4和圖5可見,用本文指令解釋器在車床系統(tǒng)中解釋運(yùn)行結(jié)果,加工產(chǎn)品的輪廓更清晰,圓弧更圓滑,更接近真實(shí)加工效果.

圖4 斯沃仿真軟件運(yùn)行效果Fig.4 Operating results by Swatch simulation software

圖5 本文系統(tǒng)運(yùn)行效果Fig.5 Operating results by the present system

3.2 微觀分析 先將加工輪廓在二維圖中表示,并對關(guān)鍵點(diǎn)進(jìn)行編號,如圖6所示.

下面分別記錄本文要加工每個(gè)點(diǎn)的理論值和加工后的實(shí)際測量值,并定義評估數(shù)值接近程度的變量精度,該變量的最大值為1,越接近于1表示數(shù)值越接近.設(shè)理論值為(x,z),測量值為(x1,z1),則精度=1-(abs(x-x1)+abs(z-z1)).分析結(jié)果列于表1.

因?yàn)榧庸み^程和測量過程不能避免誤差的存在,所以測量值在一定范圍內(nèi)波動(dòng)是合理的.通過微觀分析可見,關(guān)鍵點(diǎn)的定位與理論值幾乎接近,符合仿真系統(tǒng)高精度的要求.

圖6 二維輪廓Fig.6 Two-dimensional profile

表1 軌跡關(guān)鍵點(diǎn)數(shù)值分析Table 1 Track key numerical analysis

[1] NA Ming.Study and Realization of Open CNC System Machining Instruction Code Interpreter [D].Shenyang: Shenyang University of Technology,2006.(那銘.開放式數(shù)控系統(tǒng)加工指令代碼解釋器的研究與實(shí)現(xiàn) [D].沈陽:沈陽工業(yè)大學(xué),2006.)

[2] ZHANG Shu-cheng.Research on the Open NC Systems Based on PC [D].Hefei: Hefei University of Technology,2008.(張書誠.基于PC的開放式數(shù)控系統(tǒng)研究 [D].合肥:合肥工業(yè)大學(xué),2008.)

[3] WANG Shang-bin,LI Jia-ji,WANG Pin,et al.Research and Implementation of NC Code Interpreter in Virtual NC Machining System [J].Modular Machine Tool &Automatic Manufacturing Technique,2009(2):77-80.(王尚斌,李家霽, 王品, 等.虛擬數(shù)控加工中NC代碼解釋技術(shù)的研究與實(shí)現(xiàn) [J].組合機(jī)床與自動(dòng)化加工技術(shù),2009(2):77-80.)

[4] CAO Sheng-bin,MA Xi-pei,JIA Hui-xin,et al.Study on the Control System and Algorithm of NC Code Compiler for the Miniature CNC Milling Machine [J].Machinery Design &Manufacture,2013(3):159-161.(曹勝彬,馬西沛,賈會(huì)欣, 等.微型數(shù)控銑床控制系統(tǒng)及NC代碼編譯算法的研究 [J].機(jī)械設(shè)計(jì)與制造,2013(3):159-161.)

[5] WANG Zhi-wei,YUAN Hong-bing.Development and Application of NC Code Compiler [J].Machine Tool and Hydraulics,2011,2(4): 104-107.(王志偉,袁紅兵.NC代碼編譯器的開發(fā)及其應(yīng)用研究 [J].機(jī)床與液壓,2011,2(4): 104-107.)

[6] LIU Jie.Research and Development of CNC System for Lathes [D].Nanjing: Nanjing University of Aeronautics and Astronautics,2011.(劉杰.車床數(shù)控系統(tǒng)研究與開發(fā) [D].南京:南京航空航天大學(xué),2011.)

[7] HAO Ming-hui,SONG Fang,HAO Shuang-hui,et al.Research on CNC Simulation System with Instruction Interpretations [J].Machine Tool and Hydraulics,2007,35(10): 175-178.(郝明暉,宋芳,郝雙暉, 等.NC指令解釋數(shù)控仿真系統(tǒng)的研究 [J].機(jī)床與液壓,2007,35(10): 175-178.)

[8] LI Mao-sheng,GAO Rong.Pretreatment on Compiling Program for CNC Machining [J].Machinery Design &Manufacture,2011(10): 162-164.(李茂勝,高榮.數(shù)控加工程序的編譯預(yù)處理 [J].機(jī)械設(shè)計(jì)與制造,2011(10): 162-164.)

[9] LIU Si-sheng,LI Song-sheng,CHEN Ping.Design and Implementation of CNC G Code Interpreter and Simulation Module [J].Machinery Design &Manufacture,2012(1):172-173.(劉思勝,李松生,陳萍.數(shù)控G代碼解釋器和仿真模塊的設(shè)計(jì)與實(shí)現(xiàn) [J].機(jī)械設(shè)計(jì)與制造,2012(1):172-173.)

[10] REN Song-tao.The Design and Implementation of Code Complier for NC [D].Xi’an: Northwestern Polytechnic University,2007.(任松濤.NC代碼編譯器的設(shè)計(jì)與實(shí)現(xiàn) [D].西安:西北工業(yè)大學(xué),2007.)

[11] TIAN Yong-zhong,ZHOU Jian-ping,LIANG Chu-hua.G-Code Compiler Design and Research in the Open CNC System [J].Machinery Design &Manufacture,2011(3):154-155.(田永中,周建平,梁楚華.開放式數(shù)控系統(tǒng)中G代碼編譯器的設(shè)計(jì)與研究 [J].機(jī)械設(shè)計(jì)與制造,2011(3):154-155.)

[12] ZHENG Jian-hua,LI Di,ZHU Rong,et al.Design Strategy for Embedded CNC Model Verification [J].Computer Science,2008(12): 268-272.(鄭建華,李迪, 朱蓉, 等.嵌入式數(shù)控系統(tǒng)模型層驗(yàn)證設(shè)計(jì)策略研究 [J].計(jì)算機(jī)科學(xué),2008(12): 268-272.)

猜你喜歡
圓弧步長代碼
淺析圓弧段高大模板支撐體系設(shè)計(jì)與應(yīng)用
基于Armijo搜索步長的BFGS與DFP擬牛頓法的比較研究
基于隨機(jī)森林回歸的智能手機(jī)用步長估計(jì)模型
外圓弧面銑削刀具
基于Armijo搜索步長的幾種共軛梯度法的分析對比
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
雙圓弧齒同步帶的載荷特性研究