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