□ 何彥虎 □ 錢振華 □ 朱建偉 □ 問朋朋
湖州職業技術學院機電分院 浙江湖州 313000
基于CLIPS的數控機床故障診斷專家系統研究*
□ 何彥虎 □ 錢振華 □ 朱建偉 □ 問朋朋
湖州職業技術學院機電分院 浙江湖州 313000
針對數控機床的故障診斷,提出了基于專家系統的智能故障診斷方法,闡述了其實現的基本原理、專家系統的基本組成和開發步驟。對目前CLIPS與高級語言VC++的混合編程進行了優化,并對混合編程的方法進行了介紹。敘述了CLIPS與VC++基于文本平臺交互的基本原理與實現方法,該方法彌補了傳統的基于VC++開發環境的不足,大大提高了開發速度與質量。最后,對基于FAT的數控機床故障分析進行說明,并對開發過程進行了介紹,以實例形式說明了專家系統開發的過程,對其它基于CLIPS的專家系統開發具有參考價值。
推理 故障診斷 專家系統 CLIPS
數控機床是制造業最常用的設備,它集機、電、液于一體,復雜性高,維修難度大,對維修人員的要求極高,即使一個經驗豐富的維修師,有時也需要比較長的時間去維修,因此智能化的維修方法近年來得到廣泛的研究和應用。智能化維修理論主要有:基于模糊集的維修方法,基于神經網絡的維修方法,還有比較常用的基于專家系統的維修方法。專家系統可以將專家的維修思想用智能化語言實現,維修的時候,只需要查詢專家系統,便可以得到比較滿意的維修方法,更重要的是專家系統可以不斷地再學習和完善。目前已經有較多的專家系統得到成功應用,其編程一般采用智能化設計語言完成。CLIPS是繼Prolog之后被廣泛使用的人工智能語言,它是用C語言實現的,繼承了Prolog語言的優點,并進行了改進,因效率高,可移植性強而得到廣泛的應用[5]。CLIPS是產生式專家系統開發工具,結構簡潔,采用模塊化編程,與C、VB、Pascal等語言的兼容性強。VC++不擅長邏輯推理,但在人機界面及數據庫操控方面優勢明顯,而CLIPS在邏輯推理方面功能強大。因此,二者的混合編程能產生良好的效果。文獻[1]采用Define Function函數實現二者的交互,文獻[2]采用故障樹的方法分析故障,文獻[3]采用了實體的故障分析方法,在交互模式上采用了函數指針方式,文獻[4]采用了基于VC++環境的交互方式。
CLIPS的優點在于良好的可移植性和高效模式匹配算法,其構成的專家系統包括:規則(Defrule)、事實(Deffacts)、推理(Agenda),如圖2所示。
事實由關系名(Relation Name)及槽值(Slot)組成,表示已知的信息。事實一般先用自定義模板定義事實結構,形式如下:

在推理時,CLIPS會把所有的事實添加到存儲器中,并提供了添加事實庫指令 (Assert)、刪除事實(Retract)指令等多個關于事實的操作指令。
規則是推理的相關知識,其格式如下:

CLIPS的推理循環可分為4個階段:①模式匹配,按照算法掃描知識庫中所有規則,把規則的前件與當前事實相匹配;②沖突消解,當多條規則同時被匹配時,根據預先確定的沖突消解策略,確定觸發規則;③激活規則,調用匹配所觸發規則的所有事實;④動作,CLIPS推理機重復上述循環,不斷地掃描規則的模式,并把匹配成功的規則激活,放入議程(Agenda)之中。
依據專家系統原理,故障診斷專家系統主要組成有:事實庫、推理機、知識庫、解釋機構及人機界面等部分,系統的總體結構如圖1所示。
領域專家把相關的知識輸入到專家系統中,即以規則表示的知識表示出來,則專家系統的推理過程可以模擬專家的推理過程,進而滿足用戶的需求。數據庫也稱“黑板”,主要用來存儲相關領域的事實、數據等信息。推理機是實現專家系統推理的一組程序,是根據數據庫的內容,按照某種推理策略,運用知識庫的知識完成推理,是專家系統的主要任務,推理方法有正向推理和反向推理,策略常用廣度優先和深度優先策略。

