胡 杰,耿 號(hào),李源潔,耿黃政,童敏敏
(1.武漢理工大學(xué),現(xiàn)代汽車(chē)零部件技術(shù)湖北省重點(diǎn)實(shí)驗(yàn)室,汽車(chē)零部件技術(shù)湖北省協(xié)同創(chuàng)新中心,湖北省新能源與智能網(wǎng)聯(lián)車(chē)工程技術(shù)研究中心,武漢 430070;2.上汽通用五菱股份有限公司,柳州 545007)
車(chē)輛故障碼誕生的初衷是為了簡(jiǎn)化對(duì)車(chē)輛故障的判斷和定位過(guò)程,縮短故障檢修時(shí)間。現(xiàn)代汽車(chē)包含大量的傳感器、執(zhí)行器和電控單元(electronic control units,ECUs)[1],單輛車(chē)定義的故障碼數(shù)量可達(dá)1 000以上。車(chē)輛電控模塊的獨(dú)立生產(chǎn),使得單個(gè)電控模塊僅針對(duì)所接收的信號(hào)及報(bào)文數(shù)據(jù)進(jìn)行故障判定,并不考慮與其他電控模塊的故障關(guān)聯(lián)。故障碼總數(shù)多,且單個(gè)模塊形成了故障判定“孤島”,實(shí)際電控故障發(fā)生時(shí),由于電控系統(tǒng)的耦合性,電控信號(hào)的流轉(zhuǎn)使故障碼的產(chǎn)生出現(xiàn)了耦合與駁雜的情況,單次維修讀取的故障碼數(shù)量可以達(dá)到20 個(gè)甚至更多,大量的故障碼模糊了故障源頭,增加了故障定位時(shí)間。
目前基于車(chē)輛故障碼優(yōu)化車(chē)輛故障診斷過(guò)程研究主要集中在故障碼模式識(shí)別和以故障碼為特征輸入的機(jī)器學(xué)習(xí):Theissler[1]提出了一種基于故障碼和車(chē)輛信號(hào)的車(chē)輛操作模式的分類方法,對(duì)故障診斷中的新穎的操作模式進(jìn)行判斷;Kriebel 等[2]基于故障碼產(chǎn)生的時(shí)間和空間對(duì)特定時(shí)空產(chǎn)生的故障碼模式進(jìn)行識(shí)別,并提出了一種模式融合的方法,但未將故障碼和實(shí)際故障結(jié)合進(jìn)行分析;Thoorpu 等[3]將故障碼使用序列模型、非序列模型、深度學(xué)習(xí)模型進(jìn)行分析,探尋其與車(chē)輛部件故障之間的關(guān)系,并提出了一種序列故障碼的嵌入方法以增加故障診斷的精確度;Kopuru[4]使用深度學(xué)習(xí)算法計(jì)算故障碼和車(chē)內(nèi)信號(hào)之間的關(guān)系,并提出了一種故障碼的預(yù)測(cè)方法;Oliveira 等[5]提出一種基于故障碼的檢修過(guò)程融合和模塊可靠性分析方法。國(guó)內(nèi)對(duì)于使用故障碼進(jìn)行車(chē)輛故障診斷的研究較少,仍直接以故障碼釋義進(jìn)行故障診斷[6],已不再滿足基于故障碼進(jìn)行車(chē)輛故障診斷的實(shí)際需求。綜上,現(xiàn)有研究?jī)H將故障碼作為分析的數(shù)據(jù)特征而忽略了故障碼本身的故障語(yǔ)言屬性,研究得出的結(jié)果對(duì)車(chē)輛內(nèi)部故障的耦合及傳播機(jī)理沒(méi)有解釋作用,在終端檢修過(guò)程中,對(duì)基于故障碼定義進(jìn)行檢修的工作流程沒(méi)有幫助。
車(chē)輛故障碼是車(chē)輛故障的語(yǔ)言載體,對(duì)故障碼間關(guān)系的分析,即是對(duì)車(chē)輛內(nèi)有故障碼定義的故障之間關(guān)系的分析,這一分析結(jié)果對(duì)車(chē)輛耦合故障的解耦具有一定意義。對(duì)故障碼數(shù)據(jù)進(jìn)行分析,挖掘故障碼之間的關(guān)聯(lián)性,形成故障碼關(guān)聯(lián)知識(shí)并保存。針對(duì)耦合電控故障產(chǎn)生的大量故障碼,基于關(guān)聯(lián)關(guān)系定位主要故障碼,可以顯著縮短故障檢修時(shí)間。
本文中基于某一新能源車(chē)型產(chǎn)生的歷史故障碼數(shù)據(jù)進(jìn)行關(guān)聯(lián)規(guī)則挖掘,以故障碼之間的關(guān)聯(lián)規(guī)則建立整車(chē)故障碼關(guān)聯(lián)圖以存儲(chǔ)關(guān)聯(lián)知識(shí),提出了基于此關(guān)聯(lián)圖的兩種應(yīng)用場(chǎng)景:(1)故障碼關(guān)聯(lián)可視化,提供耦合故障碼的可解釋性;(2)主要故障碼的確定,縮短基于故障碼的故障分析時(shí)間。
基于故障碼產(chǎn)生及車(chē)輛信號(hào)傳播原理,對(duì)故障碼之間的關(guān)聯(lián)關(guān)系挖掘提出理論依據(jù),給出故障碼之間的關(guān)聯(lián)規(guī)則定義、挖掘和應(yīng)用流程。
車(chē)輛電子電氣故障發(fā)生時(shí),車(chē)輛電控模塊會(huì)進(jìn)行一系列的自診斷與自處理過(guò)程,如圖1 所示,主要包括診斷監(jiān)測(cè)、故障確認(rèn)、診斷故障檢查、故障抑制處理和診斷故障事件存儲(chǔ)。在診斷故障事件存儲(chǔ)階段,故障所產(chǎn)生的故障碼被存儲(chǔ)于存儲(chǔ)器中。車(chē)輛電控模塊不斷增加的同時(shí)也變得更加集中[6],一些功能模塊對(duì)典型故障判斷僅僅依靠電控單元信號(hào)與通信報(bào)文進(jìn)行。
故障信號(hào)傳播模型如圖2 所示,某車(chē)輛故障發(fā)生時(shí),單一電控模塊的信號(hào)異常會(huì)導(dǎo)致相關(guān)聯(lián)的電控模型所監(jiān)測(cè)的信號(hào)值異常,若達(dá)到其他電控模塊自診斷監(jiān)測(cè)閾值等條件時(shí),其他電控模塊也會(huì)進(jìn)行相應(yīng)的故障抑制處理。當(dāng)多個(gè)電控模塊存在上述流程時(shí),故障傳播形成一條復(fù)雜的“鏈路”。這種狀態(tài)下,由診斷設(shè)備讀取到的故障碼數(shù)據(jù)處于一種大量且駁雜的狀態(tài)。
根據(jù)上述討論,單次故障時(shí)產(chǎn)生的故障碼集合有如下特點(diǎn)。
特點(diǎn)1:同一故障產(chǎn)生的故障碼集合是確定的。由于模塊自診斷程序不會(huì)變化,診斷邏輯不會(huì)變化,同一故障產(chǎn)生的故障碼集合應(yīng)是統(tǒng)一的。
特點(diǎn)2:故障碼集合中所有元素可以組成一個(gè)故障碼傳播有向圖。故障信號(hào)的傳遞過(guò)程就是故障碼的產(chǎn)生過(guò)程,與圖2 所示的傳播模型相似,是一個(gè)有向圖。
1.2.1 故障碼關(guān)聯(lián)關(guān)系
由上節(jié)所述,單次故障產(chǎn)生的故障碼集合不變且內(nèi)部元素可構(gòu)建故障碼關(guān)聯(lián)有向圖。設(shè)當(dāng)某故障碼集合表述為有向圖時(shí),存在相鄰故障碼節(jié)點(diǎn)為D1、D2,有關(guān)聯(lián)關(guān)系:D1→D2,表述此關(guān)聯(lián)關(guān)系為:“當(dāng)D1發(fā)生的情況下,D2必然會(huì)發(fā)生”。將單次故障存在的關(guān)聯(lián)關(guān)系拓展至所有歷史數(shù)據(jù),表述為:“在歷史故障碼數(shù)據(jù)中,當(dāng)D1發(fā)生的情況下,D2必然會(huì)發(fā)生”,也即
由于電控模塊的不穩(wěn)定性,式(1)一般不會(huì)得到滿足。在實(shí)際情況中,則應(yīng)有
式中p應(yīng)為接近1的數(shù)字,在本文后續(xù)分析中,取p=0.84(本文3.2小節(jié)給出原因)。
由于故障信號(hào)傳播,故障碼關(guān)聯(lián)關(guān)系與一般單維布爾型數(shù)據(jù)的關(guān)聯(lián)關(guān)系的不同點(diǎn)在于:故障碼關(guān)聯(lián)關(guān)系揭示了故障碼的“因果”。可以認(rèn)為,有關(guān)聯(lián)關(guān)系D1→D2,即意味著D1的產(chǎn)生為D2產(chǎn)生的原因,D2的產(chǎn)生為D1產(chǎn)生的結(jié)果。
綜上,可認(rèn)為在歷史數(shù)據(jù)中出現(xiàn)的故障碼,若滿足式(2),則故障碼之間有相應(yīng)的關(guān)聯(lián)關(guān)系。
1.2.2 故障碼關(guān)聯(lián)規(guī)則
關(guān)聯(lián)規(guī)則挖掘是數(shù)據(jù)挖掘中的重要組成部分[8],設(shè)某一數(shù)據(jù)庫(kù)為D,項(xiàng)目集為某單一數(shù)據(jù)特征的所有可能取值,記為Γ={I1,I2,…,Im},其中Γ為項(xiàng)目集,Ii為某一可能取值,稱為項(xiàng),1 ≤i≤m。事務(wù)由項(xiàng)組成,記為T(mén)。每個(gè)事務(wù)中的項(xiàng)集都是項(xiàng)目集的子集,即有T?Γ。每條事務(wù)都有其唯一標(biāo)識(shí),記為T(mén)ID。某一項(xiàng)集的支持度是指在事務(wù)數(shù)據(jù)庫(kù)中,包含此項(xiàng)集的事務(wù)個(gè)數(shù)與總體事務(wù)個(gè)數(shù)的比值;對(duì)于兩個(gè)項(xiàng)集A、B(A?I,B?I,A∩B= ?)產(chǎn)生的形如A→B的蘊(yùn)含式,此蘊(yùn)含式的置信度是指數(shù)據(jù)庫(kù)事務(wù)中同時(shí)包含A、B項(xiàng)集的個(gè)數(shù)與僅包含A項(xiàng)集的事務(wù)個(gè)數(shù)的比值。支持度和置信度的計(jì)算公式為
式中:||·||指某一數(shù)據(jù)“·”的數(shù)據(jù)個(gè)數(shù);sup(A∪B)為同時(shí)包含項(xiàng)集A、B的事務(wù)個(gè)數(shù)。
關(guān)聯(lián)規(guī)則即為形如A→B的蘊(yùn)含式,關(guān)聯(lián)規(guī)則的關(guān)聯(lián)性強(qiáng)弱由支持度和置信度閾值來(lái)決定,通常將支持度和置信度閾值稱為最小支持度和最小值置信度。滿足這些閾值,也即滿足sup(A∪B) ≥minsup,conf(A→B) ≥minconf的關(guān)聯(lián)規(guī)則認(rèn)為是有趣的,將其稱為強(qiáng)關(guān)聯(lián)規(guī)則。
綜上,1.2.1 節(jié)所述的故障碼關(guān)聯(lián)關(guān)系可與關(guān)聯(lián)規(guī)則相結(jié)合,此時(shí)則有:(1)數(shù)據(jù)庫(kù)D為車(chē)輛故障所傳回的歷史數(shù)據(jù);(2)Γ為車(chē)輛的故障碼清單;(3)Ii為某一故障碼;(4)T為單例故障產(chǎn)生的故障碼集合;(5)minconf為式(2)中的p。
式(2)的計(jì)算也即計(jì)算式(3)和式(4),由于電控系統(tǒng)存在偶發(fā)故障,使得低支持度閾值關(guān)聯(lián)規(guī)則的可信性較低,而選取較大支持度閾值可能會(huì)將部分重要但支持度較低的故障碼丟棄,所以minsup的選擇原則為:在可以對(duì)極少數(shù)偶然發(fā)生故障碼進(jìn)行清理的情況下,取盡可能低的閾值。本文中取參數(shù)minsup= 0.0005。綜上,將1.2.1 節(jié)所述故障碼間關(guān)聯(lián)關(guān)系定義轉(zhuǎn)化為關(guān)聯(lián)規(guī)則挖掘中的置信度定義,為后續(xù)關(guān)聯(lián)規(guī)則計(jì)算及應(yīng)用分析提供理論基礎(chǔ)。
關(guān)聯(lián)規(guī)則挖掘及應(yīng)用流程主要如圖3 所示。主要包括數(shù)據(jù)預(yù)處理過(guò)程、基于改進(jìn)Fp-Tree 的關(guān)聯(lián)規(guī)則挖掘過(guò)程和關(guān)聯(lián)規(guī)則存儲(chǔ)為故障碼關(guān)聯(lián)圖的方法。最后,探討使用故障碼關(guān)聯(lián)圖進(jìn)行故障碼關(guān)聯(lián)挖掘與可視化、主要故障碼確定的應(yīng)用方法,并舉例說(shuō)明驗(yàn)證。
數(shù)據(jù)來(lái)源是某企業(yè)某一新能源車(chē)型在2021 年3 月與8月在維修站點(diǎn)所讀取并保存的故障碼數(shù)據(jù),數(shù)據(jù)集中共有故障碼279 122條,原始部分故障碼數(shù)據(jù)如表1所示。

