999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

車銑復合數控代碼編譯器的設計*

2011-09-29 01:32:14陶桂寶安祥波
制造技術與機床 2011年8期
關鍵詞:指令語義程序

陶桂寶 梁 濤 安祥波 楊 琳

(①重慶大學機械工程學院,重慶 400044;②重慶大學機械傳動國家重點實驗室,重慶 400044)

車銑復合加工是指在一臺設備上完成車、銑、鉆、鏜、攻絲、鉸孔、擴孔等功能的一項技術[1]。具有效率高、精度高、速度高等優點。車銑復合數控機床結構復雜,使得工件與刀具、刀具與夾具以及刀具與工作臺間發生干涉碰撞的概率增大。因此,開發一個具有驗證NC代碼正確性功能的加工仿真軟件十分必要,而NC代碼編譯模塊作為仿真軟件的核心部分之一,成為國內外專家研究的熱點。

目前,國內外對于三軸數控加工機床的編譯器技術研究已經相當成熟,而對于三軸以上復雜的數控加工機床編譯器的研究報道相對較少[2-5]。編譯器的程序開發方法主要有兩種[6]:一種是直接用高級語言開發,如C++、VB、C等,其中包括加載正則表達式類[7]來作詞法與語法分析的判別工具和自行創建規則庫代碼與判別代碼編寫[8];另一種是用詞法分析程序的自動構造工具(LEX、YACC 及 ANTLR[9-10]等)生成詞法分析程序。

本文采用Visual C++為NC代碼編譯器的開發平臺,并以微軟公司研發的GRETA正則表達式類庫作為詞法、語法和語義匹配和分析的工具,開發一種適合車銑復合數控加工的NC代碼編譯器。

1 NC代碼編譯器總體設計

NC代碼編譯器主要功能是對NC

代碼進行校驗和譯碼。代碼校驗的主要功能是檢查代碼在詞法、語法和語義上的格式錯誤和邏輯錯誤。代碼譯碼則是從數控程序中提取與控制基礎運動部件運動有關的命令,計算出刀具在基礎坐標系的位移量,從而得到機床的刀具運動軌跡,實現數控程序驅動的加工過程仿真。譯碼主要分為對程序的預處理、翻譯處理、補償處理等3個過程。

NC代碼編譯器首先讀取NC文件并存儲到相應的鏈表中,然后對鏈表中NC代碼逐行進行詞法、語法和語義的分析,即為第一次歷遍。如果檢查出程序的錯誤,編譯器則把錯誤信息進行存儲,并顯示到特定位置,以便NC程序的修改。在校驗結束后,對沒有出現錯誤的NC代碼進行譯碼,最終提取出刀位信息,并保存信息到鏈表中,這個過程成為第二次歷遍。NC代碼編譯的總體流程見圖1。

1.1 詞法分析

語法分析是指先將NC程序從NC數據鏈表中按程序字依次讀出,然后查找NC代碼是否存在規定以外的字符及不能識別的指令,包括不屬于數控系統的G代碼和M代碼,最后檢查字符后面數字格式及極限錯誤的過程。具體實現方法為:首先將檢查字符程序、詞法分析程序、語法和語義分析程序設計為單個的子程序模塊,然后在第一次鏈表歷遍時,將這幾個子程序同時進行檢查。在語法分析程序需要一個字(字符)時,調用詞法分析程序;字符檢查程序則在詞法分析程序運行時調用。采用這種方法,避免了代碼的多次調用,減少了檢查和搜索時間,提高了編譯效率。

詞法檢查的主要任務包括:

①檢查出數控系統不能識別的字符,即數控系統規定外的字符;

②根據建立的G代碼和M代碼規則庫,識別出不屬于系統的G代碼和M代碼;

③檢查程序號的首字符是否與數控系統的要求相符;數值位數是否符合系統規定;

④檢查程序段的數值(行號)是否在數控系統規定的數值范圍內;

⑤檢查坐標值代碼后的數值是否在機床的行程范圍內;

⑥檢查S代碼格式是否正確,設定的主軸轉速值是否在主軸轉速范圍內;

⑦檢查F代碼格式是否正確,設定的主軸進量給是否在主軸進給范圍內;

⑧檢查T代碼格式是否正確,其后面數值是否大于刀庫的最大容量值。

1.2 語法與語義分析

語法分析是指以一個程序段為檢查單位,根據程序指令查找相關的語法規則,然后調用相關的語法檢查單元,再按語法規則要求繼續讀入字段,判斷當前讀入的字段是否與程序指令相匹配的一個過程。如果在程序段中出現了規則庫中沒有列出的字段或缺少了相應的字段,則會顯示NC程序出現語法錯誤。語法分析的方法分為兩種:即自頂向下分析和自底向上分析[8]。本文采用自頂向下分析方法,根據給定的代碼為起始符,按照其語法規則,試圖向下推導出下個字符段。如果分析字符與規定的字符段一致,則語法正確,反之,則語法錯誤。語法檢查實現方法為:先建立相應的詞法規則庫,然后使用語法檢查函數檢查程序段內指令是否存在語法錯誤。

