999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2013-12-03 02:08:16董立巖尹相杰辛?xí)匀A李永麗
關(guān)鍵詞:指令語(yǔ)義程序

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

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

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

1 指令解釋器的工作原理

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

指令解釋器通過(guò)對(duì)用戶輸入的NC程序進(jìn)行解釋,生成仿真系統(tǒng)可執(zhí)行的代碼,從而驅(qū)動(dòng)加工過(guò)程.解釋器從結(jié)構(gòu)上主要分為NC程序的預(yù)處理和NC程序的翻譯兩部分.NC程序的預(yù)處理是從語(yǔ)法、 語(yǔ)義對(duì)程序進(jìn)行檢查[4-5],發(fā)現(xiàn)代碼錯(cuò)誤則進(jìn)行相應(yīng)的處理,并對(duì)缺省指令進(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)該能正確地識(shí)別和分析指令.為處理方便,需在對(duì)指令分析前,先統(tǒng)一格式化這些指令,實(shí)現(xiàn)步驟如下:1) 去除指令中無(wú)用的信息;2) 字符串統(tǒng)一轉(zhuǎn)換為大寫形式;3) 根據(jù)英文字符作為標(biāo)識(shí),對(duì)模塊進(jìn)行劃分;4) 在各模塊之間添加空格作為標(biāo)識(shí).

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

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

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

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

輸出:通過(guò)檢查輸出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)行詞法和語(yǔ)法檢查;

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

6) return true.

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

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

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

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

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

2.4 指令解釋 指令解釋作為指令解釋器的核心,把通過(guò)詞法、 語(yǔ)法、 語(yǔ)義檢查,并補(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)和步長(zhǎng)F(指定在Z方向上每次移動(dòng)的距離).在仿真系統(tǒng)中要真正模擬實(shí)際應(yīng)用中的機(jī)床運(yùn)動(dòng)過(guò)程,不能僅依靠提供簡(jiǎn)單的兩個(gè)點(diǎn),在系統(tǒng)中要根據(jù)幾何的無(wú)限逼近思想,把指令解釋成X_Z_的形式.根據(jù)兩點(diǎn)可以確定直線的斜率:k=(DestinationZ-CurrentZ)/(DestinationX-CurrentX),把F賦值給X方向的步長(zhǎng)stepX,由斜率可確定X每走一步后Z方向的移動(dòng)步長(zhǎng)stepZ=(stepX)/k.這樣X(jué)方向每走一步,Z方向移動(dòng)相應(yīng)的步長(zhǎng),然后在最后一步做好越界的判斷處理,即可模擬出一條直線的軌跡,步長(zhǎng)越小軌跡越接近一條直線,如圖2所示.

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

當(dāng)起點(diǎn)位置和終點(diǎn)位置的X或Z相同時(shí)算法較簡(jiǎn)單,本文只考慮兩者都不相等的情況.假設(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表示指令的步長(zhǎng);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)識(shí);

9) return result.

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

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

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

