故障診斷專家系統(tǒng)是診斷領域引人注目的發(fā)展方向之一, 也是研究最多,、應用最廣的一類智能診斷技術,主要用于那些沒有精確數(shù)學模型或很難建立數(shù)學模型的復雜系統(tǒng),。大致經(jīng)歷了兩個發(fā)展階段, 即基于淺知識的第一代故障診斷專家系統(tǒng)和基于深知識的第二代故障診斷專家系統(tǒng)?;跍\知識( 人類專家的經(jīng)驗知識)的故障診斷系統(tǒng)是以領域?qū)<液筒僮髡叩膯l(fā)性經(jīng)驗知識為核心, 通過演繹推理或產(chǎn)生式推理來獲取診斷結(jié)果,?;谏钪R( 診斷對象的模型知識) 的故障診斷系統(tǒng)要求診斷對象的每一個環(huán)節(jié)具有明確的輸入輸出表達關系, 診斷時首先通過診斷對象的實際輸出與期望輸出之間的不一致, 生成引起這種不一致的原因*, 然后根據(jù)診斷對象領域中的第一定律知識( 具有明確科學依據(jù)的知識) 及其內(nèi)部特定的約束關系, 采用一定的算法, 找出可能的故障源。在故障診斷專家系統(tǒng)中, 故障庫是專家系統(tǒng)的核心, 體現(xiàn)著專家系統(tǒng)水平的高低, 但故障庫的建造或故障知識的獲取也成為建立專家系統(tǒng)的瓶頸問題,。
1 故障庫建造步驟
故障庫的設計是建立專家系統(tǒng)最重要和最艱巨的任務,。初始知識庫的設計包括問題知識化、知識概念化,、概念形式化,、形式規(guī)則化和規(guī)則合法化。問題知識化, 即辨別所研究問題的實質(zhì); 知識概念化, 即概括知識表示所需要的關鍵概念及其關系; 概念形式化, 即確定用來組織知識的數(shù)據(jù)結(jié)構形式; 形式規(guī)則化, 即編制規(guī)則, 把形式化了的知識變換為由編程語言表示的可供計算機執(zhí)行的語句和程序; 規(guī)則合法化, 即確認規(guī)則化了的知識的合理性, 檢驗規(guī)則的有效性,。
故障庫的建立首先是通過知識工程師從測試設備領域?qū)<夷抢铽@得或者通過在診斷過程中從用戶那里獲得知識, 然后通過知識獲取模塊把知識送到知識庫,。
知識獲取的主要困難在于如何恰當?shù)匕盐疹I域?qū)<宜褂玫母拍睢㈥P系和問題的求解方法,。根據(jù)專家提供的經(jīng)驗知識和測試設備的特點, 通過直接獲取方式,、交互獲取方式獲取有價值的診斷信息。
故障庫的建立是一個相當復雜的過程, 所以必須要按照一定的方法和步驟,。通常情況下按照如圖1 所示的步驟從現(xiàn)有的設計資料中提取有關原理的定性知識,并將這些知識歸納成規(guī)則形式,。下面對圖1 所示的各步驟分別加以說明:
圖1 故障庫的建立步驟
( 1) 功能, 結(jié)構層次分解。由于現(xiàn)代的產(chǎn)品設計的模塊化設計思想, 所以電子產(chǎn)品在功能和結(jié)構上具有明顯的層次性, 因此要提取電子設備的故障診斷知識, 對系統(tǒng)進行分解是必要的,。
( 2) 建立部件正常功能描述,。對于每一個上面劃分的部件, 有必要對其正常工作邏輯進行定性說明,。
( 3) 確定各部件的測試點集,。測點分為部件輸入測點和部件輸出測點, 在對某個部件P 進行診斷時, 只有其全部輸入信號都正常, 才可以根據(jù)輸出來判斷該部件是否故障。
( 4) 確定部件可能故障集,。對以上劃分的單元分別進行故障分析, 對于部件, 首先要確定其有可能出現(xiàn)的故障類型, 部件P 的可能故障集的確定可以根據(jù)經(jīng)驗,、FMEA 分析結(jié)果以及器件資料等多方面搜集。
( 5) 建立定性影響關系網(wǎng)絡,。對于部件P , 先確定每一故障e 所帶來的輸出表征, 即輸出測點數(shù)據(jù)的一種組合,。然后, 對部件P 的所有測點數(shù)據(jù)進行分類, 一類表示部件自身故障所測試的數(shù)據(jù), 記為PSO; 非自身故障引起( 由輸入異常引起) 的故障歸到另一類, 記為PU O。當測試數(shù)據(jù)W ∈ PSO 時, 故障診斷結(jié)果可以確定就是部件P; 當測試數(shù)據(jù)W ∈ PUO 時, 需要對部件P的輸入進行測試, 由于部件P 的輸入又是其他部件的輸出, 因此, 可以逐級推理, 直至將故障定位在某一個或幾個部件上,。
( 6) 將故障影響關系網(wǎng)絡歸納成規(guī)則形式,。將上面因果分析得到的結(jié)果轉(zhuǎn)化成兩種規(guī)則形式:
IF W∈PSO T HEN P 故障;
IF W∈PUO TH EN 對P 的輸入進行測試,;
( 7) 將規(guī)則寫入故障庫, 通過一般知識庫編輯系統(tǒng)可以很容易將上面的規(guī)則寫入到故障知識庫中,。
2 故障庫的設計
2. 1 數(shù)據(jù)采集與知識的獲取
數(shù)據(jù)采集在故障診斷系統(tǒng)中占據(jù)重要角色。對于診斷系統(tǒng)而言, 采集的信息越多, 越容易對故障進行定位和判斷, 為此系統(tǒng)將增加必要的硬件設計, 同時為減小伺服系統(tǒng)硬件設計的復雜程度, 根據(jù)伺服系統(tǒng)的特點和專家的經(jīng)驗總結(jié), 利用伺服系統(tǒng)自身必需的硬件連接, 增加少量硬件設計, 可以組成診斷系統(tǒng)的數(shù)據(jù)采集,。
系統(tǒng)知識采用產(chǎn)生式( Pro duct iON Rules) *,又稱為規(guī)則*,。產(chǎn)生式通常用于表示具有因果關系的知識, 其基本形式是P→Q, 或者IF P T HEN Q。其中, P 代表條件, 如前提,、狀態(tài),、原因等; Q 代表結(jié)果,如結(jié)論,、動作、后果等,。其含義是: 如果P 前提被滿足,則可推出Q 結(jié)論或執(zhí)行所規(guī)定的動作,。把一組產(chǎn)生式放在一起, 讓它們互相配合, 協(xié)同作用, 一個產(chǎn)生式生成的結(jié)論可以供另一個產(chǎn)生式作為前提使用, 以這種方式求得問題的解決, 這樣的系統(tǒng)就稱為產(chǎn)生式系統(tǒng), 也稱之為基于規(guī)則的系統(tǒng)。
對于多因素故障, 采用故障樹來表示, 故障樹模型體現(xiàn)了故障傳播的層次和子,、父節(jié)點間關系的因果性,故障樹上某一子節(jié)點是父節(jié)點的故障源, 因此利用故障樹的節(jié)點關系, 根據(jù)故障現(xiàn)象來確定故障原因,。
2. 2 數(shù)據(jù)表的設計
為了使知識在計算機中發(fā)揮作用, 以產(chǎn)生問題求解的能力, 必須把經(jīng)形式化后的各種知識實體表示成計算機的內(nèi)部形式, 還要建立必要的解釋機制和良好的用戶界面。該系統(tǒng)采用Access 2003 數(shù)據(jù)庫來創(chuàng)建知識庫,利用A ccess 2003 構建系統(tǒng)知識庫, 能使知識庫搜索更加高效, 管理更加方便,。
知識庫包括四個表, 它們分別是主故障模式表,、事實表、測試點表和規(guī)則表,。
主故障模式表用來存放測試設備中主要的故障類型,。表的結(jié)構為Module ( FaultN AME, Child) , 其中,FaultName 為故障類型的名稱, Child 為此故障類型對應的征兆表的名稱。如表1 所示,。
表1 主故障模式表
事實表包括征兆表和結(jié)論表, 兩表的結(jié)構相同,。表的結(jié)構為Fact ( name, ID) , 其中, Name 為故障征兆( 結(jié)論) 的名稱, ID 為故障征兆( 結(jié)論) 的編碼。如表2所示,。
表2 事實表
測試點表用來存放測試通道中的測試點,。表的結(jié)構為T eST _ Point ( Po intName, PCBName, X , Y, ID,ToneName, Solution) , 其中, PointName 為測試點的名稱, PCBName 為測試通道的PCB 圖文件, X 為測試點的橫坐標, Y 為測試點的縱坐標, ID 為測試點的編碼,ToneName 為測試通道的名稱, Solut io n 為對故障采取的解決措施。如表3 所示,。
表3 測試點表
規(guī)則表包括淺知識規(guī)則表和深知識規(guī)則表, 兩表的結(jié)構相同,。規(guī)則表用來存放規(guī)則前件和后件的編碼。
推理機的內(nèi)部工作過程是利用事實編碼進行前件的匹配, 利用綜合數(shù)據(jù)庫對推理過程中的前件和后件進行記錄,。在推理過程中的事實編碼和最終結(jié)果的編碼都可以在事實表中找到與之對應的名稱,。表的結(jié)構為( ID,Co ndition_number, Conclut ion_number, sig1, sig2, !,sig10, con1, co n2, !, con10) , 其中, ID 為規(guī)則的編號,Co ndition_number 為規(guī)則前提條件的個數(shù), Co nclut ion_number 為規(guī)則結(jié)論的個數(shù), sig 1, sig2, !, sig10 用來存儲規(guī)則的前提, co n1, con2, !, co n10 用來存儲規(guī)則的結(jié)論。如表4 所示,。
表4 規(guī)則表
3 推理機的實現(xiàn)
在測試設備故障診斷中最重要的是推理機, 對于確定性的知識, 采用專家系統(tǒng)中正向推理的方式進行推理,。對于具有不確定的、模糊的信息, 利用模糊神經(jīng)網(wǎng)絡進行推理,。推理機通過建立類EsReaso n 實現(xiàn), 以下是在該類中定義的主要指針,、數(shù)組、變量及函數(shù), 此類結(jié)構如下:
Class EsReason
{
pr otected:
Majo rTable * M ajor ;
SigalTable * Sig al;
Co nclut ionTable * Conclutio n;
Po int Table * point;
RuleTable * Rule ;
BOOL Connectio nDb( ) ;
BOOL LoadT able ( CStr ing name) ;
CStr ing Var iantToCStr ing ( co nst _ var iant_t & var) ;
CStr ing Curr entConditio ns [ 100] ;
CStr ing Curr entConclusio ns[ 100] ;
CStr ing pr og ram;
unsig ned int To tal_Cur rentCo nditions;
unsig ned int To tal_Cur rentCo nclusio ns;
BOOL Reasoning( ) ;
BOOL NEWff( ) ;
}
其中, * Majo r, * Sigal, * Co nclut ion, * point 以及* Rule 定義指向主故障模式表,、征兆表,、結(jié)論表、測試點表及規(guī)則表的結(jié)構指針, 便于對數(shù)據(jù)庫中各表數(shù)據(jù)的記錄及訪問,。通過建立BOOL 型成員函數(shù)Connect io nDb 和Lo adTable 來實現(xiàn)數(shù)據(jù)庫的連接及加載,。在加載數(shù)據(jù)庫時, 通過設置SQL 語言為打開各個數(shù)據(jù)表做準備, 然后調(diào)用記錄集指針的成員函數(shù)Open 打開各個表中的各條記錄。通過記錄集指針的移動記錄各個表中記錄集的數(shù)目, 然后根據(jù)記錄集指針的移動把各表中的記錄存到申請的動態(tài)內(nèi)存中。
綜合數(shù)據(jù)庫通過數(shù)組Cur rent Condit io ns[ 100] 和Cur rent Conclusio ns[ 100] 實現(xiàn), 綜合數(shù)據(jù)庫用來記錄推理過程中的初始條件,、中間結(jié)果及最終結(jié)論的編碼,方便推理機通過綜合數(shù)據(jù)庫里的內(nèi)容進行正向推理, 通過CStr ing 類型的變量prog ram 記錄推理過程中用到的規(guī)則, 以實現(xiàn)推理過程中的解釋功能,。
在類EsReason 中核心的函數(shù)是Reasoning 和NEWf f, Reasoning 函數(shù)的工作過程為: 把綜合數(shù)據(jù)庫中的事實作為初始條件, 與規(guī)則庫中的規(guī)則前件進行匹配; 當規(guī)則被激活, 通過這些激活的規(guī)則, 推理函數(shù)把結(jié)論放到綜合數(shù)據(jù)庫中繼續(xù)推理, 直到再沒有其他規(guī)則的前件能與綜合數(shù)據(jù)庫內(nèi)的事實相匹配為止。在推理過程中用到一個很重要的BOOL 型的成員變量Rule _Used 記錄用過的規(guī)則, 這樣可以避免在推理過程中出現(xiàn)死循環(huán),。NEWf f 函數(shù)的工作過程可選取合適的推理決策邏輯進行推理來實現(xiàn)故障的自動化診斷,。
4 結(jié) 語
由于現(xiàn)代電子設備的自身特性和環(huán)境因素等復雜條件的限制, 傳統(tǒng)的故障診斷方法難以滿足診斷要求?;诠收蠋斓闹悄芄收显\斷方法依靠對設備原理的定性分析, 充分利用現(xiàn)有的各種設計技術資料, 無需為了量化處理的需要而將實際問題過分簡化, 比依賴于基礎數(shù)據(jù)的定量分析方法更接近于工程實際情況,。針對電子設備提出了一種電子設備故障庫的故障實現(xiàn)方案, 可以有效地進行故障定位并提出維修指導意見, 有效地提高了普通維修人員的故障診斷能力和維修效率。