▲圖2 專家系統結構
目前CLIPS版本仍是基于命令模式,人機界面主要由VC++完成,這就要求二者之間進行交互。CLIPS與VC++的交互模式基本有兩種:基于VC++環境和基于CLIPS環境兩種:前者的基本思路是,CLIPS只實現推理功能,其它功能如讀(Read)、寫(Printout)、人機界面等功能全部由VC++實現,CLIPS類似一個函數,被高級語言調用,實現其推理功能,這種方式目前使用最多,這種方式的最大不足是CLIPS的許多功能由VC++完成,即沒有利用好CLIPS的強大功能,也增加了VC++開發的工作量,另外,調試必須在VC++環境下,速度較慢,而且也得不到CLIPS的調試信息;后者的基本思路是,由VC++實現其人機界面功能,其它的功能由CLIPS實現,調試在CLIPS環境下,特別適合程序的調試,因為調試時系統會提供大量的調試信息,速度快,比較方便,而且與VC++的版本關系不大,方便移植,但是必須要解決一個難題,就是如何改進CLIPS編程,以便讓VC++識別。這種交互的基本組成構架如圖3所示,筆者采用后者完成。

▲圖3 CLIPS與VC++交互示意圖
這種交互的要求是在CLIPS環境下調試的程序不改變或很少改變后便能被VC++識別和執行,要實現這個要求,關鍵是解決Printout和Read語句的處理。
3.1 CLIPS與VC++交互環境的構建
要實現二者的交互,首先需要一個clips.dll的動態庫文件和包裝類文件CLIPWrap,二者在Clips的網站上可以下載。為了讓VC++可以調用CLIPS中的類,需要把clipwarp文件夾中的dynclips.h和dyaload.h兩個頭文件添加到VC++的include文件夾下,并把clips.dll和Clips.lib、rsvarcol.cpp和Rsvarcol.h放到VC++的工程目錄下,以便讓VC++搜索到,這樣,工作環境就建立了起來,VC++可以調用clips的所有函數了。
3.2 用printout語句實現交互的方向控制
在Clips下,(printout f“”)表示將信息顯示到終端設備上 (默認是顯示器),如要求在VC++的edit編輯框中顯示信息,則使用下述語句:


3.3 read語句
因為在CLIPS環境下read語句默認的是從顯示終端上獲取數據,而VC++在執行這條語句時,并不是從顯示器終端上獲取數據,所以不處理就使用將會造成死機或不能用。許多開發者不得不將該語句轉換成相同功能的高級語言來實現,使程序結構變差。利用下面的語句將會很好地解決這個問題,CLIPS從InFile. txt文件中讀數,而VC++向該文件中寫數,InFile.txt是數據交換的緩沖區。

數控機床由機床本體、伺服系統、主軸伺服系統、檢測系統、CNC系統、液壓潤滑等組成,是典型的機電一體化產品,其故障類型多,維修復雜。要實現專家系統的故障診斷,首先要建立故障的分析方法,目前最常用的是故障樹分析法 (FTA),FTA是20世紀60年代發展起來的大型復雜系統的分析方法,故障樹能比較直觀地表達故障,可靠性和安全性好。實現故障推理,一般要進行規則庫和事實庫的定義和編程、定義故障樹、初步調試、人機界面的編程、聯調等過程。
4.1 知識表示
專家系統的知識表示方法很多,為了便于推理,筆者采用了如下定義方法:
(deftemplate N (slot Fnum)(slot name)(slot type)(slot question)(slot yesN)(slot noN)(slot answer)(slot CF)(slot weight)(slot threshold));Fnum是故障編號,name為故障結點名,yesN表示可信度為1的結點。cf為可信度,weight為權重,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++側編程
首先要完成初始化工作,調用類OnInitDialog()實現,主要完成初始化、加載知識庫等動作,關鍵語句如下所示:

