文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2016.01.027
中文引用格式: 凌牧,,袁海文. 二元決策圖ITE算法在.NET平臺的實(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ù)測故障的方法,引入底事件工作狀態(tài)隸屬度的概念,,實(shí)時(shí)計(jì)算頂事件發(fā)生概率,,對薄弱系統(tǒng)環(huán)節(jié)進(jìn)行預(yù)測。但是這種方法僅能作為預(yù)測軟件,,并未達(dá)到實(shí)時(shí)診斷系統(tǒng)故障的效果,。
二元決策圖[4-5](Binary Decision Diagram,BDD)本質(zhì)上是變量集的布爾函數(shù),,這與故障樹的割集[6]概念一致,,由于BDD的結(jié)構(gòu)規(guī)范,對比故障樹節(jié)點(diǎn)更少,對于存儲器空間占用少,,有利于快速得出故障失效的不交化割集,。
在實(shí)際工程應(yīng)用中,現(xiàn)場操作人員雖然有現(xiàn)場數(shù)據(jù),,但對于復(fù)雜系統(tǒng)故障不一定具備診斷知識,,因此很難現(xiàn)場準(zhǔn)確診斷故障原因[7]。對于以上問題,,本文提出了一種針對具有總線報(bào)警的實(shí)時(shí)監(jiān)控系統(tǒng),,根據(jù)總線節(jié)點(diǎn)的報(bào)警代碼,利用ITE算法將故障樹轉(zhuǎn)化為BDD,,在線實(shí)時(shí)診斷系統(tǒng)故障,,對于分析系統(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)算子對圖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)。首先,,對于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)對于門形成該門的ITE結(jié)構(gòu),;(2)將所有門的ITE結(jié)構(gòu)連接起來形成最終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)遞歸連接。
對于整棵樹的ITE求解步驟為:(1)對所有門,,求取其門下所有底事件的ITE合并結(jié)構(gòu);(2)從層數(shù)最多的門開始求解ITE,,逐步替代其上層門的輸入直到頂門,。最終得到頂門的ITE結(jié)構(gòu)就是該故障樹的BDD形式。
2 算法實(shí)現(xiàn)平臺
作為一個(gè)通用的嵌入式軟件平臺[9-10],,對于一個(gè)具有CAN總線結(jié)構(gòu)的系統(tǒng),,合理設(shè)置故障報(bào)警節(jié)點(diǎn),以所有故障節(jié)點(diǎn)作為故障樹的頂事件建立多棵故障樹,,通過GUI界面將所有故障樹信息錄入軟件平臺,。監(jiān)控界面實(shí)時(shí)顯示系統(tǒng)數(shù)據(jù),,當(dāng)有報(bào)警信號時(shí),操作人員可判讀是否需要進(jìn)行診斷,,如要現(xiàn)場診斷,,則進(jìn)入診斷推理界面,根據(jù)報(bà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)測參數(shù)分開,。首先將所有的系統(tǒng)參數(shù)錄入,在建樹的過程中直接選擇相應(yīng)底事件對應(yīng)的參數(shù),,這樣避免了不同底事件在依賴同樣特征參數(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ò)傳輸時(shí)間短的優(yōu)點(diǎn),,適用于平臺的分布式數(shù)據(jù)傳輸環(huán)境,,基于以上原因,數(shù)據(jù)庫采用SQL Server軟件平臺開發(fā)[8],,與界面設(shè)計(jì)軟件Visual Studio有良好的接口,。
數(shù)據(jù)庫主要存儲了包括故障樹信息、原始特征參數(shù)值(總線數(shù)據(jù)),、推理過程中得到的各種中間信息(割集),、報(bào)警信息和解決問題后輸出結(jié)果信息(修復(fù)方法)等??偩€數(shù)據(jù)分為報(bào)警信息和征兆參數(shù)值兩部分,。在導(dǎo)入故障樹信息時(shí),將各參數(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ù)實(shí)際值提供給監(jiān)控界面顯示。
3 應(yīng)用
3.1 案例分析
車輛液壓控制系統(tǒng)中包含液壓機(jī)械設(shè)備,、控制電路等復(fù)雜結(jié)構(gòu),,發(fā)生故障的可能性也隨之增大。某些故障不但會影響車輛正常運(yùn)轉(zhuǎn),,還可能會導(dǎo)致整個(gè)系統(tǒng)的故障,。
如圖4所示為某液壓控制系統(tǒng)故障樹,本文假設(shè)所有事件是二態(tài)的,,即故障或正常,。故障樹信息如表4所示。本系統(tǒng)故障樹特點(diǎn)在于底事件可分兩類:人工判斷類及自動(dòng)判斷類,。其中,,人工判斷類底事件只對應(yīng)一個(gè)特征參數(shù),即需要人工判斷該特征參數(shù)的狀態(tài),。而對于自動(dòng)判斷類底事件,,出于通用性考慮,為每個(gè)底事件預(yù)留3個(gè)特征參數(shù),,且3個(gè)特征參數(shù)之間的布爾關(guān)系可編輯,,系統(tǒng)將在后臺根據(jù)現(xiàn)場數(shù)據(jù)及用戶給出的布爾關(guān)系判斷該底事件是否發(fā)生。
頂事件為主泵異常,,底事件主要分為電控回路故障,、電纜故障、閥件故障等,。對與每個(gè)底事件有相應(yīng)的征兆,,如X1電源故障,可通過電源電壓U判斷X1的狀態(tài),;而有的底事件可能對應(yīng)多個(gè)征兆,,如X8閥件卡滯對應(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)
分別采用兩臺PC機(jī)作為現(xiàn)場環(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ù),,在升車過程進(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ù)知識存儲機(jī)制,,對于完善已有故障樹,,從而提升整個(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)測方法[J].國防科技大學(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ù)庫的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.