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