語義分析是指按照NC代碼的語義規則,查詢程序段間指令的邏輯關系是否正確的過程。其目的為檢查程序中的語義錯誤。語義檢查實現方法為:首先建立一個語義檢查函數,檢查整個程序的上下程序段之間是否存在語義錯誤。

語法和語義檢查的主要任務列于表1。

1.3 NC代碼編譯

NC代碼編譯是指提取NC代碼中有關控制機床部件運動的命令、動作指令和狀態信息,并將其轉換成仿真所需要的數據格式,存入相應的數據結構鏈表中的過程。

表1 語法與語義檢查任務表

編譯過程的第一步是預處理環節,即代碼的標準化,其過程為:以每一行為單位作為字符流,濾去空格、拼數字、拼復合詞,轉化成“字地址符+數字”形式的指令單詞序列,然后把單詞序列進行劃分和添加指定空格,最后將程序段重新寫入鏈表文件。

編譯過程的第二步是程序翻譯,即將標準化后的程序代碼逐行讀入,提取其中的G、M、S、T、F等關鍵代碼,分別調用相關函數進行刀位信息處理,然后將編譯好的刀位信息以規定的格式存儲到數據鏈表中。例如直線插補指令,需要提供插補起點和終點坐標值;圓弧插補指令,則需要提供圓心、圓弧半徑和圓弧起點終點坐標值;固定循環指令,則要提供固定循環加工軌跡所要的點的坐標值和加工次數。

編譯過程的第三步是補償處理,即對刀具半徑、長度及位置補償指令建立相應的補償模塊,為刀具位置信息增加補償值。

1.4 車銑復合數控代碼的特點與其編譯實現

車銑復合數控加工是一種高效的數控加工形式。車銑復合加工機床通常采用雙刀或多刀同時車削、銑削加工工件,以達到縮短加工時間的目的,從而提高生產效率。在加工過程中,刀架的動作采用等待協調機制來控制,即在同一個同步時段中,如果其中一個刀架先完成加工任務,如主刀架先完成,則不需要等其余刀架是否完成而直接進入下一時段加工,否則需要等主刀架任務完成后才進行下一時段的加工。多通道分別控制機床刀架滑板,數控系統的等待協調指令則用于實現刀架的工作進程,其中通道1設為主通道。等待指令格式為 WAITM(n,1,2)或者 WAITE(m)。WAITM(n,1,2)中的n表示等待的工步匹配號(同步號),為任意正整數值,后邊的1,2分別表示通道1和通道2;WAITE(m)中的m值取1或2,表示通道m的程序結束[11]。此外,車銑復合數控代碼具有如下特點:

①以工步為基本單位,工步內包含有子程序調用;

②NC代碼可以像高級語言具有分支和循環功能;

③工步內部和工步之間存在跳轉指令;

④使用R參數和算術表達式;

⑤左右刀架NC代碼中間存在信息通訊和協調,由等待協調指令控制。

由于車銑復合數控以工步為單位,編譯程序首先要判斷程序為加工工步還是等待工步,然后讀取一個完整的工步信息代碼,最后對代碼進行數據處理、代碼分析和代碼編譯。

另外,在規則庫定義中,需要定義跳轉、循環和等待指令標識;對R表達式、賦值表達式及算術表達式需建立相應的數據處理模塊。

2 編譯代碼實現

本文以Visual C++6.0為程序開發平臺,首先建立NC代碼的程序基類CNCCode,用于處理NC程序的數據處理、詞法分析、語法和語義分析、錯誤信息處理及NC程序編譯過程。由于現存的數控系統(如FANUC、SIEMENS等)指定的NC代碼標準與國際標準并不完全相同,使得代碼編譯器通用性不強。利用C++具有面向對象的特性即封裝性和繼承性,不同數控系統NC代碼子類可繼承CNCCode基類,子類則通過對規則庫函數進行重載來定義各自系統中的不統一指令。從而使得編譯器可以處理不同數控系統的NC代碼,這樣使得編譯器具有可對更多的數控系統進行擴展和兼容。CNCCode類定義如下:

2.1 正則表達式的應用和規則庫的建立

