0 引言
數(shù)控 NC代碼驅(qū)動(dòng)機(jī)床運(yùn)動(dòng)實(shí)現(xiàn)加工的自動(dòng)化 ,能夠大大提高加工性能。但不正確的 NC代碼會(huì)造成過(guò)切或欠切加工出廢品 ,也可能發(fā)生零件與刀具、 刀具與夾具、 刀具與工作臺(tái)之間的干涉碰撞 ,這顯然十分危險(xiǎn)。因此 ,迫切需要一種虛擬的仿真加工平臺(tái)來(lái)檢驗(yàn) NC代碼的正確性 ,NC代碼編譯器是組成數(shù)控虛擬仿真平臺(tái)的核心部分之一。
國(guó)內(nèi)外的 NC代碼翻譯技術(shù)已經(jīng)比較成熟[ 1, 2 ]。針對(duì)數(shù)控代碼標(biāo)準(zhǔn)的多樣性 ,文獻(xiàn) [ 3 ]中提出獨(dú)立的“NC代碼規(guī)則庫(kù) ” 和“處理引擎 ” 的概念 ,并通過(guò) TCL ( Tool CommandLanguage)來(lái)實(shí)現(xiàn) EBNF定義的 NC程序語(yǔ)法規(guī)則 ,提高了 NC代碼編譯器的通用性[ 4 ]。本系統(tǒng)采用高級(jí)語(yǔ)言 Java開(kāi)發(fā) ,具有良好的平臺(tái)無(wú)關(guān)性 ,通過(guò) EBNF定義 NC程序語(yǔ)法規(guī)則 ,并以 ANT LR為底層分析工具 ,開(kāi)發(fā)出一個(gè)通用性、 開(kāi)放性強(qiáng) ,效率高的 NC代碼編譯器。
1 NC代碼編譯器的技術(shù)基礎(chǔ)
1 . 1 數(shù)控程序的組成及特點(diǎn)
一個(gè)完整的數(shù)控加工程序由若干程序段組成 ,而數(shù)控程序段又由若干條數(shù)控指令按照一定的結(jié)構(gòu)構(gòu)成。數(shù)控程序結(jié)構(gòu)如圖 1所示。
圖 1中各個(gè)標(biāo)號(hào)的含義如下: 1— 起始符; 2— 程序名; 3—程序主體; 4— 程序結(jié)束語(yǔ); 5— 功能字; 6— 程序段。目前數(shù)控程序段常采用字地址程序段格式 ,上述功能代碼 G、 M、 S即為“ 字地址 ” 。每個(gè)“ 字 ” 由“ 字地址 ” 和其后面的數(shù)字 (有的帶有符號(hào) )組成。G、 M及 F、 S、 T指令描述數(shù)控機(jī)床的運(yùn)動(dòng)方式、 加工類(lèi)型、 主軸狀態(tài)、 冷卻液的開(kāi)關(guān)、 進(jìn)給速率、 主軸轉(zhuǎn)速的設(shè)置和刀具的選擇等。X、 Y、 Z、I、 J、 K為坐標(biāo)指令字 ,分別描述刀心位置及加工軌跡中圓弧的圓心坐標(biāo)等。數(shù)控程序段為典型的上下文無(wú)關(guān)文法 ,而且語(yǔ)法規(guī)則簡(jiǎn)單、 數(shù)量較少 ,可以通過(guò) EBNF定義其語(yǔ)法規(guī)則。