表1 故障碼數(shù)據(jù)表
表1數(shù)據(jù)中每一條數(shù)據(jù)定義為
式中:ecu為對(duì)應(yīng)的ECU 代碼;s為故障碼狀態(tài);t為上傳時(shí)間;vin為車(chē)輛識(shí)別代號(hào)。
以vin、time為標(biāo)簽,則有
式中j代表第j輛車(chē)上傳的數(shù)據(jù)。
由于存在部分車(chē)輛故障碼重復(fù)上傳、亂碼等情況,對(duì)數(shù)據(jù)預(yù)處理中的其他規(guī)則做如下規(guī)定:
(1)同一車(chē)輛的檢修時(shí)間限定為同一輛車(chē)故障碼上傳時(shí)間間隔不得低于3天,對(duì)于3天內(nèi)同一車(chē)輛多次上傳的事務(wù)丟棄;
(2)對(duì)于存在大量編碼亂碼情況的事務(wù)進(jìn)行丟棄,對(duì)于少量編碼亂碼的數(shù)據(jù)僅丟棄亂碼項(xiàng);
(3)丟棄所有故障碼項(xiàng)都以“U”開(kāi)頭的故障碼事務(wù),由于以“U”開(kāi)頭的故障碼為網(wǎng)絡(luò)報(bào)文類故障碼,若整個(gè)事務(wù)中僅包含此類故障碼,則此時(shí)對(duì)故障碼關(guān)聯(lián)進(jìn)行判斷得到的關(guān)聯(lián)無(wú)效(無(wú)故障原因?qū)?yīng)的故障碼項(xiàng))。
數(shù)據(jù)預(yù)處理后共有事務(wù)20 188 例,預(yù)處理完成的部分事務(wù)的項(xiàng)集合如表2所示。

