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

基于BOOST庫的數控NC代碼宏程序編譯器

2010-10-18 14:31:46林礪宗宋啟盛王啟春
制造技術與機床 2010年8期

林礪宗 宋啟盛 林 森 王啟春

(華東理工大學機械與動力工程學院,上海200237)

宏程序是現代數控系統重要的標志之一。宏的出現使數控系統的二次開發成為可能。只要通過對變量的修改,便能實現對同一類零件,不同規格尺寸的加工。大大提高了程序復用率,簡化了實際加工操作。

因此能支持宏程序的編譯器,已成為任何數控系統的首要基礎。本文用的方法相對而言較直觀,比起專業的編譯器實現要更簡單,并具有較高的效率。

1 BOOST的概述

一般制作編譯器有用 VC直接開發的,但是VC6.0本身不支持正則表達式,因而開發起來代碼量大,且編譯器運行速度慢;有用VC和微軟開發正則表達式GRETA代碼編寫的[1],雖然有正則表達式能簡化編程,但 GRETA功能有限;還有用專業編譯器LEX&YACC[2],老版本已經很難找到,而新版本是付費軟件,由于版權原因,投入商業開發會有版權問題。

本文選用開放式源代碼庫BOOST,除了版權免費以外,其還包含了正則表達式及迭代等算法,方便快速編程,且效率高,能較好實現G代碼及宏代碼的編譯。

BOOST主要包含以下幾個大類:字符串及文本處理、容器、迭代子(Iterator)、算法、函數對象和高階編程、泛型編程、模板元編程、預處理元編程、并發編程、數學相關、糾錯和測試、數據結構、輸入/輸出、跨語言支持、內存相關、語法分析、雜項。具有很強大的功能。

2 G代碼和宏代碼的處理

譯碼系統主要是識別G、M、T、S等代碼,并進行詞義、語義的分析[3]。分析完之后把相關參數存入代碼數據庫中的NC代碼表,如表1所示,為以后運行做準備。通常的做法是在程序中開辟程序緩沖區,定義一個結構體,把代碼的相關信息存入結構體中[1]。這樣可以加快編譯速度。但對于突然斷電等情況,內存中的數據會突然丟失,且占用內存較大。而現在的計算機的運行速度,每年都能大幅度提高,因此決定放棄部分運行速度來提高系統的可靠性,把代碼存入數據表中。這樣,即使未存盤,也不會丟失數據。并且所占用的內存相對較少。其較系統自動存盤功能的編寫更簡單。

表1 代碼數據庫NC代碼表

2.1 代碼數據庫的格式

代碼數據庫結構的組成結構圖,如圖1所示。

NC 代碼表存放功能字、X、Y、Z、U、V、W、S、T,平面信息,相對、絕對坐標,刀號及公英制信息。

宏代碼表存放宏變量。系統共建立了100個局部變量,其作用域只存在當前的程序中,編號為#0-#99存儲在數組中。并有100個全局變量,其存儲一些相關的比較重要的系統參數及自定義函數,其針對所有的宏程序,它存儲在宏代碼表中其編號為#100-#199。

2.2 譯碼系統的數據結構

(1)譯碼器所定義的關鍵字及符號

(2)G代碼數據結構的定義

3 譯碼的總流程(圖2)

譯碼器首先讀入的代碼,根據判斷符串里是否包含#、IF、WHILE、SIN、GE 等一些代表變量,控制語句,三角函數,邏輯判定函數等來區分是否是宏代碼。

若是宏代碼,則做一些相關的操作:

(1)變量的替換

在推進地下水超采治理試點工作中,始終牢牢把握五條基本原則:一是政府引導、全民行動,發揮好政府和群眾兩個積極性;二是規劃統領、科學治理,年度實施方案與中長期規劃有機銜接,集中連片規模實施,務求治理一片、見效一片、鞏固一片;三是創新機制、示范帶動,探索建立地下水超采治理的有效途徑,力求取得可示范、可復制、可推廣的經驗;四是因地制宜、積極穩妥,根據實際情況,科學確定治理模式和工程規模;五是競爭立項、績效考核,依據項目前期工作和壓采效果擇優實施,嚴格把關、嚴格獎懲。

當碰到的是賦值語句時,如#3=10,#100=25.6,首先讀取變量號,當變量號是0-99時,此時代表局部變量,則把值存入內存中開辟的數組中,供當前程序調用;若變量號是100-199時,則直接把數據存入宏變量數據庫中,供所有程序調用。

當存在含變量的代碼時,如G01 X#3 Y#100,則分別根據變量從內存數組和宏變量數據庫中讀出變量值,并替換原來的變量名,即變為G01 X10 Y25.6。

(2)數值的計算

當遇到是變量的三角函數或變量的四則運算時,由于VC6.0本身不具備文本運算功能,即輸入文本型的數字,并能計算這些“數字”之間的四則運算,于是調用JAVA中的一個腳本控件msscript.ocx,這樣能方便的達到目的。

使用此控件時,只要在expression中定義要計算的文本字符串,如“3+45.6*3+3/2”,就能很方便的得出結果。

