技術文章
NC代碼編譯器的技術基礎、結構、研究與設計
閱讀:152 發布時間:2020-8-120 引言
數控 NC代碼驅動機床運動實現加工的自動化 ,能夠大大提高加工性能。但不正確的 NC代碼會造成過切或欠切加工出廢品 ,也可能發生零件與刀具、 刀具與夾具、 刀具與工作臺之間的干涉碰撞 ,這顯然十分危險。因此 ,迫切需要一種虛擬的仿真加工平臺來檢驗 NC代碼的正確性 ,NC代碼編譯器是組成數控虛擬仿真平臺的核心部分之一。
國內外的 NC代碼翻譯技術已經比較成熟[ 1, 2 ]。針對數控代碼標準的多樣性 ,文獻 [ 3 ]中提出獨立的“NC代碼規則庫 ” 和“處理引擎 ” 的概念 ,并通過 TCL ( Tool CommandLanguage)來實現 EBNF定義的 NC程序語法規則 ,提高了 NC代碼編譯器的通用性[ 4 ]。本系統采用高級語言 Java開發 ,具有良好的平臺無關性 ,通過 EBNF定義 NC程序語法規則 ,并以 ANT LR為底層分析工具 ,開發出一個通用性、 開放性強 ,效率高的 NC代碼編譯器。
1 NC代碼編譯器的技術基礎
1 . 1 數控程序的組成及特點
一個完整的數控加工程序由若干程序段組成 ,而數控程序段又由若干條數控指令按照一定的結構構成。數控程序結構如圖 1所示。
圖 1中各個標號的含義如下: 1— 起始符; 2— 程序名; 3—程序主體; 4— 程序結束語; 5— 功能字; 6— 程序段。目前數控程序段常采用字地址程序段格式 ,上述功能代碼 G、 M、 S即為“ 字地址 ” 。每個“ 字 ” 由“ 字地址 ” 和其后面的數字 (有的帶有符號 )組成。G、 M及 F、 S、 T指令描述數控機床的運動方式、 加工類型、 主軸狀態、 冷卻液的開關、 進給速率、 主軸轉速的設置和刀具的選擇等。X、 Y、 Z、I、 J、 K為坐標指令字 ,分別描述刀心位置及加工軌跡中圓弧的圓心坐標等。數控程序段為典型的上下文無關文法 ,而且語法規則簡單、 數量較少 ,可以通過 EBNF定義其語法規則。
1 . 2 ANT LR技術簡介
ANT LR[ 5 ]能夠簡化編譯器的構建。ANT LR是 LL ( k)文法的語法分析器生成器 ,其生成的目標程序非常直觀且易于調試 ,文法表述能力相對強于 LEX/YACC。ANT LR通過讓用戶自定義詞法分析器和語法分析器的規則 ,來生成相應詞法分析器和語法分析器的程序。利用生成的詞法分析器 ,先將輸入的字符流轉換成由短語組成的流 ,再作為語法分析器的輸入 ,從而得出終的結果 — — — 語法樹。有了語法樹便可以根據實際的應用要求求得執行結果。生成的分析器是以類的形式出現 (一個分析器就是一個類 ,所有功能都封裝在類中 ) ,能方便地嵌入到應用程序中。
ANT LR總體框架如圖 2所示。在使用 Antlr時 ,要先創建一個稱為語法文件的文本文件 (. g文件 ) , 將自定義的詞法分析器和語法分析器的規則全部寫在里面。Antlr就是通過讀取分析語法文件中的規則來生成詞法分析器與語法分析器的。Antlr語法文件的工作過程如下:首先 ,定義詞法分析器 Lexer類 ,在類中定義各種 Token;然后 ,定義語法分析器Parser類 ,在類中使用 EBNF語法 ,遞歸定義各種句子 , Parser類負責把讀入的 Token串匹配成句子 ,翻譯出 AST(抽象語法樹 ) ;后 ,定義用于處理 AST的 TreeParser類 ,根據 Parser類分析出來的 AST(抽象語法樹 )進行動作。Antlr語法文件具體組成部分及規則解析參見文獻 [ 6 ]。
2 NC代碼編譯器體系結構
NC代碼編譯器的首要作業歸納起來有兩個:檢錯和翻譯。檢錯 ,即依照該數控系統的編程規則和有關數控加工的知識 ,對 NC代碼進行詞法剖析、 語法剖析、 語義剖析 ,然后檢查出該 NC代碼的詞法過錯、 語法過錯、 邏輯過錯 (其間包含數據不合理 ,加工狀況不合理等 )。通過檢錯期間 ,若 NC代碼未被查出過錯 ,則進入翻譯期間。翻譯 ,即從NC代碼中提取操控機床部件運動的有關指令動作和狀況信息 ,將運動的數據依照位移和速度的改變劃分紅一系列時刻片段[ 7 ],計算出各時刻片段的機床各坐標的位移 ,如:各種零件輪廓信息(起點、 結尾、 直線或圓弧等 )、 加工速度信息 ( F代碼 )和其他輔助信息 (M, S, T代碼等 )等 ,然后驅動機床模型的運動 ,完成 NC代碼驅動的加工進程仿真。
根據以上對 NC代碼編譯器主要工作的分析 ,設計本系統體系結構如圖 2所示。
3 NC代碼編譯器的研究與設計
根據面向對象的軟件設計方法 ,該編譯器可細分為詞法分析、 語法與語義分析、 信息提取三個模塊。
3 . 1 詞法分析模塊
詞法分析的主要功能是將輸入的 NC程序由字符串序列分解為單詞序列[8 ]。詞法分析的任務包括兩個方面:檢查數控程序內是否有非法字符;對數控程序的源代碼進行格式整理。
數控程序中出現非法字符主要指以下兩種情況:第一種情況為含有系統無法識別的字符。在本編譯系統中 ,系統可識別的字符集為 { G, X, Y, Z, H, D, F, O, N, I , J, K,M, S, T,R. , ; , % } ,阿拉伯數字 0~99,若數控程序內出現“A” 等字符集所不包含的字符時 ,則認為數控程序含有非法字符。第二種情況是由系統可識別字符集組成的系統無法識別的字符串。這種錯誤一般是由于用戶的誤操作造成的 ,包括以下兩種: 1)沒有相應的數控功能與字符串相匹配 ,如“7100” ,“M890” ,“MFO 1” 等均屬于這種情況; 2)數值格式輸入有誤 ,如 150正確的表達應為“150 . ” ,但若用戶在中間輸入空格則變成“1 5 0 . ” ,這種情況在本編譯系統中也被視為是數值格式輸入錯誤的一種。
對數控程序的源代碼進行格式整理的主要任務是刪除數控程序中的空白字符、 回車符、 程序注釋等非加工信息字符 ,并將數控程序轉換成便于代碼編譯程序進行處理的內部格式。在 ANT LR定義的. g語法文件中通過下面的代碼來實現詞法分析器的功能。
ANT LR中 的 規 則 分 為 公 有 型 ( public ) 和 保 護 型(p r otected)兩類。上述 D IGIT規則定義了一個數字 ,其為p r otected類型 ,該規則不能單獨使用 ,只能嵌套到其他規則中。該規則被 NUMER I C規則調用 ,定義任意整數。WS規則中的“ $setType ( Token . SKIP) ” 是代碼調用一個 ANT LR的內置函數 ,告訴詞法分析器 ,前面定義的這四種字符都一律跳過。完成該文件后 ,運行 ANT LR便可以生成相應的詞法分析器 ,然后通過以下的循環可以依次將 NC文件的短語讀出來。
3 . 2 語法分析和語義分析模塊
數控語法分析模塊的任務是在詞法分析基礎上將數控加通過線程及 Java 3D 對動畫效果、 交互式操作、 形體組合、復雜的應用程序的支持等來實現仿真 (模型顯示于界面右部 ) ,并可通過按鈕和菜單對仿真的過程進行控制。圖 6為系統運行實例。
本文由 伯特利數控文章 整理發表,文章來自網絡僅參考學習,本站不承擔任何法律責任。
加工中心專業制造