表2 部分事務(wù)數(shù)據(jù)
本文基于Fp-growth 算法[9]中的Fp-Tree 思想,提出計(jì)算故障碼關(guān)聯(lián)規(guī)則的算法。
Fp-Tree 是Fp-growth 算法中的頻繁模式樹(shù),其通過(guò)掃描兩次數(shù)據(jù)庫(kù)即可建立。建立過(guò)程如下:
(1)掃描一次數(shù)據(jù)庫(kù),刪去支持度較小的數(shù)據(jù)項(xiàng)并將原始數(shù)據(jù)中的事務(wù)中的單個(gè)數(shù)據(jù)項(xiàng)按支持度降序進(jìn)行排列;
(2)再次掃描數(shù)據(jù)庫(kù),定義一個(gè)空的根節(jié)點(diǎn)進(jìn)行Fp-Tree 的創(chuàng)建,同時(shí)構(gòu)建頭部表(HeaderTable)進(jìn)行相關(guān)節(jié)點(diǎn)信息存儲(chǔ)。
對(duì)Fp-Tree 中的節(jié)點(diǎn)屬性進(jìn)行修改,除father、children 屬性以外,實(shí)際參與計(jì)算過(guò)程的屬性變化如圖4 所示,增加3 個(gè)基礎(chǔ)屬性,各屬性的含義如表3所示。各節(jié)點(diǎn)屬性值在Fp-Tree 構(gòu)建過(guò)程中實(shí)時(shí)更新計(jì)算。

