文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2016.01.027
中文引用格式: 凌牧,袁海文. 二元決策圖ITE算法在.NET平臺的實現(xiàn)與應(yīng)用[J].電子技術(shù)應(yīng)用,2016,42(1):104-107.
英文引用格式: Ling Mu,Yuan Haiwen. Implementation and application of BDD using ITE algorithm on .NET platform[J].Application of Electronic Technique,2016,42(1):104-107.
0 引言
故障樹分析法[1]是在實際工程應(yīng)用中判斷系統(tǒng)安全性與可靠性常用的方法,在理論分析方面已經(jīng)發(fā)展得非常成熟,其研究多數(shù)集中于計算頂事件發(fā)生概率和分析系統(tǒng)薄弱環(huán)節(jié)的算法上,如文獻(xiàn)[2]中的智能故障樹診斷方法,按照計算所得底事件的故障率確定故障診斷的最優(yōu)順序,是典型的故障樹靜態(tài)分析方法。利用故障樹法診斷實時診斷的系統(tǒng)也有一些研究成果,如文獻(xiàn)[3]提出了一種實時預(yù)測故障的方法,引入底事件工作狀態(tài)隸屬度的概念,實時計算頂事件發(fā)生概率,對薄弱系統(tǒng)環(huán)節(jié)進(jìn)行預(yù)測。但是這種方法僅能作為預(yù)測軟件,并未達(dá)到實時診斷系統(tǒng)故障的效果。
二元決策圖[4-5](Binary Decision Diagram,BDD)本質(zhì)上是變量集的布爾函數(shù),這與故障樹的割集[6]概念一致,由于BDD的結(jié)構(gòu)規(guī)范,對比故障樹節(jié)點更少,對于存儲器空間占用少,有利于快速得出故障失效的不交化割集。
在實際工程應(yīng)用中,現(xiàn)場操作人員雖然有現(xiàn)場數(shù)據(jù),但對于復(fù)雜系統(tǒng)故障不一定具備診斷知識,因此很難現(xiàn)場準(zhǔn)確診斷故障原因[7]。對于以上問題,本文提出了一種針對具有總線報警的實時監(jiān)控系統(tǒng),根據(jù)總線節(jié)點的報警代碼,利用ITE算法將故障樹轉(zhuǎn)化為BDD,在線實時診斷系統(tǒng)故障,對于分析系統(tǒng)故障模式,不斷完善修正故障樹有一定實際意義。
1 ITE算法及實現(xiàn)
1.1 ITE算法基本原理
BDD是一種非閉環(huán)有向圖,是一組變量的布爾表達(dá)式的圖形化表示,在BDD中除了變量節(jié)點,還存在兩種基本終結(jié)點“0”和“1”,從層數(shù)最高的“1”節(jié)點沿著所有節(jié)點的“1”腳回溯至BDD的頂節(jié)點,得到的變量集合之和即為該BDD的布爾表達(dá)式。ITE(if-else-then)算子采用香農(nóng)分解式的思想,將BDD按變量排序順序依次展開,比傳統(tǒng)二元決策圖轉(zhuǎn)換算法復(fù)雜度低,其表達(dá)式如式(1)所示。
采用式(1)算子對圖1故障樹進(jìn)行BDD轉(zhuǎn)換,假設(shè)其底事件排序為:abcd,那么依次得到故障樹中各個門的ITE表達(dá)式如下:
由該故障樹的頂事件(TOP)ITE表達(dá)式可得圖1故障樹的割集為:{ab,acd,cd}。
1.2 ITE算法實現(xiàn)
由于BDD特殊的結(jié)構(gòu)形式,每個節(jié)點的結(jié)構(gòu)都是相同的,適合使用遞歸方法實現(xiàn)。首先,對于ITE節(jié)點定義,如表1所示。
從表1中可以看出形成BDD的ITE結(jié)構(gòu)節(jié)點定義中使用了自引用的方式,其中它的nodehigh 、nodelow屬性也是itenode的類結(jié)構(gòu),這樣使得在ITE節(jié)點連接時可以使用遞歸方式,形成的合并節(jié)點也都為相同結(jié)構(gòu)。
使用ITE算法將故障樹轉(zhuǎn)換為BDD主要有兩個步驟:(1)對于門形成該門的ITE結(jié)構(gòu);(2)將所有門的ITE結(jié)構(gòu)連接起來形成最終BDD。具體算法如表2、3所示。
表2中形成子門所有底事件的ITE函數(shù)將所有該門下的底事件連接形成ITE函數(shù),由于在連接底事件的時候不存在兩個ITE間的操作,只需編輯被連接節(jié)點的左右腳即可,如節(jié)點b需要連接節(jié)點a時,判斷b節(jié)點父門的類型,若是“或”門,b節(jié)點的ITE結(jié)構(gòu)中第2個元素中放入a節(jié)點,第3個元素置“0”;若是“與”門,b節(jié)點的ITE結(jié)構(gòu)中第3個元素中放入a節(jié)點,第2個元素置“1”,如此循環(huán)至該門下所有節(jié)點均連接完成,最后返回該門所有底事件的ITE結(jié)構(gòu)。
表3中ITE連接函數(shù)有3個變量,變量f、g表示2個待連接的ITE節(jié)點,變量op表示連接類型。兩個ITE節(jié)點連接主要分為3種情況:(1)f、g節(jié)點中有一個是“0/1”節(jié)點,根據(jù)op類別返回相應(yīng)ITE節(jié)點;(2)計算表中已經(jīng)有節(jié)點f、g的相關(guān)操作,直接返回操作值;(3)以上2種情況均不符合,則按照ITE結(jié)構(gòu)遞歸連接。
對于整棵樹的ITE求解步驟為:(1)對所有門,求取其門下所有底事件的ITE合并結(jié)構(gòu);(2)從層數(shù)最多的門開始求解ITE,逐步替代其上層門的輸入直到頂門。最終得到頂門的ITE結(jié)構(gòu)就是該故障樹的BDD形式。
2 算法實現(xiàn)平臺
作為一個通用的嵌入式軟件平臺[9-10],對于一個具有CAN總線結(jié)構(gòu)的系統(tǒng),合理設(shè)置故障報警節(jié)點,以所有故障節(jié)點作為故障樹的頂事件建立多棵故障樹,通過GUI界面將所有故障樹信息錄入軟件平臺。監(jiān)控界面實時顯示系統(tǒng)數(shù)據(jù),當(dāng)有報警信號時,操作人員可判讀是否需要進(jìn)行診斷,如要現(xiàn)場診斷,則進(jìn)入診斷推理界面,根據(jù)報警信號找到相應(yīng)故障樹,采用ITE算法,進(jìn)行定性分析,確定發(fā)生故障的割集集合,給出結(jié)果及修復(fù)信息,系統(tǒng)結(jié)構(gòu)如圖2所示。
2.1 故障樹建模模塊
在實際監(jiān)控診斷工作開始之前,首先需要建立本系統(tǒng)的故障樹模型。在建立故障樹時,出于軟件通用性考慮,將建立故障樹與錄入監(jiān)測參數(shù)分開。首先將所有的系統(tǒng)參數(shù)錄入,在建樹的過程中直接選擇相應(yīng)底事件對應(yīng)的參數(shù),這樣避免了不同底事件在依賴同樣特征參數(shù)時的重復(fù)操作,提高了建樹效率及準(zhǔn)確性。
2.2 數(shù)據(jù)庫模塊
數(shù)據(jù)庫是平臺系統(tǒng)存儲故障樹信息和原始系統(tǒng)數(shù)據(jù)的重要環(huán)節(jié),如圖3所示是系統(tǒng)的數(shù)據(jù)庫結(jié)構(gòu)。ADO.NET平臺具有執(zhí)行速度快、網(wǎng)絡(luò)傳輸時間短的優(yōu)點,適用于平臺的分布式數(shù)據(jù)傳輸環(huán)境,基于以上原因,數(shù)據(jù)庫采用SQL Server軟件平臺開發(fā)[8],與界面設(shè)計軟件Visual Studio有良好的接口。
數(shù)據(jù)庫主要存儲了包括故障樹信息、原始特征參數(shù)值(總線數(shù)據(jù))、推理過程中得到的各種中間信息(割集)、報警信息和解決問題后輸出結(jié)果信息(修復(fù)方法)等??偩€數(shù)據(jù)分為報警信息和征兆參數(shù)值兩部分。在導(dǎo)入故障樹信息時,將各參數(shù)對應(yīng)的CAN總線關(guān)聯(lián)對象的ID、關(guān)聯(lián)指針、對象長度一并導(dǎo)入,根據(jù)這些信息,系統(tǒng)可以將收到的數(shù)據(jù)幀轉(zhuǎn)換為有意義的參數(shù)值。如圖3中的WriteData_SQL表記錄所有的總線原始數(shù)據(jù),通過查找parameters表將原始二進(jìn)制數(shù)據(jù)翻譯成參數(shù)實際值提供給監(jiān)控界面顯示。
3 應(yīng)用
3.1 案例分析
車輛液壓控制系統(tǒng)中包含液壓機(jī)械設(shè)備、控制電路等復(fù)雜結(jié)構(gòu),發(fā)生故障的可能性也隨之增大。某些故障不但會影響車輛正常運(yùn)轉(zhuǎn),還可能會導(dǎo)致整個系統(tǒng)的故障。
如圖4所示為某液壓控制系統(tǒng)故障樹,本文假設(shè)所有事件是二態(tài)的,即故障或正常。故障樹信息如表4所示。本系統(tǒng)故障樹特點在于底事件可分兩類:人工判斷類及自動判斷類。其中,人工判斷類底事件只對應(yīng)一個特征參數(shù),即需要人工判斷該特征參數(shù)的狀態(tài)。而對于自動判斷類底事件,出于通用性考慮,為每個底事件預(yù)留3個特征參數(shù),且3個特征參數(shù)之間的布爾關(guān)系可編輯,系統(tǒng)將在后臺根據(jù)現(xiàn)場數(shù)據(jù)及用戶給出的布爾關(guān)系判斷該底事件是否發(fā)生。
頂事件為主泵異常,底事件主要分為電控回路故障、電纜故障、閥件故障等。對與每個底事件有相應(yīng)的征兆,如X1電源故障,可通過電源電壓U判斷X1的狀態(tài);而有的底事件可能對應(yīng)多個征兆,如X8閥件卡滯對應(yīng)的征兆有控制電流I和系統(tǒng)壓力P兩個參數(shù),這兩個參數(shù)之間也存在布爾關(guān)系,當(dāng)兩個參數(shù)同時異常時X8故障。
3.2 模擬環(huán)境拓?fù)浣Y(jié)構(gòu)
分別采用兩臺PC機(jī)作為現(xiàn)場環(huán)境模擬機(jī)和診斷機(jī),其拓?fù)浣Y(jié)構(gòu)如圖5所示。上位機(jī)模擬發(fā)送總線數(shù)據(jù)以及故障注入,下位機(jī)運(yùn)行本診斷軟件。
3.3 實驗結(jié)果分析
在模擬開始前,將上文故障樹信息輸入診斷軟件,并將該系統(tǒng)的模擬總線數(shù)據(jù)輸入上位機(jī)。注入液位高度故障數(shù)據(jù),在升車過程進(jìn)行到20 s時注入報警幀,報警代碼為101。接到報警后,軟件提示是否立即診斷,如圖6所示,即轉(zhuǎn)入診斷推理界面,如圖7所示,診斷結(jié)果為油液高度異常。
4 結(jié)論
本文將二元決策圖ITE算法應(yīng)用于實際系統(tǒng),實現(xiàn)了在線系統(tǒng)故障診斷軟件的設(shè)計仿真,根據(jù)仿真結(jié)果可得出:
(1)算法通用性強(qiáng),可靠性高。二元決策圖ITE算法可應(yīng)用于任何結(jié)構(gòu)的系統(tǒng),具有一定的工程意義。
(2)診斷效率高,實時診斷故障原因并給出解決方案。
(3)良好的人機(jī)交互界面,完整的數(shù)據(jù)知識存儲機(jī)制,對于完善已有故障樹,從而提升整個系統(tǒng)的可靠性有一定的應(yīng)用價值。
參考文獻(xiàn)
[1] 王少萍.工程可靠性[M].北京:北京航空航天大學(xué)出版社,2000.
[2] 倪紹徐,張裕芳,易宏,等.基于故障樹的智能故障診斷方法[J].上海交通大學(xué)學(xué)報.2008(8).
[3] 董豆豆,周忠寶.基于故障樹的系統(tǒng)安全風(fēng)險實時監(jiān)測方法[J].國防科技大學(xué)學(xué)報.2006(28).
[4] 張超.基于BDD的動態(tài)故障樹優(yōu)化研究[D].西安:西北工業(yè)大學(xué),2004.
[5] 袁靜,胡昌華,徐瑞,等.基于改進(jìn)BDD算法的導(dǎo)彈安控系統(tǒng)故障樹仿真分析[J].系統(tǒng)仿真學(xué)報,2007(19).
[6] 朱大奇,于盛林.基于故障樹最小割集的故障診斷方法研究[J],數(shù)據(jù)采集與處理,2002,17(3).
[7] 朱大奇,于盛林,陳小平.基于故障樹分析及虛擬儀器的電子部件故障診斷技術(shù)研究[J].儀器儀表學(xué)報,2002,23(1).
[8] 張勇.基于ACCESS數(shù)據(jù)庫的CAN總線數(shù)據(jù)采集方法的設(shè)計與實現(xiàn)[J].制造業(yè)自動化.2011(21).
[9] JOANNE B D,KEVIN J S.Developing a low-cost high-quality software tool for dynamic fault-tree analysis.IEEE Trans.Reliability,2000(40):49-59.
[10] Zhou Zhiwei,Zhuang Ming.Design of a real-time fault diagnosis expert system for the EAST cryoplant.Fusion Engineering and Design,2012(87):2002-2006.