梁 杰 饒?zhí)熨F
1(中國(guó)鐵路武漢局集團(tuán)有限公司機(jī)務(wù)部 湖北 武漢 430070)
2(株洲中車時(shí)代電氣股份有限公司 湖南 株洲 412001)
故障樹分析法(Fault Tree Analysis,FTA)[1]是目前國(guó)際上公認(rèn)的一種簡(jiǎn)單有效的可靠分析和故障診斷的方法,也是指導(dǎo)系統(tǒng)最優(yōu)化設(shè)計(jì)、薄弱環(huán)節(jié)分析和運(yùn)行維護(hù)的有力工具。由于其推理技術(shù)邏輯性強(qiáng)、使用簡(jiǎn)便、知識(shí)結(jié)構(gòu)清晰,在各大型復(fù)雜系統(tǒng)的故障診斷領(lǐng)域已得到廣泛應(yīng)用。
基于故障樹的機(jī)車診斷系統(tǒng)是將故障樹分析法在可靠性分析和故障診斷方面優(yōu)異的性能,引入到機(jī)車故障診斷診斷領(lǐng)域中。首先應(yīng)用大量專業(yè)知識(shí)和專家經(jīng)驗(yàn)知識(shí)等構(gòu)建故障樹系統(tǒng),利用故障樹的邏輯結(jié)構(gòu)信息以及對(duì)故障樹定性、定量分析的結(jié)果形成相應(yīng)的知識(shí)庫(kù),同時(shí)模擬人類專家的思維方式進(jìn)行推理和判斷,以解決需要技術(shù)專家才能解決的復(fù)雜問(wèn)題,從而實(shí)現(xiàn)對(duì)機(jī)車故障的快速邏輯推理和診斷,為機(jī)車的檢修以及故障處理提供可靠的決策依據(jù)。
本文給出一種新的基于故障樹的機(jī)車診斷系統(tǒng)設(shè)計(jì)方案,減少了對(duì)數(shù)據(jù)庫(kù)的依賴,提高了診斷推理的效率,同時(shí)給出了基于模塊化故障樹的診斷推理以及定性分析方法,為診斷復(fù)雜的機(jī)車系統(tǒng)提供較好的解決方案。
該系統(tǒng)以故障樹的形式組織整個(gè)知識(shí)庫(kù),然后根據(jù)推理機(jī)快速準(zhǔn)確查找故障原因,系統(tǒng)主要功能框圖如圖1所示。
圖1 機(jī)車故障診斷系統(tǒng)框圖
知識(shí)管理:主要包括故障樹的管理、故障樹的分析以及故障節(jié)點(diǎn)信息維護(hù)。
診斷知識(shí)庫(kù):主要包括故障樹結(jié)構(gòu)信息庫(kù)、故障節(jié)點(diǎn)信息庫(kù)。
綜合數(shù)據(jù)庫(kù):主要包括推理的結(jié)論以及推理的中間結(jié)果等信息。
推理機(jī):故障的推理以及故障的識(shí)別。
人機(jī)交互界面:主要負(fù)責(zé)故障征兆和推理結(jié)果顯示,以及為知識(shí)管理和推理過(guò)程控制提供交互界面。
故障樹的管理主要包括故障樹的建立、故障樹的存儲(chǔ)、故障樹的修改維護(hù)等功能。
故障樹建立是故障樹分析的前提,可通過(guò)可視化的方式,利用演繹法,從頂事件到底事件逐步添加,完成故障樹的建立,最后將故障樹的結(jié)構(gòu)信息與節(jié)點(diǎn)信息分別保存在文本文件和數(shù)據(jù)庫(kù)文件中。也可通過(guò)直接編制故障樹文本文件,將故障樹結(jié)構(gòu)按公式形式存儲(chǔ)在文本文件中,一個(gè)文本文件保存一個(gè)故障樹信息,文件名與故障樹信息表中的TreeID一致。一個(gè)公式對(duì)應(yīng)于一行文本,公式存儲(chǔ)順序根據(jù)故障樹結(jié)構(gòu)層次自頂至底?!?”表示或門,“*”表示與門,各個(gè)事件包括頂事件、中間事件、底事件,用相應(yīng)編碼表示,該編碼規(guī)則參見故障字典信息表的FactID字段。故障樹文本文件存儲(chǔ)示例如圖2所示,其對(duì)應(yīng)的故障樹TOP圖如圖3所示,故障樹信息表見表1。
圖2 控制電路電源斷開故障樹文本表示
圖3 控制電路電源斷開故障樹示意圖
表1 故障樹信息表
2.1.1故障樹信息表
故障樹信息表用以存儲(chǔ)故障樹相關(guān)的信息,TreeID表示樹的編號(hào)。第0位為“T”,表示故障樹;第1-3位為車型編碼,如001表示HXD1C、002為HXD1D等;第4-5位為編碼,系統(tǒng)編碼如表2所示;第6-7位表示該系統(tǒng)樹的索引號(hào)。TreeInfo字段主要用于對(duì)故障樹信息進(jìn)行描述。TreeTopEventID字段用以存儲(chǔ)該故障樹的頂事件編號(hào),頂事件編號(hào)即為故障事實(shí)表中的FactID字段。TreeProb字段為該故障樹頂事件發(fā)生的概率。
表2 故障字典信息
2.1.2故障字典信息表
故障信息字典存儲(chǔ)所有故障事實(shí)的相關(guān)信息。其中FactID為故障編號(hào),共16位。第0位為F表示故障事實(shí);第1-3位為車型編碼;第4-5位為系統(tǒng)編碼,如表2所示;第6-8位為部件編碼參見表3,預(yù)留;第9位為故障等級(jí),1表示A類故障,2表示B類故障,3表示C類故障,默認(rèn)為0;第10-13位為故障編碼;第14-15位預(yù)留。FactDescription字段用以對(duì)故障情況進(jìn)行描述。FactDriverInfor字段保存針對(duì)該故障司機(jī)的處理維護(hù)措施。FactMentenInfor字段保存針對(duì)該故障檢修人員的維護(hù)措施。FactSum字段保存該故障發(fā)生的次數(shù),為維護(hù)人員提供參考。FactProb字段保存該事件發(fā)生的概率,關(guān)于故障發(fā)生的概率的設(shè)定可以由領(lǐng)域?qū)<一蚬こ處煾鶕?jù)其經(jīng)驗(yàn)來(lái)設(shè)定,也可以通過(guò)對(duì)故障歷史進(jìn)行統(tǒng)計(jì),計(jì)算各個(gè)事件的發(fā)生概率。
表3 交流傳動(dòng)電力機(jī)車系統(tǒng)名稱及代碼
2.1.3電力機(jī)車系統(tǒng)部件編碼表
在完成故障樹的創(chuàng)建和維護(hù)修改故障樹的信息之后,需同步修改數(shù)據(jù)庫(kù)中的故障樹的節(jié)點(diǎn)信息。故障樹節(jié)點(diǎn)信息表見表4。
表4 故障節(jié)點(diǎn)信息表
續(xù)表4
故障樹節(jié)點(diǎn)信息主要保存建好的故障樹的每個(gè)節(jié)點(diǎn)的信息以及故障樹的網(wǎng)絡(luò)拓?fù)湫畔?,為故障診斷推理提供必要的信息,為模塊化故障樹推理、沖突消解提供支持輔助推理。NodePoseID節(jié)點(diǎn)在故障樹中的位置編號(hào),第0-2位表示節(jié)點(diǎn)在故障樹中的層數(shù),第3-5位表示節(jié)點(diǎn)在該層中從左到右的序號(hào)。MatchDegree字段用以保存匹配度信息,取值范圍為(0,1),表示該節(jié)點(diǎn)事件發(fā)生對(duì)父節(jié)點(diǎn)的貢獻(xiàn)程度,如果該節(jié)點(diǎn)與其兄弟節(jié)點(diǎn)的關(guān)系為與,則它們的匹配度之和為1,如果關(guān)系為或,則該值為1。
故障樹節(jié)點(diǎn)信息在系統(tǒng)程序中用的數(shù)據(jù)結(jié)構(gòu)如下:
故障樹節(jié)點(diǎn)信息類
public class FactNode
{
intindex;
//故障節(jié)點(diǎn)的相對(duì)坐標(biāo)信息,
String description;
//故障節(jié)點(diǎn)的描述信息
String factIDstr;
//故障節(jié)點(diǎn)ID
String gate;
//導(dǎo)致節(jié)點(diǎn)事件發(fā)生的所有子節(jié)點(diǎn)之間的門類型
FactNode(String factIDstr,String description)
{
this.description=description;
this.factIDstr= factIDstr;
}
FactNode (){}
void setFactNodeIndex(int index)
{
this.index =index;
}
……
}
故障樹分析模塊主要用來(lái)對(duì)構(gòu)建的故障樹進(jìn)行定性和定量分析。定性分析是指尋找出導(dǎo)致頂事件發(fā)生的故障源,識(shí)別導(dǎo)致頂事件發(fā)生的所有故障模式,即尋找故障樹所有最小割集;定量分析是通過(guò)底事件發(fā)生概率計(jì)算出頂事件發(fā)生的概率,同時(shí)完成事件重要度計(jì)算,即事件故障發(fā)生對(duì)頂事件影響大小尺度的計(jì)算。由于故障樹增大,底事件將隨之增加,最小子集的查找的工作量將呈非線性增長(zhǎng),提出了模塊化割集處理的方法。下面從定性分析、模塊化割集處理、定量分析三個(gè)方面分析模塊進(jìn)行闡述。
2.2.1定性分析
對(duì)故障樹的定性分析,即通過(guò)分析故障樹的最小割集中包含的底事件狀態(tài),或利用對(duì)最小路集所包含的通道事件的狀態(tài)分析,實(shí)現(xiàn)對(duì)故障的預(yù)測(cè)及診斷。采用自上而下的故障樹搜尋算法,計(jì)算故障樹的最小割集,即導(dǎo)致故障樹頂層故障事件發(fā)生的基本事件的最小集合,確定導(dǎo)致系統(tǒng)故障的各個(gè)基本原因,可以為檢修和維護(hù)提供支持。
常采用由上而下的故障樹搜尋算法來(lái)求解故障樹最小割集,算法實(shí)現(xiàn)過(guò)程:邏輯“與”增加的是割集容量,邏輯“或”增加的是割集的數(shù)量。從故障樹頂事件開始,由上到下,依次把上一級(jí)事件置換為下一級(jí)事件,遇到與門將輸入事件橫向并列寫出,遇到或門將輸入事件豎向串列寫出,直到把全部邏輯門都置換成底事件為止,此時(shí)最后一列代表所有割集,割集采用最小割集素?cái)?shù)法,其思想就是給每個(gè)底事件賦于素?cái)?shù),割集相除去掉能作為被除數(shù)的割集,從而得到最小割集。以圖2所示的MIO控制電路電源斷開故障樹為例,可得到最小割集表示如下:{F001080000103601},{F001080000103603},{F001080000103604},{F001080000103606},{F001080000103607 },{F001080000103608 }。
同時(shí)利用對(duì)偶樹,確定故障樹的最小路集,及保證系統(tǒng)不發(fā)生故障的最小基本事件的集合,從而保證系統(tǒng)的穩(wěn)定和安全,為控制系統(tǒng)故障或者為已發(fā)生故障系統(tǒng)恢復(fù)正常提供依據(jù)。最小割集以及最小路集的數(shù)據(jù)信息表如表5-表8所示。
表5 最小隔集表
表6 最小割集底事件表
表7 最小路集表
表8 最小路集底事件表
2.2.2定量分析
故障樹定量分析[2],即對(duì)系統(tǒng)的可靠度、不可靠度以及相關(guān)事件的重要度等指標(biāo)進(jìn)行量化,通過(guò)數(shù)學(xué)手段實(shí)現(xiàn)對(duì)系統(tǒng)的安全性、穩(wěn)定性與相關(guān)因素之間的影響關(guān)系以及各構(gòu)成元件對(duì)安全性的重要度等方面的量化研究。根據(jù)故障樹定量分析的結(jié)果,指導(dǎo)系統(tǒng)模塊診斷順序,盡早發(fā)現(xiàn)故障源。
底事件的概率設(shè)定,一般是由工程技術(shù)人員或者領(lǐng)域?qū)<彝ㄟ^(guò)界面進(jìn)行設(shè)置,同時(shí),也可以通過(guò)對(duì)故障歷史進(jìn)行統(tǒng)計(jì),計(jì)算各個(gè)事件發(fā)生概率。最小割集故障概率等于它所包含的各個(gè)底事件概率的乘積,故障樹頂事件的概率可以根據(jù)其邏輯關(guān)系式推算出來(lái)。
假如各個(gè)底事件是相互獨(dú)立,各個(gè)割集的概率為割集中各個(gè)底事件發(fā)生概率的乘積。Fs表示頂事件發(fā)生概率,n表示底事件的個(gè)數(shù),m表示MCS的個(gè)數(shù),F(xiàn)iFj表示MCS的概率積,頂事件發(fā)生的概率近似為:
(1)
為了描述故障樹各個(gè)最小割集對(duì)頂事件所做的貢獻(xiàn)大小,可將最小割集的重要度定義為:
Fc/s=Fc/Fs
(2)
式中:Fc表示最小割集的發(fā)生概率;Fs為故障樹頂事件的發(fā)生概率;最小割集重要度Fc/s是最小割集概率占故障樹頂事件的概率的比率。
以MIO控制電路電源斷開故障樹為例,如圖2所示,介紹對(duì)故障樹的定性分析。MIO控制電路電源斷開故障樹的底事件概率如表9所示。經(jīng)過(guò)計(jì)算,最小割集表示如下:{F001080000103601},{F001080000103603},{F001080000103604},{F001080000103606},{F001080000103607 },{F001080000103608 }。
表9 MIO控制電路電源斷開故障樹底事件概率表
根據(jù)概率統(tǒng)計(jì)知識(shí)計(jì)算故障樹各中間件與頂事件的概率如下:
PF001080000103605=1-(1-PF001080000103606)(1-PF001080000103607)×
(1-PF001080000103608)=0.519 8
PF001080000103602=1-(1-PF001080000103603)(1-PF001080000103604)×
(1-PF001080000103605)=0.366 5
PF001080000103600=1-(1-PF001080000103601)(1-PF001080000103602)=
0.458 2
PF001080000103600為頂事件MIO控制電路電源斷開故障發(fā)生的概率,然后根據(jù)式(2)計(jì)算出各個(gè)最小割集的重要度,如表10所示。
表10 MIO控制電路電源斷開故障樹最小割集重要度
根據(jù)表中數(shù)據(jù)可以得出,最小割集{F001080000103608}重要度最大,規(guī)則匹配時(shí),與其對(duì)應(yīng)的規(guī)則進(jìn)行最先匹配,若匹配不成功,則按重要度的大小,依次向后匹配。
診斷推理模塊,根據(jù)輸入的故障特征,利用知識(shí)庫(kù)知識(shí),進(jìn)行故障樹的查找完成故障推理,是系統(tǒng)的核心模塊。診斷推理首先進(jìn)行故障字典查找,其流程圖如圖4所示。故障推理的方法主要包括:正向推理,即從事實(shí)到目標(biāo)的推理,通過(guò)一定規(guī)則來(lái)證明故障原因的正確性;反向推理,即自頂而下的推理,找出故障發(fā)生的根本原因。推理解釋功能在系統(tǒng)推理時(shí)完成對(duì)推理過(guò)程的解釋,也可實(shí)現(xiàn)推理的人機(jī)交互,給出故障診斷策略。自動(dòng)診斷則根據(jù)故障樹的最小割集,直接給出故障樹的失效模式。
圖4 故障字典查找邏輯圖
在該系統(tǒng)中進(jìn)行故障診斷時(shí),根據(jù)輸入的故障描述信息在故障信息字典中查找故障的FactID,然后根據(jù)FactID在故障節(jié)點(diǎn)信息表中獲取相應(yīng)的故障樹的TreeID,根據(jù)當(dāng)前獲得的TreeID查找并讀取與其名匹配的故障樹文本文件,然后解析存儲(chǔ)的故障樹公式,生成相應(yīng)的故障樹節(jié)點(diǎn)。通過(guò)繼承Java應(yīng)用開發(fā)工具包SWING中的DefaultMutableTreeNode類創(chuàng)建相應(yīng)的樹節(jié)點(diǎn),以樹狀結(jié)構(gòu)保存對(duì)應(yīng)的故障樹的所有信息,后續(xù)再診斷推理中則可直接調(diào)用該類的parent(),children()函數(shù)直接實(shí)現(xiàn)對(duì)故障的逐級(jí)正向或逆向診斷推理。利用DefaultMutableTreeNode結(jié)構(gòu)創(chuàng)建JTree對(duì)象,實(shí)現(xiàn)按照層次結(jié)構(gòu)可視化展示故障樹的結(jié)構(gòu)信息。系統(tǒng)程序中用到的數(shù)據(jù)結(jié)構(gòu)信息如下:
故障樹結(jié)構(gòu)信息類
class FaultTreeNode extends DefaultMutableTreeNode
{
FactNode node;
FaultTreeNode (FactNode node )
{
super(node);
this.node =node;
}
public String toString()
{
returnnode.description;
}
……
}
JTree faultTree=new JTree(FaultTreeNode root);
在反向推理時(shí),若當(dāng)前推理已到達(dá)該故障樹的葉子節(jié)點(diǎn),根據(jù)該葉子節(jié)點(diǎn)在故障節(jié)點(diǎn)信息表中的信息,確定是否存在以該節(jié)點(diǎn)為頂事件的故障樹,若不存在則推理結(jié)束,否則讀取對(duì)應(yīng)的故障樹,繼續(xù)推理。同理,在正向推理過(guò)程中,若推理已經(jīng)到達(dá)頂事件,則在故障節(jié)點(diǎn)信息表中查詢是否存在以該節(jié)點(diǎn)為葉子節(jié)點(diǎn)的故障樹,若存在則查找并解析該故障樹,繼續(xù)進(jìn)行正向推理,直到推理結(jié)束。
自動(dòng)診斷推理,即直接求出故障樹的最小割集。機(jī)車系統(tǒng)由很多系統(tǒng)部件組成,各個(gè)系統(tǒng)由若干子系統(tǒng)構(gòu)成,各系統(tǒng)之間也存在一定的關(guān)聯(lián)關(guān)系,任何一棵故障樹可能只是系統(tǒng)中的一棵子樹,所以給出了模塊化故障樹的割集計(jì)算方式。首先完成對(duì)各子樹的割集及分析結(jié)果的計(jì)算,并存儲(chǔ)這些結(jié)果,然后對(duì)總故障樹進(jìn)行分析。在輸出總故障樹最小割集時(shí),首先遍歷該最小割集合中的各個(gè)元素,若不存在以該元素為頂事件的故障樹,則將該元素的遍歷標(biāo)志置為1,否則將該子樹的割集與該割集中的其他元素進(jìn)行與運(yùn)算,形成新的割集集合,同時(shí)將該子樹頂事件的概率作為該底事件發(fā)生的概率。將不存在元素為頂事件的割集放入割集輸出隊(duì)列中,直到存在割集中的元素未被遍歷,則表示最終割集計(jì)算完畢。其計(jì)算流程圖如圖5所示。
圖5 模塊化割集處理流程
另外在診斷推理過(guò)程中,需要解決沖突消解問(wèn)題。即在當(dāng)前的推理過(guò)程中,若有幾條規(guī)則同時(shí)滿足,則進(jìn)入推理沖突消解程序。該程序首先比較規(guī)則的匹配度,匹配度相同時(shí)考慮規(guī)則的重要度或者頂事件的概率重要度等相關(guān)信息。沖突消解原則:(1) 判斷故障事實(shí)與規(guī)則的匹配度,匹配度高的規(guī)則優(yōu)先選擇。(2) 匹配度相同時(shí),若為不同的故障樹,則根據(jù)頂事件發(fā)生概率進(jìn)行選擇,若在同一故障樹內(nèi),則根據(jù)其父事件概率進(jìn)行選擇,依次遞歸。
本文給出了該系統(tǒng)的詳細(xì)設(shè)計(jì)方案,故障樹的信息采用文本和數(shù)據(jù)庫(kù)存儲(chǔ)方式相結(jié)合,使故障樹的結(jié)構(gòu)信息與節(jié)點(diǎn)信息分離,減少了對(duì)數(shù)據(jù)庫(kù)的依賴而造成知識(shí)爆炸,有效降低了推理診斷過(guò)程中的知識(shí)搜索空間;同時(shí)采用JAVA控件存儲(chǔ)故障樹信息,充分利用JTree控件的優(yōu)勢(shì),快速實(shí)現(xiàn)故障的邏輯推理診斷,從而不完全依賴對(duì)知識(shí)庫(kù)的搜索進(jìn)行知識(shí)的推理,進(jìn)一步提高了推理效率;給出了模塊化故障樹的推理診斷以及定性定量分析解決方案,對(duì)大型復(fù)雜系統(tǒng)的故障診斷具有重要意義。