表3 Fp-Tree節(jié)點(diǎn)屬性及其含義

圖4 Fp-Tree節(jié)點(diǎn)計(jì)算相關(guān)屬性變化
Fp-Tree 的構(gòu)建過(guò)程賦予了Fp-Tree 如下的基本性質(zhì):
(1)每一個(gè)可能的分支都是一次或多次事務(wù)數(shù)據(jù)的體現(xiàn),這就代表每一個(gè)分支從葉子節(jié)點(diǎn)開(kāi)始回溯時(shí),葉子節(jié)點(diǎn)及其父輩節(jié)點(diǎn)肯定出現(xiàn)在同一個(gè)事務(wù)中,且同時(shí)出現(xiàn)的事務(wù)支持度為葉子結(jié)點(diǎn)的支持度;
(2)越接近Root 節(jié)點(diǎn)的節(jié)點(diǎn)支持度越大,某分支的葉子節(jié)點(diǎn)在此分支的所有節(jié)點(diǎn)中支持度最小;
(3)Fp-Tree 可以由HeaderTable 中出現(xiàn)的節(jié)點(diǎn)鏈接進(jìn)行分層,低支持度的節(jié)點(diǎn)在Fp-Tree 的最高層。
基于上述性質(zhì),記項(xiàng)目支持度從小到大排序列表為OrderItem,則計(jì)算所有項(xiàng)目之間置信度的偽代碼如表4所示。
從低頻次節(jié)點(diǎn)開(kāi)始,也即從樹(shù)的最高層開(kāi)始,計(jì)算節(jié)點(diǎn)出現(xiàn)在某分支中的置信度大小,再將多個(gè)分支計(jì)算得到的置信度相加。此計(jì)算方法相較于多次掃描數(shù)據(jù)庫(kù)計(jì)算式(3)和式(4),有如下優(yōu)點(diǎn):
(1)減小遍歷數(shù)據(jù)庫(kù)次數(shù),僅遍歷兩次數(shù)據(jù)庫(kù)進(jìn)行Fp-Tree 的構(gòu)建,生成的Fp-Tree 已經(jīng)包含了數(shù)據(jù)庫(kù)中所有相關(guān)聯(lián)信息,且關(guān)聯(lián)關(guān)系的計(jì)算可以直接根據(jù)已得Fp-Tree中各個(gè)節(jié)點(diǎn)的屬性值進(jìn)行;
(2)減少了需要保存的參數(shù)數(shù)量,避免了冗余計(jì)算,F(xiàn)p-Tree 的基礎(chǔ)性質(zhì)中,有著樹(shù)分支即為事務(wù)這一特點(diǎn),則對(duì)于沒(méi)有出現(xiàn)在同一個(gè)事務(wù)中的項(xiàng)目,在基于樹(shù)分支進(jìn)行置信度計(jì)算的過(guò)程中,不會(huì)計(jì)算這些項(xiàng)目之間的置信度關(guān)系,避免了冗余計(jì)算,且減小了在計(jì)算過(guò)程中需要保存的參數(shù)量。
設(shè)一數(shù)據(jù)案例有Fp-Tree和HeaderTable,如圖5所示。
根據(jù)上述算法對(duì)各個(gè)節(jié)點(diǎn)之間的關(guān)聯(lián)關(guān)系進(jìn)行計(jì)算。頻次最低的節(jié)點(diǎn)為I5,以I5在HeaderTable 中保存的節(jié)點(diǎn)鏈接開(kāi)始,I5節(jié)點(diǎn)存在如圖5所示樹(shù)結(jié)構(gòu)中最左兩個(gè)樹(shù)分支。分別計(jì)算兩個(gè)分支中的節(jié)點(diǎn)置信度,可得到:
其他節(jié)點(diǎn)之間的置信度計(jì)算與I5節(jié)點(diǎn)計(jì)算類似,此處不再贅敘。
綜上,基于Fp_Tree提出快速計(jì)算式(3)和式(4)的算法,實(shí)際計(jì)算過(guò)程共計(jì)算參數(shù)69 150個(gè),其中滿足最小置信度閾值的參數(shù)共5 115個(gè)。
對(duì)于滿足最小置信度的節(jié)點(diǎn)進(jìn)行有向圖構(gòu)建,有向圖中節(jié)點(diǎn)關(guān)系存在的規(guī)則如下。設(shè)圖中節(jié)點(diǎn)A、B,在2.2 節(jié)計(jì)算置信度過(guò)程中,若滿足:conf(A→B) ≥p,則認(rèn)為有邊A→B。
使用networkx 工具包進(jìn)行有向圖構(gòu)建,構(gòu)建完成的圖結(jié)構(gòu)共有節(jié)點(diǎn)666 個(gè),存在5 115 條邊。構(gòu)建的有向圖如圖6所示,其中藍(lán)色圓點(diǎn)代表故障碼。

