文/梁子財
眾所周知,數控機床作為制造業領域的工作母機,它在國民生產中占據著非常高的地位。一個國家的數控機床市場生產產量的大小、質量水平的高低,是衡量其制造業水平、科技發展水平和經濟發展水平的重要指標。數控G代碼是機床加工零件的依據,因此G代碼的編寫質量直接影響著機床加工質量。
數控加工G代碼蘊含著零件加工的幾何形狀、尺寸、工藝要求等繁雜信息,無論是手動編程還是自動編程,都容易出現意料之外的錯誤。如果忽略這些錯誤,輕者造成使加工失敗,造成材料浪費,重則損壞機床,造成人員傷亡。因此數控加工G代碼必須經過驗證才可進行實際生產。
筆者利用Qt平臺開發了一款針對數控加工G代碼程序的專用編輯器,該編輯器能夠讀取已有G代碼程序進行編輯或者新建G代碼程序,同時編輯器內嵌G代碼程序譯碼模塊可以檢測G代碼程序的錯誤并標記,方便用戶對數控加工G代碼進行編輯,從而減少技術人員的工作量與提高G代碼程序的準確性。

圖1:編輯器的系統結構圖

圖2:編輯器的軟件界面
數控加工G代碼程序專用編輯器主要由操作模塊和譯碼模塊兩部分組成,如圖1所示。通過操作模塊和譯碼模塊的有機組合與協作,從而實現對數控加工G代碼的編輯與校驗。
操作模塊:操作模塊主要有兩個功能:顯示功能和操作功能。顯示功能實現G代碼的顯示、行號顯示、命令符與數字的對比顯示;操作功能則是滿足用戶對G代碼的復制、粘貼、剪切等常用編輯操作。
譯碼模塊;譯碼模塊主要有兩個功能:解析程序數據和分析程序錯誤。解析程序數據功能實現對加工G代碼的內容解析,將命令符與數據分別提取出來;分析程序功能則是對G代碼進行詞法語法分析,并定位錯誤,提示用戶進行修正。
操作模塊主要是通過對Qt的QPlainTextEdit類進行繼承實現自定義功能的設計。編輯器的軟件界面如圖2所示。通過在窗體左定義一個QWidget類負責行號的顯示,背景顏色為深藍色,并將行號區域固定在左側;右側背景白色的區域為編輯與顯示區域,負責顯示G代碼的具體內容。顯示區域采用兩種顏色來區分顯示命令符合與數字普通字符。
通過重載paintEvent(QPaintEvent *event)函數可以實現不同類型字符的顯示樣式,包括字體大小粗細、顏色等。部分代碼如下:


數控加工G代碼的譯碼將數控加工G代碼文件進行逐行掃描與校核。在這個過程中首先要對每行代碼中的注釋內容進行屏蔽,之后再對每行代碼的有效信息進行解析。因此在譯碼工作中比較重要的有以下4部分:
去掉注釋內容。數控加工G代碼中有部分文本是注釋內容,這些注釋內容并不蘊含有效加工數據,因此無需進行后續處理,因此需要提前屏蔽掉。
詞法錯誤檢查。根據數控加工G代碼的編程標準,判別G代碼中的字符是否滿足標準要求。實現的思路為:首先建立代碼關鍵字符集,然后逐個讀入G代碼中的字符,判斷它是否屬于關鍵字符集。如果不在則說明程序使用了系統不能識別的指令,給出錯誤信息,指出錯誤所在行;如果該字符屬于字符集則繼續讀入下一個字符。
語法錯誤檢查。將數控G代碼的單詞按各類語法規則進行分析,并進行語句的語法正確性和不同語句之間的相容性檢查。歸納起來,數控代碼中要檢查的語法錯誤主要有指令搭配錯誤、指令順序錯誤和指令格式錯誤。
字符分類。經過詞法錯誤檢查和語法錯誤檢查之后,需要對G代碼進行信息分揀與字符分類,將命令字符和其余字符分類存儲,后續顯示時加以區分設置顯示格式。
G代碼文件的譯碼工作流程如圖3所示。

圖3:譯碼工作流程
本文基于Qt平臺開發了一款專用于數控加工G代碼程序編輯器,該編輯器能夠讀取已有G代碼程序進行編輯或者新建G代碼程序,同時編輯器內嵌G代碼程序譯碼模塊可以檢測G代碼程序的錯誤并標記,方便用戶對數控加工G代碼進行編輯,從而減少技術人員的工作量與提高G代碼程序的準確性。