陳 鋒,嚴 平,孫世巖,張弘弨
(1.海軍研究院,北京 100161;2.海軍工程大學,湖北 武漢 430033)
測試的最終目的是隔離故障,而在系統執行測試的過程中,可能根據得到的部分測試結果已經能夠隔離故障源,此時系統不必再進行其他的測試操作。而診斷策略的設計,會大大影響測試成本以及故障隔離速度。診斷策略設計工作主要包括:建立故障-測試相關性模型;建立相關性矩陣;優選測試點以及設計診斷策略[1-2]。
本文在優選測試點的基礎上,采用與或圖啟發式搜索算法設計了艦炮制導彈藥多故障診斷策略,降低了艦炮制導彈藥測試成本并提高了故障隔離速度。
診斷策略設計的研究一般建立在單故障,即假設系統某一時間只發生一個故障的前提下,但像艦炮制導彈藥這樣的復雜系統,這種假設顯然是不成立的。單純地按照單故障的診斷策略下結論,很可能因為存在隱含故障和偽故障而出現誤診或漏診的情況[3]。因此,研究多故障問題的診斷策略的第一步就是識別系統可能存在的隱含故障和偽故障。
1)隱含故障:系統發生多個故障時,系統總體表現的故障特征與其中某一故障的故障特征相同,即系統總的故障特征隱藏了其中一個故障的故障特征。存在隱含故障很容易使故障診斷出現漏診的情況。
2)偽故障:系統發生多個故障時,系統總體表現的故障特征與發生故障之外的某一故障的故障特征相同,系統總的故障特征與某個不相關單元的故障特征相同。存在偽故障很容易使故障診斷出現誤診的情況。
由相關性分析理論可知,fi的故障特征可用集合FS(fi)={ti|aij=1,tj∈T}來描述,同理,fi和fj同時發生的故障特征可用FS(fi,fj)來描述,則有FS(fi,fj)=FS(fi)∪FS(fj)。若存在FS(A)=FS(A)∪FS(B)=FS(AB),則存在隱含故障,且故障B為故障A的隱含故障;若FS(C)=FS(A)∪FS(B)=FS(AB),則存在偽故障,且故障組合{A,B}為故障C的一個偽故障[4]。
測試性分析中所采取的檢測手段均為二值測試,也就是說每項檢測的結論只有通過和不通過兩種,所以可由執行測試的順序以二叉樹形式畫出系統的故障診斷樹,即測試序列等價于故障診斷樹?;谶@樣的關系,診斷策略即測試序列的優化設計過程也就等同于生成系統的故障樹的過程。而故障樹又和與或圖在形式上非常相近,因此可視故障診斷樹為一類廣義上的與或圖。因此本文選用啟發式搜索算法,通過求解與或圖得到優化的測試序列[5-6]。
AO*算法是一種啟發式搜索算法,該算法的評估函數為霍夫曼編碼平均字長?;舴蚵幋a的編碼字長不同,編碼時通過盡可能使故障概率越大的事件字長越短,使編碼的效率變高。其編碼步驟是,首先,由小到大依次排列故障概率,再將最小的兩個概率相加,并用得到的概率和將其替換,再將全部故障概率進行排列。如此循環,直到得到整個霍夫曼樹。過程中通常將兩個最小概率中相對較小的故障以0編碼,而相對較大的以1編碼。循環結束后,所有故障均與一串二進制編碼一一對應,加和每個故障概率與其碼長的乘積,再除以全部概率的總和,計算結果就是平均霍夫曼編碼字長。解決故障診斷問題時上述過程可表示為

(1)
其中,w*(x)為故障集的霍夫曼編碼平均字長,w*(fi)故障fi的霍夫曼編碼字長,且fi∈x。
評估函數(HEF)通過故障診斷樹和霍夫曼樹的等價性來確定。為說明該過程,舉一個普適性例子,假設測試成本大小順序為0≤c1≤c2≤…≤cn,HEF(x)最小值為

(2)
其中,w′(x)=[w*(x)],為對模糊故障集X的霍夫曼編碼平均字長取整。
上式即為算法的啟發式評估函數,從總的故障集開始向下搜索,當所有故障均被搜索到時,由公式(3)計算實際的測試成本,由公式(4)修正測試成本,由下至上進行回溯,直至回溯到根節點。