圖6 故障碼有向圖
在上述的故障碼有向圖中,存在部分故障碼成環(huán)。成環(huán)故障碼之間的關(guān)聯(lián)關(guān)系可表述為:“故障碼互為因果,同時(shí)出現(xiàn),同時(shí)消失”。在故障判斷環(huán)節(jié),可認(rèn)為成環(huán)故障碼是同一故障碼,可同時(shí)分析處理。使用Tarjan算法[10]進(jìn)行有向圖的強(qiáng)連通分量檢測(cè),并可將強(qiáng)連通分量縮點(diǎn)處理,簡(jiǎn)化故障碼有向圖結(jié)構(gòu)。
基于故障碼有向圖可以對(duì)歷史故障碼中出現(xiàn)的有趣故障碼規(guī)則進(jìn)行可視化挖掘分析;對(duì)故障檢修過(guò)程讀取的故障碼進(jìn)行因果鏈路分析,確定主要故障碼,協(xié)助維修人員檢修故障。
故障碼傳播規(guī)則挖掘原理如圖7 所示,主要挖掘?qū)ο鬄槟彻收洗a的前后鏈路節(jié)點(diǎn),輔以圖結(jié)構(gòu)進(jìn)行故障碼規(guī)則鏈路的可視化。
如圖7 所示,橙色節(jié)點(diǎn)為故障核心節(jié)點(diǎn),為分析輸入,通過(guò)故障碼有向圖對(duì)橙色節(jié)點(diǎn)的前驅(qū)節(jié)點(diǎn)和后置節(jié)點(diǎn)進(jìn)行計(jì)算,可以得到橙色節(jié)點(diǎn)對(duì)應(yīng)的故障碼與車(chē)輛其他故障碼的關(guān)聯(lián)規(guī)則。
以故障碼:“P140516:?jiǎn)误w電壓低-2 級(jí)”節(jié)點(diǎn)為例,檢索與其相關(guān)故障碼,關(guān)聯(lián)關(guān)系如圖8 所示,從圖中可以取得如下結(jié)論:
(1)P140416,P140516,P140616 幾乎同時(shí)產(chǎn)生,同時(shí)消失,應(yīng)為同一故障,進(jìn)行縮點(diǎn)處理;
(2)單體電壓低故障碼會(huì)伴隨整車(chē)控制器報(bào)“B102A00:電池包告警級(jí)別--放電跛行行車(chē)”、“B104A00:電池包告警級(jí)別--電池停車(chē)請(qǐng)求”、“B101B00:電池包單體電壓告警狀態(tài)--電壓過(guò)低”。
有趣的故障碼關(guān)聯(lián)規(guī)則蘊(yùn)含了電控系統(tǒng)內(nèi)部的故障關(guān)聯(lián)關(guān)系,也是故障因果關(guān)系。如在上述以故障碼P140516 的分析中,可以明確得到的故障因果為:?jiǎn)误w電壓低故障會(huì)導(dǎo)致行車(chē)異常或無(wú)法行車(chē)。類似的,以其他故障相關(guān)的故障碼節(jié)點(diǎn)為輸入,挖掘在實(shí)際使用中較為重要的故障關(guān)聯(lián)知識(shí),對(duì)車(chē)輛故障的知識(shí)庫(kù)形成有良好的參考意義。如根據(jù)故障碼B102A00輸入得到的關(guān)聯(lián)圖(圖9),可以揭示在歷史數(shù)據(jù)中出現(xiàn)并會(huì)導(dǎo)致“電池包告警級(jí)別--放電跛行行車(chē)”的故障碼情況。

