樊輝錦,歐陽(yáng)中輝,陳青華,胡道暢
(1.海軍航空大學(xué)岸防兵學(xué)院,山東 煙臺(tái) 264001;2. 92635部隊(duì),山東 青島 266001)
隨著軍事裝備的發(fā)展,特種車輛已經(jīng)發(fā)展成為集機(jī)械、電子、液壓和武器系統(tǒng)于一體的信息化作戰(zhàn)系統(tǒng),其組成結(jié)構(gòu)十分復(fù)雜,作戰(zhàn)環(huán)境涉及沙灘、海島、荒漠和高原等,使得維護(hù)與故障診斷較普通車輛也更為復(fù)雜[1]。隨著特種車輛可靠性、維修性和安全性等技戰(zhàn)術(shù)指標(biāo)不斷提高,對(duì)車輛維護(hù)保障和故障診斷提出更高的要求[2]。故障診斷技術(shù)利用各種先進(jìn)傳感器和智能診斷模型算法對(duì)車輛及部件進(jìn)行診斷、監(jiān)控和預(yù)測(cè),其準(zhǔn)確性和實(shí)效性在裝備保障體系中尤為重要,而且特種車輛故障診斷系統(tǒng)中數(shù)據(jù)庫(kù)系統(tǒng)性能的好壞對(duì)診斷結(jié)果的準(zhǔn)確性和診斷效率產(chǎn)生直接影響。
國(guó)內(nèi)車輛故障診斷技術(shù)及其數(shù)據(jù)庫(kù)設(shè)計(jì)的相關(guān)文獻(xiàn)中,盧玉傳等[3]對(duì)無(wú)人車類特種車輛的故障預(yù)測(cè)與健康管理進(jìn)行了可行性分析,給出了數(shù)據(jù)庫(kù)總體設(shè)計(jì)原則;陳偉等[4]針對(duì)特種車輛液壓系統(tǒng)建立綜合診斷和健康管理系統(tǒng),運(yùn)用SOM神經(jīng)網(wǎng)絡(luò)進(jìn)行故障的診斷,給出了數(shù)據(jù)中心功能;王威杰等[5]改進(jìn)車輛故障維修數(shù)據(jù)庫(kù)中數(shù)據(jù)查詢算法,采用模糊粗糙集方法提高查詢效率并仿真驗(yàn)證;吳婷婷等[6]針對(duì)特種車輛機(jī)電系統(tǒng)故障提出了一套測(cè)試方法,支持全壽命周期的故障診斷和監(jiān)控管理,給出了數(shù)據(jù)庫(kù)功能分類;趙媛媛等[7]對(duì)國(guó)外特種車輛故障預(yù)測(cè)系統(tǒng)最新發(fā)展給出了介紹,并展示了各類車載系統(tǒng)解決方案(包括數(shù)據(jù)庫(kù)組成)。上述研究主要針對(duì)狀態(tài)監(jiān)控和故障診斷中各類系統(tǒng)架構(gòu)設(shè)計(jì)或診斷方法模型的研究,在實(shí)現(xiàn)過(guò)程中部分給出了數(shù)據(jù)庫(kù)功能設(shè)計(jì),并未結(jié)合車輛狀態(tài)監(jiān)控和故障實(shí)際進(jìn)行數(shù)據(jù)庫(kù)系統(tǒng)深入研究。
本文分析了特種車輛狀態(tài)監(jiān)控和故障診斷的底層數(shù)據(jù)需求特點(diǎn),利用統(tǒng)一建模語(yǔ)言(unified modeling language,UML)對(duì)數(shù)據(jù)庫(kù)系統(tǒng)整體功能進(jìn)行描述[8],給出以特種車輛和故障診斷為中心的E-R圖模型[9]及關(guān)鍵實(shí)體字段示例;在索引結(jié)構(gòu)方面,對(duì)時(shí)空R樹(shù)進(jìn)行改進(jìn),并結(jié)合B*樹(shù)構(gòu)建索引數(shù)據(jù)庫(kù),并利用MySQL5.6完成數(shù)據(jù)庫(kù)系統(tǒng)搭建和測(cè)試。
在特種車輛遠(yuǎn)程狀態(tài)監(jiān)控管理和故障診斷系統(tǒng)中,故障診斷不僅需要故障點(diǎn)時(shí)刻的數(shù)據(jù),還需要故障點(diǎn)附近相關(guān)數(shù)據(jù)來(lái)判斷故障。本節(jié)主要從數(shù)據(jù)庫(kù)系統(tǒng)功能分析、E-R模型設(shè)計(jì)和索引結(jié)構(gòu)等3個(gè)方面進(jìn)行研究。
數(shù)據(jù)庫(kù)系統(tǒng)主要為各功能模塊提供數(shù)據(jù)存儲(chǔ)、共享和快速查詢,利用UML語(yǔ)言對(duì)系統(tǒng)功能進(jìn)行描述,如圖1所示。狀態(tài)監(jiān)測(cè)終端主要將各傳感器采集到的數(shù)據(jù)存入數(shù)據(jù)庫(kù),并為指揮員提供車輛狀態(tài)實(shí)時(shí)顯示,包括任務(wù)執(zhí)行狀態(tài)、健康狀態(tài)、位置信息和武器系統(tǒng)信息等;故障診斷功能從數(shù)據(jù)庫(kù)中查詢預(yù)先建立的各類故障診斷模型(神經(jīng)網(wǎng)絡(luò)模型、專家系統(tǒng)、故障樹(shù)和SVM等)[10],并根據(jù)相關(guān)狀態(tài)監(jiān)控信息做出判斷,得出故障結(jié)論并進(jìn)行報(bào)警提醒;維修保障人員根據(jù)故障報(bào)警和保養(yǎng)提醒進(jìn)行故障排除和定期保養(yǎng),將故障處理過(guò)程和結(jié)果反饋存儲(chǔ)到數(shù)據(jù)庫(kù)系統(tǒng)中。
圖1 數(shù)據(jù)庫(kù)系統(tǒng)功能模塊框圖
不同用戶角色擁有不同的數(shù)據(jù)庫(kù)操作權(quán)限。專家可更新維護(hù)故障診斷模型相關(guān)表;維修保障人員可以查詢調(diào)用故障診斷模型給出診斷結(jié)論,并錄入處理過(guò)程;指揮員可以實(shí)時(shí)查看車輛狀態(tài),掌握裝備完好率和執(zhí)行任務(wù)情況;系統(tǒng)管理員分配角色維護(hù)用戶信息;兵工廠人員針對(duì)返回廠維修的車輛制定針對(duì)性維修計(jì)劃。整個(gè)業(yè)務(wù)流程核心以數(shù)據(jù)庫(kù)操作為中心,各項(xiàng)功能運(yùn)行效率取決于數(shù)據(jù)庫(kù)操作的性能。
存儲(chǔ)的數(shù)據(jù)主要分為以下幾個(gè)方面:
1) 特種車輛狀態(tài)數(shù)據(jù)。車載狀態(tài)信息采集終端主要對(duì)車輛動(dòng)力系統(tǒng)、底盤總成、電氣系統(tǒng)和武器系統(tǒng)等進(jìn)行監(jiān)控,監(jiān)控產(chǎn)生大量實(shí)時(shí)數(shù)據(jù),采用不同的傳輸方式和采樣頻率添加到數(shù)據(jù)庫(kù)中。
2) 狀態(tài)數(shù)據(jù)索引庫(kù)??紤]到建立索引會(huì)降低數(shù)據(jù)入庫(kù)效率,將索引更新與數(shù)據(jù)更新采用分布式的方式分開(kāi),并引入緩存機(jī)制,這部分將在后文重點(diǎn)闡述。
3) 故障診斷模型庫(kù)。主要存儲(chǔ)經(jīng)過(guò)訓(xùn)練的智能診斷算法模型,算法模型再利用收集到的各類故障狀態(tài)數(shù)據(jù)進(jìn)行自身更新和不斷完善。
4) 專家系統(tǒng)知識(shí)庫(kù)。專家系統(tǒng)運(yùn)用產(chǎn)生式規(guī)則作為主要表示形式,存儲(chǔ)的數(shù)據(jù)主要包括事實(shí)庫(kù)和規(guī)則庫(kù)。事實(shí)庫(kù)存儲(chǔ)現(xiàn)象和故障結(jié)論,規(guī)則庫(kù)分為規(guī)則前件庫(kù)和規(guī)則結(jié)論庫(kù)[11]。
數(shù)據(jù)庫(kù)系統(tǒng)性能的優(yōu)劣關(guān)鍵在于數(shù)據(jù)庫(kù)實(shí)體關(guān)系模型(E-R模型)建立,根據(jù)系統(tǒng)功能需求的設(shè)計(jì),分析業(yè)務(wù)邏輯,本節(jié)給出系統(tǒng)全局E-R圖模型表述實(shí)體與實(shí)體的關(guān)系,如圖2所示,2.1節(jié)實(shí)現(xiàn)部分通過(guò)表結(jié)構(gòu)示例表述部分關(guān)鍵實(shí)體與屬性之間的關(guān)系。以故障診斷模型和狀態(tài)監(jiān)控為中心表述與其他實(shí)體之間的關(guān)系,更有利于故障診斷的準(zhǔn)確性,同時(shí),模型可根據(jù)實(shí)際需求數(shù)據(jù)和診斷模型的不同進(jìn)行調(diào)整。
圖2 系統(tǒng)全局E-R模型框圖
數(shù)據(jù)庫(kù)索引的設(shè)計(jì)不僅要結(jié)合數(shù)據(jù)本身特點(diǎn),更要緊貼查詢需求,創(chuàng)建效率、存儲(chǔ)利用率、查詢效率和緩存機(jī)制等都是設(shè)計(jì)索引結(jié)構(gòu)需要考慮的因素[12]。目前,MySql數(shù)據(jù)庫(kù)自帶的索引類型主要包括全文索引、哈希索引、B樹(shù)索引和R樹(shù)索引等4種,其并未提供混合索引機(jī)制,在處理時(shí)空特性較強(qiáng)的車輛數(shù)據(jù)和故障的能力較弱[13-15]。
本文數(shù)據(jù)庫(kù)系統(tǒng)主要為特種車輛的狀態(tài)監(jiān)測(cè)和故障診斷提供索引支持,實(shí)現(xiàn)快速高效的查詢,針對(duì)數(shù)據(jù)時(shí)空特性較為明顯、種類較多的特點(diǎn),利用改進(jìn)的時(shí)空R樹(shù)+B*樹(shù)的混合索引方法。其中,主體索引結(jié)構(gòu)為改進(jìn)的時(shí)空R樹(shù),用于實(shí)現(xiàn)時(shí)空范圍內(nèi)故障信息的高效查詢;B*樹(shù)為次要索引,主要實(shí)現(xiàn)對(duì)單一目標(biāo)的時(shí)序一維索引[16],可以用于故障點(diǎn)數(shù)據(jù)精確查詢,如圖3所示。
圖3 改進(jìn)的時(shí)空R樹(shù)和B*樹(shù)混合索引原理框圖
改進(jìn)的時(shí)空R樹(shù)是N+1維的R樹(shù),其中N是指空間維數(shù)、1指時(shí)間維,R樹(shù)中葉子節(jié)點(diǎn)最小包圍盒MBR(minimal bounding rectangle)是其孩子集合的時(shí)空坐標(biāo)軸最小范圍[17],以此來(lái)改進(jìn)R樹(shù)的結(jié)構(gòu)。
具體為:利用節(jié)點(diǎn)插入算法優(yōu)化特征車輛實(shí)時(shí)狀態(tài)信息時(shí)空R樹(shù)結(jié)構(gòu),同時(shí)引入節(jié)點(diǎn)分裂算法改進(jìn)時(shí)空R樹(shù)結(jié)構(gòu)。改進(jìn)的時(shí)空R樹(shù)對(duì)某范圍的車輛監(jiān)控狀態(tài)集合、車輛軌跡,或者某時(shí)刻的車輛狀態(tài)合集(或故障點(diǎn)狀態(tài))、車輛位置等有較好的支持。
采用節(jié)點(diǎn)對(duì)象標(biāo)識(shí)符OID和Start-Time組成一維關(guān)鍵碼構(gòu)建B*樹(shù),高效精確定位特種車輛在某時(shí)刻的狀態(tài)信息,進(jìn)而利用B*樹(shù)節(jié)點(diǎn)雙向指針進(jìn)行車輛軌跡追溯[18],相比于不采用樹(shù)結(jié)構(gòu)的索引,能節(jié)約75%的存儲(chǔ)空間。
在應(yīng)用過(guò)程中,由于車輛狀態(tài)信息和故障表象與時(shí)間空間緊密相關(guān),索引的創(chuàng)建同樣按照數(shù)據(jù)元組的有效時(shí)間順序進(jìn)行。故障點(diǎn)是查詢?cè)L問(wèn)的重點(diǎn),被查詢的故障點(diǎn)時(shí)刻數(shù)據(jù)及其附近時(shí)刻數(shù)據(jù),近期被再次訪問(wèn)的幾率較大,將這部分?jǐn)?shù)據(jù)加入緩存中可減少?gòu)耐獯嬲{(diào)入時(shí)間。狀態(tài)數(shù)據(jù)和故障診斷模型庫(kù)的元組數(shù)目龐大,很難在內(nèi)存中構(gòu)建全部索引。利用LRU算法(近期最少使用算法)設(shè)計(jì)索引的緩存實(shí)現(xiàn)機(jī)制,根據(jù)數(shù)據(jù)量大小設(shè)定一個(gè)時(shí)間閾值T,一個(gè)時(shí)間周期T內(nèi)被訪問(wèn)到的數(shù)據(jù)維持在緩存中,將一個(gè)時(shí)間周期T內(nèi)未被訪問(wèn)的數(shù)據(jù)從緩存中釋放,當(dāng)再次需要時(shí)從外存中調(diào)取,如圖4所示。
圖4 時(shí)空R樹(shù)+B*樹(shù)索引緩存機(jī)制框圖
在索引節(jié)點(diǎn)結(jié)構(gòu)中,定義變量TL記錄該節(jié)點(diǎn)最近被訪問(wèn)的時(shí)刻,被訪問(wèn)時(shí)更新變量TL為被訪問(wèn)時(shí)刻[19]。樹(shù)形索引的查詢通常以根節(jié)點(diǎn)或父節(jié)點(diǎn)起始,訪問(wèn)子節(jié)點(diǎn)的同時(shí)一定已訪問(wèn)父節(jié)點(diǎn),若父節(jié)點(diǎn)在緩存中超時(shí),其子樹(shù)中的所有節(jié)點(diǎn)也均超時(shí),與父節(jié)點(diǎn)一同釋放[19],TLRU置為0。
3.1.1狀態(tài)監(jiān)控字段
車輛狀態(tài)數(shù)據(jù)是故障診斷的基礎(chǔ),狀態(tài)監(jiān)控信息如表1所示。
表1 特種車輛狀態(tài)信息
3.1.2故障診斷模型
專家系統(tǒng)利用專家知識(shí)對(duì)故障進(jìn)行定性的診斷,故障診斷模型準(zhǔn)確定位故障發(fā)生的具體部位,算法所涉及參數(shù)需要結(jié)合具體的診斷對(duì)象存儲(chǔ)在數(shù)據(jù)庫(kù)中,且保持特征提取、特征降維、診斷模型之間參數(shù)的一致性。以神經(jīng)網(wǎng)絡(luò)為例,設(shè)計(jì)一個(gè)故障診斷模型和一系列子實(shí)體(神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)等)[20],如表2~3所示。
表2 神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)
表3 神經(jīng)網(wǎng)絡(luò)權(quán)值
將索引結(jié)構(gòu)單獨(dú)存儲(chǔ)在獨(dú)立從服務(wù)器上,利用MySQL的binlog功能實(shí)現(xiàn)主從同步和讀寫分離,提高查詢效率,架構(gòu)設(shè)計(jì)如圖5所示。主庫(kù)Master在執(zhí)行完SQL語(yǔ)句之后會(huì)把語(yǔ)句記錄在binlog中,當(dāng)從庫(kù)Slave連接主庫(kù)Master時(shí),將得到主庫(kù)中的binlog文件并存于本地,然后從中讀取上次同步時(shí)的位置節(jié)點(diǎn),執(zhí)行SQL語(yǔ)句[21]。
圖5 分布式主從架構(gòu)框圖
數(shù)據(jù)庫(kù)系統(tǒng)平臺(tái)選用MySQL版本為5.6,操作系統(tǒng)為64位Windows Server 2012,服務(wù)器硬件配置信息如表4所示。車輛狀態(tài)數(shù)據(jù)庫(kù)選用現(xiàn)役某型裝甲車真實(shí)數(shù)據(jù)集,專家系統(tǒng)和故障診斷模型庫(kù)均經(jīng)過(guò)該型車故障數(shù)據(jù)集的訓(xùn)練。索引方面,葉節(jié)點(diǎn)采用雙向鏈表指針[22]。
表4 數(shù)據(jù)庫(kù)服務(wù)器配置信息
在數(shù)據(jù)存儲(chǔ)過(guò)程中,考慮處理器線程阻塞、存儲(chǔ)器緩存、網(wǎng)絡(luò)延遲等多種因素的影響,測(cè)試數(shù)據(jù)存儲(chǔ)或讀取速度為在持續(xù)存儲(chǔ)請(qǐng)求壓力下系統(tǒng)單位時(shí)間內(nèi)處理存儲(chǔ)或讀取請(qǐng)求的能力[23],即:
Zmax=Qs/T
(1)
式(1)中:Qs為存儲(chǔ)或讀取成功的數(shù)據(jù)點(diǎn)數(shù)量;T為總耗時(shí)。
通過(guò)編寫腳本,測(cè)試本文設(shè)計(jì)的數(shù)據(jù)庫(kù)系統(tǒng)插入10、100、1 000、10 000、100 000條數(shù)據(jù)的耗時(shí)(數(shù)據(jù)結(jié)構(gòu)參考數(shù)據(jù)庫(kù)設(shè)計(jì)部分),對(duì)于因阻塞超時(shí)未能成功存儲(chǔ)的數(shù)據(jù)記錄,再次發(fā)出存儲(chǔ)請(qǐng)求,根據(jù)機(jī)器性能發(fā)出存入系統(tǒng)的請(qǐng)求后,統(tǒng)計(jì)存儲(chǔ)全部數(shù)據(jù)耗時(shí)[24],將結(jié)果與同樣實(shí)驗(yàn)條件下Mysql自帶索引結(jié)構(gòu)相關(guān)性能進(jìn)行對(duì)比(見(jiàn)圖6),計(jì)算每秒處理速度,如圖7所示。數(shù)據(jù)庫(kù)的讀取測(cè)試,在100 000條數(shù)據(jù)集中分別查詢1、10、100、1 000、10 000條數(shù)據(jù)的查詢耗時(shí)如圖8所示。
圖6 數(shù)據(jù)庫(kù)寫入速度直方圖
圖7 數(shù)據(jù)庫(kù)處理速度直方圖
圖6、圖7表明本文索引結(jié)構(gòu)數(shù)據(jù)庫(kù)寫入速度、處理速度與Mysql相差不大。圖8表明,在數(shù)據(jù)量較大時(shí),在數(shù)據(jù)庫(kù)查詢耗時(shí)上,以本文索引結(jié)構(gòu)構(gòu)建的數(shù)據(jù)庫(kù)性能要優(yōu)于Mysql自帶索引結(jié)構(gòu)。
圖8 數(shù)據(jù)庫(kù)讀取時(shí)間直方圖
目前,TB*樹(shù)在時(shí)空數(shù)據(jù)索引方面綜合性能較優(yōu),選擇將其與本文索引方法(索引創(chuàng)建和時(shí)空查詢處理方面)進(jìn)行對(duì)比分析[25]。以1 000數(shù)據(jù)樣本為例,兩者均采用經(jīng)典R樹(shù)的平方級(jí)分裂策略,設(shè)索引樹(shù)的創(chuàng)建算法時(shí)間復(fù)雜度均為O(N/M),其中,M是葉子節(jié)點(diǎn)的扇出參數(shù),N是故障時(shí)刻點(diǎn)數(shù)量[26],索引創(chuàng)建的試驗(yàn)結(jié)果如表5所示,其中包括時(shí)間開(kāi)銷和存儲(chǔ)代價(jià)。
表5 索引創(chuàng)建試驗(yàn)結(jié)果
時(shí)間開(kāi)銷方面,改進(jìn)的時(shí)空R樹(shù)在創(chuàng)建和插入葉子節(jié)點(diǎn)時(shí)包括節(jié)點(diǎn)選擇和節(jié)點(diǎn)分裂等2個(gè)操作[27]。創(chuàng)建改進(jìn)的時(shí)空R樹(shù)過(guò)程中節(jié)點(diǎn)選擇與節(jié)點(diǎn)分裂算法使得時(shí)間開(kāi)銷較高,如圖9所示。
存儲(chǔ)代價(jià)方面,本文索引結(jié)構(gòu)數(shù)據(jù)量為R樹(shù)和B*樹(shù)二者之和,改進(jìn)的時(shí)空R樹(shù)節(jié)點(diǎn)中,絕大多數(shù)超過(guò)83.7%的是葉節(jié)點(diǎn),結(jié)合了B*數(shù)據(jù),并采用獨(dú)立數(shù)據(jù)庫(kù)后,在數(shù)據(jù)集為 100 000數(shù)據(jù)量時(shí)存儲(chǔ)空間為865.3MByte,其存儲(chǔ)代價(jià)遠(yuǎn)小于TB*樹(shù)。
本文數(shù)據(jù)庫(kù)系統(tǒng)為特種車輛的狀態(tài)監(jiān)控和故障診斷提供支持,從系統(tǒng)功能模型出發(fā),利用UML完成功能建模,建立實(shí)體關(guān)系模型,并設(shè)計(jì)了索引結(jié)構(gòu)實(shí)現(xiàn)高效快速查詢檢索。在系統(tǒng)實(shí)現(xiàn)上,結(jié)合故障診斷需求和特點(diǎn),給出數(shù)據(jù)庫(kù)字段示例,引入索引緩存機(jī)制,并設(shè)計(jì)主從服務(wù)器集群實(shí)現(xiàn)讀寫分離。測(cè)試結(jié)果表明,數(shù)據(jù)庫(kù)系統(tǒng)整體性能可滿足故障診斷需求,可提高裝備保障效率,適用于工程實(shí)踐。