陳芳慧
摘要:鐵路信號微機(jī)監(jiān)測系統(tǒng)是保證行車安全,監(jiān)測鐵路信號設(shè)備運(yùn)用質(zhì)量的支持系統(tǒng)。目前的診斷系統(tǒng)對設(shè)備異常和故障事件的實(shí)時分析以及診斷支持水平還很低下,沒有能夠?qū)Σ杉降臄?shù)據(jù)自動分析處理并給出處理意見的專家系統(tǒng)功能。因此很有必要在現(xiàn)有存在的檢測系統(tǒng)上,分析基于微機(jī)監(jiān)測檢測智能化系統(tǒng)的解決辦法,該文通過對插件技術(shù)的分析應(yīng)用,結(jié)合目前微機(jī)監(jiān)測平臺的問題對平臺系統(tǒng)重新設(shè)計(jì)架構(gòu),并總結(jié)了新架構(gòu)下平臺的優(yōu)點(diǎn),基本解決了現(xiàn)有平臺的不足。
關(guān)鍵詞:微機(jī)監(jiān)測;故障診斷;插件
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2016)29-0001-03
鐵路微機(jī)監(jiān)測系統(tǒng)是一個實(shí)時系統(tǒng)。它能夠?qū)崟r跟蹤記錄并反映出信號設(shè)備的運(yùn)行情況,并應(yīng)該能夠根據(jù)采集到的數(shù)據(jù)自動調(diào)整分析,得出較為準(zhǔn)確的故障結(jié)果,及時提示預(yù)警。但目前實(shí)際使用中的微機(jī)監(jiān)測平臺都還不具備故障診斷給出意見的智能功能?,F(xiàn)有微機(jī)檢測系統(tǒng)存在的問題有:
1)微機(jī)監(jiān)測系統(tǒng)對數(shù)據(jù)沒有很好的處理利用。由于微機(jī)監(jiān)測系統(tǒng)采集到的數(shù)據(jù)涉及的面廣、量大,僅僅靠現(xiàn)場工作人員憑借經(jīng)驗(yàn)分析,不僅工作量大,而且不能夠?qū)?shù)據(jù)整合處理分析,延誤故障處理,甚至導(dǎo)致潛在故障的發(fā)生。
2)不能夠進(jìn)行故障點(diǎn)判斷和故障分析處理指導(dǎo)意見。目前的微機(jī)監(jiān)測系統(tǒng)只能夠?qū)⒉杉降臄?shù)據(jù)以曲線圖的形式呈現(xiàn),與正常的曲線圖做一比較,之后的故障分析,還是得靠有現(xiàn)場經(jīng)驗(yàn)的工作人員依據(jù)經(jīng)驗(yàn)來分析判斷,不能脫離人為因素,而且人為因素在故障診斷時占主導(dǎo)地位,非常有可能造成故障診斷出錯,這種微機(jī)故障診斷平臺非常不智能化。
3)不能預(yù)警潛在故障危機(jī)。正是由于2)中不能脫離人為因素,故只有在故障發(fā)生之后才開始補(bǔ)救,沒有在故障發(fā)生之前就能將故障排除,這種情況造成的經(jīng)濟(jì)成本可想而知。
基于以上總結(jié)的現(xiàn)有微機(jī)監(jiān)測系統(tǒng)存在的問題,開發(fā)一個智能化微機(jī)監(jiān)測故障診斷系統(tǒng)是鐵路電務(wù)段非常需要的。
1微機(jī)監(jiān)測故障診斷平臺的功能需求
針對目前微機(jī)監(jiān)測平臺存在的問題,總結(jié)提出微機(jī)監(jiān)測故障診斷平臺的功能需求。
正常情況下:
1)實(shí)時電流圖的跟蹤監(jiān)視;
2)自動記錄入庫電流數(shù)據(jù)和各開關(guān)量采集點(diǎn)信息;
3)異常報(bào)警;
4)人機(jī)聯(lián)系,有異常情況及時給相關(guān)負(fù)責(zé)人電話報(bào)警。
事故的監(jiān)測和處理:
1)事故時可以快速采集電流數(shù)據(jù);
2)綜合分析故障原因,打印故障發(fā)生時間,設(shè)備狀態(tài),故障電流等相關(guān)數(shù)據(jù),為工作人員后續(xù)處理故障提供數(shù)據(jù)分析支持和建議;
3)將各種故障電路圖入庫,以實(shí)現(xiàn)故障具體定位。尤其要以時間為依據(jù),按月,季度,年進(jìn)行分析。
2微機(jī)監(jiān)測故障診斷平臺系統(tǒng)故障診斷方法
鐵路信號設(shè)備故障種類繁多,按照設(shè)備類型大致可以分為道岔電流故障,軌道電路故障以及電源故障等。微機(jī)監(jiān)測系統(tǒng)一般利用計(jì)算機(jī)和信息采集機(jī)對模擬量和開關(guān)量進(jìn)行監(jiān)測。故障診斷一般采取以下方法:
1)數(shù)據(jù)曲線對比。通常情況下,我們是將故障曲線與正常曲線進(jìn)行對比分析,最好是在同一坐標(biāo)下,這樣便于工作人員進(jìn)行分析判斷
2)綜合情況進(jìn)行判斷。因?yàn)橛袝r信號設(shè)備的故障發(fā)生原因不是單一類型的,很有可能是多個問題的疊加。所以有必要結(jié)合之前的情況進(jìn)行綜合判斷,需要結(jié)合之前的情況動態(tài)回放,綜合分析得出結(jié)果。
3)借助專家診斷系統(tǒng)輔助分析。應(yīng)用這一功能的前提是專家?guī)炖锼囊庖姺治鲆銐蛟敿?xì),這需要不斷地?cái)U(kuò)充改進(jìn)完善專家?guī)煜到y(tǒng)。
3“平臺-插件”設(shè)計(jì)的關(guān)鍵技術(shù)
由上述微機(jī)監(jiān)測平臺現(xiàn)存的諸多問題以及平臺功能需求,亟待開發(fā)出一種靈活兼顧可擴(kuò)展重用的軟件系統(tǒng),它的基礎(chǔ)功能應(yīng)該有以上常用故障診斷方法。基于面向組件的開發(fā)技術(shù)恰恰滿足了這種需求。組件化程序開發(fā)技術(shù)是一種結(jié)合結(jié)構(gòu)化程序設(shè)計(jì)與面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù)優(yōu)點(diǎn)的新型軟件開發(fā)技術(shù),它更側(cè)重于系統(tǒng)整體性。它的主要設(shè)計(jì)理念是將復(fù)雜化的軟件分解成為若干功能組件,不限開發(fā)語言與環(huán)境,最終各個組件通過定義好的協(xié)議接口能夠有效的組織在一起而完成任務(wù)就可以。插件技術(shù)是組件技術(shù)的一種典型代表,它要比com組件技術(shù)簡單。插件技術(shù)的實(shí)現(xiàn)以動態(tài)鏈接庫(DILL)為目前最優(yōu)方案,它更為靈活,開發(fā)速度更快。本文利用插件技術(shù)的特點(diǎn),對現(xiàn)有微機(jī)監(jiān)測故障診斷系統(tǒng)進(jìn)行新的架構(gòu)設(shè)計(jì)。
我們主要利用插件技術(shù)的特點(diǎn),將一些可重用的模塊做成插件,不同故障類型可以通過定義具有通用接口的應(yīng)用插件實(shí)現(xiàn)。故障診斷并給出分析意見可以通過統(tǒng)一的插件宿主程序?qū)收喜寮慕馕雠c動態(tài)調(diào)用實(shí)現(xiàn)。專家?guī)煲部梢宰鳛橐粋€插件模塊,插件之間可以通過宿主程序在規(guī)定好的接口協(xié)議范圍內(nèi)通信,更好的得出結(jié)果?;诖藢ΜF(xiàn)有系統(tǒng)進(jìn)行重新架構(gòu)。
1)故障診斷平臺宿主程序
插件技術(shù)通過把軟件的需求和功能進(jìn)行劃分,把基礎(chǔ)的功能需求放在宿主程序中。鐵路微機(jī)監(jiān)測故障診斷平臺中,應(yīng)該有基本的實(shí)時電流圖顯示功能,電流數(shù)據(jù)曲線回放功能,電流數(shù)據(jù)錄入分析診斷功能等,而這些功能其實(shí)都是一個界面顯示的功能,可以通過插件本身來完成,宿主平臺只需要調(diào)用他們即可,所以宿主平臺起到了一個顯示屏的作用。宿主程序它只是一個插件的骨架,通過掃描插件的位置,并且匹配該插件是否符合規(guī)定的插件接口標(biāo)準(zhǔn)來判斷其是否是該系統(tǒng)的插件,進(jìn)而能夠加載插件。它必須為支持插件提供插件管理功能以及協(xié)調(diào)各插件。主要的實(shí)現(xiàn)功能應(yīng)該是由具體的插件實(shí)現(xiàn)的。其中,主程序部分應(yīng)該能夠?qū)崿F(xiàn)注冊/反注冊插件,啟用/禁用插件,顯示插件基本功能信息,配置插件參數(shù)。
2)故障診斷平臺插件模塊
插件模塊應(yīng)有專家?guī)?,道岔故障庫,軌道故障庫等故障庫等。它們?shí)現(xiàn)了整個系統(tǒng)的所有功能。其中故障診斷應(yīng)以現(xiàn)有的最優(yōu)算法給出結(jié)果,配合專家診斷,最終得出較為合理的診斷結(jié)果和維護(hù)意見。它的實(shí)現(xiàn)過程是,首先定義一個名為IPlugin的類,作為通用插件模塊的接口。它不需要定義任何公共的方法和屬性,然后以此為父節(jié)點(diǎn),然后依次定義接口,當(dāng)然就相似模塊也可以依次繼承。在這里,實(shí)現(xiàn)以動態(tài)鏈接庫(Dy-namic link library,DLL)的形式。具體的插件模型結(jié)構(gòu)圖如下:
該故障模塊插件主要有IPlugin,IData,IView,以及IMethods接口。1)IPlugin的作用是身份識別。它包含了插件的基本信息,如插件名稱,版本信息,插件描述,工具欄等相關(guān)資源,以及主程序?qū)Σ寮M(jìn)行操作時的相關(guān)方法。2)IData接口的作用是數(shù)據(jù)傳輸。當(dāng)插件模塊被識別并加載運(yùn)行之后,通過操作系統(tǒng)自帶的數(shù)據(jù)庫引擎從故障數(shù)據(jù)庫中讀取所需數(shù)據(jù),轉(zhuǎn)換到內(nèi)存中的動態(tài)數(shù)據(jù)庫以及故障診斷所需的數(shù)據(jù)結(jié)構(gòu)中,完成數(shù)據(jù)的輸入。3)IView的作用是用視圖顯示的功能將數(shù)據(jù)處理后的結(jié)果以曲線的形式反映出來。并且,在需要錄入數(shù)據(jù)的時候,完成數(shù)據(jù)的輸入,即人機(jī)交互的功能體現(xiàn)與此。(4)IMethods的作用是提供處理數(shù)據(jù)所需的算法,數(shù)據(jù)通過它提供的算法處理后得出結(jié)果。以上四個接口相互配合完成工作。
3)接口設(shè)計(jì)
采用插件技術(shù)最為重要的就是接口設(shè)計(jì)。這里的接口設(shè)計(jì)應(yīng)該包括兩個部分的內(nèi)容,一個是宿主程序的接口設(shè)計(jì),另外一個當(dāng)然就是插件接口的設(shè)計(jì)。插件接口實(shí)現(xiàn)了宿主程序?qū)Σ寮闹饕僮?。核心代碼如下:
class IPlugin{
//插件接口
public:
CString IPlugin_name;//插件名稱
CString IPlugin_vertion;//插件版本
CString IPlugin_description;//插件描述
IHugin0{}
virtualintRegister()=0;//注冊插件,成功返回0
virtualintUrrregister()=0;//反注冊插件,成功返回0
…//插件資源
void Initialize();//插件初始化設(shè)置
void Dispose();//清除插件資源
};
IPlugin是插件的接口,里面定義了插件的名稱,版本,描述,以及各種資源??筛鶕?jù)情況進(jìn)行加載和刪除。它定義了宿主程序?qū)Σ寮乃谢A(chǔ)操作方法。
BOOL IPluginHost(void**pHost)//宿主程序接口函數(shù)
{
*pHost=new CPlugDaocha;//CPlugDaocha公有派生于純虛類IPlugin
return*pHost!=HULL;
//其他方法函數(shù)
}
IPluginHost是宿主程序的接口,由于它的作用它必須是公有的,用于在主程序里創(chuàng)建插件對象,實(shí)現(xiàn)對插件的調(diào)用。CPlugDaocha是插件程序里的動態(tài)鏈接庫的一個類,即道岔故障類,由主程序里的插件基類(相當(dāng)于接口,是純虛類)派生而來,提供插件的基礎(chǔ)功能。IPluginHost作為主程序的接口函數(shù),向插件提供插件對宿主程序的所有操作方法。
在完成各種準(zhǔn)備工作后可以并行進(jìn)行插件與宿主程序的開發(fā),最后完成各部分的單獨(dú)調(diào)試以及連接調(diào)試就可以。同時需要注意的是,宿主程序雖然功能比較簡單,但是最主要是有掃描發(fā)現(xiàn)插件并能夠加載運(yùn)行的功能。
4)插件實(shí)現(xiàn)
本文中的插件實(shí)現(xiàn)以動態(tài)庫的形式實(shí)現(xiàn),開發(fā)平臺為VC++。這里的插件都是基于IPlugin類的,這樣就統(tǒng)一了插件的接口標(biāo)準(zhǔn),然后在宿主程序接口中創(chuàng)建實(shí)例,從而完成對插件的調(diào)用,當(dāng)然,這只是實(shí)例的創(chuàng)建,在資源方面,還是要以動態(tài)庫的形式調(diào)用,這主要同過動態(tài)庫的導(dǎo)出函數(shù)來實(shí)現(xiàn),核心代碼如下:
LIBRARY“CPlugDaocha”
DESCRIPTION‘…
EXPORTS
IPluginHost@1
這段代碼首先定義了加載的插件名稱,然后通過函數(shù)IPI-uginHost來創(chuàng)建插件對象。進(jìn)而完成插件的功能。
4總結(jié)
由于鐵路對微機(jī)監(jiān)測系統(tǒng)的使用需求很高,但實(shí)際中現(xiàn)有的微機(jī)監(jiān)測系統(tǒng)無論從系統(tǒng)架構(gòu),使用的通信協(xié)議,以及各個廠家的微機(jī)監(jiān)測系統(tǒng)又有區(qū)別,使得目前使用的微機(jī)監(jiān)測系統(tǒng)情況頗為復(fù)雜。采用插件技術(shù)是可以解決這些問題的,總結(jié)如下:
1)可以不考慮編程環(huán)境和語言,用通用的接口開發(fā),使得開發(fā)過程更為方便。
2)在一定程度上克服了系統(tǒng)的不穩(wěn)定性。因?yàn)楦鱾€模塊之間是獨(dú)立的,所以如果出現(xiàn)其中的某個模塊失靈,也不會對整個系統(tǒng)造成大的影響。
3)更容易擴(kuò)展程序和功能??梢詫⑽C(jī)監(jiān)測和故障診斷巧妙地結(jié)合起來,通過模塊的形式將診斷插入,不僅靈活增加了系統(tǒng)功能,更加方便了修改。