正則表達式(Regular Expression)是一種字符串匹配模式,即描述或者匹配一系列符合某個句法規則的字符串,常用于檢索或者替換某個模式的文本內容。GRETA是微軟研究院推出的一個正則表達式模板類庫,包含了C++的對象和函數,使字符串的模式匹配和替換變得很容易。它們是rpattern:搜索的模式;match results/subst results:放置匹配、替換結果的容器[12]。GRETA執行搜索和替換的操作過程:首先需要定義描述匹配規則的字符串,用來初始化rpattern類的對象。然后把需要匹配的字符串作為傳遞參數,調用 rpattern類的函數(如 match()或者 substitute())。如果調用失敗,函數返回false,否則,函數返回true,match_results類的對象就可以得到匹配后的結果。編譯程序加載GRETA正則表達式類庫作為NC代碼查找的工具,方便地定義NC代碼規則和檢查代碼的錯誤。GRETA匹配速度快,提高了編譯器的編譯速度。

首先應用正則表達式的語法規則,對關鍵字符和指令進行定義,再將它們添加到規則庫定義函數,即完成了NC代碼規則庫的建立。部分關鍵字符的定義如下:

2.2 詞法、語法和語義檢查

編譯程序首先打開NC程序,并把NC程序以行為單位地讀入并儲存到NC代碼數據鏈表中。在第一次歷遍NC代碼數據鏈表時,調用語法檢查函數,并運用GRETA正則表達式中的Match()函數,查找字符串是否能夠與相應指令代碼的規則相匹配,如果匹配,則語法正確,否則,語法中是否存在錯誤。在歷遍過程同時,同樣的調用字符檢查函數和詞法檢查函數,檢查是否存在錯誤。在語義檢查函數中,則重點檢查程序段間的邏輯錯誤。整個過程中,多次調用GRETA正則表達式Match()函數,檢查所傳遞的字符串是否符合規則庫中的子串。

其中語法檢查函數中查找G00指令后面是否有任意一個坐標值的模塊定義如下:

2.3 錯誤信息處理

NC代碼編譯器中的一個重要部分就是錯誤信息處理部分。主要功能是存儲和顯示錯誤的代碼信息。這樣便于用戶修改錯誤的NC代碼。本文先把詞法、語法和語義檢查出的錯誤NC代碼添加到錯誤信息鏈表(m_ErrorInformationList)之中,同時記錄出現錯誤的NC代碼行數及總錯誤數量,最后把錯誤內容顯示到信息視圖之中。其中的G代碼語法錯誤信息設置函數代碼如下:

2.4 NC程序譯碼過程及刀位信息儲存

影響機床運動的主要 G代碼分別為G00、G01、G02、G03。因此,NC代碼的譯碼對象即為這幾個G代碼。在此之前,須對影響刀位坐標信息的G代碼進行譯碼,這樣才能準確地把代碼譯成相應的刀位信息。如:編程規則(絕對值編程G90和相當值編程G91)、加工平面選擇(G17、G18和G19)及工件坐標系定義(G92)等。

通過設置bool類型變量IsAbCdnate來判斷NC程序是否是絕對值編程,當G90指令時IsAbCdnate設為true,而當G91指令時IsAbCdnate設為false。應用此法,即可處理那些影響刀位坐標信息的G代碼。譯好影響刀位坐標信息的G代碼之后,就可對G00~G03代碼編譯。編譯直線插補指令G01譯碼過程為:首先查詢刀補指令G41/G42是否已經定義,如果定義則補償刀具半徑,如果沒有定義,則坐標值不變;其次檢查加工平面,確定坐標軸,根據編程規則,確定當前代碼是絕對坐標還是相對坐標,最后進行坐標轉化,即可得到刀位坐標信息。

編譯好的刀位坐標信息還需轉換成刀位起點和終點的坐標值,如果是圓弧插補則還要把NC代碼轉換為圓心坐標值和圓弧半徑值。刀位坐標信息及加工工藝參數信息都需要做存儲處理。本文就建立一個刀位信息基類CPosition和定于一個刀位信息鏈表m_PositionList。將刀位信息儲存到CPosition類中的一個對象內,而將CPosition類的對象存儲到鏈表m_Position-List之中。這樣存放很方便,程序調用CPosition類數據也變得簡單,同時更利于加工過程仿真時的數據提取。CPosition類的定義如下:

3 結語

本文以Visual C++作為程序開發平臺,總體設計了NC代碼的編譯程序,并根據車銑復合數控代碼的特點,分析了代碼的詞法、語法、語義,并檢查了代碼中存在的詞法、語法、語義錯誤,最終將編譯代碼轉化為刀位信息。本編譯器具有良好的快速性、精度高、通用性和兼容性。編譯器生成的刀位信息為車銑復合數控加工仿真系統提供了驅動數據,是數控加工仿真系統不可缺少的一個部分。

[1]復合加工誰執牛耳[J].現代制造,2004(21):20-24.