1 . 2 ANT LR技術(shù)簡(jiǎn)介
ANT LR[ 5 ]能夠簡(jiǎn)化編譯器的構(gòu)建。ANT LR是 LL ( k)文法的語(yǔ)法分析器生成器 ,其生成的目標(biāo)程序非常直觀且易于調(diào)試 ,文法表述能力相對(duì)強(qiáng)于 LEX/YACC。ANT LR通過(guò)讓用戶(hù)自定義詞法分析器和語(yǔ)法分析器的規(guī)則 ,來(lái)生成相應(yīng)詞法分析器和語(yǔ)法分析器的程序。利用生成的詞法分析器 ,先將輸入的字符流轉(zhuǎn)換成由短語(yǔ)組成的流 ,再作為語(yǔ)法分析器的輸入 ,從而得出最終的結(jié)果 — — — 語(yǔ)法樹(shù)。有了語(yǔ)法樹(shù)便可以根據(jù)實(shí)際的應(yīng)用要求求得執(zhí)行結(jié)果。生成的分析器是以類(lèi)的形式出現(xiàn) (一個(gè)分析器就是一個(gè)類(lèi) ,所有功能都封裝在類(lèi)中 ) ,能方便地嵌入到應(yīng)用程序中。
ANT LR總體框架如圖 2所示。在使用 Antlr時(shí) ,要先創(chuàng)建一個(gè)稱(chēng)為語(yǔ)法文件的文本文件 (. g文件 ) , 將自定義的詞法分析器和語(yǔ)法分析器的規(guī)則全部寫(xiě)在里面。Antlr就是通過(guò)讀取分析語(yǔ)法文件中的規(guī)則來(lái)生成詞法分析器與語(yǔ)法分析器的。Antlr語(yǔ)法文件的工作過(guò)程如下:首先 ,定義詞法分析器 Lexer類(lèi) ,在類(lèi)中定義各種 Token;然后 ,定義語(yǔ)法分析器Parser類(lèi) ,在類(lèi)中使用 EBNF語(yǔ)法 ,遞歸定義各種句子 , Parser類(lèi)負(fù)責(zé)把讀入的 Token串匹配成句子 ,翻譯出 AST(抽象語(yǔ)法樹(shù) ) ;最后 ,定義用于處理 AST的 TreeParser類(lèi) ,根據(jù) Parser類(lèi)分析出來(lái)的 AST(抽象語(yǔ)法樹(shù) )進(jìn)行動(dòng)作。Antlr語(yǔ)法文件具體組成部分及規(guī)則解析參見(jiàn)文獻(xiàn) [ 6 ]。

2 NC代碼編譯器體系結(jié)構(gòu)
NC代碼編譯器的首要作業(yè)歸納起來(lái)有兩個(gè):檢錯(cuò)和翻譯。檢錯(cuò) ,即依照該數(shù)控系統(tǒng)的編程規(guī)則和有關(guān)數(shù)控加工的知識(shí) ,對(duì) NC代碼進(jìn)行詞法剖析、 語(yǔ)法剖析、 語(yǔ)義剖析 ,然后檢查出該 NC代碼的詞法過(guò)錯(cuò)、 語(yǔ)法過(guò)錯(cuò)、 邏輯過(guò)錯(cuò) (其間包含數(shù)據(jù)不合理 ,加工狀況不合理等 )。通過(guò)檢錯(cuò)期間 ,若 NC代碼未被查出過(guò)錯(cuò) ,則進(jìn)入翻譯期間。翻譯 ,即從NC代碼中提取操控機(jī)床部件運(yùn)動(dòng)的有關(guān)指令動(dòng)作和狀況信息 ,將運(yùn)動(dòng)的數(shù)據(jù)依照位移和速度的改變劃分紅一系列時(shí)刻片段[ 7 ],計(jì)算出各時(shí)刻片段的機(jī)床各坐標(biāo)的位移 ,如:各種零件輪廓信息(起點(diǎn)、 結(jié)尾、 直線(xiàn)或圓弧等 )、 加工速度信息 ( F代碼 )和其他輔助信息 (M, S, T代碼等 )等 ,然后驅(qū)動(dòng)機(jī)床模型的運(yùn)動(dòng) ,完成 NC代碼驅(qū)動(dòng)的加工進(jìn)程仿真。
根據(jù)以上對(duì) NC代碼編譯器主要工作的分析 ,設(shè)計(jì)本系統(tǒng)體系結(jié)構(gòu)如圖 2所示。

