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