圖9 故障碼B102A00關(guān)聯(lián)圖(縮點(diǎn)后)
以某一故障碼為輸入,關(guān)聯(lián)圖為輸出,并結(jié)合故障碼定義進(jìn)行故障分析的過(guò)程,是對(duì)歷史數(shù)據(jù)中出現(xiàn)的故障情況以及故障在車(chē)內(nèi)傳播情況的剖析過(guò)程。這種分析方法可以站在更高的維度對(duì)故障情況進(jìn)行全面解釋,所形成的故障規(guī)則,對(duì)于車(chē)輛質(zhì)量把控以及檢修方案的制訂,有著良好的指導(dǎo)作用。
故障碼有向圖除了可用于對(duì)歷史數(shù)據(jù)中的故障碼關(guān)聯(lián)進(jìn)行剖析之外,還可以用于故障維修過(guò)程,實(shí)現(xiàn)故障源所對(duì)應(yīng)的主要故障碼的定位分析。
對(duì)復(fù)雜故障所產(chǎn)生的駁雜故障碼進(jìn)行關(guān)聯(lián)分析,給出其內(nèi)已存在的傳播路徑,從而確認(rèn)故障源。若直接確認(rèn)某一故障源對(duì)應(yīng)的主要故障碼,此故障必須在歷史數(shù)據(jù)中多次出現(xiàn),對(duì)于歷史數(shù)據(jù)要求較高。然而,即使對(duì)于部分案例無(wú)法直接定位故障源故障碼,得到的分析結(jié)果有一定冗余,也依舊對(duì)診斷設(shè)備直接讀出的故障碼有一定的精簡(jiǎn)效果,可以大大縮短故障碼排查時(shí)間。分析過(guò)程主要分為關(guān)聯(lián)子圖構(gòu)建和主要故障碼計(jì)算兩步。
基于實(shí)際故障時(shí)產(chǎn)生的故障碼進(jìn)行關(guān)聯(lián)子圖構(gòu)建,主要流程如圖10 所示。由于報(bào)文類故障(報(bào)文丟失、驗(yàn)證錯(cuò)誤等)一般在非報(bào)文故障之后檢修,則首先去除以“U”開(kāi)頭的故障碼,然后將讀取的故障碼去重,取整車(chē)故障碼有向圖轉(zhuǎn)化的關(guān)聯(lián)矩陣中相同故障碼標(biāo)識(shí)的行和列,組成故障時(shí)故障碼的關(guān)聯(lián)矩陣,根據(jù)此關(guān)聯(lián)矩陣生成故障碼子圖。

