張友兵 馬 麟 張國振 崔俊鋒 王天嬌
張友兵:北京全路通信信號研究設(shè)計院有限公司運(yùn)行控制研究設(shè)計院 助理工程師 100073 北京
馬 麟:北京全路通信信號研究設(shè)計院有限公司運(yùn)行控制研究設(shè)計院 工程師 100073 北京
張國振:北京全路通信信號研究設(shè)計院有限公司運(yùn)行控制研究設(shè)計院 工程師 100073 北京
崔俊鋒:北京全路通信信號研究設(shè)計院有限公司運(yùn)行控制研究設(shè)計院 工程師 100073 北京
王天嬌:北京全路通信信號研究設(shè)計院有限公司運(yùn)行控制研究設(shè)計院 工程師 100073 北京
在CTCS-3級列控系統(tǒng)中,當(dāng)列車高速運(yùn)行時,車載設(shè)備實時監(jiān)控列車運(yùn)行速度,保證列車運(yùn)行安全。CTCS-3級列控車載設(shè)備包含CTCS-2級主機(jī)模塊(C2CU)、車載安全計算機(jī)單元(ATPCU)、列車網(wǎng)管(TSG)、速度距離處理單元(SDP)等重要模塊,通過這些模塊的協(xié)同工作,保證車載設(shè)備能夠?qū)崟r監(jiān)控列車運(yùn)行。C2CU、ATPCU、TSG、SDP等車載設(shè)備模塊在工作過程中,會產(chǎn)生大量的運(yùn)行記錄,如果深入分析這些運(yùn)行記錄,就可以定位車載設(shè)備發(fā)生故障的位置及類型,進(jìn)而可以快速消除故障,提高車載設(shè)備可用性。
但是車載設(shè)備模塊存儲運(yùn)行記錄的空間有限,最多可以存儲250條。如存儲空間已滿,則新記錄將替換掉老記錄,如果不能及時下載或轉(zhuǎn)存,則將丟失除了最新的250條記錄之外的所有運(yùn)行記錄。因此,急需開發(fā)記錄下載器,用于在線實時監(jiān)測車載設(shè)備模塊產(chǎn)生的運(yùn)行記錄,下載并保存。
記錄下載器是一個在線實時監(jiān)測和保存車載設(shè)備運(yùn)行記錄的設(shè)備。它沒有配備電源,通過竊電方式從車載設(shè)備模塊獲取能量,當(dāng)車載設(shè)備模塊上電,與其相連的記錄下載器就自動進(jìn)入工作狀態(tài),并實時監(jiān)測車載設(shè)備模塊的運(yùn)行記錄,自動下載車載設(shè)備模塊產(chǎn)生的新記錄,同時過濾掉老記錄。記錄下載器是一個通用設(shè)備,具有16MB的存儲空間,可以保證至少存儲10萬條運(yùn)行記錄??梢宰詣酉螺dCTCS-3級列控車載設(shè)備各個模塊的運(yùn)行記錄,包括C2CU、ATPCU、TSG、SDP等重要模塊。通過專用工具可以將存儲的記錄拷貝到電腦上,供分析使用。記錄下載器還是一款安全性較高的實用工具,只用于下載,而不會干擾或影響車載設(shè)備模塊的正常工作。
將記錄下載器連接到車載設(shè)備模塊上,循環(huán)執(zhí)行接收數(shù)據(jù)、處理數(shù)據(jù)和存儲數(shù)據(jù)流程,實現(xiàn)在線監(jiān)測、下載和存儲運(yùn)行記錄的功能。因此,記錄下載器軟件分為數(shù)據(jù)接收、數(shù)據(jù)處理和數(shù)據(jù)存儲3個主要模塊。
1.?dāng)?shù)據(jù)接收模塊。通過中斷方式接收來自車載設(shè)備模塊的數(shù)據(jù)。每向車載設(shè)備模塊發(fā)送一條命令,車載設(shè)備模塊就回復(fù)一批數(shù)據(jù)。由于數(shù)據(jù)長度有限,因此可以設(shè)計一個定長的數(shù)組。同時,還要設(shè)計一個全局變量,用于記錄來自車載設(shè)備模塊的數(shù)據(jù)長度。
2.?dāng)?shù)據(jù)處理模塊。將來自車載設(shè)備模塊的數(shù)據(jù)進(jìn)行處理,逐條提取記錄,根據(jù)協(xié)議組幀并存儲在記錄下載器的FLASH中。同時,還需要識別出車載設(shè)備模塊的提示信息,如果是繼續(xù)下載,則向車載設(shè)備發(fā)送下載記錄命令;如果提示記錄下載完畢,則自動轉(zhuǎn)入等待狀態(tài),等待一段時間后,再向車載模塊發(fā)送下載命令,同時過濾已經(jīng)下載過的運(yùn)行記錄。
3.?dāng)?shù)據(jù)存儲模塊。將數(shù)據(jù)處理模塊提取出的運(yùn)行記錄存儲在記錄下載器的FLASH中。
通過不同狀態(tài)的相互轉(zhuǎn)換,實現(xiàn)記錄下載器周期性地下載、提取和存儲運(yùn)行記錄。數(shù)據(jù)處理模塊狀態(tài)轉(zhuǎn)換關(guān)系如圖1所示。當(dāng)記錄下載器上電進(jìn)入工作狀態(tài)后,首先進(jìn)入初始化狀態(tài),之后隨著記錄下載器與車載設(shè)備模塊的數(shù)據(jù)交互,實現(xiàn)狀態(tài)的自動轉(zhuǎn)換,完成下載和保存車載設(shè)備模塊運(yùn)行記錄的功能。
1.初始狀態(tài)。車載設(shè)備模塊上電后,記錄下載器也隨之上電,自動進(jìn)入初始狀態(tài),向車載設(shè)備模塊發(fā)送初始化命令,轉(zhuǎn)入未啟動狀態(tài)。
2.未啟動狀態(tài)。進(jìn)入該狀態(tài)后,等待來自車載設(shè)備模塊的“啟動指示”。如果沒收到,則保持未啟動狀態(tài);如果在超時范圍內(nèi)收到“啟動指示”,則向車載設(shè)備模塊發(fā)送“系統(tǒng)時間命令”,并進(jìn)入等待系統(tǒng)時間狀態(tài);如果等待“啟動指示”超時,則進(jìn)入系統(tǒng)恢復(fù)延時狀態(tài)。
3.等待系統(tǒng)時間狀態(tài)。記錄下載器等待來自車載設(shè)備模塊的系統(tǒng)時間。如果在超時范圍內(nèi)沒有收到系統(tǒng)時間,則保持該狀態(tài);如果收到,則向車載設(shè)備模塊發(fā)送“系統(tǒng)版本命令”,并進(jìn)入等待系統(tǒng)版本狀態(tài);如果等待系統(tǒng)時間超時,則進(jìn)入系統(tǒng)恢復(fù)延時狀態(tài)。
4.等待系統(tǒng)版本狀態(tài)。記錄下載器等待來自車載設(shè)備模塊的系統(tǒng)版本。如果在超時范圍內(nèi)沒有收到系統(tǒng)版本,則保持狀態(tài);如果收到,則進(jìn)入等待下載指示狀態(tài);如果等待系統(tǒng)版本超時,則進(jìn)入系統(tǒng)恢復(fù)延時狀態(tài)。
5.等待下載指示狀態(tài)。記錄下載器等待來自車載設(shè)備模塊的下載記錄指示。如果在超時范圍內(nèi)沒有收到下載記錄指示,則保持;如果收到,則進(jìn)入發(fā)送下載命令狀態(tài);如果等待下載記錄指示超時,則進(jìn)入系統(tǒng)恢復(fù)延時狀態(tài)。
6.發(fā)送下載命令狀態(tài)。記錄下載器已經(jīng)確認(rèn)車載設(shè)備模塊進(jìn)入正常的工作狀態(tài),將向車載設(shè)備模塊發(fā)送“下載記錄命令”,并進(jìn)入下載記錄狀態(tài)。
圖1 記錄下載器在線狀態(tài)轉(zhuǎn)換圖
7.下載記錄狀態(tài)。記錄下載器收到來自車載設(shè)備模塊的一批數(shù)據(jù),逐條提取記錄,根據(jù)協(xié)議組幀,并將包含一條運(yùn)行記錄的完整幀存儲到記錄下載器的FLASH中。如果數(shù)據(jù)結(jié)尾含有“繼續(xù)下載記錄指示”,則記錄下載器向車載設(shè)備模塊發(fā)送“繼續(xù)下載記錄命令”,并等待來自車載設(shè)備模塊的下一批數(shù)據(jù);如果數(shù)據(jù)結(jié)尾含有“下載記錄結(jié)束指示”,則進(jìn)入周期下載延時狀態(tài);如果在數(shù)據(jù)提取中遇到以前已經(jīng)下載過的記錄,說明車載設(shè)備模塊最新的運(yùn)行記錄已經(jīng)下載完畢,記錄下載器向車載設(shè)備模塊發(fā)送“結(jié)束本次下載記錄流程命令”,進(jìn)入等待結(jié)束指示狀態(tài)。如果下載記錄超時,則進(jìn)入周期下載延時狀態(tài)。
8.等待結(jié)束指示狀態(tài)。記錄下載器等待來自車載設(shè)備模塊的“下載記錄結(jié)束指示”。如果收到指示,則進(jìn)入周期下載延時狀態(tài);如果沒有收到,則保持該狀態(tài),繼續(xù)等待;如果等待“下載記錄結(jié)束指示”超時,則進(jìn)入周期下載延時狀態(tài)。
9.周期下載延時狀態(tài)。如果延時沒有到時,記錄下載器繼續(xù)保持延時狀態(tài);如果延時到時,記錄下載器進(jìn)入發(fā)送下載命令狀態(tài),執(zhí)行下一次下載車載設(shè)備模塊運(yùn)行記錄的流程。
10.系統(tǒng)恢復(fù)延時狀態(tài)。如果系統(tǒng)恢復(fù)未到時,則保持系統(tǒng)恢復(fù)延時狀態(tài);如果系統(tǒng)恢復(fù)到時,則進(jìn)入初始狀態(tài)。
在記錄下載器的在線狀態(tài)轉(zhuǎn)換中,下載記錄狀態(tài)最為復(fù)雜,需要根據(jù)運(yùn)行記錄的開始和結(jié)束特征逐條提取記錄,并識別該記錄是否為新記錄。如果是新記錄,則組幀并存儲在FLASH中;如果是已經(jīng)被下載過的,則過濾并結(jié)束本次下載記錄流程。
車載設(shè)備模塊在產(chǎn)生每一條運(yùn)行記錄的時候,都會在記錄的頭部附上當(dāng)時的系統(tǒng)時間,而且這個時間是惟一的和遞增的。所謂惟一,就是附加在每一條運(yùn)行記錄的系統(tǒng)時間不同;所謂遞增,就是附加在后一條運(yùn)行記錄的系統(tǒng)時間總是比前一條時間要大。根據(jù)惟一性和遞增性這2個特征,就可以實現(xiàn)只下載新記錄并過濾舊記錄的功能。
車載設(shè)備模塊發(fā)送記錄時,總是按照從最新到最老的順序,即按照附加在記錄上的系統(tǒng)時間從大到小的順序。每下載完一批記錄,記錄下載器將系統(tǒng)最大時間作為下一次下載記錄的參考時間。進(jìn)入下一次下載記錄的流程時,每提取一條記錄,就將該記錄的系統(tǒng)時間與參考時間進(jìn)行比較,系統(tǒng)時間比參考時間大的就是新記錄,組幀并保存在FLASH中。如果遇到系統(tǒng)時間等于參考時間,說明新記錄已經(jīng)下載完畢。
數(shù)據(jù)處理模塊從來自車載設(shè)備模塊的數(shù)據(jù)中逐條提取記錄,組幀后傳遞給數(shù)據(jù)存儲模塊。數(shù)據(jù)存儲模塊需要將包含記錄的完整幀存儲在記錄下載器的FLASH中。但是,數(shù)據(jù)處理模塊處理速度很快,而數(shù)據(jù)存儲模塊存儲速度相對要慢很多,如果2個模塊之間的速度不匹配,必然要導(dǎo)致部分車載設(shè)備模塊的運(yùn)行記錄丟失。
為了實現(xiàn)數(shù)據(jù)處理模塊與數(shù)據(jù)存儲模塊的速度匹配,設(shè)計一個開關(guān)量。如數(shù)據(jù)處理模塊判斷該開關(guān)量為打開狀態(tài)時,就向數(shù)據(jù)存儲模塊傳遞數(shù)據(jù),傳遞完畢后,再將該開關(guān)量置為關(guān)閉狀態(tài);如判斷該開關(guān)量為關(guān)閉狀態(tài)時,就將數(shù)據(jù)存儲到記錄下載器的FLASH中,當(dāng)存儲完畢后,再將該開關(guān)量置為打開狀態(tài)。通過數(shù)據(jù)處理模塊和數(shù)據(jù)存儲模塊共同管理該開關(guān)量,實現(xiàn)這2個模塊之間的速度匹配。
記錄下載器通過竊電的方式從車載設(shè)備模塊獲取電量供自己使用,顯然能夠獲取的電量是有限的,而執(zhí)行寫FLASH操作卻比較耗電。為此,為記錄下載器設(shè)計了一種能夠勻速向FLASH寫入數(shù)據(jù)的方法。
由于記錄下載器1 s內(nèi)可以向FLASH中寫入500字節(jié)數(shù)據(jù),那么每寫入1個字節(jié)需要2 ms。數(shù)據(jù)存儲模塊按照8字節(jié)1組將數(shù)據(jù)分為多個小組,設(shè)計每20 ms寫入1組數(shù)據(jù),即寫入1組數(shù)據(jù)之后開始計時,計時滿20 ms,再向FLASH中寫入下一組數(shù)據(jù),直到所有數(shù)據(jù)都寫完為止。通過這種方式,不但可以保證數(shù)據(jù)以最高效的方式存儲在FLASH中,而且可以保證不會造成掉電,使記錄下載器始終處于在線工作狀態(tài)。
目前記錄下載器已經(jīng)研發(fā)完畢,正在進(jìn)行實驗室測試和驗證階段,將會成為實時在線下載CTCS-3級列控車載設(shè)備各個模塊運(yùn)行記錄的有效工具。
[1]張曙光.CTCS-3級列控系統(tǒng)技術(shù)創(chuàng)新總體方案[M].北京:中國鐵道出版社,2009.
[2]CTCS3-300T車載設(shè)備技術(shù)條件[R].北京:北京全路通信信號研究設(shè)計院有限公司,2012.