張?jiān)鲆?宋 揚(yáng) 魯振山
(1.中車(chē)大連電力牽引研發(fā)中心有限公司,116052,大連;2.動(dòng)車(chē)組和機(jī)車(chē)牽引與控制國(guó)家重點(diǎn)實(shí)驗(yàn)室,116052,大連∥第一作者,工程師)
由于列車(chē)運(yùn)行環(huán)境復(fù)雜多變,TCMS(列車(chē)控制與管理系統(tǒng))在運(yùn)行過(guò)程中需應(yīng)對(duì)氣壓、溫差、空氣質(zhì)量以及電磁環(huán)境等多重因素瞬時(shí)突變?cè)斐傻挠绊憽R虼?,除?duì)設(shè)備及通信線(xiàn)路進(jìn)行更高等級(jí)的防護(hù),以及執(zhí)行更嚴(yán)苛的試驗(yàn)測(cè)試標(biāo)準(zhǔn)外,通常采用冗余設(shè)計(jì)以保證系統(tǒng)安全和穩(wěn)定地實(shí)現(xiàn)其通信管理及控制功能。本文利用在研項(xiàng)目的帶高速智能網(wǎng)絡(luò)系統(tǒng)的某城市軌道交通車(chē)輛配置的兩種車(chē)輛控制總線(xiàn)所搭建的數(shù)據(jù)交互環(huán)境,研究網(wǎng)絡(luò)主控設(shè)備列車(chē)中央控制單元(CCU)對(duì)于自身及冗余設(shè)備運(yùn)行異常、通信功能異常等狀態(tài)進(jìn)行高速判別,并進(jìn)行準(zhǔn)確應(yīng)對(duì)處理的有效實(shí)現(xiàn)方法,提出基于雙總線(xiàn)的雙級(jí)熱備冗余控制的設(shè)計(jì)思路,以實(shí)現(xiàn)TCMS 運(yùn)行安全性能的進(jìn)一步提升。
在研項(xiàng)目帶高速智能網(wǎng)絡(luò)系統(tǒng)的某城市軌道交通車(chē)輛,其列車(chē)4 節(jié)編組結(jié)構(gòu)為:1 節(jié)帶司機(jī)室動(dòng)車(chē)+1 節(jié)拖車(chē)+1 節(jié)帶受電弓拖車(chē)+1 節(jié)帶司機(jī)室動(dòng)車(chē)。TCMS 采用編組以太網(wǎng)(ECN)和多功能車(chē)輛總線(xiàn)(MVB)兩種車(chē)輛總線(xiàn)拓?fù)浣Y(jié)構(gòu)。列車(chē)各設(shè)備均通過(guò)兩種總線(xiàn)進(jìn)行數(shù)據(jù)交互,默認(rèn)采用高速的ECN 總線(xiàn)作為首選數(shù)據(jù)信任總線(xiàn),MVB 為冗余總線(xiàn),并同時(shí)提供相關(guān)人機(jī)交互接口用于首選控制線(xiàn)設(shè)置及切換。
在該項(xiàng)目中,ECN 總線(xiàn)采用TRDP(列車(chē)實(shí)時(shí)數(shù)據(jù)協(xié)議)中的數(shù)據(jù)協(xié)議棧進(jìn)行實(shí)時(shí)數(shù)據(jù)傳輸。2015年7 月出臺(tái)機(jī)車(chē)車(chē)輛使用的工業(yè)以太網(wǎng)標(biāo)準(zhǔn)IEC 61375-2-3(Edition1.0)[1],其定義ECN 的4~7 層都將使用專(zhuān)為鐵路用途開(kāi)發(fā)的自主協(xié)議TRDP,并通過(guò)行業(yè)團(tuán)體TCNOpen 以開(kāi)源的形式公開(kāi)。TRDP的協(xié)議棧在以太網(wǎng)中所處位置如圖1 所示[2]。
CCU 作為T(mén)CMS 核心部件,負(fù)責(zé)整車(chē)網(wǎng)絡(luò)管理和車(chē)輛運(yùn)行控制功能。該項(xiàng)目列車(chē)裝配2 臺(tái)互為冗余的CCU,其中1 臺(tái)作為冗余設(shè)備(從CCU)處于熱備狀態(tài),實(shí)時(shí)檢測(cè)主CCU 狀態(tài),確保在主CCU發(fā)生故障時(shí)能夠迅速接管主CCU 全部功能,以持續(xù)保證系統(tǒng)功能安全運(yùn)行。
圖1 TRDP 在ECN 機(jī)構(gòu)中的位置
CCU 的硬件部分采用低功耗嵌入式PC/104 結(jié)構(gòu)的工業(yè)計(jì)算機(jī)104-1645CLDN-(24B)板卡,集成了AMD LX800CPU、256 MB 的DDR、1 個(gè)PC/104擴(kuò)展接口、1 個(gè)10/100 Mbit/s 自適應(yīng)網(wǎng)口、1 個(gè)IDE接口、2 個(gè)串口、USB2.0 接口等[2];軟件部分主要包括底層系統(tǒng)軟件和上層應(yīng)用軟件,前者是后者的操作系統(tǒng)平臺(tái),采用基于x86 硬件平臺(tái)的VxWorks 多任務(wù)實(shí)時(shí)操作系統(tǒng),進(jìn)行軟件輸入輸出映射管理、內(nèi)存管理、任務(wù)調(diào)度等功能,是本研究中實(shí)現(xiàn)雙級(jí)熱備冗余控制的主要研究對(duì)象。
所謂雙級(jí)熱備冗余控制,即在配置兩種控制總線(xiàn)的列車(chē)上通過(guò)優(yōu)化CCU 底層系統(tǒng)軟件設(shè)計(jì),使CCU 同時(shí)實(shí)現(xiàn)數(shù)據(jù)接收總線(xiàn)間的總線(xiàn)級(jí)冗余控制,以及主、從CCU 間的設(shè)備級(jí)冗余控制功能。通過(guò)對(duì)總線(xiàn)和設(shè)備的雙級(jí)冗余處理,分別對(duì)通信總線(xiàn)突發(fā)的暫時(shí)性通信異常以及設(shè)備部件功能性故障進(jìn)行應(yīng)對(duì)處理,使系統(tǒng)運(yùn)行得到更高效、全面的保護(hù)。
本項(xiàng)目采用MVB 和ECN 雙總線(xiàn)數(shù)據(jù)交互的車(chē)輛控制總線(xiàn)配置方式,實(shí)現(xiàn)整車(chē)設(shè)備通信功能。CCU 通過(guò)雙總線(xiàn)同時(shí)向其他設(shè)備發(fā)送數(shù)據(jù),并將由雙總線(xiàn)接收的數(shù)據(jù)分別進(jìn)行緩存處理,默認(rèn)優(yōu)先選擇ECN 總線(xiàn)作為數(shù)據(jù)信任總線(xiàn),也可通過(guò)人機(jī)交互界面對(duì)數(shù)據(jù)信任總線(xiàn)進(jìn)行選擇。CCU 實(shí)時(shí)監(jiān)視對(duì)比兩個(gè)總線(xiàn)接收的緩存數(shù)據(jù),判斷總線(xiàn)數(shù)據(jù)健康狀態(tài),并選擇處于健康狀態(tài)的數(shù)據(jù)作為CCU 邏輯運(yùn)算輸入結(jié)果,實(shí)現(xiàn)總線(xiàn)級(jí)冗余控制。
2.1.1 總線(xiàn)冗余實(shí)現(xiàn)方式
在項(xiàng)目設(shè)計(jì)階段,為使上層應(yīng)用軟件對(duì)設(shè)備接收數(shù)據(jù)的處理不受數(shù)據(jù)總線(xiàn)選擇的影響,開(kāi)發(fā)者會(huì)對(duì)兩種通信接口協(xié)議進(jìn)行統(tǒng)一編制,并分別生成MVB 和TRDP 通信配置文件。
MVB 通信配置了CCU 各端口源宿屬性、端口號(hào)、端口大小及特征周期4 種參數(shù),并根據(jù)主、從CCU 通信性質(zhì)分別進(jìn)行配置。CCU 底層軟件將在啟動(dòng)后的初始化過(guò)程中讀取MVB 通信配置文件,并依據(jù)其中的端口號(hào)大小自動(dòng)排列端口順序,再結(jié)合端口大小計(jì)算出各個(gè)端口數(shù)據(jù)的內(nèi)存偏移地址。底層軟件在輪詢(xún)各端口并讀取端口數(shù)據(jù)后將按照該內(nèi)存偏移地址將數(shù)據(jù)依次映射在分配好的內(nèi)存空間內(nèi),完成MVB 數(shù)據(jù)緩存。
TRDP 通信配置了CCU 數(shù)據(jù)通信各數(shù)據(jù)包相關(guān)的數(shù)據(jù)源設(shè)備、源設(shè)備IP 地址、宿設(shè)備IP 地址、數(shù)據(jù)包ComId、數(shù)據(jù)包源宿類(lèi)型、數(shù)據(jù)量、偏移位置以及特征周期等8 種參數(shù)。CCU 底層軟件將在啟動(dòng)后的初始化過(guò)程中讀取TRDP 通信配置文件,并依據(jù)文件內(nèi)各宿類(lèi)型數(shù)據(jù)包偏移位置大小自動(dòng)排列,同時(shí)按順序?yàn)槊總€(gè)數(shù)據(jù)包創(chuàng)建1 個(gè)socket(套接字)。底層軟件在輪詢(xún)socket 并讀取接收到的數(shù)據(jù)后,將按數(shù)據(jù)包規(guī)定的內(nèi)存偏移地址將數(shù)據(jù)依次映射在分配好的內(nèi)存空間內(nèi),完成TRDP 數(shù)據(jù)緩存。
由于MVB 和TRDP 均嚴(yán)格規(guī)定了數(shù)據(jù)偏移位置,在兩個(gè)數(shù)據(jù)總線(xiàn)通信狀態(tài)完全正常時(shí),兩個(gè)數(shù)據(jù)緩存區(qū)內(nèi)數(shù)據(jù)內(nèi)容應(yīng)一致。而在數(shù)據(jù)信任總線(xiàn)受到干擾時(shí),CCU 按照當(dāng)前信任總線(xiàn)確定1 個(gè)數(shù)據(jù)集合單元,并以該數(shù)據(jù)集合單元為單位,對(duì)兩個(gè)總線(xiàn)數(shù)據(jù)緩存區(qū)內(nèi)的數(shù)據(jù)內(nèi)容進(jìn)行健康狀態(tài)對(duì)比,以非信任總線(xiàn)中健康的數(shù)據(jù)集合單元對(duì)信任總線(xiàn)中不健康的數(shù)據(jù)集合單元進(jìn)行替換處理,實(shí)現(xiàn)更高效的數(shù)據(jù)總線(xiàn)來(lái)源切換。數(shù)據(jù)接收雙總線(xiàn)冗余的軟件執(zhí)行邏輯如圖2 所示。
本設(shè)計(jì)中,CCU 按照不同的信任總線(xiàn)確定用于作為數(shù)據(jù)冗余單位的數(shù)據(jù)集合單元,各數(shù)據(jù)集合單元標(biāo)定在2 個(gè)數(shù)據(jù)緩存區(qū)索引數(shù)據(jù)的內(nèi)存偏移地址和數(shù)據(jù)長(zhǎng)度。當(dāng)MVB 總線(xiàn)為信任總線(xiàn)時(shí),CCU 以MVB 通信配置的數(shù)據(jù)端口作為數(shù)據(jù)集合單元,并在緩存區(qū)內(nèi)分別對(duì)各端口接收的數(shù)據(jù)進(jìn)行健康狀態(tài)判斷,對(duì)于非健康數(shù)據(jù)以數(shù)據(jù)端口對(duì)應(yīng)內(nèi)存偏移作為索引地址在非信任ECN 總線(xiàn)數(shù)據(jù)緩存區(qū)內(nèi)進(jìn)行索引,并進(jìn)行數(shù)據(jù)冗余處理;當(dāng)ECN 總線(xiàn)為信任總線(xiàn)時(shí),CCU 以TRDP 通信配置的各數(shù)據(jù)包作為數(shù)據(jù)集合單元,并在緩存區(qū)內(nèi)分別對(duì)各數(shù)據(jù)包對(duì)應(yīng)socket 接收的數(shù)據(jù)進(jìn)行健康狀態(tài)判斷,對(duì)于非健康數(shù)據(jù)以數(shù)據(jù)包對(duì)應(yīng)內(nèi)存偏移作為索引地址在非信任總線(xiàn)MVB數(shù)據(jù)緩存區(qū)內(nèi)進(jìn)行索引,并進(jìn)行數(shù)據(jù)冗余處理。
總線(xiàn)級(jí)冗余功能嵌入在CCU 底層軟件的主應(yīng)用任務(wù)中執(zhí)行,執(zhí)行周期為20 ms。
2.1.2 MVB 數(shù)據(jù)健康狀態(tài)判斷
MVB 為信任總線(xiàn)時(shí)以數(shù)據(jù)端口為數(shù)據(jù)集合單元進(jìn)行數(shù)據(jù)冗余處理。CCU 通過(guò)對(duì)比每個(gè)端口刷新時(shí)間與其對(duì)應(yīng)的健康判斷時(shí)間,進(jìn)行MVB 端口數(shù)據(jù)健康判斷。在本設(shè)計(jì)中每個(gè)端口健康判斷時(shí)間與其端口特征周期存在對(duì)應(yīng)關(guān)系,具體如表1 所示。
圖2 數(shù)據(jù)接收雙總線(xiàn)冗余
表1 MVB 端口特征周期與健康判斷時(shí)間對(duì)應(yīng)表
各端口健康判斷時(shí)間以該端口特征周期乘以對(duì)應(yīng)判斷系數(shù)N 而得出。當(dāng)端口刷新時(shí)間未超過(guò)其對(duì)應(yīng)的健康判斷時(shí)間時(shí),視為該端口數(shù)據(jù)處于健康狀態(tài);反之,則視為該端口數(shù)據(jù)處于非健康狀態(tài),按照該數(shù)據(jù)集合單元標(biāo)定的內(nèi)存偏移地址和端口大小,在TRDP 數(shù)據(jù)緩存區(qū)索引對(duì)應(yīng)數(shù)據(jù),并進(jìn)行數(shù)據(jù)替換處理完成數(shù)據(jù)冗余。
2.1.3 ECN 總線(xiàn)數(shù)據(jù)健康狀態(tài)判斷
ECN 總線(xiàn)為信任總線(xiàn)時(shí)以通信配置的各數(shù)據(jù)包為數(shù)據(jù)集合單元進(jìn)行冗余數(shù)據(jù)處理。在TRDP 通信配置階段,已經(jīng)將各子設(shè)備向CCU 的數(shù)據(jù)通信配置在不同的socket 進(jìn)行接收,通過(guò)輪詢(xún)每個(gè)socket實(shí)現(xiàn)在同一周期內(nèi)對(duì)全部子設(shè)備發(fā)送數(shù)據(jù)進(jìn)行接收。對(duì)于讀取出的數(shù)據(jù)分別進(jìn)行解析、校驗(yàn),并將數(shù)據(jù)向TRDP 數(shù)據(jù)緩存區(qū)進(jìn)行映射,同時(shí)判定該數(shù)據(jù)集合單元健康狀態(tài)良好。當(dāng)讀取socket 無(wú)數(shù)據(jù)時(shí),為保證數(shù)據(jù)接收在同一運(yùn)行周期內(nèi)的運(yùn)行實(shí)時(shí)性,將進(jìn)行循環(huán)讀取socket 動(dòng)作,直至讀取出數(shù)據(jù)或循環(huán)次數(shù)超過(guò)M 次(本設(shè)計(jì)中M=10)時(shí)停止循環(huán)讀取動(dòng)作。當(dāng)連續(xù)5 個(gè)任務(wù)運(yùn)行周期讀取socket 無(wú)數(shù)據(jù)次數(shù)超過(guò)M 次時(shí),判定該數(shù)據(jù)集合單元為非健康狀態(tài);將根據(jù)該數(shù)據(jù)集合單元標(biāo)定的內(nèi)存偏移地址和數(shù)據(jù)長(zhǎng)度在MVB 數(shù)據(jù)緩存區(qū)內(nèi)索引對(duì)應(yīng)數(shù)據(jù),并進(jìn)行數(shù)據(jù)替換處理完成數(shù)據(jù)冗余。
為了實(shí)現(xiàn)更完備、高效的設(shè)備冗余切換功能,本研究根據(jù)以往項(xiàng)目中CCU 的故障案例,總結(jié)了CCU 運(yùn)行過(guò)程中可能突發(fā)的各類(lèi)設(shè)備功能性故障,并對(duì)這些故障所期望得到的設(shè)備冗余功能應(yīng)對(duì)效果進(jìn)行統(tǒng)計(jì)性研究,最終形成有效的設(shè)備級(jí)冗余控制方法。CCU 功能性故障類(lèi)型如表2 所述(冗余控制只應(yīng)對(duì)單設(shè)備故障)。對(duì)表2 中闡述的各類(lèi)型故障進(jìn)行總結(jié),形成主、從CCU 故障判斷條件,并以此形成自身及冗余設(shè)備故障判斷結(jié)果,最終對(duì)判斷結(jié)果進(jìn)行相應(yīng)的應(yīng)對(duì)處理。主、從CCU 設(shè)備級(jí)冗余控制功能的實(shí)現(xiàn)過(guò)程分別如圖3、圖4 所示。
在上述邏輯判斷條件中,MVB 宿端口超時(shí)判斷及TRDP 數(shù)據(jù)有效性判斷方法,與總線(xiàn)級(jí)冗余控制描述的數(shù)據(jù)健康狀態(tài)判斷方法一致,但設(shè)備級(jí)冗余控制是針對(duì)設(shè)備功能性異常進(jìn)行的,需對(duì)全部數(shù)據(jù)集合單元的健康狀態(tài)進(jìn)行判斷得出判斷結(jié)果。為保證邏輯判斷時(shí)間充足且不影響冗余切換功能的高效性,本設(shè)計(jì)中將全部MVB 宿端口超時(shí)判斷時(shí)間設(shè)置為256 ms,全部TRDP 數(shù)據(jù)失效判斷時(shí)間設(shè)置為100 ms,即保證設(shè)備在300 ms 內(nèi)完成設(shè)備功能性故障狀態(tài)判斷。
主、從CCU 通過(guò)單獨(dú)配置的MVB 內(nèi)部通信端口和TRDP 單播數(shù)據(jù)包,實(shí)現(xiàn)設(shè)備間內(nèi)部通信。在內(nèi)部通信數(shù)據(jù)中,單向包含主或從CCU 設(shè)備的MVB 接收功能狀態(tài)、TRDP 接收功能狀態(tài)、自身故障判斷以及生命信號(hào),利用內(nèi)部通信中數(shù)據(jù)信息的傳輸,使主、從設(shè)備雙方得到充足的數(shù)據(jù)依據(jù),了解故障時(shí)刻雙方狀態(tài),并以此做出準(zhǔn)確的故障判斷及應(yīng)對(duì)動(dòng)作。本設(shè)計(jì)中MVB 內(nèi)部端口特征周期設(shè)置為32 ms,TRDP 內(nèi)部通信周期設(shè)置為20 ms。在主CCU 判斷自身故障狀態(tài)后,主動(dòng)進(jìn)行TRDP 及MVB 的從狀態(tài)配置,規(guī)避總線(xiàn)上雙主故障情況。
表2 CCU 功能性故障分類(lèi)
圖3 主CCU 冗余控制判斷邏輯及應(yīng)對(duì)動(dòng)作
本項(xiàng)目中采用的CCU 設(shè)備,TRDP 主從狀態(tài)切換可以由軟件瞬間完成;而MVB 主從狀態(tài)切換需要主板調(diào)度MVB 通信板卡進(jìn)行主從狀態(tài)重新配置過(guò)程,實(shí)測(cè)耗時(shí)為295 ms。因而,從CCU 在完成主CCU 故障判斷后,在不中斷應(yīng)用邏輯運(yùn)算的前提下,首先進(jìn)行TRDP 通信主從狀態(tài)切換,以TRDP通信數(shù)據(jù)維持系統(tǒng)正??刂萍巴ㄐ殴芾砉δ?。同時(shí)啟動(dòng)MVB 主配置加載任務(wù),待到MVB 加載主配置成功后,再恢復(fù)數(shù)據(jù)總線(xiàn)冗余功能。
圖4 從CCU 冗余控制判斷邏輯及應(yīng)對(duì)動(dòng)作
雙級(jí)熱備冗余控制通過(guò)軟件實(shí)現(xiàn)后,在實(shí)驗(yàn)室搭建網(wǎng)絡(luò)拓?fù)錅y(cè)試環(huán)境(如圖5),對(duì)冗余控制功能效果進(jìn)行模擬驗(yàn)證測(cè)試。其中,陪試設(shè)備為可編程的通信模擬設(shè)備,可模擬項(xiàng)目中全部網(wǎng)絡(luò)子設(shè)備數(shù)據(jù)發(fā)送功能,并可通過(guò)在線(xiàn)調(diào)試模式控制兩種總線(xiàn)的任意數(shù)據(jù)集合單元數(shù)據(jù)發(fā)送,以此模擬數(shù)據(jù)異常狀態(tài)。
圖5 驗(yàn)證測(cè)試環(huán)境的網(wǎng)絡(luò)拓?fù)鋱D
總線(xiàn)級(jí)冗余功能測(cè)試中,通過(guò)陪試設(shè)備模擬2種總線(xiàn)不同數(shù)據(jù)集合單元的異常狀態(tài),測(cè)試結(jié)果表明,利用MVB 為信任總線(xiàn)并模擬其故障時(shí),數(shù)據(jù)總線(xiàn)冗余完成時(shí)間與表1 中規(guī)定的MVB 端口健康狀態(tài)判斷時(shí)間一致,各數(shù)據(jù)端口可在其對(duì)應(yīng)的健康狀態(tài)判斷時(shí)間(最小160 ms,最大1 024 ms)內(nèi)利用TRDP 數(shù)據(jù)完成數(shù)據(jù)冗余;ECN 總線(xiàn)為信任總線(xiàn)并模擬其故障時(shí),冗余完成時(shí)間為5 個(gè)主任務(wù)執(zhí)行周期,即5×20 ms=100 ms 完成數(shù)據(jù)冗余。
設(shè)備級(jí)冗余功能測(cè)試中,通過(guò)軟件模擬與線(xiàn)纜通斷操作,對(duì)表2 中描述的CCU 故障情況逐一進(jìn)行模擬。測(cè)試結(jié)果表明,從CCU 在256 ms 完成對(duì)MVB 和TRDP 通信狀態(tài)的有效性判斷,并優(yōu)先進(jìn)行TRDP 主從切換保證CCU 控制功能順利進(jìn)行,完成切換時(shí)間為256 ms。
在調(diào)試過(guò)程中,主、從CCU 始終運(yùn)行具備雙級(jí)熱備冗余控制功能的底層系統(tǒng)軟件,并在整個(gè)靜調(diào)、動(dòng)調(diào)測(cè)試過(guò)程中,CCU 控制功能完全正常,說(shuō)明雙級(jí)熱備冗余控制的軟件實(shí)現(xiàn)在保證冗余功能的同時(shí),沒(méi)有對(duì)列車(chē)網(wǎng)絡(luò)控制功能造成任何不良影響。
一系列驗(yàn)證測(cè)試結(jié)果表明,雙級(jí)熱備冗余控制功能具備較高的實(shí)時(shí)性和可靠性,在充分保證網(wǎng)絡(luò)主控設(shè)備對(duì)列車(chē)的穩(wěn)定控制功能的同時(shí),有力應(yīng)對(duì)了通信瞬時(shí)異常及設(shè)備功能性故障對(duì)于TCMS 安全運(yùn)行所造成的風(fēng)險(xiǎn),對(duì)軌道交通車(chē)輛的安全運(yùn)行性能的提升具有較現(xiàn)實(shí)的參考意義。