3 NC代碼編譯器的研究與設(shè)計(jì)
根據(jù)面向?qū)ο蟮能浖O(shè)計(jì)方法 ,該編譯器可細(xì)分為詞法分析、 語(yǔ)法與語(yǔ)義分析、 信息提取三個(gè)模塊。
3 . 1 詞法分析模塊
詞法分析的主要功能是將輸入的 NC程序由字符串序列分解為單詞序列[8 ]。詞法分析的任務(wù)包括兩個(gè)方面:檢查數(shù)控程序內(nèi)是否有非法字符;對(duì)數(shù)控程序的源代碼進(jìn)行格式整理。
數(shù)控程序中出現(xiàn)非法字符主要指以下兩種情況:第一種情況為含有系統(tǒng)無(wú)法識(shí)別的字符。在本編譯系統(tǒng)中 ,系統(tǒng)可識(shí)別的字符集為 { G, X, Y, Z, H, D, F, O, N, I , J, K,M, S, T,R. , ; , % } ,阿拉伯?dāng)?shù)字 0~99,若數(shù)控程序內(nèi)出現(xiàn)“A” 等字符集所不包含的字符時(shí) ,則認(rèn)為數(shù)控程序含有非法字符。第二種情況是由系統(tǒng)可識(shí)別字符集組成的系統(tǒng)無(wú)法識(shí)別的字符串。這種錯(cuò)誤一般是由于用戶(hù)的誤操作造成的 ,包括以下兩種: 1)沒(méi)有相應(yīng)的數(shù)控功能與字符串相匹配 ,如“7100” ,“M890” ,“MFO 1” 等均屬于這種情況; 2)數(shù)值格式輸入有誤 ,如 150正確的表達(dá)應(yīng)為“150 . ” ,但若用戶(hù)在中間輸入空格則變成“1 5 0 . ” ,這種情況在本編譯系統(tǒng)中也被視為是數(shù)值格式輸入錯(cuò)誤的一種。
對(duì)數(shù)控程序的源代碼進(jìn)行格式整理的主要任務(wù)是刪除數(shù)控程序中的空白字符、 回車(chē)符、 程序注釋等非加工信息字符 ,并將數(shù)控程序轉(zhuǎn)換成便于代碼編譯程序進(jìn)行處理的內(nèi)部格式。在 ANT LR定義的. g語(yǔ)法文件中通過(guò)下面的代碼來(lái)實(shí)現(xiàn)詞法分析器的功能。

ANT LR中 的 規(guī) 則 分 為 公 有 型 ( public ) 和 保 護(hù) 型(p r otected)兩類(lèi)。上述 D IGIT規(guī)則定義了一個(gè)數(shù)字 ,其為p r otected類(lèi)型 ,該規(guī)則不能單獨(dú)使用 ,只能嵌套到其他規(guī)則中。該規(guī)則被 NUMER I C規(guī)則調(diào)用 ,定義任意整數(shù)。WS規(guī)則中的“ $setType ( Token . SKIP) ” 是代碼調(diào)用一個(gè) ANT LR的內(nèi)置函數(shù) ,告訴詞法分析器 ,前面定義的這四種字符都一律跳過(guò)。完成該文件后 ,運(yùn)行 ANT LR便可以生成相應(yīng)的詞法分析器 ,然后通過(guò)以下的循環(huán)可以依次將 NC文件的短語(yǔ)讀出來(lái)。

3 . 2 語(yǔ)法分析和語(yǔ)義分析模塊
數(shù)控語(yǔ)法分析模塊的任務(wù)是在詞法分析基礎(chǔ)上將數(shù)控加通過(guò)線(xiàn)程及 Java 3D 對(duì)動(dòng)畫(huà)效果、 交互式操作、 形體組合、復(fù)雜的應(yīng)用程序的支持等來(lái)實(shí)現(xiàn)仿真 (模型顯示于界面右部 ) ,并可通過(guò)按鈕和菜單對(duì)仿真的過(guò)程進(jìn)行控制。圖 6為系統(tǒng)運(yùn)行實(shí)例。

