艾皖東,張 楊,王建榮,蘇 醒
(中車株洲電力機(jī)車有限公司,湖南 株洲 412000)
列車網(wǎng)絡(luò)控制系統(tǒng)(train control and management system,TCMS)是列車控制系統(tǒng)的大腦,其接收各部件系統(tǒng)狀態(tài)數(shù)據(jù)、輸出車輛控制指令的同時(shí),也在時(shí)刻記錄網(wǎng)絡(luò)系統(tǒng)數(shù)據(jù)[1]。其中,中央控制單元(central control unit,CCU)作為TCMS系統(tǒng)中央控制單元,可通過(guò)設(shè)備內(nèi)置的鐵電存儲(chǔ)器記錄列車運(yùn)行數(shù)據(jù)。
為保證TCMS系統(tǒng)穩(wěn)定可靠運(yùn)行,列車配備2個(gè)CCU設(shè)備,二者互為主備冗余,當(dāng)一個(gè)運(yùn)行故障時(shí),另一個(gè)立刻接替網(wǎng)絡(luò)控制。當(dāng)CCU運(yùn)行故障或因車輛試驗(yàn)需要手動(dòng)關(guān)閉,或者通過(guò)HMI對(duì)2個(gè)CCU設(shè)置數(shù)據(jù)不同時(shí),都將導(dǎo)致2個(gè)CCU所記錄的列車運(yùn)行數(shù)據(jù)產(chǎn)生差異,當(dāng)不同CCU作為主控時(shí),發(fā)送給HMI的列車運(yùn)行數(shù)據(jù)就會(huì)出現(xiàn)差異錯(cuò)誤。因此,需要通過(guò)應(yīng)用層完成對(duì)2個(gè)CCU存儲(chǔ)列車運(yùn)行數(shù)據(jù)的比較及同步,保證2個(gè)CCU存儲(chǔ)列車運(yùn)行數(shù)據(jù)的一致性。
CCU具有專用同步通信通道,但是隨著列車智能化和數(shù)字化的快速發(fā)展普及,原通信通道容量無(wú)法滿足智能化列車大數(shù)據(jù)的同步需要。因此,本文將主備CCU同步數(shù)據(jù)按照時(shí)間片傳輸,提出一種主備CCU數(shù)據(jù)分時(shí)同步方法,從時(shí)間維度增擴(kuò)數(shù)據(jù)同步容量,同時(shí)制定同步數(shù)據(jù)協(xié)議,更好地滿足列車運(yùn)行數(shù)據(jù)同步功能。
基于DTEC-2系統(tǒng)的TCMS采用模塊化分布式控制技術(shù)[2],具有車輛控制、通信管理、狀態(tài)監(jiān)控、故障診斷、顯示控制和數(shù)據(jù)累積等功能,其中,顯示控制包括與HMI交互數(shù)據(jù)并傳輸狀態(tài)數(shù)據(jù)故障報(bào)警等;數(shù)據(jù)累積包括記錄存儲(chǔ)列車車號(hào)、列車輪徑、列車?yán)锍毯土熊嚹芎牡冗\(yùn)行數(shù)據(jù)。
CCU采用主備雙冗余結(jié)構(gòu),CCU通過(guò)總線與各系統(tǒng)通信并交互狀態(tài)數(shù)據(jù)和指令數(shù)據(jù),協(xié)同控制車輛各個(gè)設(shè)備工作。同時(shí)CCU將列車運(yùn)行數(shù)據(jù)發(fā)送給HMI顯示,直觀地展示列車數(shù)據(jù)或提示報(bào)警異常數(shù)據(jù)。
CCU保留了0xFF0、0xFF1端口,用于主備CCU之間數(shù)據(jù)通信。0xFF0和0xFF1周期為512 ms,長(zhǎng)度為32 Byte,前4個(gè)Byte為底層保留用,后28個(gè)Byte為應(yīng)用層數(shù)據(jù)。
首先在CCU設(shè)備配置文件mvb_confm中配置0xFF0和0xFF1為源端口,然后在應(yīng)用層調(diào)用MVB_MASTER_SEND和MVB_MASTER_RECV函數(shù),即開(kāi)啟主備CCU之間數(shù)據(jù)發(fā)送和接收。
主備CCU列車運(yùn)行數(shù)據(jù)會(huì)存儲(chǔ)在CCU設(shè)備鐵電存儲(chǔ)器(FRAM,F(xiàn)erroelectric RAM)中,F(xiàn)ARM具備非易失性、更高讀寫(xiě)耐久性和更低功耗等特點(diǎn),斷電后FARM記錄的列車運(yùn)行數(shù)據(jù)不會(huì)丟失。
CCU設(shè)備鐵電存儲(chǔ)器達(dá)1 024塊,每塊存儲(chǔ)器容量達(dá)128 Byte,由應(yīng)用層配置觸發(fā)CCU鐵電存儲(chǔ)器數(shù)據(jù)的讀取和寫(xiě)入,調(diào)用SYS_SET_FDDATA函數(shù)將數(shù)據(jù)寫(xiě)入鐵電存儲(chǔ)器,調(diào)用SYS_GET_FDDATA從鐵電存儲(chǔ)器讀取數(shù)據(jù)。
為更清晰地劃分同步時(shí)間片,更好地傳輸列車運(yùn)行數(shù)據(jù),根據(jù)列車功能需求制定主備CCU數(shù)據(jù)分時(shí)同步協(xié)議[3-4],如表1所示。0xFF0、0xFF1端口的長(zhǎng)度均為32字節(jié),其中1~4字節(jié)為CCU設(shè)備系統(tǒng)預(yù)留,應(yīng)用層不可進(jìn)行讀寫(xiě)操作;5~30字節(jié)為應(yīng)用層自定義數(shù)據(jù);第31字節(jié)為分時(shí)碼(范圍0~255,0代表分時(shí)無(wú)效)。
表1 主備CCU通信數(shù)據(jù)協(xié)議
表1中,第1時(shí)間片(分時(shí)碼1)主備CCU互相傳輸CCU版本、CCU狀態(tài)字、列車總里程、列車總能耗和列車車號(hào)等;第2時(shí)間片(分時(shí)碼2)互相傳輸列車輪徑值和空壓機(jī)工作時(shí)間;第3時(shí)間片(分時(shí)碼3)互相傳輸車輛各系統(tǒng)能耗;直到第N時(shí)間片(分時(shí)碼N)傳輸完成后,從第1時(shí)間片(分時(shí)碼1)重新傳輸。
協(xié)議中第32字節(jié)為本CCU自累加生命信號(hào),他CCU借助數(shù)據(jù)同步可收到本CCU生命信號(hào),他CCU通過(guò)連續(xù)8個(gè)周期本CCU生命信號(hào)是否跳變判斷本CCU是否正常運(yùn)行,同樣地,本CCU也在判斷他CCU的運(yùn)行狀態(tài)。
主備CCU數(shù)據(jù)分時(shí)同步方法主要包括獲取同步數(shù)據(jù)、打包同步數(shù)據(jù)、發(fā)送同步數(shù)據(jù)、接收同步數(shù)據(jù)、解析同步數(shù)據(jù)和使用同步數(shù)據(jù)6個(gè)步驟,具體如圖1所示。
圖1 數(shù)據(jù)分時(shí)同步流程圖
1)獲取同步數(shù)據(jù)。應(yīng)用層獲取對(duì)應(yīng)的實(shí)時(shí)數(shù)據(jù)。
2)打包同步數(shù)據(jù)。分時(shí)碼通過(guò)對(duì)本地循環(huán)計(jì)數(shù)值取余得到,若協(xié)議設(shè)定有3個(gè)分時(shí)碼,則循環(huán)計(jì)數(shù)對(duì)數(shù)值3取余。應(yīng)用層在對(duì)同步數(shù)據(jù)打包時(shí),根據(jù)協(xié)議將獲取的數(shù)據(jù)對(duì)應(yīng)字節(jié)賦值,分時(shí)1傳輸?shù)臄?shù)據(jù)為同步數(shù)據(jù)內(nèi)容+分時(shí)碼1+本CCU生命信號(hào),分時(shí)2傳輸?shù)臄?shù)據(jù)為同步數(shù)據(jù)內(nèi)容+分時(shí)碼2+本CCU生命信號(hào),以此類推。
3)發(fā)送同步數(shù)據(jù)。使用MVB_MASTER_SEND函數(shù)發(fā)送數(shù)據(jù)。
4)接收同步數(shù)據(jù)。使用MVB_MASTER_RECV函數(shù)接收數(shù)據(jù)。
5)解析同步數(shù)據(jù)。本CCU接收到他CCU同步數(shù)據(jù)后,首先根據(jù)協(xié)議位解析他CCU的生命信號(hào),若他CCU運(yùn)行異常,則將他CCU同步數(shù)據(jù)置為0,防止數(shù)據(jù)錯(cuò)誤。若他CCU運(yùn)行正常,則解析分時(shí)碼數(shù)值,將分時(shí)的同步數(shù)據(jù)按照對(duì)應(yīng)協(xié)議解析取出后使用。
6)使用同步數(shù)據(jù)。本CCU完成對(duì)他CCU同步數(shù)據(jù)解析后,對(duì)于同步的數(shù)據(jù)變量,存在本CCU和他CCU兩個(gè)數(shù)據(jù)值,則需要本CCU對(duì)2個(gè)數(shù)據(jù)值進(jìn)行對(duì)比分析,具體處理規(guī)則示例如表2所示。
表2 主備CCU數(shù)據(jù)同步處理規(guī)則示例
根據(jù)同步規(guī)則處理后,使用SYS_SET_FDDATA函數(shù)將同步后的數(shù)據(jù)寫(xiě)入鐵電存儲(chǔ)器,并在CCU上電啟動(dòng)時(shí)使用SYS_GET_FDDATA函數(shù)從鐵電存儲(chǔ)器讀取數(shù)據(jù)。
列車總里程、列車總能耗和各系統(tǒng)能耗等數(shù)據(jù)可通過(guò)HMI設(shè)置。占有端HMI在設(shè)置列車運(yùn)行數(shù)據(jù)時(shí)須遵守?cái)?shù)據(jù)同步規(guī)則,若HMI設(shè)置數(shù)據(jù)不滿足同步規(guī)則(如HMI設(shè)置主CCU車輛能耗數(shù)據(jù)小于主備CCU車輛能耗數(shù)據(jù)),HMI設(shè)置數(shù)據(jù)無(wú)效。
根據(jù)列車網(wǎng)絡(luò)拓?fù)溥B接CCU、HMI及供電電源,通過(guò)試驗(yàn)測(cè)試,本文方法達(dá)到預(yù)期功能,如圖2所示。圖2(a)、2(b)為在HMI上分別單獨(dú)設(shè)置Ⅰ端、Ⅱ端CCU設(shè)備列車數(shù)據(jù);圖2(c)為將2個(gè)CCU設(shè)備通過(guò)MVB總線連接后同步的列車數(shù)據(jù)。
圖2(a)中累計(jì)里程、總能耗、再生能耗、牽引能耗、輔助能耗、空調(diào)能耗數(shù)據(jù)分別為10、21、32、43、54、65;圖2(b)中對(duì)應(yīng)為10、32、21、54、43、66;數(shù)據(jù)同步后,圖2(c)對(duì)應(yīng)為10、32、32、54、54、66。其中,空調(diào)能耗差值未達(dá)到設(shè)定閾值,HMI顯示II端主CCU數(shù)據(jù)。
圖2 列車運(yùn)行數(shù)據(jù)分時(shí)同步
主備CCU數(shù)據(jù)分時(shí)同步方法在低地板儲(chǔ)能式有軌電車上通過(guò)試驗(yàn)驗(yàn)證,達(dá)到了預(yù)期功能效果,并且已批量裝車應(yīng)用。
智能化列車的發(fā)展和普及對(duì)數(shù)據(jù)量提出了新的需求,限于原主備CCU數(shù)據(jù)同步通信容量,本文提出的主備CCU數(shù)據(jù)分時(shí)同步方法,將同步數(shù)據(jù)按照規(guī)定時(shí)間片傳輸,同時(shí)根據(jù)列車功能需求制定了數(shù)據(jù)協(xié)議,不僅從時(shí)間維度增擴(kuò)數(shù)據(jù)同步容量,更好地滿足現(xiàn)在的數(shù)據(jù)同步需求,也為后續(xù)項(xiàng)目提供應(yīng)用參考。