劉曉初,陶建華,劉 華,包佑文,陳志斌,黎福生
(廣州大學(xué)機(jī)械與電氣工程學(xué)院,廣東廣州 510006)
隨著制造技術(shù)的不斷發(fā)展,零件的復(fù)雜程度及其加工要求越來越高,PowerMILL 作為新一代的智能CAM軟件得到了廣泛地應(yīng)用,市場對(duì)優(yōu)秀PowerMILL 工程師的需求量也逐漸增多,同時(shí),對(duì)PowerMILL 工程師的技術(shù)要求越來越高。由于PowerMILL 工程師的培養(yǎng)周期日益增長,而目前在加工領(lǐng)域大量優(yōu)秀的編程工藝僅僅只是記錄下來,并沒有將其作為一種可利用資源得到很好地利用[1]。
因此,本文主要針對(duì)PowerMILL 編程中重復(fù)勞動(dòng)多、工藝參數(shù)設(shè)置對(duì)編程人員依賴性大,且加工質(zhì)量參差不齊等問題,結(jié)合PowerMILL 軟件平臺(tái)記錄編程過程的工藝記錄文件——“宏”,來研究使用“宏”工具記錄工藝信息的規(guī)律,并用宏文件作為工藝信息的載體研究工藝信息的提取等,這為優(yōu)秀工藝信息的存儲(chǔ)管理和再次利用的實(shí)現(xiàn)奠定了基礎(chǔ),不僅方便編程人員經(jīng)驗(yàn)交流,而且為編程初學(xué)者人員快速成長提供一個(gè)很好的平臺(tái)。
PowerMILL 宏文件由文件頭段、參數(shù)設(shè)置段和仿真段三部分組成。PowerMILL 宏文件結(jié)構(gòu)很簡單,且容易讀取,并且,PowerMILL 宏對(duì)斷點(diǎn)不敏感,沒有嚴(yán)格的頭文件格式,在本文中將輸入模型語句定義為文件頭段,這是后面模型庫和工藝數(shù)據(jù)庫建立映射的依據(jù)。PowerMILL 宏文件的信息量均為有效代碼,即僅記錄打開的對(duì)話框和進(jìn)行修改了的參數(shù),故信息冗余量就少。圖1是PowerMILL宏文件的文件結(jié)構(gòu)。
圖1 PowerMILL宏文件結(jié)構(gòu)分析
文本都是由語句構(gòu)成的,但是PowerMILL 的宏文件作為文本文件中的一種,不是一般的自然語言的語句,而是有它自己的記錄方式,即語法。
PowerMILL 中變量的命名分兩大類:一類是單個(gè)詞的,此類用整個(gè)英文單詞的大寫形式,比如TOOL 代表刀具、BLOCK 代表毛坯等等;另一類是組合詞。組合詞又分短組合詞和長組合詞,如果是短組合詞一般都是多個(gè)單詞直接或者通過連接符連接的,如:BLOCKTYPE 代表毛坯類型、TOOLPATH代表刀具路徑、PLUNGE_SIZE代表開始Z 高度等等,長組合詞也是把幾個(gè)單詞寫在一起,但是其中一些單詞會(huì)簡寫,比如:ZMAX 代表Z 方向的最大值、PMLLEADINRAMP表示PowerMILL斜向切入等等。
所有PowerMILL 系統(tǒng)命名的操作名和參數(shù)名都是其關(guān)鍵字,操作的關(guān)鍵字主要是后面所說的動(dòng)詞,如IMPORT、CREATE、FORM 等,表示動(dòng)作的關(guān)鍵字一般都是單個(gè)單詞,表示輸入模型、創(chuàng)建刀具、加工坐標(biāo)系、毛坯等操作,含有這些動(dòng)詞的語句對(duì)應(yīng)的就是GUI 中的對(duì)話框打開操作;參數(shù)名就是PowerMILL 系統(tǒng)按照上面的命名規(guī)則已經(jīng)命名好了,如果要對(duì)PowerMILL 系統(tǒng)進(jìn)行指令級(jí)操作,比如:進(jìn)行二次開發(fā)、重寫宏來達(dá)到預(yù)期的目的等,都需要遵守系統(tǒng)的關(guān)鍵字命名規(guī)則,否則系統(tǒng)會(huì)出現(xiàn)不能識(shí)別的情況。PowerMILL 系統(tǒng)對(duì)命令的大小寫不敏感,比如FORM BLOCK和Form Block及foRm bLock是一樣的[2]。
2.2.1 詞性分析
在本文研究主要把文件中的詞性分為動(dòng)詞和名詞兩種,對(duì)應(yīng)是動(dòng)作和動(dòng)作的承受者,下面分別對(duì)這兩類詞性進(jìn)行介紹。
(1)動(dòng)詞,就是動(dòng)作的描述,每個(gè)系統(tǒng)都有自己的動(dòng)作描述詞,動(dòng)詞的作用是創(chuàng)建、關(guān)閉對(duì)話框、創(chuàng)建刀具、毛坯、加工策略等實(shí)體、顯示或者修改參數(shù)等。比如:PowerMILL 宏文件中的動(dòng)詞有IMPORT、CREATE、FORM、SIMULATE、EDIT等。
(2)名詞,就是動(dòng)作的承擔(dān)者,包括實(shí)體和參數(shù)名。比如PowerMILL 宏文件中“Frate”表示“切削進(jìn)給率”等。
2.2.2 語法分析
在PowerMILL 中用IMPORT/CREATE/FORM/SIMULATE 來控制實(shí)體的創(chuàng)建,在GUI 界面的體現(xiàn)就是對(duì)話框的控制,其中IMPORT和SIMULATE是單獨(dú)使用的,它們?cè)诤晡募霈F(xiàn)的頻率也不高,CREATE 和FORM 被用來創(chuàng)建大部分實(shí)體,它們有固定的語法格式,每個(gè)動(dòng)詞應(yīng)用格式具體如下:
(1)IMPORT
(2)SIMULATE
SIMULATE 是加工仿真命令,對(duì)本論文的研究的工藝信息提取沒有直接的聯(lián)系,而且設(shè)置也比較簡單,所以都用下面通用格式,就是在仿真各個(gè)具體的加工是要把TOOLPATH替換成對(duì)應(yīng)的刀具路徑名。本論文在PowerMILL 上加工仿真時(shí)采用下面通用格式:
CREATE 實(shí)體類名; 類型或者布爾值FORM實(shí)體類名或者其簡稱。
(3)CREATE
CREATE 的具體實(shí)例參考典型對(duì)話框格式中刀具對(duì)話框的建立,其中要注意的是CREATE 和ACCEPT是成對(duì)出現(xiàn)的。
FORM 語法格式比較簡單,規(guī)律性也比較強(qiáng),和CREATE 一樣都是和ACCEPT 成對(duì)使用,F(xiàn)ORM 還可以嵌套使用,嵌套使用的時(shí)候是和最近的ACCEPT 配對(duì)使用。FORM 的具體實(shí)例同樣可以參考典型對(duì)話框中毛坯對(duì)話框的創(chuàng)建。
PowerMILL 中還有一類非常重要,也是出現(xiàn)概率比較大的動(dòng)詞,這類動(dòng)詞就是用來改變參數(shù)值的,其中用的最多的是EDIT,另外在修改名稱(刀具、加工策略、坐標(biāo)名等)時(shí)用的RENAME。這類動(dòng)詞用法比較簡單,語法也比較簡單,就是前面闡述的采用動(dòng)詞+名詞(操作對(duì)象)+參數(shù)值(修改后)/操作的記錄方式。
本文研究的包含在工藝記錄文件中的工藝信息沒有包括數(shù)控加工工藝中的所有部分,文件中只記錄了零件的毛坯信息、工件坐標(biāo)系信息、加工工序信息、機(jī)床和工藝裝備的選擇、切削用量的選擇信息等。圖2 是主流CAM 工藝記錄文件記錄的工藝信息的總體結(jié)構(gòu)圖。
本文針對(duì)這種特定的文本文檔,采用基于自然語言理解的信息提取技術(shù)的思路和正則語言形式規(guī)則[3],兩者的結(jié)合從而達(dá)到信息提取的目的。
PowerMILL 宏文件在記錄編程過程時(shí)采用的是各個(gè)實(shí)體獨(dú)立記錄并且有對(duì)應(yīng)的固定格式,本文PowerMILL 宏文件信息提取模塊就是基于這種規(guī)律來設(shè)計(jì)的,在分析宏文件對(duì)不同的實(shí)體采取對(duì)應(yīng)的信息解析模塊,其中對(duì)條件的判定都采用正則表達(dá)式來表示。
對(duì)PowerMILL宏文件解析主要有如下步驟。
(1)文件讀入內(nèi)存。在VB中用Line Input#語句把宏文件按行讀入內(nèi)存中,存儲(chǔ)在字符串Str中。
(2)字符串拆分。用Split()函數(shù)把字符串Str以vbCrLf分割成以行為單位的字符串,存儲(chǔ)在字符串?dāng)?shù)組MyArr()中,并在拆分后通過總行數(shù)K (K=UBounkMyArr +1)給 動(dòng) 態(tài) 數(shù) 組MyArr(K)重新定義,為信息提取確定上限和下限值并分配內(nèi)存。
(3)對(duì)數(shù)組MyArr()各元素進(jìn)行分析。用循環(huán)語句對(duì)數(shù)組MyArr(K)從MyArr(0)到My-Arr(K-1)逐個(gè)分析,循環(huán)判定語句用正則表達(dá):^(IMPORT|CREATE|FORM)S(MODEL|WORKPLANE | FEEDRATE | PMLLEADINRAMP | LEADLINK|TEMPLATE),對(duì)MyArr(0)的前兩個(gè)字符匹配,用匹配的內(nèi)容作為Select case語句的case選擇依據(jù),從而進(jìn)入相應(yīng)模塊處理。在相應(yīng)模塊處理每一個(gè)MyArr()元素都要判定是否滿足結(jié)束相應(yīng)模塊的條件,如不滿足則在相應(yīng)模塊繼續(xù)處理MyArr()數(shù)組的下一個(gè)元素,直到滿足條件則跳出循環(huán),只有跳出循環(huán)選擇下一個(gè)元素的時(shí)候才要判定是否完成所有元素的解析,如果沒結(jié)束則繼續(xù)進(jìn)入循環(huán),直到分析完所有的元素。
PowerMILL 宏文件信息提取模塊的主程序如下:
圖2 主流CAM工藝記錄文件中工藝信息
其中包括多個(gè)子程序的調(diào)用。圖3 是對(duì)PowerMILL宏文件信息提取的流程圖。
在解析PowerMILL 宏文件的時(shí)候把文件按記錄規(guī)律分為:模型輸入模塊、刀具模塊、毛坯模塊、用戶坐標(biāo)模塊、切入切出設(shè)置模塊、加工策略模塊、進(jìn)給設(shè)置模塊等,這里介紹兩類比較典型的模塊解析的過程。一類是一般的單個(gè)實(shí)體的模塊,另一類是實(shí)體中還有嵌套實(shí)體的模塊。
按上面模塊劃分方式,PowerMILL 宏文件中大部分是像刀具模塊、毛坯模塊等單個(gè)實(shí)體記錄的模塊,除了這些單個(gè)實(shí)體的模塊還有一種是一個(gè)模塊中包含多個(gè)實(shí)體的建立,在記錄的形式上表現(xiàn)為嵌套記錄,對(duì)于這些不同的形式在建立信息提取機(jī)制的時(shí)候一定要具體且準(zhǔn)確地告訴計(jì)算機(jī)該做什么操作。
3.2.1 單個(gè)實(shí)體模塊處理——刀具解析模塊
下面是在PowerMILL 中建立一把端銑刀的宏文件記錄記錄,具體記錄文本如下:
其中包括刀具類型、刀具名稱、刀具直徑、刀具長度及刀刃數(shù)等信息,下面是這段宏文件的具體解析過程。
①在文件被讀入到內(nèi)存的MyArr(K-1)數(shù)組的時(shí)候,打開存儲(chǔ)工藝信息的工藝數(shù)據(jù)庫,用不同變量定義打開數(shù)據(jù)庫的參數(shù)映射表和其他用于儲(chǔ)存工藝信息的表。
圖3 PowerMILL宏文件的信息提取流程圖
②當(dāng)通過Select Case 進(jìn)入刀具解析模塊的時(shí)候,用AddNew在刀具資源表中自動(dòng)添加一條記錄。
③假設(shè)此時(shí)存儲(chǔ)第一行的元素是MyArr(m),利用正則表達(dá)式查找“;”后面的字母,到第一個(gè)空格結(jié)束部分的字母,去除空格后的字母存到字符串S1中。
④查找變量映射表的“在PowerMILL 中的名稱字段(NameInPowerMILL)”和S1中內(nèi)容相同的記錄,返回該記錄的“在數(shù)據(jù)庫的名稱(NameInDB)”字段的內(nèi)容,存放在字符串S2中。
⑤在刀具資源表中找到和S2中字符串相同的字段,把S1 的值添加到該字段的最新空記錄中;然后數(shù)組索引自動(dòng)加一,跳到存儲(chǔ)下一行的數(shù)組元素。
在TOOL ACCEPT結(jié)束之前這些數(shù)組元素的處理都類似,主要思想是:先用正則表達(dá)式判斷第一個(gè)單詞,也就是動(dòng)詞,如果動(dòng)詞是RENAME,則把RENAME放入第③中的S1中,然后重復(fù)第④步,第⑤存入數(shù)據(jù)庫的是第二個(gè)引號(hào)里的數(shù)值,提取后先存在字符串S3中,即刀具名稱;如果動(dòng)詞是EDIT,把第一個(gè)(”)和第二個(gè)(”)之間除引號(hào)相鄰空格外的字符存入S1中,然后執(zhí)行第④步,在第⑤步存入數(shù)據(jù)庫的值是S1字符后的除去“”和空格外的數(shù)值或者字符串。在寫入數(shù)據(jù)庫后,數(shù)組索引加1,這時(shí)先對(duì)字符串做判斷,如果(!TOOL ACCEPT)成立則重復(fù)上面的操作,否則跳出循環(huán)。
在該例中用到的正則表達(dá)式如下:
3.2.2 嵌套實(shí)體的模塊
含有嵌套實(shí)體的模塊,比如在切入切出模塊中,包括切入切出連接和斜向選擇的設(shè)置,其記錄格式如下:
這類實(shí)體的解析和單實(shí)體的處理區(qū)別不大,當(dāng)在模塊內(nèi)碰到FORM等模塊分類的動(dòng)詞的時(shí)候按一般的情況處理,不需要打開新的模塊處理程序。
本文從PowerMILL 入手,研究了其記錄工藝的文件——“宏”的結(jié)構(gòu)、語法以及相關(guān)的工藝信息等,并在此基礎(chǔ)上采用基于自然語言理解的信息提取技術(shù)的思路和正則語言形式規(guī)則兩者結(jié)合的方法對(duì)“宏”文件中的工藝信息進(jìn)行提取,因此,這對(duì)于工藝數(shù)據(jù)的存儲(chǔ)管理和標(biāo)準(zhǔn)化,以及自動(dòng)化設(shè)置奠定了基礎(chǔ),并在此基礎(chǔ)上實(shí)現(xiàn)優(yōu)秀工藝信息的重用。
[1]陶建華,楊曉琴,劉曉初,等.基于工藝特征識(shí)別技術(shù)的數(shù)控自動(dòng)編程方法研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2011,32(10):3548-3552.
[2]PowerMILL 2012 macro Programming Guide R4 [Z].2011.
[3]宋艷娟.基于XML 的HTML 和PDF 信息抽取技術(shù)的研究[D].福州:福州大學(xué),2005.
[4]何雪明,吳曉光,常興.數(shù)控技術(shù)[M].武漢:華中科技大學(xué)出版社,2006.