龔 健,楊 樺,趙 瑋,喬 磊
(北京控制工程研究所,北京 100190)
人類對空間的研究和探索不斷向深空和星際等未知空間領(lǐng)域發(fā)展,迄今全世界已發(fā)射了近二百顆深空探測器,中國月球探測工程取得了重大成功,對火星的探測和研究工作也已經(jīng)展開.在這些任務(wù)中,航天器處于人類未知的空間環(huán)境之中,需要長時間航行,這要求航天器具有高可靠性和長壽命;在長時間的空間航行中,信息傳輸距離遙遠,信息傳輸可靠性變差,人對航天器的控制能力減弱,這要求航天器在很大程度上具有自主性,能夠在發(fā)生故障的情況下進行自主診斷和修復(fù)故障.為了滿足這些任務(wù)對航天器可靠性、長壽命和自主性的要求,在航天器設(shè)計過程中需要采用各種故障檢測、故障屏蔽和故障修復(fù)方法.而在航天器軟件設(shè)計中采用故障診斷方法不僅能夠降低硬件的復(fù)雜度、提高設(shè)計的靈活性,而且能夠減小整個航天器的質(zhì)量和功耗,更好地滿足長時間、遠距離航行的要求.
在目前航天器的軟件設(shè)計中,采用的故障診斷和處理方法主要有通過校驗碼的檢錯和糾錯,基于數(shù)據(jù)讀取和比對的故障檢測,數(shù)據(jù)(包括程序目標(biāo)碼)重寫和重新裝載,以及依賴于處理器陷阱(trap)的故障識別及復(fù)位處理等,這些是較為傳統(tǒng)的故障診斷和處理方法,技術(shù)成熟,實用性強,不但在我國實際型號任務(wù)中得到廣泛應(yīng)用,而且也是國外采用的方法[1].在此基礎(chǔ)上,各國也同時從多個角度、多個方面研究智能化的、具有自主性的航天器管理和故障診斷方法[2-4],其中以智能體(agent)方法研究最為廣泛[3-4].智能體在人工智能領(lǐng)域中是指具有一定智能行為的主體,而在計算機領(lǐng)域里則是指在特定環(huán)境中的計算單元,能獨立、自主地感知環(huán)境,自主完成任務(wù),是一個硬件和軟件的結(jié)合體.專家系統(tǒng)作為一種人工智能方法,只需要軟件就可以實現(xiàn),目前已廣泛應(yīng)用于預(yù)測、規(guī)劃、管理和診斷等領(lǐng)域[5-7],尤其在故障診斷領(lǐng)域有很多成功案例[6-7].在空間應(yīng)用中,由于航天器硬件的處理能力和存儲器容量有限,專家系統(tǒng)的應(yīng)用多集中在地面故障診斷和處理系統(tǒng)中,較少應(yīng)用于航天器上的嵌入式系統(tǒng)中[7].
本文提出的基于知識推理的自主故障診斷方法用于航天器的嵌入式系統(tǒng)中,借鑒專家系統(tǒng)的機理,并根據(jù)航天器硬件的特點進行了適應(yīng)性設(shè)計,主要針對航天器處理能力受限,提高了規(guī)則匹配速度,并采用直接線性存儲的方法管理知識庫來替代數(shù)據(jù)庫系統(tǒng),很大程度上降低了對硬件性能的要求.當(dāng)前空間技術(shù)不斷快速發(fā)展,應(yīng)用于航天器的器件的性能也如同民用領(lǐng)域中的一樣在成倍提高.在這種背景下,雖然智能故障診斷方法較其他方法對硬件性能的要求更高,但隨著硬件性能的快速提升也必然具有廣闊的前景.
在計算機技術(shù)領(lǐng)域,處理對象從低到高可分為3個層次,即數(shù)據(jù)、信息和知識,對數(shù)據(jù)的處理可用運算器完成,對信息的處理則需要專門的信息處理軟件,而對知識的處理則是專家系統(tǒng),這種層次關(guān)系如圖1所示.專家系統(tǒng)是一種高級的、模擬人類智能的處理方法,一般由6部分組成,如圖2所示,即知識庫、推理機、人機接口、全局數(shù)據(jù)庫、知識獲取部分和解釋部分,其中知識庫、推理機、人機接口是專家系統(tǒng)最基本的組成部分[8].知識庫由事實庫和規(guī)則庫組成,包含所要解決問題中的大量事實和規(guī)則;推理機是組織和控制結(jié)構(gòu),根據(jù)輸入數(shù)據(jù),運用知識庫中的知識,按照知識庫中規(guī)則進行推理;人機接口是專家系統(tǒng)和用戶之間進行交互的通道;全局數(shù)據(jù)庫主要用于存儲系統(tǒng)運行過程中產(chǎn)生的數(shù)據(jù)和信息;知識獲取部分是專家系統(tǒng)與領(lǐng)域?qū)<业慕涌?解釋部分用于對推理過程和結(jié)論作出解釋.專家系統(tǒng)的工作過程是利用規(guī)則庫中的規(guī)則,以事實庫中的事實為依據(jù)不斷進行推理,并把推理產(chǎn)生的結(jié)論作為新的事實,直到得出最終的結(jié)論.
一般來說,專家系統(tǒng)對計算系統(tǒng)的硬件處理能力和存儲空間都要求很高,雖然目前航天器的硬件性能較以前有了大幅度提高,但其處理能力和存儲空間還是不能滿足大規(guī)模的計算和存儲,這給專家系統(tǒng)在空間嵌入式系統(tǒng)中的應(yīng)用帶來了困難.為了解決上述問題,本文提出的基于知識推理的航天器自主故障診斷方法除了包括知識獲取部分用于對故障診斷系統(tǒng)進行維護以外,只保留了專家系統(tǒng)的最基本組成部分,即知識庫、推理機和人機接口,此外采取了以下針對航天器硬件特點的設(shè)計:(1)采用直接線性存儲方法對知識庫進行存儲和訪問,而不是采用復(fù)雜的數(shù)據(jù)庫系統(tǒng),以此來減小數(shù)據(jù)存儲和處理的開銷;(2)采用哈希算法實現(xiàn)對事實的存放和查找,以此來減小事實檢索的開銷.該故障診斷方法的系統(tǒng)結(jié)構(gòu)如圖3所示,圖中規(guī)則庫和事實庫組成知識庫;推理機由事實的狀態(tài)變化來觸發(fā),并對規(guī)則不斷進行匹配,直到得出結(jié)論;作為自主故障診斷方法,人機接口事實上是與航天器系統(tǒng)進行接口,用于監(jiān)測其狀態(tài)、報告故障診斷結(jié)果、并執(zhí)行故障處理;知識獲取是與地面用戶接口,用戶可以通過地面或遙控命令初始化事實庫,以及修改規(guī)則庫.該自主故障檢測方法在運行前需要根據(jù)領(lǐng)域知識向規(guī)則庫中添加規(guī)則、向事實庫中添加事實;在運行過程中監(jiān)測航天器系統(tǒng)的工作狀態(tài),根據(jù)工作狀態(tài)對事實狀態(tài)(事實狀態(tài)改變不一定發(fā)生故障)進行更新;當(dāng)有故障發(fā)生時啟動推理機按照規(guī)則以事實為依據(jù)進行推理,并根據(jù)推理結(jié)果對事實庫中的事實狀態(tài)進行更新,當(dāng)推理結(jié)果可以作為結(jié)論時,則完成基于推理的故障診斷過程;最后系統(tǒng)可以根據(jù)診斷結(jié)果,調(diào)用故障處理功能模塊對航天器系統(tǒng)進行處理.為了便于對知識庫進行維護,提供了規(guī)則庫修改功能,用戶可以采用地面或遙控方式注入規(guī)則修改信息對規(guī)則庫進行修改.基于知識推理的航天器自主故障診斷方法的核心主要有三個部分:(1)知識庫的結(jié)構(gòu),(2)推理過程,(3)快速事實檢索,論文分別進行介紹.
圖3 基于知識推理的航天器自主故障診斷系統(tǒng)結(jié)構(gòu)
1.2.1 直接線性存儲的知識庫結(jié)構(gòu)
空間應(yīng)用級別的存儲器容量有限,對程序和數(shù)據(jù)的大小有嚴格的限制,針對航天器存儲系統(tǒng)的這個特點,知識庫采用產(chǎn)生式表示法,并采用線性存儲方式直接存儲在非易失存儲器中(例如EEPROM和Flash),并按照地址直接訪問,在系統(tǒng)運行時再把知識庫裝入內(nèi)存(RAM).知識庫由事實庫和規(guī)則庫組成,如圖4所示.事實庫的組成結(jié)構(gòu)如圖4(a)所示,每條事實的結(jié)構(gòu)和占用空間相同,依次排列在存儲區(qū).事實的數(shù)據(jù)結(jié)構(gòu)包括編號、描述、激活標(biāo)志和斷言,其中編號是關(guān)鍵字,激活標(biāo)志表明該事實在推理過程中是否可用,斷言表明該事實是否為真.規(guī)則庫的組成結(jié)構(gòu)如圖4(b)所示,每條規(guī)則的結(jié)構(gòu)和占用空間也都相同,依次排列在存儲區(qū).規(guī)則實質(zhì)上是一個產(chǎn)生式,其數(shù)據(jù)結(jié)構(gòu)包括編號、前提、結(jié)論和可信度,其中前提是一個一維的事實鏈表,有多個事實組成,但前提鏈表中事實的最大數(shù)量為定值,結(jié)論則是一個事實,可信度則是整個規(guī)則的可信程度,所為推理的一個依據(jù).
1.2.2 主動監(jiān)測的事實更新及觸發(fā)推理
本文提出的故障診斷方法自動對航天器系統(tǒng)進行監(jiān)測,通過硬件接口把系統(tǒng)狀態(tài)讀入系統(tǒng)狀態(tài)變量,如果系統(tǒng)工作狀態(tài)有變化,則對事實進行更新,并啟動知識推理進行故障診斷.推理過程采用正向推理方法,具體的算法如下:
step 1.監(jiān)測系統(tǒng)的運行狀態(tài),據(jù)此實時地改變事實的狀態(tài),添加到事實庫中;
step 2.根據(jù)事實狀態(tài)變化,設(shè)置事實的激活標(biāo)志,根據(jù)事實的真假來設(shè)置斷言;
step 3.如果事實的狀態(tài)發(fā)生變化,啟動推理過程;
step 4.判斷規(guī)則庫中是否有可用規(guī)則,如果有轉(zhuǎn)step 5;否則轉(zhuǎn)step 7;
step 5.從規(guī)則庫中依次取出規(guī)則,根據(jù)事實庫中事實對規(guī)則的前提進行匹配,如果沒有規(guī)則匹配成功,則轉(zhuǎn)step 4;如果匹配成功則轉(zhuǎn)step 6;
step 6.根據(jù)匹配的規(guī)則生成結(jié)論,設(shè)置該結(jié)論事實的激活標(biāo)志和斷言,并把結(jié)論更新到事實庫中;根據(jù)規(guī)則的置信度判斷該結(jié)論能否作為推理的最終結(jié)論,如果不能則轉(zhuǎn)step 4,否則轉(zhuǎn)step 7;
step 7.推理結(jié)束,如果得出了最終結(jié)論則推理成功,否則推理失敗.
1.2.3 基于哈希算法的事實管理方法
推理過程是以規(guī)則為導(dǎo)向的匹配過程,因此對規(guī)則的訪問是線性的,而在對每個規(guī)則匹配的過程中,對前提的查找則是隨機地.為了提高事實隨機檢索的效率,減小處理器的計算量,在運行過程中事實庫裝入內(nèi)存后采用哈希表的方式進行存儲和訪問.哈希表設(shè)計分成以下兩個部分,如圖5所示.
(1)哈希函數(shù)的構(gòu)造
事實編碼是事實的唯一標(biāo)識,作為哈希函數(shù)的關(guān)鍵字,即key=fid.
設(shè)事實編碼為fid,則哈希函數(shù)為H(fid).
設(shè)哈希表長度為L.
H(key)=H(fid)=fidmodp(p選取質(zhì)數(shù)或不包含小于20質(zhì)因子的合數(shù)).
H(key)為事實編碼fid在哈希表中的位置,如果兩個不同的fid通過哈希函數(shù)H(key)計算的值相同,則采用以下沖突解決方法.
(2)沖突解決方法
采用線性探測再散列的方法解決哈希函數(shù)值的沖突問題.即事實編碼fid在哈希表中的位置通過以下公式進行計算:
Hi=(H(key)+di)modL di=1,2,…,k(k≤L-1)
圖5 事實庫在內(nèi)存中采用的哈希表結(jié)構(gòu)
為了更清楚地說明并驗證本文提出的自主故障診斷方法,給出一個航天器星敏感器故障診斷的例子.設(shè)表1中的事實是初始的事實,事實編號為關(guān)鍵字(為了更清楚的說明哈希算法,在計算哈希函數(shù)時按照表中的打亂了的事實順序);事實庫采用線性存儲方式組織,針對每個事實用2.13節(jié)的哈希函數(shù)確定其在事實庫中位置.設(shè)哈希函數(shù)中的p=7,即哈希函數(shù)為H(key)=H(fid)=fidmod 7,設(shè)哈希表長度為30,沖突解決函數(shù)為Hi=(H(key)+di)mod 30di=1,2,…,k(k≤L-1).根據(jù)哈希函數(shù)以及沖突解決函數(shù)進行計算,每個事實在事實庫中的位置如圖6所示.
表1 事實庫
圖6 按照哈希算法的事實庫中事實的位置
設(shè)表2中的規(guī)則是初始的規(guī)則,規(guī)則編號為關(guān)鍵字;規(guī)則庫采用線性存儲方式組織.由于在規(guī)則匹配過程是一個順序遍歷的過程,因此規(guī)則庫管理沒有采用哈希變的方法,庫中的規(guī)則按照表中的順序排列.
表2 規(guī)則庫
設(shè)航天器依次發(fā)生“星敏A俯仰角增量大于a2”和“執(zhí)行機構(gòu)未引起姿態(tài)機動”兩個事實,則當(dāng)監(jiān)測到第一個事實(事實編號為04)發(fā)生時,即開始推理,但由于不存在一條規(guī)則其所有前提都滿足,因此推理終止,繼續(xù)對航天器工作狀態(tài)進行監(jiān)測;當(dāng)監(jiān)測到第二個事實(事實編號為02)發(fā)生時,又開始推理,此時規(guī)則編號為02的規(guī)則的前提都被滿足,得出“星敏A發(fā)生偽識別”(事實編號為05)的結(jié)論;此時更新事實庫中事實05的狀態(tài),并判斷事實05是否為最終的故障,如果不是則繼續(xù)監(jiān)測系統(tǒng)工作狀態(tài),等待新的事實,如果是則推理結(jié)束,即完成了故障的自主診斷.在本例中,根據(jù)航天器的實際構(gòu)造,事實05是一種故障,因此基于推理的故障診斷獲得成功,整個推理過程及事實庫的變化如圖7所示.
論文采用C語言對提出的基于知識推理的自主故障診斷方法進行實現(xiàn),并在TSC695處理器嵌入式系統(tǒng)開發(fā)板上進行了實驗,實驗結(jié)果與圖7所示的過程相符.
以深空探測等型號任務(wù)對航天器可靠性、長壽命和自主性的需求為背景,論文從軟件設(shè)計角度,提出了一種智能的航天器故障診斷方法,即基于知識推理的航天器自主故障診斷方法.該方法針對航天器硬件處理能力和存儲容量受限的特點,采用直接線性存儲方法對知識庫進行存儲和訪問,減小了數(shù)據(jù)存儲和處理的開銷,采用哈希算法實現(xiàn)事實的存放和查找,減小了事實檢索的開銷.采用C語言實現(xiàn)的該方法在TSC695處理器嵌入式系統(tǒng)上的實驗結(jié)果表明該方法有效.
[1] Francis M D,Campbell R H.Building a self-healing operating system[C].The 3rdIEEE International Symposium on Dependable,Autonomic and Secure Computing,2007
[2] 郝悍勇,林靖宇,孫增圻.衛(wèi)星姿態(tài)自主故障診斷和重構(gòu)方法[J].控制工程,2003,10(4):293-294
[3] 徐瑞,崔平遠,徐曉飛.深空探測器自主任務(wù)操作系統(tǒng)研究[C].深空探測技術(shù)與應(yīng)用科學(xué)國際會議,青島,2002
[4] 張曉光,代樹武.基于多Agent的航天自主運行系統(tǒng)[J].計算機工程,2008,34(6):243-245
[5] Lollar L F.Knowledge-based systems for power management[C].Space Programs and Technologies Conference,Huntsville,Alabama,1992
[6] 陳松.基于智能診斷的事故管理專家系統(tǒng)研究[D].上海:上海交通大學(xué),2003
[7] 莫鑫.基于專家系統(tǒng)的小衛(wèi)星星敏感器故障診斷方法研究[D].北京:北京控制工程研究所,2002
[8] 吳今培,肖健華.智能故障診斷與專家系統(tǒng)[M].北京:科學(xué)出版社,1997