圖10 故障碼子圖構(gòu)建流程
主故障碼分析過(guò)程如圖11 所示。基于前述構(gòu)建的故障碼子圖,使用Tarjan 算法檢測(cè)強(qiáng)連通分量后縮點(diǎn)。考慮到故障源產(chǎn)生的故障碼無(wú)前驅(qū)節(jié)點(diǎn),則此故障碼入度為0。通過(guò)計(jì)算所有節(jié)點(diǎn)的入度,此時(shí)入度為0 的強(qiáng)連通分量或單個(gè)故障碼即為故障源對(duì)應(yīng)的故障碼,如圖11 中的1、2、6 橙色節(jié)點(diǎn)所示。

圖11 故障源故障碼分析原理
由于數(shù)據(jù)決定了關(guān)聯(lián)規(guī)則的挖掘結(jié)果,會(huì)使故障源故障碼判定僅對(duì)較高支持度的故障源故障碼有良好效果,但關(guān)聯(lián)規(guī)則依舊對(duì)讀取的故障碼有精簡(jiǎn)作用。對(duì)于所有歷史事務(wù)數(shù)據(jù)進(jìn)行關(guān)聯(lián)分析。采用5-fold 交叉驗(yàn)證,計(jì)算在不同置信度條件下故障碼平均精簡(jiǎn)率,結(jié)果如圖12所示。