在車床中所畫的圓弧不會(huì)出現(xiàn)一個(gè)z值有兩個(gè)x值對(duì)應(yīng)的情況,所以本文只考慮z和x的值都滿足單調(diào)性的圓,并在最后一次不夠步長(zhǎng)的情況特殊考慮.與直線情況一樣,分別定義變量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)識(shí);

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)與本文開(kāi)發(fā)系統(tǒng)運(yùn)行同一程序的二維效果圖.比較圖4和圖5可見(jiàn),用本文指令解釋器在車床系統(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 微觀分析 先將加工輪廓在二維圖中表示,并對(duì)關(guān)鍵點(diǎn)進(jìn)行編號(hào),如圖6所示.

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

因?yàn)榧庸み^(guò)程和測(cè)量過(guò)程不能避免誤差的存在,所以測(cè)量值在一定范圍內(nèi)波動(dòng)是合理的.通過(guò)微觀分析可見(jiàn),關(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.(那銘.開(kāi)放式數(shù)控系統(tǒng)加工指令代碼解釋器的研究與實(shí)現(xiàn) [D].沈陽(yáng):沈陽(yáng)工業(yè)大學(xué),2006.)

[2] ZHANG Shu-cheng.Research on the Open NC Systems Based on PC [D].Hefei: Hefei University of Technology,2008.(張書誠(chéng).基于PC的開(kāi)放式數(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代碼編譯器的開(kāi)發(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)研究與開(kāi)發(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.(田永中,周建平,梁楚華.開(kāi)放式數(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.)

猜你喜歡
指令語(yǔ)義程序
聽(tīng)我指令:大催眠術(shù)
語(yǔ)言與語(yǔ)義
試論我國(guó)未決羈押程序的立法完善
ARINC661顯控指令快速驗(yàn)證方法
LED照明產(chǎn)品歐盟ErP指令要求解讀
“程序猿”的生活什么樣
英國(guó)與歐盟正式啟動(dòng)“離婚”程序程序
“上”與“下”語(yǔ)義的不對(duì)稱性及其認(rèn)知闡釋
創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
認(rèn)知范疇模糊與語(yǔ)義模糊
主站蜘蛛池模板: 在线观看免费国产| 亚洲无码91视频| 视频二区亚洲精品| 99热国产这里只有精品9九| 欧美日韩资源| 18禁色诱爆乳网站| 凹凸精品免费精品视频| 欧美国产菊爆免费观看| 五月激激激综合网色播免费| 国产一在线观看| 日本成人不卡视频| 国产成人综合亚洲欧美在| 国产欧美日韩精品综合在线| a毛片在线| 国产偷国产偷在线高清| 中文字幕无线码一区| 2021天堂在线亚洲精品专区| 久久国产香蕉| 免费人成黄页在线观看国产| 国产无码性爱一区二区三区| 综合色区亚洲熟妇在线| 日韩精品一区二区三区免费在线观看| 亚洲Aⅴ无码专区在线观看q| 久久久久久久久18禁秘 | 国产成人1024精品| 色婷婷在线播放| 国产成人在线无码免费视频| a级毛片一区二区免费视频| 国产成人1024精品| 国产一区在线视频观看| 国产一区二区三区视频| 男女性色大片免费网站| 免费观看男人免费桶女人视频| 久久99国产综合精品女同| 91精品视频网站| 国语少妇高潮| 精品国产福利在线| 波多野结衣亚洲一区| 91亚洲视频下载| 一级片一区| 亚洲欧美日韩视频一区| 伊人色在线视频| 无码国内精品人妻少妇蜜桃视频| 精品国产成人三级在线观看| 免费一级毛片在线观看| 精品国产网| 国产精品一区二区在线播放| 国产人在线成免费视频| a毛片基地免费大全| 手机在线看片不卡中文字幕| 色屁屁一区二区三区视频国产| www.日韩三级| 亚洲精品人成网线在线| 久久综合国产乱子免费| 亚洲日本中文字幕乱码中文| 国产又色又刺激高潮免费看| 波多野结衣一区二区三视频| 亚洲二三区| 中文字幕永久在线看| 国产午夜在线观看视频| 色综合久久综合网| 乱人伦中文视频在线观看免费| 久久超级碰| 色窝窝免费一区二区三区| 免费xxxxx在线观看网站| 亚洲天堂福利视频| 国产精品久久久免费视频| 欧美日韩精品一区二区在线线 | 在线观看欧美精品二区| a在线亚洲男人的天堂试看| 欧美亚洲国产精品第一页| 久久无码免费束人妻| 美女裸体18禁网站| 国产成人无码Av在线播放无广告| 久久国产精品娇妻素人| 亚洲天堂久久新| 91国内在线视频| 国产亚卅精品无码| 国产欧美亚洲精品第3页在线| 欧美成人免费午夜全| 精品超清无码视频在线观看| 国产真实二区一区在线亚洲|