莊凌昀 謝維達(dá)
(同濟(jì)大學(xué)鐵道與城市軌道交通研究院,201804,上海∥第一作者,碩士研究生)
鐵路與城市軌道交通的列車運(yùn)行環(huán)境可能是高低溫、高濕、沖擊、電磁輻射干擾、振動(dòng)等惡劣環(huán)境,因此,列車控制系統(tǒng)中微機(jī)系統(tǒng)的可靠性非常重要。研究表明,考慮到當(dāng)前傳統(tǒng)微機(jī)系統(tǒng)結(jié)構(gòu),僅僅從目前元器件的工藝技術(shù)水平出發(fā),暫無有效的辦法提高微機(jī)系統(tǒng)整體的可靠性。因此,應(yīng)立足于列車微機(jī)控制系統(tǒng),參考國(guó)內(nèi)外經(jīng)驗(yàn),特別是冗余容錯(cuò)計(jì)算機(jī),采用高可靠性多冗余容錯(cuò)技術(shù),研究與設(shè)計(jì)車載計(jì)算機(jī)系統(tǒng),以滿足列車控制中可靠性安全性要求[1]。
不同于安全繼電器組成的鐵路信號(hào)設(shè)備,車載計(jì)算機(jī)主要由微機(jī)及超大規(guī)模集成電路芯片組成,因此不具備非對(duì)稱故障特性。車載計(jì)算機(jī)安全性設(shè)計(jì)主要是依據(jù)可靠性理論和容錯(cuò)技術(shù)。通過軟件和硬件冗余容錯(cuò)設(shè)計(jì)以及移植實(shí)時(shí)操作系統(tǒng),有效提高微機(jī)控制系統(tǒng)可靠性,進(jìn)而提高列車運(yùn)行的安全性;充分發(fā)揮計(jì)算機(jī)高速、智能處理能力,設(shè)計(jì)完善的軟、硬件故障檢測(cè)模塊,確??刂葡到y(tǒng)芯片正常運(yùn)行,程序準(zhǔn)確執(zhí)行,列車各個(gè)設(shè)備接收和執(zhí)行正確無誤的指令。
車載計(jì)算機(jī)是列車微機(jī)控制系統(tǒng)的主要核心部件。整個(gè)車輛控制系統(tǒng)中,為了滿足不同應(yīng)用要求和系統(tǒng)安全性及可靠性需求,將微機(jī)控制系統(tǒng)中一些關(guān)鍵部件由傳統(tǒng)單芯片微機(jī)改為高可靠性安全性、具有冗余容錯(cuò)的車載計(jì)算機(jī)部件。
例如CCU(中央控制單元)負(fù)責(zé)列車通信網(wǎng)絡(luò),TCU(牽引控制單元)負(fù)責(zé)控制牽引變流器和牽引電機(jī),BCU(制動(dòng)控制單元)負(fù)責(zé)列車制動(dòng)等。由于這些控制單元在列車運(yùn)行中至關(guān)重要,直接影響到行車安全,因而對(duì)其可靠性要求尤為嚴(yán)格。目前工程設(shè)計(jì)中常采用系統(tǒng)級(jí)雙機(jī)熱備冗余或一熱備一冷備冗余。如何設(shè)計(jì)出通用的高可靠性車載計(jì)算機(jī)控制單元,通過冗余措施確保對(duì)外運(yùn)行安全性,并保留輸入輸出端口通用性,且能夠適應(yīng)列車微機(jī)控制系統(tǒng)的不同應(yīng)用要求,具有較好硬件兼容性以及應(yīng)用擴(kuò)展性,設(shè)計(jì)與研究高可靠、高可用、高安全車載安全計(jì)算機(jī)的要求。它對(duì)于保證與提高整個(gè)列車微機(jī)控制系統(tǒng)可靠運(yùn)行是十分有意義的。
本文研究與設(shè)計(jì)的車載計(jì)算機(jī),主要針對(duì)基于嵌入式單片機(jī)芯片處理器、利用高主頻運(yùn)算速度、大容量存儲(chǔ)單元、集成多種通用總線以及A/D,D/A轉(zhuǎn)換接口等特點(diǎn),根據(jù)實(shí)際需要,移植實(shí)時(shí)操縱系統(tǒng)以及編寫相應(yīng)的上層應(yīng)用軟件,或者通過擴(kuò)展外圍電路滿足特殊實(shí)際要求。微機(jī)單元運(yùn)行中,需要對(duì)大量數(shù)據(jù)進(jìn)行運(yùn)算處理的控制單元。這一類計(jì)算機(jī)已應(yīng)用在大量信息處理、網(wǎng)絡(luò)通信控制、任務(wù)進(jìn)程調(diào)度、故障診斷與終端顯示等場(chǎng)合,在列車微機(jī)控制系統(tǒng)中處于重要地位,決定著整個(gè)控制系統(tǒng)的可靠性與安全性。
整個(gè)系統(tǒng)主要由3個(gè)CPU和FPGA(現(xiàn)場(chǎng)可編程的陣列)構(gòu)成的FIFO(先入先出)模塊以及表決器組成。從系統(tǒng)結(jié)構(gòu)圖可以看出,不僅對(duì) CPU模塊進(jìn)行冗余,而且信號(hào)緩沖、輸出接口都冗余設(shè)計(jì)。實(shí)際應(yīng)用中,CPU模塊可以根據(jù)技術(shù)需要選擇X86、PC104系統(tǒng),也可選擇ARM,DSP等其他微機(jī)芯片設(shè)備。
車載計(jì)算機(jī)的工作原理如圖1所示。3個(gè)獨(dú)立的CPU單元通過數(shù)據(jù)采樣設(shè)備獲取數(shù)據(jù),進(jìn)行處理后分別輸出至各自對(duì)應(yīng)FPGA的 FIFO模塊;FPGA將得到的數(shù)據(jù)以先入先出的模式傳送至表決器,進(jìn)行3取2表決,得到正確數(shù)據(jù)。表決器確定一個(gè)正確工作的CPU,將控制信號(hào)傳輸至輸出控制單元。表決器應(yīng)當(dāng)保證此時(shí)有且僅有一個(gè)輸出控制單元工作,使得正確工作的CPU將運(yùn)算結(jié)果通過輸出轉(zhuǎn)換單元傳至外部設(shè)備。
圖1 車載計(jì)算機(jī)結(jié)構(gòu)框圖
車載計(jì)算機(jī)冗余模式可以考慮 TMR(三模冗余),通過表決器獲得正確結(jié)果。考慮到車載計(jì)算機(jī)應(yīng)用的通用性,CPU模塊宜選用ARM芯片。
冗余方式主要有雙模冗余、三模冗余、N模冗余等??紤]到實(shí)際運(yùn)用中的可靠性,無論是雙機(jī)一冷備一熱備還是雙機(jī)熱備,都比三模冗余表決系統(tǒng)的可靠性高。通過分析,三模冗余表決系統(tǒng)的最大優(yōu)點(diǎn)在于故障判斷和切換時(shí)輸出連續(xù)不中斷,信息數(shù)據(jù)可以持續(xù)輸出。雙模冗余采用比較方式,三模冗余采用多數(shù)表決(3取2)。一旦系統(tǒng)發(fā)生錯(cuò)誤,雙模冗余不能對(duì)故障進(jìn)行判斷和定位,不能保證輸出結(jié)果正確性。三模冗余可確保一個(gè)單元發(fā)生錯(cuò)誤時(shí),整個(gè)系統(tǒng)仍能保證有正確的數(shù)據(jù)輸出,并準(zhǔn)確地判斷和定位發(fā)生故障的單元。通過容錯(cuò)管理軟件控制,可根據(jù)實(shí)際需要將三模冗余降到雙模冗余,再根據(jù)需要從雙模冗余降到單模運(yùn)行,從而確保了在一個(gè)CPU模塊發(fā)生故障時(shí)整個(gè)系統(tǒng)依舊可以正常工作、兩個(gè)CPU模塊發(fā)生故障仍可以確保系統(tǒng)安全運(yùn)行。整個(gè)系統(tǒng)根據(jù)“故障-安全-故障-運(yùn)行”的工作思想進(jìn)行設(shè)計(jì)系統(tǒng)的冗余工作方式。
表決器設(shè)計(jì)時(shí)主要包括輸入和輸出兩部分。輸入接口設(shè)計(jì)成FIFO結(jié)構(gòu),每個(gè)CPU模塊分別將經(jīng)過處理的數(shù)據(jù)輸入FPGA多數(shù)表決。表決器可用FPGA邏輯單元構(gòu)成,根據(jù)表決結(jié)果,輸出一個(gè)統(tǒng)一開關(guān)控制信號(hào),分別輸至3個(gè)CPU模塊各自對(duì)應(yīng)的輸出控制單元。輸出控制單元根據(jù)控制信號(hào)進(jìn)行判斷,決定最終向外輸出的CPU模塊。每次僅有一個(gè)CPU模塊向外界設(shè)備輸出運(yùn)算結(jié)果。
這里采用FIFO,因?yàn)樗饶鼙WC信息交換傳輸?shù)母咚俾?又可以有效地避免芯片系統(tǒng)布線。特別在FPGA中,可以方便地構(gòu)造多個(gè)FIFO及其邏輯組合。雙口RAM結(jié)構(gòu)存儲(chǔ)器需要系統(tǒng)總線提供足夠多的數(shù)據(jù)線、地址線、命令線和控制線,也存在占用接點(diǎn)過多的問題。在研究與設(shè)計(jì)中,應(yīng)綜合比較考慮兩者特點(diǎn)。
由于輸出部分表決判斷3個(gè)CPU模塊的運(yùn)行結(jié)果,理論上3個(gè)完全相同的CPU模塊加載運(yùn)行相同的程序,當(dāng)同一個(gè)信號(hào)數(shù)據(jù)輸入時(shí),應(yīng)當(dāng)輸出相同的運(yùn)算結(jié)果。假設(shè)單獨(dú)一塊CPU模塊因工作環(huán)境干擾導(dǎo)致死機(jī)或程序跑飛,必有一個(gè)錯(cuò)誤的信號(hào)或數(shù)據(jù)輸出。通過3取2表決三模冗余,可以屏蔽錯(cuò)誤信號(hào),得到一個(gè)正確的結(jié)果。表決器通過表決,將正確運(yùn)行的CPU接通對(duì)外設(shè)備輸出,并可以根據(jù)各個(gè)CPU發(fā)生錯(cuò)誤的累計(jì)次數(shù),將故障的CPU切斷脫離工作狀態(tài),重新上電恢復(fù)工作。
由于表決器是單獨(dú)電子設(shè)備,因而決定了整個(gè)系統(tǒng)的可靠性,設(shè)計(jì)時(shí)對(duì)表決設(shè)備進(jìn)行旁路設(shè)計(jì)。表決器本身可以自檢。如果表決器出現(xiàn)短暫輸出錯(cuò)誤(如不能同時(shí)選擇2個(gè)CPU模塊或者3個(gè)CPU模塊對(duì)外輸出),或是表決器無法正常實(shí)現(xiàn)表決工作,則通過默認(rèn)配置,將之前系統(tǒng)連續(xù)正確工作的CPU作為對(duì)外輸出的單元構(gòu)成單模系統(tǒng),或依次對(duì)外單獨(dú)工作;也可以考慮將表決器進(jìn)行三模冗余,提高整個(gè)系統(tǒng)的可靠性。
在三模冗余系統(tǒng)中,時(shí)鐘同步信號(hào)直接影響整個(gè)系統(tǒng)效率。不同步的時(shí)鐘信號(hào)直接導(dǎo)致各個(gè)CPU處理數(shù)據(jù)結(jié)果也不同步,表決器得到錯(cuò)誤數(shù)據(jù),冗余系統(tǒng)沒有意義。工程應(yīng)用中通過軟件同步以及硬件同步來實(shí)現(xiàn)時(shí)鐘同步的功能。軟件同步通常應(yīng)用于通信系統(tǒng)。事實(shí)上,由于芯片間批量數(shù)據(jù)高速通信,各個(gè)模塊之間大量數(shù)據(jù)交換,軟件同步大多較難滿足要求,因此采用硬件同步為滿足實(shí)時(shí)性要求。硬件同步方法可以達(dá)到納秒級(jí)的同步精度,這是軟件通信同步無法達(dá)到的精度。工程中常用的硬件同步方法如下:
(1)公共時(shí)鐘信號(hào)——所有CPU模塊采用同一時(shí)鐘信號(hào)。此方法簡(jiǎn)單并且可以保證時(shí)鐘信號(hào)同步精確度。由于采用了同一時(shí)鐘信號(hào),公共時(shí)鐘發(fā)生故障后很容易引起全部時(shí)鐘信號(hào)錯(cuò)誤。
(2)精確獨(dú)立時(shí)鐘信號(hào)——各CPU模塊采用獨(dú)立時(shí)鐘,理論上保證足夠精確就可保證各個(gè)時(shí)鐘信號(hào)同步。實(shí)際上,各個(gè)獨(dú)立的時(shí)鐘信號(hào)在輸出頻率之間一定會(huì)存在細(xì)微差異;當(dāng)差異逐漸積累,最終導(dǎo)致時(shí)鐘不同步,表決器無法正常工作。
(3)互反饋獨(dú)立時(shí)鐘信號(hào)——各CPU模塊采用獨(dú)立時(shí)鐘信號(hào),各時(shí)鐘之間互反饋調(diào)節(jié)達(dá)到同步功能。此方法硬件設(shè)計(jì)復(fù)雜,但可以提供長(zhǎng)時(shí)間外部沒有參考的冗余容錯(cuò)時(shí)鐘信號(hào)。
3個(gè)CPU模塊采用各自獨(dú)立時(shí)鐘,但用同一個(gè)時(shí)鐘(同步時(shí)鐘)基準(zhǔn)進(jìn)行同步控制。為提高同步時(shí)鐘可靠性,由CPU模塊上的時(shí)鐘對(duì)同步時(shí)鐘進(jìn)行檢測(cè)。如果檢測(cè)時(shí)鐘正常則采用同步時(shí)鐘,如果檢測(cè)發(fā)現(xiàn)時(shí)鐘錯(cuò)誤則切換到CPU時(shí)鐘。此時(shí),3個(gè)CPU單元如果無法實(shí)現(xiàn)同步,必須降模運(yùn)行,其余作為冷備運(yùn)行。
圖2是同步時(shí)鐘檢測(cè)電路的設(shè)計(jì)。該部分選擇FPGA來實(shí)現(xiàn)硬件電路。作為一種集成了眾多的邏輯單元芯片,FPGA內(nèi)部可以根據(jù)實(shí)際需要對(duì)邏輯門進(jìn)行軟件分配,構(gòu)造實(shí)際需要的各種門電路,并且體積小、靈活性高、處理速度快。關(guān)鍵在于與傳統(tǒng)分立元件不同有較高的可靠性。
圖2 同步時(shí)鐘檢測(cè)電路
傳統(tǒng)列車微機(jī)控制系統(tǒng)中設(shè)計(jì)編寫的應(yīng)用軟件,往往是針對(duì)不同的微機(jī)平臺(tái)和功能。這樣設(shè)計(jì)的好處在于應(yīng)用軟件具有靈活的操作性適用性,缺點(diǎn)是整個(gè)應(yīng)用程序的可靠性完全依賴設(shè)計(jì)人員的專業(yè)水平。微機(jī)以及程序在工作時(shí)發(fā)生死機(jī)現(xiàn)象以及程序跑飛的情況與應(yīng)用軟件直接相關(guān)。
通過在列車車載計(jì)算機(jī)CPU模塊芯片單元內(nèi)移植VxWorks實(shí)時(shí)操作系統(tǒng),根據(jù)不同的應(yīng)用場(chǎng)合,編寫移植相對(duì)應(yīng)的應(yīng)用程序。VxWorks是美國(guó)WIND RIVER風(fēng)河公司推出的操作系統(tǒng),在眾多對(duì)于強(qiáng)調(diào)安全的工程項(xiàng)目,諸如衛(wèi)星系統(tǒng),戰(zhàn)斗機(jī)控制系統(tǒng)等有著廣泛的工程實(shí)際應(yīng)用。列車控制系統(tǒng)上移植與應(yīng)用實(shí)時(shí)操作系統(tǒng)是微機(jī)控制系統(tǒng)發(fā)展的方向與趨勢(shì)。其原因是:首先,整個(gè)系統(tǒng)的可靠性由實(shí)時(shí)操作系統(tǒng)保證,避免了單獨(dú)片上程序運(yùn)行中死機(jī)問題;其次,可以根據(jù)車載計(jì)算機(jī)在不同場(chǎng)合的需要,裁剪相應(yīng)的系統(tǒng)操作部件;最后,VxWorks在列車信號(hào)控制系統(tǒng)等其他方面已經(jīng)有較廣泛的應(yīng)用。
整個(gè)車載計(jì)算機(jī)CPU模塊VxWorks系統(tǒng)啟動(dòng)流程如圖3所示。
圖3 VxWorks系統(tǒng)啟動(dòng)流程
VxWorks系統(tǒng)啟動(dòng)分為兩個(gè)階段。
第一階段流程如圖3右側(cè):首先執(zhí)行 RomInit(),主要完成的任務(wù)包括禁止中斷、保存啟動(dòng)類型(冷/熱啟動(dòng))和硬件相關(guān)初始化;然后調(diào)用RomStart(),主要完成將BootRom的數(shù)據(jù)段和代碼段從ROM復(fù)制到RAM中,并清空內(nèi)存;隨后調(diào)用UsrInit(),執(zhí)行系統(tǒng)初始化程序;最后執(zhí)行SysHwInit()和kernelInit(),初始化系統(tǒng)硬件并啟動(dòng)內(nèi)核,清空緩存。至此,BootRom階段啟動(dòng)結(jié)束。
第二階段流程如圖3左側(cè)圖示進(jìn)行VxWorks系統(tǒng)映像:通過第一階段加載的BootRom引導(dǎo)映像,將VxWorks映像裝入到RAM中,跳轉(zhuǎn)到VxWorks映射入口;調(diào)用SysInit(),完成包括鎖住中斷、禁用緩沖、初始化處理器得到一個(gè)缺省值、指明啟動(dòng)類型等任務(wù);系統(tǒng)再依次調(diào)用 UsrInit(),SysHwInit()和KernelInit();硬件和內(nèi)核完成初始化后,系統(tǒng)執(zhí)行UsrRoot()。該程序主要完成初始化I/O操作系統(tǒng)、安裝設(shè)備驅(qū)動(dòng)程序、創(chuàng)建設(shè)備等任務(wù)。最后啟動(dòng)應(yīng)用程序。車載計(jì)算機(jī)的設(shè)備驅(qū)動(dòng)特定,并不需要?jiǎng)?chuàng)建其他設(shè)備,所以這些步驟在UsrRoot()函數(shù)中能完成,并最后啟動(dòng)應(yīng)用程序[3]。
上述采用BootRom+VxWorks的啟動(dòng)方式多用于車載計(jì)算機(jī)研究設(shè)計(jì)以及調(diào)試階段,程序映像即可存放在硬盤中,也可通過網(wǎng)絡(luò)加載。采用這種啟動(dòng)方式的優(yōu)點(diǎn)是適應(yīng)硬件、方便調(diào)試和現(xiàn)場(chǎng)升級(jí),并且由于設(shè)計(jì)了BootRom,整個(gè)設(shè)計(jì)也考慮到CPU模塊的兼容性。通過研究與移植實(shí)時(shí)操作系統(tǒng),可提高車載計(jì)算機(jī)可靠性與安全性。
近年來越來越重視干線運(yùn)輸及城市軌道交通中列車車輛控制系統(tǒng)可靠性及安全性的研究。車載計(jì)算機(jī)作為車輛微機(jī)控制系統(tǒng)中的重要環(huán)節(jié),其自身安全性及可靠性至關(guān)重要。本文從硬件和軟件2個(gè)方向,介紹了一種車載計(jì)算機(jī)的高可靠性研究及設(shè)計(jì)方案,討論了一些主要問題,探討冗余容錯(cuò)的硬件實(shí)現(xiàn)技術(shù)方法以及軟件系統(tǒng)特點(diǎn)。工程人員在研究設(shè)計(jì)列車車輛控制系統(tǒng)時(shí),始終需要把安全放在重要位置,以確保車輛控制系統(tǒng)穩(wěn)定運(yùn)行。
[1] 唐濤,郜春海,張方,等.高速鐵路列車運(yùn)行控制系統(tǒng)車載設(shè)備安全性設(shè)計(jì)[J].北方交通大學(xué)學(xué)報(bào),1999,23(5):83.
[2] 張利芬,袁普及.嵌入式冗余計(jì)算機(jī)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2009,35(2):230.
[3] 李小康,高榮芳,陳江.VxWorks啟動(dòng)過程解析[J].中國(guó)科技信息,2008(21):94.