在開環(huán)控制的經(jīng)濟(jì)型數(shù)控系統(tǒng)中,經(jīng)常采用PC作為上位機(jī)來(lái)編制數(shù)控程序和發(fā)送控制命令,其數(shù)據(jù)通過(guò)串口通信傳至單片機(jī),單片機(jī)作為下位機(jī)讀取PC發(fā)過(guò)來(lái)的各種插補(bǔ)數(shù)據(jù)和指令,以驅(qū)動(dòng)電機(jī)。數(shù)控程序一般由G代碼、M指令、F、S、T等功能組成,而在計(jì)算機(jī)中,字符大多采用ASCII編碼方案和EBCDIC編碼方案,如果直接將這種編碼傳到單片機(jī),由單片機(jī)來(lái)識(shí)別和譯碼,勢(shì)必會(huì)增加性能有限的單片機(jī)的負(fù)擔(dān)。此外NC程序有較為固定的編程格式,基于此,可以按照NC編程的規(guī)范來(lái)設(shè)計(jì)一種方案,將NC代碼在PC機(jī)上轉(zhuǎn)化為以幀(不同于異步通信中的“幀”概念)為單位的二進(jìn)制編碼,每幀數(shù)據(jù)的格式參照NC程序格式來(lái)設(shè)計(jì)。這樣,在PC機(jī)上做譯碼工作相對(duì)方便和容易,對(duì)單片機(jī)而言也有兩個(gè)明顯的優(yōu)點(diǎn):一是容易識(shí)別;二是方便處理,提高了效率。單片機(jī)按照幀格式,順序提取相關(guān)數(shù)據(jù)。進(jìn)行計(jì)算和控制。
1 譯碼方案設(shè)計(jì)及實(shí)現(xiàn)
譯碼的基本思路是根據(jù)NC代碼的特點(diǎn),將其進(jìn)行分類處理,提取有用的信息,將這些信息按照設(shè)計(jì)的幀格式組成幀數(shù)據(jù),發(fā)送給下位機(jī),如圖1所示。
1.1 數(shù)控代碼分析
NC指令有200余條,為了數(shù)據(jù)處理的方便,可以根據(jù)其特點(diǎn)進(jìn)行簡(jiǎn)單的歸類,從處理方式上可以分為直接控制指令和間接控制指令。
上位機(jī)要發(fā)送的是控制信息。而NC程序中有許多指令不屬于直接控制的指令,它們僅僅是一些中間(輔助)信息,并不需要發(fā)送給下位機(jī)。因此,根據(jù)NC指令的特點(diǎn),將其按處理方式劃分為直接控制指令和間接控制指令兩類。如COO、G01、G02、C03等要直接處理,屬于直接控制指令;而G90、G91、G92、G42、G41、G42等則要轉(zhuǎn)化處理,屬于間接控制指令。例如G90是表示絕對(duì)尺寸,G91表示增量尺寸,由于下位機(jī)統(tǒng)一采用增量尺寸來(lái)進(jìn)行控制,所以在PC上對(duì)G90的處理是:1)提取絕對(duì)尺寸;2)計(jì)算增量尺寸;3)保存增量尺寸(用于發(fā)送的數(shù)據(jù))。而對(duì)G91的處理是:直接保存增量尺寸。刀補(bǔ)指令要加上偏置量。
一般直接控制指令是需要發(fā)送給單片機(jī)的,而間接控制指令是需要先轉(zhuǎn)化處理的,不在直接發(fā)送的數(shù)據(jù)之列。以表1為例,將常用的數(shù)控代碼按直接控制和間接控制分類,并說(shuō)明了對(duì)指令的處理。
對(duì)直接控制的指令又可細(xì)分為三類。
1)G功能和M代碼:如G00、G01、G02、G03、M03、M04、M05、M07、M08、M10等;
2)坐標(biāo)類:X、Z、R(平面兩軸插補(bǔ),本文以數(shù)控車兩軸為例,其余類推);
3)輔助功能類:主軸(s)、進(jìn)給(F)、刀具(T)。
1.2 幀格式設(shè)計(jì)
根據(jù)上文可以知道,NC程序中指令、數(shù)據(jù)雖然很多,但不是每個(gè)都需要傳送,相反每次都只有很少的幾類指令和數(shù)據(jù)需通過(guò)串口傳送到下位機(jī)。三類的直接控制指令是必須要發(fā)送的,NC程序最終都要轉(zhuǎn)化為這三類數(shù)據(jù),所以設(shè)計(jì)幀格式如表2,說(shuō)明如下。
1)G指令和M代碼:G指令和M代碼各100條,分別用一個(gè)字節(jié)來(lái)表達(dá)G或M功能;
2)坐標(biāo)類:X、Z、R,這些坐標(biāo)均用三個(gè)字節(jié)表示,可表示的增量坐標(biāo)范圍為:一2”一+223(一8 131一+8 m);
3)主軸、進(jìn)給、刀具:S、F、T用單字節(jié)表示,可以有2S=256種不同的值。
4)在幀的控制數(shù)據(jù)之前,設(shè)置一個(gè)幀頭,占一個(gè)字節(jié),以作信息位。
1.2.1 設(shè)置幀頭
NC指令中許多是模態(tài)代碼,即在下一段程序中可能不出現(xiàn)上段程序中相同的指令,為方便處理,用幀頭的8個(gè)位來(lái)標(biāo)識(shí)幀中各項(xiàng)數(shù)據(jù)的有無(wú),如表3。幀頭中每位對(duì)應(yīng)幀格式中的直接控制指令的數(shù)據(jù)類型,用于標(biāo)識(shí)本幀數(shù)據(jù)中是否存在該項(xiàng),若所標(biāo)識(shí)的對(duì)象數(shù)據(jù)存在并要發(fā)送,則標(biāo)識(shí)位置“1”,否則清“0”。另外,如果下段NC程序段中G、M、X、Z、I、K、F、S、T的數(shù)據(jù)沒有改變,則可認(rèn)為該幀中不存在對(duì)應(yīng)項(xiàng)(無(wú)變化不發(fā)送),所以幀的長(zhǎng)度是不固定的,幀的長(zhǎng)度可以從幀頭得知,幀字節(jié)最長(zhǎng)為15個(gè)。
1.2.2 G、M指令編碼
G指令和M指令各100條,而一個(gè)字節(jié)8位能表示256種情況,所以分別用一個(gè)字節(jié)來(lái)表示G指令和M代碼。直接用二進(jìn)制數(shù)字對(duì)應(yīng)字地址G和M的地址值。如G90對(duì)應(yīng)編碼為0101 1010。
1.2.3 實(shí)例
例:對(duì)如下數(shù)控代碼進(jìn)行轉(zhuǎn)換:
G00,G90,G42,X35000,Z160000,F(xiàn)50,S07,T33,M03,LF
該行代碼中帶下畫線的指令為直接控制指令,地址值是要發(fā)送的數(shù)據(jù),其余是間接控制指令,需要在PC機(jī)中先行處理,其中G90為絕對(duì)坐標(biāo)編程,計(jì)算時(shí)要轉(zhuǎn)化為相對(duì)增量,假設(shè)刀具前一位置在原點(diǎn),增量即為35 000和160 000;G42是右刀補(bǔ),假設(shè)刀具半徑為5000個(gè)單位,則實(shí)際上X增量為35000+5 000=40 000,Z增量為160 000 4-5 000=165 000。
1)確定要發(fā)送的數(shù)據(jù):G、M、X、Z、F、S、T;
2)確定幀頭:0XF7(1111 0111 B),這就是幀的首字節(jié);
3)第二、三字節(jié)為G:OX00(coo);M:0X03(M03);
4)第四、五、六字節(jié)為X:OX00 0X9c 0X40(40 000的二進(jìn)制碼);
5)第七、八、九字節(jié)為Z:0X02 0X84 0X88(165 000的二進(jìn)制碼);
6)第十、十一、十二字節(jié)為FST:0X32 OX07 0X21。本行代碼成幀后為:F7 00 03 00 9e 40 02 8488 32 07 21共十二字節(jié)。
2 譯碼在數(shù)控技術(shù)中的應(yīng)用
根據(jù)設(shè)計(jì)的譯碼方案,在PC機(jī)中使用VC++等開發(fā)工具來(lái)實(shí)現(xiàn),將每段NC程序段轉(zhuǎn)化為數(shù)據(jù)幀,利用串口發(fā)送給以單片機(jī)作主控芯片的數(shù)控系統(tǒng),單片機(jī)接收到數(shù)據(jù)后,根據(jù)幀頭,判別各項(xiàng)數(shù)據(jù)的有無(wú),并取出數(shù)據(jù)放到相應(yīng)的存儲(chǔ)單元中,做插補(bǔ)計(jì)算和控制的源數(shù)據(jù)用。在通信之前,先做好通信協(xié)議,規(guī)定握手協(xié)議、校驗(yàn)方式、波特率等。采用數(shù)據(jù)校驗(yàn),可增加數(shù)據(jù)傳輸?shù)目煽啃,但也因(yàn)椴捎眯r?yàn),增加了幀的長(zhǎng)度,本文未討論數(shù)據(jù)校驗(yàn),有關(guān)校驗(yàn)的問題可參考相關(guān)文獻(xiàn)。數(shù)據(jù)的發(fā)送以幀為單位采用握手方式一幀一幀進(jìn)行,保證譯碼數(shù)據(jù)準(zhǔn)確傳到單片機(jī)。
3 總結(jié)
本文闡述了一種NC代碼轉(zhuǎn)化通信編碼的譯碼方案,能有效地將數(shù)控程序轉(zhuǎn)化到固定幀格式的二進(jìn)制數(shù)據(jù),易于單片機(jī)的識(shí)別和處理。單片機(jī)接收到數(shù)據(jù)后,根據(jù)協(xié)議規(guī)則,反向處理,很容易得到插補(bǔ)的類型、坐標(biāo)、速度等數(shù)據(jù),從而實(shí)現(xiàn)插補(bǔ)。本文創(chuàng)新之處在于摒棄傳統(tǒng)的編碼方法,根據(jù)NC自身特點(diǎn),設(shè)計(jì)專門的譯碼方案,能提高數(shù)控系統(tǒng)對(duì)數(shù)控程序編譯和解釋的效率。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標(biāo)題:NC代碼譯碼的設(shè)計(jì)及在數(shù)控技術(shù)中的應(yīng)用
本文網(wǎng)址:http://www.ezxoed.cn/html/solutions/1401939923.html