推理是專家系統按照知識庫的規則,從事實庫中提取事實,完成推理,關鍵的語句是:

加載事實是加載事實庫,即將事實文件打開,主要語句是:

4.4 調試
調試工作一般是在CLIPS環境下進行,由此系統運行速度很快,而且錯誤提示清楚,提高了開發速度,調試界面如圖4所示。

▲圖4 調試界面
4.5 建立數控機床故障診斷樹
故障樹由頂事件、中間事件、底事件組成,中間事件是頂事件的故障現象,底事件是中間事件的故障發生原因。為說明專家系統的構建,現從一個實例進行說明故障樹的CLIPS表示方法,如圖5所示。

▲圖5 推理關系示意圖
各節點代表的含義:
A:過電流報警(用故障代號fnum表示)。
B:先關斷電源,十分鐘
后合閘,斷路器是否跳閘。
C:請檢查速度控制板二極管模塊Ds是否短路。
E:模塊損壞更換新模塊。
F:無故障,可以繼續工作。
D:請檢查DS部件連接的電容是否短路,測試正反向電阻。
I:該電容損壞,請更換新電容。
H:跳過斷路器接入電源,工作是否正常。
K:空氣斷路器故障,更換新的斷路器。
M:故障原因是伺服單元不良。
以伺服過電流報警為例進行推理過程說明,伺服過電流故障的原因主要有:過載、功率模塊損壞、電容失效、伺服單元故障等,推理開始要求選擇故障現象,如圖6所示。然后專家系統會向用戶詢問若干問題,如“先關斷電源,十分鐘后合閘,斷路器是否跳閘?”,用戶根據提示選擇是或否,如圖7所示。最后推導出下一個問題或結論,如圖8所示。

▲圖6 故障選擇界面

▲圖7 故障推理界面

▲圖8 推理結論畫面
闡述了基于文本平臺的CLIPS與VC++的交互技術,彌補了傳統的基于VC++環境開發方法的不足,解決了開發過程中遇到的混合編程調試難問題,基于FAT的故障診斷分析方法,對數控機床專家系統開發具有較好的適應性,對其它基于CLIPS的專家系統的開發具有重要的參考價值。
[1]鄧海平,何玉林,杜靜.CLIPS嵌入VC++技術的實現與應用[J].計算機工程與應用,2005(15):88-91.
[2]羅天洪,楊彩霞,孫冬梅.基于故障樹的汽車起重機液壓故障診斷專家系統[J].機械科學與技術,2013(4):32.
[3]寧志強,陶元芳,楊家威.基于CLI PS轎機起升機構設計型專家系統[J].中國工程機械學報,2013(5):425-430.
[4]寧志強,陶元芳,劉曉蓮.CLI PS數值應用與VC++的交互[J].計算機技術與發展,2013(4):226-229.
[5]沈大偉,侶莊誠,王學雷.基于CUPS的故障診斷專家系統開發[J].化工自動化及儀表,2012,39(4):43-44.
[6]燕繼明,石榮波.數控機床維修專家系統中的知識表示[J].機床與液壓,2013,41(3):155-158.
[7]張治杰.測控裝備故障診斷專家系統的設計與實現[J].艦船電子工程,2012(6):22-24.
[8]溫國誼,查光東,張翔.基于CLIPS的某型飛機故障診斷專家系統的設計與實現 [J].中南大學學報 (自然科學版)2013,44(7):157-160.
[9]劉治國,蔡增杰,穆志韜,等.基于CLIPS的飛機液壓系統故障診斷專家系統構建研究[J].海軍航空工程學院學報,2011,26(1):46-48.
(編輯 丁 罡)
TP182
A
1000-4998(2015)09-0062-04
*浙江省教育廳科研資助項目(編號:Y201327877)
2015年3月