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