圖12 不同置信度故障碼數(shù)據(jù)的精簡(jiǎn)率
從圖12 中可以看出,隨著置信度上升,精簡(jiǎn)率整體呈下降趨勢(shì),這是由于關(guān)聯(lián)規(guī)則數(shù)量降低而產(chǎn)生的結(jié)果。在下降過(guò)程中,存在某些置信度條件下,精簡(jiǎn)率升高的特點(diǎn),這是因?yàn)殛P(guān)聯(lián)規(guī)則的準(zhǔn)確性提高,成強(qiáng)連通分量的故障碼團(tuán)內(nèi)元素減少,數(shù)據(jù)精簡(jiǎn)率上升。
為了滿足節(jié)點(diǎn)間高置信度需求,同時(shí)獲得更高的精簡(jiǎn)率,本文在對(duì)已有的歷史數(shù)據(jù)分析過(guò)程中,取置信度為0.84,此時(shí)得到的關(guān)聯(lián)規(guī)則對(duì)歷史數(shù)據(jù)的精簡(jiǎn)率為39.35%.
取此車(chē)型支持度較高的5 個(gè)典型故障產(chǎn)生的故障碼事務(wù),使用基于歷史數(shù)據(jù)構(gòu)建完成的有向圖模型對(duì)各個(gè)事務(wù)進(jìn)行分析,分析結(jié)果如表5 所示。故障源故障碼的平均直接判別率約54.08%,典型故障的平均故障碼數(shù)據(jù)精簡(jiǎn)率為65.06%。

表5 典型故障分析結(jié)果
通過(guò)對(duì)特定事務(wù)進(jìn)行分析,可以在實(shí)現(xiàn)故障碼精簡(jiǎn)的基礎(chǔ)上,對(duì)于部分支持度較高的故障,實(shí)現(xiàn)故障源故障碼的判定。能夠簡(jiǎn)化或免去維修人員對(duì)于故障碼的分析工作,優(yōu)化了檢修流程。
本文中基于關(guān)聯(lián)規(guī)則挖掘?qū)?chē)輛故障時(shí)產(chǎn)生的歷史故障碼數(shù)據(jù)進(jìn)行分析,提出了故障碼關(guān)聯(lián)定義與基于Fp-Tree 的關(guān)聯(lián)規(guī)則挖掘算法;將故障碼間的關(guān)聯(lián)規(guī)則以圖結(jié)構(gòu)存儲(chǔ),提出了兩種應(yīng)用場(chǎng)景及方法。在本文的故障碼數(shù)據(jù)集中,取置信度為0.84,通過(guò)對(duì)歷史數(shù)據(jù)分析可以發(fā)現(xiàn)部分故障碼傳播的興趣規(guī)則;根據(jù)故障碼間關(guān)聯(lián)規(guī)則對(duì)整體歷史數(shù)據(jù)進(jìn)行精簡(jiǎn),精簡(jiǎn)率為39.35%;選取部分支持度較高的故障數(shù)據(jù),分析所得到的平均故障源故障碼判別率可達(dá)54.08%,平均故障碼精簡(jiǎn)率為65.06%。
本文中的故障碼分析方法僅依靠歷史故障碼數(shù)據(jù)為輸入,分析結(jié)果可以應(yīng)用于車(chē)內(nèi)故障傳播鏈路分析與可視化和主要故障碼分析,能夠提高對(duì)耦合故障的診斷準(zhǔn)確性和檢修時(shí)效性。