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