由于此控件只能針對四則運算,對于三角函數等一些函數的處理則不同。以“SIN[#2+1]”為例,首先判定字符串中有字串“SIN”,再提取“[]”中的內容,如果有變量,則先進行變量的替換,然后用控件msscript.ocx計算出“#2+1”的值,最后把文本值轉成浮點數值,用VC自帶的SIN函數運算即可得出結果。

(3)語法分析和錯誤處理

語法的正則表達式的定義如下所示,用正則表達式定義了G代碼能識別的所有關鍵字,及每個關鍵字后的數值的類型,一旦出現不能識別的關鍵字或數值類型與定義不符,如刀號T后跟帶有小數點的數值,則正則表達式判別不能通過,并報錯。

“ *”表示X之前空格可以出現無數次,也可以不出現,即忽略空格。“[X|x]”表示匹配大寫X或小寫x,即忽略大小寫;“?”表示關鍵字X可以不出現,但最多出現1次,超過則不能通過正則判定報語法錯誤。(( -{0,1}\d+)( \.\d+)?)?表示數值可以是一個帶有符號的浮點數或整數。

若能通過上述正則表達式,則提取相關的參數。以X為例:

除用正則表達式評定語法法則外,根據代碼分類,判定指令之間有沒有沖突:

在讀入G代碼時,根據讀入的G代碼功能字(如表2),先分組然后根據同一行G代碼中出現的功能字,是不是在同一組來判定,代碼之間會不會有沖突。

表2 主要G代碼功能分類

4 子程序調用

運行時首先確認是否要調用子程序,若要調用子程序則需要先記下當前執行程序所在的位置及一些相關局部變量等一些斷點的信息,然后跳轉到子程序上;當調用完畢后恢復所保存的相關信息,并回到調用子程序所在位置的下一條指令上(圖3)。

5 分支和循環語句的處理

宏程序中支持的分支語句有 IF[條件為真]THEN,IF[條件為真]GOTOn(行號)。循環主要有WHILE[條件]Don(循環體編號)。條件的判斷,依然采用先前的JAVA的腳本控件msscript.ocx和正則表達式。操作時先用相應的變量值把[]中的變量替換掉,使之成為只有數字和不等式符號的表達式,然后用正則表達式提取[]中的表達式:

而后使用控件msscript.ocx,其支持不等式的判斷。使用方法與前面不等式計算的方法一樣,只是在expression中用不等式表達式即可。為真時返回-1,為假時返回0。流程如圖4所示。

6 宏代碼的執行情況

運用宏程序編寫了一個走橢圓軌跡的代碼:

并在數控平臺上運行,運行情況如圖5所示。

7 結語

對于宏程序的編譯器而言,由于可以進行二次開發,具有很好的前景。本文采用了BOOST庫和JAVA腳本控件制作宏代碼編譯器,可以方便有效地做出帶有分支、循環語句的編譯器,具有較高的效率。

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

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

[3]Andrew Watt.Beginning Regular Expressions.北京:清華大學出版社,2008.

[4]林峰.機床開放式數控系統的研究[D].杭州:浙江工業大學,2004(5):1-3.

[4]易紅.數控技術[M].北京:機械工業出版社,2005.

[6]任玉田,包杰,等.新編機床數控技術[M].北京:北京理工大學出版社,2005.

[7]秦旭,盛亮,廖文和,等.基于組件NC代碼轉換關鍵技術的研究[J].電氣技術與自動化,2004(33):60-64.

主站蜘蛛池模板: 永久免费精品视频| 午夜激情福利视频| 茄子视频毛片免费观看| 毛片网站观看| 91麻豆国产精品91久久久| 欧美国产在线一区| 国产成人高清精品免费软件| 日本www在线视频| 亚洲精品无码人妻无码| 国产精品密蕾丝视频| 日本www色视频| 日本高清在线看免费观看| 88av在线| 麻豆a级片| 激情国产精品一区| 毛片网站在线看| 国产系列在线| 久草视频福利在线观看| 国内精品免费| 成年人午夜免费视频| 国产精品免费久久久久影院无码| 午夜a级毛片| 免费毛片视频| 伊人久久婷婷| 亚洲AV无码久久精品色欲| 久久国产成人精品国产成人亚洲| 欧美天堂在线| 国产JIZzJIzz视频全部免费| 欧美第一页在线| 日韩成人高清无码| 亚洲V日韩V无码一区二区| 国产成人精品一区二区秒拍1o| 91久久天天躁狠狠躁夜夜| 日本尹人综合香蕉在线观看| 91小视频在线播放| 99青青青精品视频在线| 一本色道久久88综合日韩精品| 91无码人妻精品一区| 国产精品女主播| 亚洲天堂伊人| 亚洲无码电影| 最新国产高清在线| 亚洲A∨无码精品午夜在线观看| 国内精品自在欧美一区| 第一页亚洲| 麻豆精品视频在线原创| 青青久视频| 国产福利大秀91| 特级欧美视频aaaaaa| 欧美激情视频一区二区三区免费| 免费毛片网站在线观看| 中文字幕va| 国产精品亚洲αv天堂无码| 欧美色香蕉| 91免费精品国偷自产在线在线| 91色在线视频| 成人一级免费视频| 亚洲中文字幕在线一区播放| 国产成人艳妇AA视频在线| 国产午夜精品一区二区三区软件| 麻豆精品在线播放| 国产97视频在线观看| 激情爆乳一区二区| 91国内视频在线观看| 色综合日本| 国产免费看久久久| 婷婷六月综合网| 日韩精品无码免费专网站| 欧美日韩专区| 亚洲视频四区| 国产一级视频久久| 91香蕉视频下载网站| 亚洲欧美极品| 国产精品一区二区在线播放| 亚洲av片在线免费观看| 欧美日韩亚洲综合在线观看| 久无码久无码av无码| 欧美午夜网站| 久久午夜夜伦鲁鲁片无码免费| 久久亚洲国产视频| 91久久夜色精品国产网站| 欧美日韩激情|