(3)
e=min(Exi)
(4)
其中,Exi為對模糊故障集X執行測試ti時的實際成本,xip、xif分別是對模糊故障集X執行測試ti時通過和不通過的子集,ci為ti測試成本,P(xip)、P(xif)分別為xip、xif的概率和;E(xip)、E(xif)分別為xip、xif實際的測試成本。
只考慮單故障時,算法步驟主要有以下兩個方面:由上至下進行評估和由下至上進行修正,具體步驟為:
1)判斷故障集F中元素是否超過兩個,當元素超過兩個時繼續進行以下步驟,否則轉到步驟7);
2)對故障集F,按照故障-測試相關矩陣中測試與故障的關系以及每個故障發生的概率分別對每個測試進行霍夫曼編碼,進而評估其測試成本:
e=min{ci+HEFxip×P(xip)+HEFxif×P(xif)}
(5)
3)比較所有測試的測試成本評估值,標記最小評估值相應的測試編號,以及該測試的父節點和左右子節點;
4)以左子節點中的模糊故障作為新的故障集合F,重復步驟1)到7),計算左子節點測試的實際成本;
5)以右子節點中的模糊故障作為新的故障集合F,重復步驟1)到7),計算右子節點測試的實際成本;
6)比較左右節點測試的實際成本和記錄的測試評估成本。若實際成本大于評估值,則修正評估值并刪除該路徑,選擇測試評估成本次小的對應的測試,返回步驟3),否則繼續向下執行;
7)繼續向上修正評估代價;
8)重復步驟1)到7),直至故障集合F中元素個數不大于2時,測試選擇的測試序列的實際成本最低,得到最優故障診斷樹,算法結束。
多故障的診斷策略在單故障的設計方法上進行了擴展。其步驟如下:
1)采用上述方法構造一個單故障診斷樹。
2)判斷故障診斷樹所能隔離的故障是否存在隱含故障或偽故障,若不存在,則維修該葉子節點所對應的故障,不再執行其他操作。
3)若存在隱含故障或偽故障,首先通過維修,排除該故障,再針對該故障的隱含故障集或偽故障集構造附加的診斷策略,直至確定系統不存在隱含故障和偽故障[7]。
艦炮制導彈藥控制系統多信號流圖模型如圖1所示。

圖1 艦炮制導彈藥控制系統多信號流圖模型
省略優選測試點過程,經優選測試點后的艦炮制導彈藥控制系統的相關矩陣如表1所示,故障源共13個,分別為衛星電平轉換模塊、衛星天線、衛星接收模塊、衛星定位解算模塊、DSP、地磁傳感器電平轉換模塊、地磁傳感器、DSP電平轉換模塊、舵機控制器電平轉換模塊、舵機驅動器、舵機驅動器電平轉換模塊、伺服電機、電源模塊。故障狀態共20個,其中G表示全局故障,F表示功能故障,優選測試點共12個。
將無故障狀態表示為f0,故障狀態表示為{f1,f2,…f20}。假設12個測試的代價相等,均為1。無故障狀態及20個故障狀態的故障概率為

表1 遺傳算法選擇的測試集合
{0.5,0.02,0.01,0.1,0.02,0.03,0.01,0.01,0.02,0.03,0.01,0.01,0.02,0.03,0.02,0.05,0.01,0.02,0.05,0.02,0.01}。依照上文所述方法,由于故障狀態較多,測試代價評估值計算量較大,為節省計算時間,本文通過Matlab編程求取每項測試的測試代價評估值,再結合AO*算法步驟求取艦炮制導彈藥控制系統單故障診斷策略,得到的單故障診斷策略如圖2所示。
分析圖2可知,艦炮制導彈藥控制系統內的所有故障都能夠被正確檢測和定位。經計算,測試代價為6.74,是原本測試代價12的56.2%。因此按照以上得到的診斷策略的順序可以迅速隔離故障源,且所需的測試成本理論上是最優的。
在得到單故障診斷策略的前提下,考慮多故障的情況,不限制并發故障數目,分析圖2所示故障樹中各葉子節點的隱含故障和偽故障,分析結果如表2所示。
根據多故障診斷策略設計方法,引入維修節點,得到的多故障診斷策略如圖3所示。
若設置四個故障點,分別為f2、f4、f11和f15。故障表現如表3所示。

圖2 艦炮制導彈藥控制系統單故障診斷策略

表2 控制系統診斷樹中各葉子節點隱含故障和偽故障分析結果

圖3 艦炮制導彈藥控制系統多故障診斷策略

表3 設置故障的故障表現
按照圖3所示的診斷策略對故障進行診斷,診斷流程如圖4所示。

圖4 診斷流程
由圖4可看出四個故障均被定位,則所有故障都可被排除,因此該故障診斷策略有效。
另設置三個故障點,分別為f5、f10和f16。故障表現如表4所示。

表4 故障表現
按照圖3所示的診斷策略對故障進行診斷,診斷流程如圖5所示。

圖5 診斷流程
由圖5可看出,隨機設置三個故障仍可以全部被定位,所有故障都可被排除,進一步驗證了該診斷策略的有效性,可用于解決艦炮制導彈藥多故障診斷問題。
本文提出了一種艦炮制導彈藥多故障診斷策略的設計方法。該方法將AO*算法應用到解決艦炮制導彈藥多故障診斷策略設計問題上,得到了艦炮制導彈藥多故障診斷策略。通過驗證表明,AO*算法對解決艦炮制導彈藥多故障診斷策略問題有效,達到了降低艦炮制導彈藥測試成本和提高故障隔離速度的目的。