數控代碼編譯器的構造方法
【專利摘要】本發明公開了一種數控代碼編譯器的構造方法,包括以下步驟:定義數控指令的中間語言格式;根據G代碼、M代碼格式,制定對應數控指令的詞法規則和語法規則;編寫數控代碼編譯器框架程序,編譯G代碼、M代碼生成中間語言,將中間語言保存到目標文件中。本發明通過采用中間語言和ANTLR語言識別工具,數控代碼一次編譯可以多次使用,減少了程序運行時的計算工作量;在程序實際執行前完成編譯,可以提前發現代碼中的錯誤,避免了程序執行過程中發現錯誤造成的零件報銷;通過定義語法規則、詞法規則文件,可自動生成語法分析算法、詞法分析算法,不需要開發人員編寫;對于不同的代碼規則,只需要修改規則文件,重新編譯即可。
【專利說明】數控代碼編譯器的構造方法
【技術領域】
[0001] 本發明涉及一種代碼編譯方法,具體地說,涉及一種編譯器的構造方法。
【背景技術】
[0002] 目前,數控機床通過執行數控代碼完成對零件的加工,用戶利用G代碼、Μ代碼控 制機床的運動,執行輔助操作。數控內核程序無法直接讀取數控代碼對零件進行加工,必須 先由預處理程序模塊對零件加工程序進行預處理和譯碼轉化為相應的加工指令,讓數控系 統進行零件的加工,這一部分通常叫做數控代碼編譯器。數控代碼編譯器作為數控系統核 心模塊之一,需要處理大量的數據,其運行效率直接影響整個系統運行的穩定性。
[0003] 常用的數據預處理方法有兩種:解釋方法和編譯方法。解釋方法對零件加工程 序逐條進行譯碼,在插補中斷的同時,解釋程序預先解釋下一條程序,等本條程序插補完成 后,再將下一條預先解釋好的程序的結果放到插補模塊中。如果對一個程序段的解釋過程 較慢而使機床具有一定的等待時間,那么加工出來的工件就會出現明顯的粗糙度,且加工 效率低,不易處理各程序段間的轉接,易形成加工停頓與過切,程序在中間部分出現的錯誤 將使尚未加工完成的零件報廢。編譯方法預先對要加工的零件加工程序全部編譯,將結果 放入緩沖區中,當開始加工時,直接啟動插補程序,從緩沖區中取出編譯好的零件程序,進 行計算并控制程序加工。但是,這種加工方法需要較大的內存。
[0004] 現有的數控系統,加工程序每次執行都需要重新編譯,增加數控系統運行時的計 算工作量;代碼程序較大時,需要較大內存,影響數控系統的總體性能;程序執行時才會發 現代碼中的錯誤,對模具加工程序、雕刻程序等大型數控程序,執行過程中才發現錯誤會造 成零件報銷;不同的數控系統使用的數控代碼規則不是完全相同,在不同的數控系統中需 要重復編寫語法分析算法、詞法分析算法。
【發明內容】
[0005] 本發明的目的在于提供一種數控代碼編譯器的構造方法,采用中間語言和ANTLR 語言識別工具,實現數控代碼的一次編譯多次使用,減少運行時的計算工作量;在程序執行 前發現數控代碼中的錯誤,避免了程序執行過程中發現錯誤造成的零件報銷。
[0006] 為了實現上述目的,本發明所采用的技術方案如下:
[0007] -種數控代碼編譯器的構造方法,包括以下步驟:定義數控指令的中間語言格式; 根據G代碼、Μ代碼格式,制定對應數控指令的詞法規則和語法規則;編寫數控代碼編譯器 框架程序,編譯G代碼、Μ代碼生成中間語言,將中間語言保存到目標文件中。
[0008] 進一步,中間語言采用連續的字節流,通過定義固定數據長度進行分割。
[0009] 進一步,采用ANTLR語言識別工具。
[0010] 進一步,ANTLR通過語法描述自動構造自定義語言。
[0011] 進一步,ANTLR根據用戶提供的語法文件自動生成相應的詞法分析器、語法分析器 和樹分析器。
[0012] 進一步,框架程序調用ANTLR生成的詞法分析算法、語法分析算法,編譯G代碼、Μ 代碼生成中間語言。
[0013] 進一步,ANTLR的詞法分析和語法分析用同一個文件說明。
[0014] 進一步,詞法分析時,將G準備字分為兩類:一類是無參數的G指令,類型為G_ SINGLE的模態指令;另一類是有參數的G指令,類型為G_MULTI的運動指令。
[0015] 進一步,詞法規則中用坐標字(C00RD)統一表示坐標的符號,用參數字(PARAM)統 一表不參數的符號。
[0016] 進一步,詞法規則中定義數控代碼中的數據只處理整數(INTEGER)和浮點數 (FLOAT)。
[0017] 與現有技術相比,本發明通過采用中間語言和ANTLR語言識別工具,數控代碼一 次編譯可以多次使用,減少了程序運行時的計算工作量;在程序實際執行前完成編譯,可以 提前發現代碼中的錯誤,避免了程序執行過程中發現錯誤造成的零件報銷;通過定義語法 規則、詞法規則文件,可自動生成語法分析算法、詞法分析算法,不需要開發人員編寫;對于 不同的代碼規則,只需要修改規則文件,重新編譯即可,不需要重寫編寫語法分析算法、詞 法分析算法,能實現在不同的數控系統中的快速應用。
【專利附圖】
【附圖說明】
[0018] 圖1為本發明的數控代碼編譯器對數控代碼的處理流程示意圖。
【具體實施方式】
[0019] 下面結合附圖和具體實施例對本發明數控代碼編譯器的構造方法作進一步說明。
[0020] 本發明公開了一種數控代碼編譯器的構造方法,包括以下步驟:
[0021] 首先,根據實際數控系統需求,定義數控指令的中間語言格式。
[0022] 中間代碼是源程序的一種內部表示,或稱中間語言。中間代碼的作用是可使編譯 程序的結構在邏輯上更為簡單明確,特別是可使目標代碼的優化比較容易實現中間代碼, 即為中間語言程序,中間語言的復雜性介于源程序語言和機器語言之間。中間語言有多種 形式,常見的有逆波蘭記號、四元式、三元式和樹。
[0023] 本發明中間語言采用連續的字節流,通過定義固定數據長度進行分割。中間語言 的基本格式為:(N PreG*T ? SM? ST? F? U? PreM*MoveG ? PostM*) +
[0024] 其中,各符號含義如下:
[0025] * :表示零個或多個。
[0026] ?:表示零個或一個。
[0027] + :表示一個或多個。
[0028] N:所在源代碼行號。
[0029] PreG :為運動指令前執行的G指令,一個塊中可以包含零個或多個。
[0030] T :為刀具設置指令,通常在運動指令執行前完成,一個塊中可以包含零或一個。
[0031] SM :為主軸速度設置指令,一個塊中可以包含零個或一個。
[0032] ST :為刀具速度設置指令,一個塊中可以包含零個或一個。
[0033] F :為主軸速度設置指令,一個塊中可以包含零個或一個。
[0034] PreM :為運動指令前或同時執行的Μ指令,一個塊中可以包含零或多個。
[0035] MoveG :為運動指令或固定循環,一個塊中可以包含零或一個。
[0036] PostM :為運動指令完成后執彳丁的Μ指令,個塊中可以包含零或多個。
[0037] 下面將具體描述了中間語言的編碼格式,如下表1至表5所示。
[0038] 表1代碼Ν的編碼格式
[0039]
【權利要求】
1. 一種數控代碼編譯器的構造方法,其特征在于,包括以下步驟: 定義數控指令的中間語言格式; 根據G代碼、Μ代碼格式,制定對應數控指令的詞法規則和語法規則; 編寫數控代碼編譯器框架程序,編譯G代碼、Μ代碼生成中間語言,將中間語言保存到 目標文件中。
2. 如權利要求1所述的數控代碼編譯器的構造方法,其特征在于:中間語言采用連續 的字節流,通過定義固定數據長度進行分割。
3. 如權利要求1所述的數控代碼編譯器的構造方法,其特征在于:采用ANTLR語言識 別工具。
4. 如權利要求3所述的數控代碼編譯器的構造方法,其特征在于:ANTLR通過語法描述 自動構造自定義語言。
5. 如權利要求4所述的數控代碼編譯器的構造方法,其特征在于:ANTLR根據用戶提供 的語法文件自動生成相應的詞法分析器、語法分析器和樹分析器。
6. 如權利要求5所述的數控代碼編譯器的構造方法,其特征在于:框架程序調用ANTLR 生成的詞法分析算法、語法分析算法,編譯G代碼、Μ代碼生成中間語言。
7. 如權利要求5所述的數控代碼編譯器的構造方法,其特征在于:ANTLR的詞法分析和 語法分析用同一個文件說明。
8. 如權利要求7所述的數控代碼編譯器的構造方法,其特征在于:詞法分析時,將G準 備字分為兩類:一類是無參數的G指令,類型為G_SINGLE的模態指令;另一類是有參數的G 指令,類型為G_MULTI的運動指令。
9. 如權利要求1所述的數控代碼編譯器的構造方法,其特征在于:詞法規則中用坐標 字(COORD)統一表不坐標的符號,用參數字(PARAM)統一表不參數的符號。
10. 如權利要求1所述的數控代碼編譯器的構造方法,其特征在于:詞法規則中定義數 控代碼中的數據只處理整數(INTEGER)和浮點數(FLOAT)。
【文檔編號】G05B19/4093GK104281096SQ201310284869
【公開日】2015年1月14日 申請日期:2013年7月8日 優先權日:2013年7月8日
【發明者】孫克爭, 周雪峰, 陳賢帥 申請人:廣州中國科學院先進技術研究所