長江職業(yè)學院 夏伯融
21世紀的第二個十年已經(jīng)過半,運用計算機仿真模擬實際操作已經(jīng)成為一種重要的訓練模式,數(shù)控機床仿真已成為我國各級學校數(shù)控教學的一種重要手段。下面將一種數(shù)控車仿真軟件在C#環(huán)境中對數(shù)控程序代碼解釋的方法做一定介紹。
數(shù)控仿真軟件的主要功能是數(shù)控程序的圖形模擬。當我們輸入數(shù)控代碼后,計算機根本不能識別這些數(shù)控代碼,所以必須要編譯程序來識別代碼。為此本人的思路是先建立一個類,這個類中的方法或子程序和需要使用的數(shù)控代碼相對應。由于數(shù)控車圖形模擬時主要就是使用G00、G01、G02、G03、G32這幾個基礎代碼,循環(huán)代碼也只不過是這幾個基礎代碼的組合。而其他G代碼和M代碼功能是設置機床參數(shù),或是機床屏幕管理和自身檢測等,無法在仿真中實現(xiàn)。所以解釋代碼時只需要針對幾個關(guān)鍵的基本代碼編譯即可。在此只解釋這幾個代碼以及代碼后的X、Z坐標數(shù)值。本文中的做法是當輸入的數(shù)控代碼被計算機讀入內(nèi)存以后,由程序中的解釋部分對其逐行編譯,然后把變換后的信息存入一個結(jié)構(gòu)體中,這樣數(shù)控代碼信息就存放到了相應的結(jié)構(gòu)體中了。在此譯碼系統(tǒng)讀進各種字符和數(shù)值,根據(jù)不同的字符類型做出不同的處理。遇到機床功能代碼G、M等,則將其之后的兩位數(shù)值轉(zhuǎn)換為整型,并把他們存儲到相應的規(guī)定地方。若是尺寸代碼字X、Y等則將他們后面的數(shù)值轉(zhuǎn)換為浮點型數(shù)值并儲存于相對應的單元。不管是功能信息還是坐標信息都會傳遞到這個結(jié)構(gòu)體中。這時數(shù)組里面擁有了數(shù)控加工使用的所有信息。此結(jié)構(gòu)體有如下一些結(jié)構(gòu)組成:
StructDoc//結(jié)構(gòu)體名稱;
{
intGdaima;//G代碼命令類型,存放G代碼,如G00其值為0;
intLineNumber;//代碼行號,存入行號數(shù)值;
intassitantcode;//輔助功能字,存放M代碼命令,如M03值為3;
doublerx;//X軸當前絕對位置;
doublerz;//Z軸當前絕對位置;
doubletx;//X軸到達絕對位置;
doubletz;//Z軸到達絕對位置;
doubleRradius;//圓弧插補半徑值;
doubleFspeed;//進給速度值,存放進給速度;
intpeed;//主軸轉(zhuǎn)速值,存放主軸轉(zhuǎn)速;
...............................
}
而這個數(shù)組中的所有信息都會成為各個代碼圖形模擬實現(xiàn)中的函數(shù)的參數(shù),模擬圖形時就會調(diào)用這些函數(shù)和數(shù)組中的信息。
本軟件從數(shù)控代碼中讀取有效程序段并提取相應的命令和數(shù)據(jù)。執(zhí)行錯誤檢查后,逐行讀入G、M等代碼和從字符行中提取有效信息,把所有代碼命令和相應的參數(shù)信息放在前面所定義的Doc結(jié)構(gòu)體中。然后用代碼模塊對語句逐行解釋,這樣整個數(shù)控程序就轉(zhuǎn)化為我們仿真軟件所能識別的代碼了。仿真軟件中分別為G00、G01、G02、G03、G32等設置相應的方法,在各自方法中實現(xiàn)走直線或圓弧等功能。這些方法可以從信息數(shù)組中獲取G代碼中的位置信息完成所需要的插補圖形模擬。在獲取了數(shù)控代碼信息后,就調(diào)用這些方法,使所有的動作命令全部都轉(zhuǎn)化為圓弧插補和直線插補這兩種形式。而其他的功能指令也都存放在相應的標志位中,幫助完成圖形模擬。
總之,我們通過使用詞法檢查、語法檢查模塊檢查代碼基本錯誤,然后提取代碼中的命令和數(shù)據(jù)。最后使用具體命令把數(shù)據(jù)轉(zhuǎn)變?yōu)閳A弧和直線插補。本文拋磚引玉,希望能對大家有所幫助。
其流程如圖1所示。
圖1 代碼解釋流程圖
[1]韓向利,肖田元,古月,阮建興.虛擬加工環(huán)境的開發(fā)與研究 [J].計算機應用,2000,20(8)增刊:234-237.
[2]崔麗華,楊文通,李富萍,吳喜文.NC代碼翻譯器檢錯模塊的設計[J].組合機床與自動化加工技術(shù),2003年第9期:42-43.
[3]趙東林,方凱,錢偉.數(shù)控系統(tǒng)G 代碼解釋器的設計與實現(xiàn)[J].制造業(yè)自動化,第28卷第1期2006-01:43-45.