莊緒巖+徐亞軍+包勇
摘 要: 針對飛機電源系統故障診斷的現狀,為提高故障診斷的效率提出利用專家系統開發工具CLIPS建立飛機電源系統故障診斷專家系統。以西銳SR20飛機的電源系統為診斷對象,采用CLIPS為開發工具建立知識庫、推理機。利用Eclipse開發環境編寫專家系統人機界面程序,通過嵌入CLIPS JNI插件實現Java程序對CLIPS程序的調用,最終實現包括知識庫、推理機、人機界面等模塊在內的專家系統整體性能。最后闡述了專家系統在故障診斷領域的廣闊應用前景。
關鍵詞: 故障診斷; 專家系統; 人工智能; 人機界面
中圖分類號: TN99?34; TP182 文獻標識碼: A 文章編號: 1004?373X(2014)15?0117?04
Study on fault diagnosis expert system for aircraft power?supply system
ZHUANG Xu?yan, XU Ya?jun, BAO Yong
(Civil Aviation Flight University of China, Guanghan 618307, China)
Abstract: In view of the present situation of fault diagnosis for the aircraft power?supply system, the fault diagnosis expert system for aircraft power?supply system, which is built up with expert system development tool CLIPS, is put forward to improve the efficiency of fault diagnosis for the aircraft power?supply system. The power?supply system of Cirrus SR20 is chosen as diagnosis object. CLIPS is adopted as a development tool to build up knowledge base and inference engine. The man?machine interface programs are compiled by means of Eclips. The embedded CLIPS JNI is used for Java program to call CLIPS program. The total performances of the expert system, including knowledge base, inference engine and man?machine interface are completed ultimately. The broad application prospect of the fault diagnosis expert system is elaborated at the end of the paper.
Keywords: fault diagnosis; expert system; AI; man?machine interface
0 引 言
飛機電源系統作為整個飛機的“血液系統”在飛機的整個運作過程中起到非常重要的作用,如果電源系統出現故障將影響到其他系統的正常工作,從而導致整個飛機系統的癱瘓。隨著機載用電設備增多, 飛機電源系統的地位愈顯的重要,電源系統中的任何故障如果不能及時檢出并得到糾正, 故障就可能進一步擴大, 致使上層系統的狀態發生變化, 影響飛行任務執行, 甚至危及飛行安全[1]。建立一整套完備的飛機電源系統故障診斷系統對于飛機的排故以及飛機的安全飛行是非常必要的。
專家系統(ES)作為人工智能最重要和最廣泛的一個應用研究領域,它能夠以人類專家的水平完成特別困難的某一專業領域的任務。在過去30多年中專家系統取得了很大進展,其基礎理論研究不斷深入,并有所創新[2]。在故障診斷領域,專家系統作為一種故障診斷方法已被廣泛使用,它是一個具有豐富的專門領域知識的計算機程序,它應用人工智能技術, 根據專家提供的知識及其推理能力, 模仿人類專家決策的思維過程, 解決原本需要由專家才能解決的復雜問題[2?3]。本文參考了大量文獻,著作,在前人研究的基礎上繼續深入研究,研究的主要思路是采用CLIPS專家系統開發環境,建立專家系統底層文件,通過Eclipse開發平臺、Java編程語言編寫專家系統的人機界面程序,通過界面的控件調用執行CLIPS程序,從而實現專家系統故障診斷的功能。
1 專家系統
1.1 概 述
專家系統是用來對人類專家的問題求解能力建模的一種計算機程序,可以根據系統的應用環境和所執行任務的不同選擇合理的專家結構系統,直接關系到專家系統的適用性和效率[4]。
專家系統作為人工智能一個重要的分支是在20世紀60 年代初期產生并發展起來的一門新興的應用科學, 而且正隨著計算機技術的不斷發展而日臻完善和成熟[5]。
專家系統主要由人機界面、知識庫、解釋機、推理機、工作內存等組成,其中人機界面是用戶與專家系統之間的通信機制;知識庫是專家系統包含領域知識的部分;工作內存是專家系統包含執行任務時發現的問題事實的部分;推理機是專家知識的處理器,它將工作內存中的事實與知識庫中的領域知識相匹配,以得出問題的結論。一個簡化專家系統的結構及工作流程如圖1所示。
圖1 專家系統結構圖
根據求解問題的性質不同專家可分為解釋專家系統、診斷專家系統、設計專家系統、控制專家系統等。據調查顯示每4個以建造的專家系統中就有一個是作用于診斷活動[6]。本文所設計的專家系統就是以飛機故障診斷為目的的,故障診斷專家系統具有下列特點:
(1) 能夠了解被診斷對象各組成部分的特性以及聯系;
(2) 能夠區分一種現象及其所掩蓋的另一種現象;
(3) 能夠向用戶提出測量數據,并從不確切信息中得出盡可能正確的診斷。
1.2 開發流程
專家系統的開發過程不同于傳統的程序開發設計,因為其問題通常沒有算法去求解,而是通過推理來獲取一個合理的解決方法,其開發的一般步驟如下。首先,知識工程師通過與專家進行對話而獲取專家知識,然后知識工程師將知識編碼到知識庫中,隨后專家評估系統并返回意見給知識工程師。專家系統的開發流程如圖2所示。
圖2 專家系統開發流程
2 專家系統設計
2.1 CLIPS開發工具
飛機電源故障診斷專家系統是由CLIPS專家系統開發工具開發。CLIPS(C Language Integrated Production System)是一種多范例編程語言,它支持基于規則的、面向對象的和面向過程的編程。在語法方面,CLIPS規則與Eclipse、CLIPS/R2和Jess語言的規則極為相似。由于CLIPS具有可移植性,所以,它可以安裝在多種類型的計算機上,從PC機到CRAY超級計算機都有。同樣,由于CLIPS是由C語言開發而來,從而用CLIPS開發的程序也具有很強的移植能力,可以將CLIPS編寫的專家系統運行在PC機上,也可以運行在移動設備上。
2.2 創建CLIPS專家診斷系統
2.2.1 診斷對象
本文所選擇的故障診斷對象是西銳SR20飛機電源系統,該機型電源系統原理如圖3所示。
圖3 電源系統原理圖
該電源系統主要故障是發電機故障,蓄電池故障,外部電源故障,以及電路保護系統故障等。
2.2.2 專家系統的建立
基于規則的專家系統里的知識被定義為由事實激發而產生新的事實或結論的規則,其中知識表示(Knowledge representation,KR)在專家系統中具有非常重要的作用[6]。首先,專家系統是專為某一類基于邏輯(Rule of Logic)即推理的知識表示設計,通常是根據推理理解從事實中得出結論,由于人們并不擅長推理,從而可以借助專家系統中的知識庫以及推理功能輕松的得出有效的結論或者方法。 其次,知識的表示影響到專家系統的開發、效率、速度和維護。
(1) 建立知識模板
在建立模板以及建立知識庫時都是按照對象?屬性?值(Object?Attribute?Value triple,OAV)三元組思想建立的。1#發電機OAV表見表1。
根據表1可以建立一個發電機ALT1的知識模板(框架),具體CLIPS程序代碼舉例如下:
(deftemplate part
(slot name)
(slot output
(allowed?values normal low high)(default normal))
(slot switch (allowed?values on off)(default on))
(slot circuit?breaker
(allowed?values activated nonactivated)(default nonactivated))
(slot previous?part)
(slot question)
(slot engagement
(allowed?values engaged disengaged)
(default disengaged)))
表1 發電機OAV表
[對象\&屬性\&值\&默認值\&
Part\&Name\&ALT1\&\&Output\&high\&
normal\&normal\&low\&Switch\&on\&on\&0ff\&Circuit?breaker\&activated\&nonactivated\&nonactivated\&Previous?part\&VOLT REG\&\&Question\&Is it work normal ?\&\&engagement\&engaged\&disengaged\&disengaged\&]
(2) 建立知識庫
根據前一步建立的模版創建知識庫,具體CLIPS代碼舉例如下:
(deffacts Part?information
(part (name ALT1)
(previous?part A/C?BUS?1)
(question " Does ALT1 work normal ?"))
(part (name ALT?2)
(previous?part ESSENTIAL?BUS?2)
(question " Does ALT1 work normal ?"))
………)
(3) 推理機
完成前兩步的工作后便可以著手創建推理機來實現具體的推理功能。本文專家系統的推理機是由一系列規則(rules)及函數(functions)組成,規則的一般結構是這樣的,模式條件=>動作。其中等號和箭頭左邊的是條件部分,條件可以是一個或多個組成,當左邊條件滿足時就會執行箭頭后面的動作部分。其內部匹配算法采用Rete算法,如圖4所示。
在Rete網絡中主要有Root節點、Alpha節點和Beta節點三種類型節點,其中Alpha節點包含一個輸入和一個存儲區,Beta節點包含兩個輸入和兩個存儲區,Beta存儲區和Alpha存儲區。
圖4 Rete網絡圖
Rete算法具體執行過程如下所示:
(1) 導入需要處理的事實到Facts集合中。
(2) 如果Facts不為空,選擇一個Fact進行處理。否則停止匹配過程。
(3) 選擇Alpha網的第一個節點運行,通過該節點進入Alpha網的下一個節點,直到進入Alpha memory。否則跳轉到下一條判斷路徑。
(4) 將Alpha memory的結果加入到Beta memory中,如果不為Terminal節點,則檢測另一個輸入集合中是否存在滿足條件的事實,滿足則執行join,進入到下一個Beta memory重復執行(3)。若另一個輸入集合無滿足條件的事實,返回到(2)。完成所有條件匹配意味著規則(rules)的LHS(Left?Hand?Side)匹配完成,如果最終節點的存儲區含有的元素不為空,將規則(rules)加入議程(Agenda)中等待執行[7?8]。
本文推理機CLIPS代碼舉例如下:
(defrule start
=>
(printout t "Please enter your fault part name."crlf)
(bind ?name(read))
(reset)
(assert(current?part ?name)))
(defrule ask?decision?part?question
?part