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