[2]Liu Y,Guo X,Li W,et al.An intelligent NC program processor for CNC system of machine tool[J].Robotics and Computer- Integrated Manufacturing,2007,23(2):160-169.

[3]LEEW B,GAO D,LI JG.An NC toolpath translator for virtual machining of precision optical products[J].Journal of Materials Processing Technology,2003,140:211-216.

[4]樂廣軍,周宏甫.數控代碼語法檢查及圖形仿真系統的研究[J].計算機應用與軟件,2005,22(4):56 -57,87.

[5]田超,郭斌.數控仿真中NC程序的通用轉換技術[J].組合機床與自動化加工技術,2008(2):55 -56,59.

[6]陳輝,郭艷玲.用LEX構造數控編譯器詞法分析程序的研究[J].機電工程技術,2006,35(2):28 -30.

[7]任松濤,秦現生,白晶.NC代碼解釋器的開發[J].中國制造業信息化,2007,36(5):54 -57.

[8]游華云,葉佩青,楊開明.多數控代碼解釋器共存的設計與應用[J].計算機工程與應用,2007,43(12):1 -2,111.

[9]禹丹,嚴宏志,王繼娜.基于ANTLR的NC代碼編譯器的設計與實現[J].計算機應用,2008,28(2):522 -524,527.

[10]伍抗逆,李斌,陳吉紅.面向開放式數控系統平臺的NC代碼解釋器開發[J].中國機械工程,2006,17(2):168-171.

[11]李曉磊,吳勇中,桂貴生.雙刀車削數控加工仿真技術研究[J].制造技術與機床,2009(6):74-78.

[12]王心光,傅建中.虛擬數控加工中G代碼編譯器的研究[J].組合機床與自動化加工技術,2005(6):80-81,84.

猜你喜歡
指令語義程序
聽我指令:大催眠術
語言與語義
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
“上”與“下”語義的不對稱性及其認知闡釋
現代語文(2016年21期)2016-05-25 13:13:44
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
認知范疇模糊與語義模糊
主站蜘蛛池模板: 一本色道久久88| 亚洲毛片网站| 国产99视频在线| 欧美亚洲国产精品久久蜜芽| 国产日韩欧美中文| 欧美精品黑人粗大| 国产高清毛片| 亚洲区第一页| 97色婷婷成人综合在线观看| 亚洲女同欧美在线| 亚洲人成日本在线观看| 99精品免费欧美成人小视频| 亚洲欧美在线精品一区二区| 欧美特黄一免在线观看| 色偷偷男人的天堂亚洲av| 国产在线观看99| 国产精品久久久久久久久| 中文字幕精品一区二区三区视频| 婷婷综合色| 玩两个丰满老熟女久久网| 国产欧美日韩视频怡春院| 欧美一区二区三区欧美日韩亚洲| 国产欧美亚洲精品第3页在线| 免费A∨中文乱码专区| 欧洲亚洲一区| 亚洲欧美激情小说另类| 欧美日韩精品在线播放| 色婷婷狠狠干| 日韩午夜片| 免费国产高清视频| 国产成人综合在线观看| 欧美一级高清片久久99| 欧美日韩第二页| aⅴ免费在线观看| 日本在线视频免费| 午夜老司机永久免费看片 | 日本免费福利视频| 人妻丝袜无码视频| 性色生活片在线观看| 日本欧美一二三区色视频| 成人国产精品一级毛片天堂| 亚洲性色永久网址| 成年女人a毛片免费视频| 免费国产一级 片内射老| 伊人成人在线视频| 成人午夜精品一级毛片| 91在线免费公开视频| 无码aaa视频| 欧美色图第一页| 国模沟沟一区二区三区| 在线播放国产一区| 亚洲人成影视在线观看| 亚洲国产日韩一区| 国产精品亚欧美一区二区三区 | 毛片网站在线看| 成人国产免费| 国产精品视频第一专区| 国产精品亚洲天堂| 亚洲第一色视频| av一区二区无码在线| 国产精品林美惠子在线播放| 国产日韩久久久久无码精品| 91在线精品麻豆欧美在线| 99精品视频在线观看免费播放| 国产美女无遮挡免费视频| 五月婷婷综合网| 激情综合图区| 最近最新中文字幕免费的一页| 国产清纯在线一区二区WWW| 高清大学生毛片一级| 国产在线91在线电影| 国产黄色免费看| 啪啪啪亚洲无码| 精品国产毛片| 亚洲久悠悠色悠在线播放| 欧美不卡二区| 四虎影视国产精品| 丁香六月激情综合| 国产一区二区三区免费观看| 青草国产在线视频| 国产精品亚欧美一区二区三区| 日韩精品专区免费无码aⅴ|