□ 何彥虎 □ 錢振華 □ 朱建偉 □ 問朋朋
湖州職業(yè)技術(shù)學(xué)院機電分院 浙江湖州 313000
基于CLIPS的數(shù)控機床故障診斷專家系統(tǒng)研究*
□ 何彥虎 □ 錢振華 □ 朱建偉 □ 問朋朋
湖州職業(yè)技術(shù)學(xué)院機電分院 浙江湖州 313000
針對數(shù)控機床的故障診斷,提出了基于專家系統(tǒng)的智能故障診斷方法,闡述了其實現(xiàn)的基本原理、專家系統(tǒng)的基本組成和開發(fā)步驟。對目前CLIPS與高級語言VC++的混合編程進行了優(yōu)化,并對混合編程的方法進行了介紹。敘述了CLIPS與VC++基于文本平臺交互的基本原理與實現(xiàn)方法,該方法彌補了傳統(tǒng)的基于VC++開發(fā)環(huán)境的不足,大大提高了開發(fā)速度與質(zhì)量。最后,對基于FAT的數(shù)控機床故障分析進行說明,并對開發(fā)過程進行了介紹,以實例形式說明了專家系統(tǒng)開發(fā)的過程,對其它基于CLIPS的專家系統(tǒng)開發(fā)具有參考價值。
推理 故障診斷 專家系統(tǒng) CLIPS
數(shù)控機床是制造業(yè)最常用的設(shè)備,它集機、電、液于一體,復(fù)雜性高,維修難度大,對維修人員的要求極高,即使一個經(jīng)驗豐富的維修師,有時也需要比較長的時間去維修,因此智能化的維修方法近年來得到廣泛的研究和應(yīng)用。智能化維修理論主要有:基于模糊集的維修方法,基于神經(jīng)網(wǎng)絡(luò)的維修方法,還有比較常用的基于專家系統(tǒng)的維修方法。專家系統(tǒng)可以將專家的維修思想用智能化語言實現(xiàn),維修的時候,只需要查詢專家系統(tǒng),便可以得到比較滿意的維修方法,更重要的是專家系統(tǒng)可以不斷地再學(xué)習和完善。目前已經(jīng)有較多的專家系統(tǒng)得到成功應(yīng)用,其編程一般采用智能化設(shè)計語言完成。CLIPS是繼Prolog之后被廣泛使用的人工智能語言,它是用C語言實現(xiàn)的,繼承了Prolog語言的優(yōu)點,并進行了改進,因效率高,可移植性強而得到廣泛的應(yīng)用[5]。CLIPS是產(chǎn)生式專家系統(tǒng)開發(fā)工具,結(jié)構(gòu)簡潔,采用模塊化編程,與C、VB、Pascal等語言的兼容性強。VC++不擅長邏輯推理,但在人機界面及數(shù)據(jù)庫操控方面優(yōu)勢明顯,而CLIPS在邏輯推理方面功能強大。因此,二者的混合編程能產(chǎn)生良好的效果。文獻[1]采用Define Function函數(shù)實現(xiàn)二者的交互,文獻[2]采用故障樹的方法分析故障,文獻[3]采用了實體的故障分析方法,在交互模式上采用了函數(shù)指針方式,文獻[4]采用了基于VC++環(huán)境的交互方式。
CLIPS的優(yōu)點在于良好的可移植性和高效模式匹配算法,其構(gòu)成的專家系統(tǒng)包括:規(guī)則(Defrule)、事實(Deffacts)、推理(Agenda),如圖2所示。
事實由關(guān)系名(Relation Name)及槽值(Slot)組成,表示已知的信息。事實一般先用自定義模板定義事實結(jié)構(gòu),形式如下:
在推理時,CLIPS會把所有的事實添加到存儲器中,并提供了添加事實庫指令 (Assert)、刪除事實(Retract)指令等多個關(guān)于事實的操作指令。
規(guī)則是推理的相關(guān)知識,其格式如下:
CLIPS的推理循環(huán)可分為4個階段:①模式匹配,按照算法掃描知識庫中所有規(guī)則,把規(guī)則的前件與當前事實相匹配;②沖突消解,當多條規(guī)則同時被匹配時,根據(jù)預(yù)先確定的沖突消解策略,確定觸發(fā)規(guī)則;③激活規(guī)則,調(diào)用匹配所觸發(fā)規(guī)則的所有事實;④動作,CLIPS推理機重復(fù)上述循環(huán),不斷地掃描規(guī)則的模式,并把匹配成功的規(guī)則激活,放入議程(Agenda)之中。
依據(jù)專家系統(tǒng)原理,故障診斷專家系統(tǒng)主要組成有:事實庫、推理機、知識庫、解釋機構(gòu)及人機界面等部分,系統(tǒng)的總體結(jié)構(gòu)如圖1所示。
領(lǐng)域?qū)<野严嚓P(guān)的知識輸入到專家系統(tǒng)中,即以規(guī)則表示的知識表示出來,則專家系統(tǒng)的推理過程可以模擬專家的推理過程,進而滿足用戶的需求。數(shù)據(jù)庫也稱“黑板”,主要用來存儲相關(guān)領(lǐng)域的事實、數(shù)據(jù)等信息。推理機是實現(xiàn)專家系統(tǒng)推理的一組程序,是根據(jù)數(shù)據(jù)庫的內(nèi)容,按照某種推理策略,運用知識庫的知識完成推理,是專家系統(tǒng)的主要任務(wù),推理方法有正向推理和反向推理,策略常用廣度優(yōu)先和深度優(yōu)先策略。
▲圖2 專家系統(tǒng)結(jié)構(gòu)
目前CLIPS版本仍是基于命令模式,人機界面主要由VC++完成,這就要求二者之間進行交互。CLIPS與VC++的交互模式基本有兩種:基于VC++環(huán)境和基于CLIPS環(huán)境兩種:前者的基本思路是,CLIPS只實現(xiàn)推理功能,其它功能如讀(Read)、寫(Printout)、人機界面等功能全部由VC++實現(xiàn),CLIPS類似一個函數(shù),被高級語言調(diào)用,實現(xiàn)其推理功能,這種方式目前使用最多,這種方式的最大不足是CLIPS的許多功能由VC++完成,即沒有利用好CLIPS的強大功能,也增加了VC++開發(fā)的工作量,另外,調(diào)試必須在VC++環(huán)境下,速度較慢,而且也得不到CLIPS的調(diào)試信息;后者的基本思路是,由VC++實現(xiàn)其人機界面功能,其它的功能由CLIPS實現(xiàn),調(diào)試在CLIPS環(huán)境下,特別適合程序的調(diào)試,因為調(diào)試時系統(tǒng)會提供大量的調(diào)試信息,速度快,比較方便,而且與VC++的版本關(guān)系不大,方便移植,但是必須要解決一個難題,就是如何改進CLIPS編程,以便讓VC++識別。這種交互的基本組成構(gòu)架如圖3所示,筆者采用后者完成。
▲圖3 CLIPS與VC++交互示意圖
這種交互的要求是在CLIPS環(huán)境下調(diào)試的程序不改變或很少改變后便能被VC++識別和執(zhí)行,要實現(xiàn)這個要求,關(guān)鍵是解決Printout和Read語句的處理。
3.1 CLIPS與VC++交互環(huán)境的構(gòu)建
要實現(xiàn)二者的交互,首先需要一個clips.dll的動態(tài)庫文件和包裝類文件CLIPWrap,二者在Clips的網(wǎng)站上可以下載。為了讓VC++可以調(diào)用CLIPS中的類,需要把clipwarp文件夾中的dynclips.h和dyaload.h兩個頭文件添加到VC++的include文件夾下,并把clips.dll和Clips.lib、rsvarcol.cpp和Rsvarcol.h放到VC++的工程目錄下,以便讓VC++搜索到,這樣,工作環(huán)境就建立了起來,VC++可以調(diào)用clips的所有函數(shù)了。
3.2 用printout語句實現(xiàn)交互的方向控制
在Clips下,(printout f“”)表示將信息顯示到終端設(shè)備上 (默認是顯示器),如要求在VC++的edit編輯框中顯示信息,則使用下述語句:
3.3 read語句
因為在CLIPS環(huán)境下read語句默認的是從顯示終端上獲取數(shù)據(jù),而VC++在執(zhí)行這條語句時,并不是從顯示器終端上獲取數(shù)據(jù),所以不處理就使用將會造成死機或不能用。許多開發(fā)者不得不將該語句轉(zhuǎn)換成相同功能的高級語言來實現(xiàn),使程序結(jié)構(gòu)變差。利用下面的語句將會很好地解決這個問題,CLIPS從InFile. txt文件中讀數(shù),而VC++向該文件中寫數(shù),InFile.txt是數(shù)據(jù)交換的緩沖區(qū)。
數(shù)控機床由機床本體、伺服系統(tǒng)、主軸伺服系統(tǒng)、檢測系統(tǒng)、CNC系統(tǒng)、液壓潤滑等組成,是典型的機電一體化產(chǎn)品,其故障類型多,維修復(fù)雜。要實現(xiàn)專家系統(tǒng)的故障診斷,首先要建立故障的分析方法,目前最常用的是故障樹分析法 (FTA),F(xiàn)TA是20世紀60年代發(fā)展起來的大型復(fù)雜系統(tǒng)的分析方法,故障樹能比較直觀地表達故障,可靠性和安全性好。實現(xiàn)故障推理,一般要進行規(guī)則庫和事實庫的定義和編程、定義故障樹、初步調(diào)試、人機界面的編程、聯(lián)調(diào)等過程。
4.1 知識表示
專家系統(tǒng)的知識表示方法很多,為了便于推理,筆者采用了如下定義方法:
(deftemplate N (slot Fnum)(slot name)(slot type)(slot question)(slot yesN)(slot noN)(slot answer)(slot CF)(slot weight)(slot threshold));Fnum是故障編號,name為故障結(jié)點名,yesN表示可信度為1的結(jié)點。cf為可信度,weight為權(quán)重,threshold為閾值,當故障比較模糊的時候會用可信度表示。
4.2 事實定義
事實定義可以用deffact定義。
(N(fnum 1)(name root)(type decision)(question "跳過斷路器接入電源,工作是否正常?")(yesN node1)(noN node2)(answer nil)(CF 0.7)(weight 0.2)(threshold nil))。
4.3 VC++側(cè)編程
首先要完成初始化工作,調(diào)用類OnInitDialog()實現(xiàn),主要完成初始化、加載知識庫等動作,關(guān)鍵語句如下所示:
推理是專家系統(tǒng)按照知識庫的規(guī)則,從事實庫中提取事實,完成推理,關(guān)鍵的語句是:
加載事實是加載事實庫,即將事實文件打開,主要語句是:
4.4 調(diào)試
調(diào)試工作一般是在CLIPS環(huán)境下進行,由此系統(tǒng)運行速度很快,而且錯誤提示清楚,提高了開發(fā)速度,調(diào)試界面如圖4所示。
▲圖4 調(diào)試界面
4.5 建立數(shù)控機床故障診斷樹
故障樹由頂事件、中間事件、底事件組成,中間事件是頂事件的故障現(xiàn)象,底事件是中間事件的故障發(fā)生原因。為說明專家系統(tǒng)的構(gòu)建,現(xiàn)從一個實例進行說明故障樹的CLIPS表示方法,如圖5所示。
▲圖5 推理關(guān)系示意圖
各節(jié)點代表的含義:
A:過電流報警(用故障代號fnum表示)。
B:先關(guān)斷電源,十分鐘
后合閘,斷路器是否跳閘。
C:請檢查速度控制板二極管模塊Ds是否短路。
E:模塊損壞更換新模塊。
F:無故障,可以繼續(xù)工作。
D:請檢查DS部件連接的電容是否短路,測試正反向電阻。
I:該電容損壞,請更換新電容。
H:跳過斷路器接入電源,工作是否正常。
K:空氣斷路器故障,更換新的斷路器。
M:故障原因是伺服單元不良。
以伺服過電流報警為例進行推理過程說明,伺服過電流故障的原因主要有:過載、功率模塊損壞、電容失效、伺服單元故障等,推理開始要求選擇故障現(xiàn)象,如圖6所示。然后專家系統(tǒng)會向用戶詢問若干問題,如“先關(guān)斷電源,十分鐘后合閘,斷路器是否跳閘?”,用戶根據(jù)提示選擇是或否,如圖7所示。最后推導(dǎo)出下一個問題或結(jié)論,如圖8所示。
▲圖6 故障選擇界面
▲圖7 故障推理界面
▲圖8 推理結(jié)論畫面
闡述了基于文本平臺的CLIPS與VC++的交互技術(shù),彌補了傳統(tǒng)的基于VC++環(huán)境開發(fā)方法的不足,解決了開發(fā)過程中遇到的混合編程調(diào)試難問題,基于FAT的故障診斷分析方法,對數(shù)控機床專家系統(tǒng)開發(fā)具有較好的適應(yīng)性,對其它基于CLIPS的專家系統(tǒng)的開發(fā)具有重要的參考價值。
[1]鄧海平,何玉林,杜靜.CLIPS嵌入VC++技術(shù)的實現(xiàn)與應(yīng)用[J].計算機工程與應(yīng)用,2005(15):88-91.
[2]羅天洪,楊彩霞,孫冬梅.基于故障樹的汽車起重機液壓故障診斷專家系統(tǒng)[J].機械科學(xué)與技術(shù),2013(4):32.
[3]寧志強,陶元芳,楊家威.基于CLI PS轎機起升機構(gòu)設(shè)計型專家系統(tǒng)[J].中國工程機械學(xué)報,2013(5):425-430.
[4]寧志強,陶元芳,劉曉蓮.CLI PS數(shù)值應(yīng)用與VC++的交互[J].計算機技術(shù)與發(fā)展,2013(4):226-229.
[5]沈大偉,侶莊誠,王學(xué)雷.基于CUPS的故障診斷專家系統(tǒng)開發(fā)[J].化工自動化及儀表,2012,39(4):43-44.
[6]燕繼明,石榮波.數(shù)控機床維修專家系統(tǒng)中的知識表示[J].機床與液壓,2013,41(3):155-158.
[7]張治杰.測控裝備故障診斷專家系統(tǒng)的設(shè)計與實現(xiàn)[J].艦船電子工程,2012(6):22-24.
[8]溫國誼,查光東,張翔.基于CLIPS的某型飛機故障診斷專家系統(tǒng)的設(shè)計與實現(xiàn) [J].中南大學(xué)學(xué)報 (自然科學(xué)版)2013,44(7):157-160.
[9]劉治國,蔡增杰,穆志韜,等.基于CLIPS的飛機液壓系統(tǒng)故障診斷專家系統(tǒng)構(gòu)建研究[J].海軍航空工程學(xué)院學(xué)報,2011,26(1):46-48.
(編輯 丁 罡)
TP182
A
1000-4998(2015)09-0062-04
*浙江省教育廳科研資助項目(編號:Y201327877)
2015年3月