本文由 伯特利數(shù)控文章 整理發(fā)表,文章來(lái)自網(wǎng)絡(luò)僅參考學(xué)習(xí),本站不承擔(dān)任何法律責(zé)任。
加工中心專(zhuān)業(yè)制造
2024-11
結(jié) 合 車(chē)銑復(fù)合加工中心說(shuō)明書(shū),應(yīng) 用UG軟 件PostBuilder開(kāi)發(fā) 了XZC類(lèi) 機(jī) 床 后 置 處 理,能 夠 快 捷 實(shí) 現(xiàn)UG自動(dòng) 編 程 中 車(chē)、銑、孔等操作的程序后處理,文 中 對(duì) 后處 理 創(chuàng) 建 從 初 始 化 運(yùn) 動(dòng)、運(yùn) 動(dòng) 前 設(shè) 置、機(jī) 床 運(yùn) 動(dòng) 前、… [了解更多]
2024-11
本文通過(guò)對(duì)五軸加工中心的三種類(lèi)型的結(jié)構(gòu)特點(diǎn)進(jìn)行具體的運(yùn)動(dòng)分析,建立了數(shù)學(xué)模型推導(dǎo)出各類(lèi)機(jī)床的后置處理算法。并通過(guò)UG NX進(jìn)行建模并進(jìn)行后處理與算法得到的后處理數(shù)據(jù)進(jìn)行對(duì)比,證明了文中算法的正確性。通過(guò)所推導(dǎo)的數(shù)學(xué)公式得知,坐標(biāo)的角度變換與轉(zhuǎn)臺(tái)的轉(zhuǎn)動(dòng)相關(guān)。所推導(dǎo)的數(shù)學(xué)模型為最基礎(chǔ)… [了解更多]
2024-11
為了提高五軸加工中心的刀具加工精度,本文提出了五軸聯(lián)動(dòng)數(shù)控刀具切削加工誤差非線(xiàn)性插補(bǔ)方法。根據(jù)五軸聯(lián)動(dòng)數(shù)控刀具工作原理,分析誤差產(chǎn)生原因,利用誤差非線(xiàn)性插補(bǔ)方法,實(shí)現(xiàn)誤差插補(bǔ)。實(shí)驗(yàn)結(jié)果表明:利用該方法進(jìn)行誤差插補(bǔ)后,機(jī)床刀具運(yùn)行軌跡與理想插補(bǔ)軌跡貼合度高,且插補(bǔ)后誤差明顯減小,可… [了解更多]
2024-11
隨著五軸聯(lián)動(dòng)數(shù)控加工技術(shù)的廣泛應(yīng)用,文中針對(duì)五軸加工中心和五軸鉆攻中心的后置處理器進(jìn)行仿真分析,并提出一種以序列為基礎(chǔ)的優(yōu)化方法,優(yōu)化后的后置處理器,可以使得數(shù)控加工節(jié)省時(shí)間百分比得到有效提升。雖然文中提出優(yōu)化方法滿(mǎn)足了預(yù)期要求,但受到研究條件的影響,該方法未來(lái)需要進(jìn)一步完善。… [了解更多]
2024-11
面向銑削工藝參數(shù)優(yōu)選技術(shù)的工程需求,以復(fù)雜零部件多軸數(shù)控銑削為背景,文中提出了一種通用立銑刀真實(shí)切削軌跡下的五軸銑削力計(jì)算方法。 (1)建立了可同時(shí)表征球頭銑刀、圓環(huán)銑刀和平底銑刀的通用立銑刀幾何模型,計(jì)算得到不同類(lèi)型立銑刀的切削微元長(zhǎng)度和切削寬度。 (2)提出了一種快速求解… [了解更多]