梅熹文,康雋睿,武小舟,劉峻池,楊 娜
(西安現(xiàn)代控制技術(shù)研究所, 西安 710065)
目前,以“事件觸發(fā)”機(jī)制為基礎(chǔ)的CAN總線的最大通訊速率為1 Mbit/s,隨著武器系統(tǒng)對通訊可靠性與實時性要求愈發(fā)嚴(yán)格,CAN總線已逐漸不能滿足要求。因此需要尋求一種新的總線技術(shù)來解決武器系統(tǒng)發(fā)射控制設(shè)備間實時響應(yīng)的瓶頸問題,而基于時間觸發(fā)的FlexRay總線技術(shù)作為近年來的一種具有高實時、高容錯、通訊速率可達(dá)到10 Mbit/s的新型總線技術(shù)已經(jīng)廣泛運(yùn)用在高端汽車領(lǐng)域,但是尚未在武器系統(tǒng)中進(jìn)行實際應(yīng)用。文中提供了一種將FlexRay總線網(wǎng)絡(luò)應(yīng)用在導(dǎo)彈發(fā)射控制系統(tǒng)中的設(shè)計,并進(jìn)行了測試驗證,對于FlexRay總線在武器系統(tǒng)領(lǐng)域的研究與推廣具有實用價值。
FlexRay是近年發(fā)展出的一種時間觸發(fā)類型的新型車載網(wǎng)絡(luò)技術(shù)。作為一種高實時性總線,FlexRay總線將通訊時間劃分為等長的通訊周期,每個通訊周期中數(shù)據(jù)都擁有獨立的固定位置,其中靜態(tài)段采用時分多路的信息傳輸方式,動態(tài)段采用柔性時分多路復(fù)用方式[1]。靜態(tài)段被劃分為多個相同長度的靜態(tài)時隙,時隙被分配給網(wǎng)絡(luò)中各節(jié)點,當(dāng)所分配的時隙到來時該節(jié)點才能對數(shù)據(jù)進(jìn)行收發(fā)。動態(tài)段則更加靈活的支持事件觸發(fā)。文中主要針對靜態(tài)段進(jìn)行相關(guān)研究。
FlexRay總線的特點主要有以下三個方面[2]:
a)通訊帶寬。擁有雙通訊通道,單通道帶寬可達(dá)到10 Mbit/s,相較于CAN總線有很大的提升。
b)確定性。以循環(huán)通訊為基礎(chǔ),使用時分多路技術(shù),每個通訊周期中數(shù)據(jù)都擁有獨立的固定位置,以此保證收發(fā)的時效性。
c)容錯性。擁有確定性的分布式故障容錯機(jī)制,以此保證多個級別的容錯。
基于以上特點,使FlexRay總線網(wǎng)絡(luò)擁有了很強(qiáng)的實時性以及可靠性,而這些正是衡量武器系統(tǒng)性能的重要指標(biāo)。
實現(xiàn)FlexRay總線網(wǎng)絡(luò),第一步應(yīng)對每個節(jié)點的硬件結(jié)構(gòu)、設(shè)備驅(qū)動以及上層應(yīng)用進(jìn)行設(shè)計,隨后根據(jù)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)搭建網(wǎng)絡(luò)通訊平臺,最后進(jìn)行多節(jié)點測試,驗證是否滿足設(shè)計性能指標(biāo)。
導(dǎo)彈發(fā)射控制系統(tǒng)中一個FlexRay網(wǎng)絡(luò)節(jié)點采用微處理器、通訊控制器以及總線收發(fā)器組合搭建的結(jié)構(gòu)模式[3],節(jié)點架構(gòu)如圖1所示。
圖1 FlexRay節(jié)點架構(gòu)圖
微處理器。主要實現(xiàn)數(shù)據(jù)分析處理,是整個節(jié)點的核心單元。本次設(shè)計采用PowerPC P2020處理器為處理核心。
通訊控制器。主要實現(xiàn)通訊控制功能。采用飛思卡爾公司支持FlexRay 2.1A協(xié)議的MFR4310芯片[4]。
總線收發(fā)器。用于實現(xiàn)FlexRay信號的轉(zhuǎn)換。采用恩智普公司的TJA1080A芯片。
本研究中,FlexRay波特率為10 Mbit/s,通訊周期10 ms,劃分為80個時隙,每個時隙有效長度為100 B。
基于VxWorks操作系統(tǒng)的FlexRay節(jié)點軟件包含底層驅(qū)動和上層應(yīng)用兩個部分。上層應(yīng)用程序主要實現(xiàn)系統(tǒng)流程控制,通過調(diào)用驅(qū)動接口函數(shù)實現(xiàn)FlexRay相關(guān)參數(shù)配置和數(shù)據(jù)讀寫。驅(qū)動程序作為上層應(yīng)用與芯片的橋梁,通過對MFR4310芯片通訊控制寄存器的配置,使總線滿足工作要求,并提供數(shù)據(jù)讀寫緩存。
2.2.1 驅(qū)動層設(shè)計
VxWorks操作系統(tǒng)針對驅(qū)動設(shè)計擁有一套通用架構(gòu),主要由以下部分組成[5]:
a)系統(tǒng)設(shè)備表。用于保存設(shè)備的寄存器基地址、設(shè)備狀態(tài)等重要信息。
b)系統(tǒng)驅(qū)動表。用于保存該設(shè)備驅(qū)動對應(yīng)的函數(shù)指針。
c)系統(tǒng)文件描述符表。用于當(dāng)設(shè)備被打開后,維護(hù)其相關(guān)文件信息。
針對MFR4310的特點,遵照以上驅(qū)動設(shè)計的標(biāo)準(zhǔn)架構(gòu),設(shè)計VxWorks系統(tǒng)下MFR4310的驅(qū)動程序。
VxWorks設(shè)備驅(qū)動程序工作流程如圖2所示。
圖2 設(shè)備驅(qū)動程序工作流程
驅(qū)動程序主要包含硬件初始化和應(yīng)用層接口兩個部分:
a)硬件初始化。實現(xiàn)MFR4310有效控制的前提是對該設(shè)備進(jìn)行正確讀寫。首先通過修改系統(tǒng)文件sysLib.c的sysPhysMemDesc結(jié)構(gòu)體實現(xiàn)對內(nèi)存空間的配置,包括MFR4310的基地址、內(nèi)存空間大小、讀寫以及高速緩存特性等。其次通過修改OR和BR寄存器,將讀寫周期控制在130 ns左右,延長寫周期的數(shù)據(jù)保持時間,實現(xiàn)對讀寫時序和基地址的配置。隨后完成MFR4310復(fù)位以及掛接相關(guān)中斷服務(wù)。最后,將MFR4310設(shè)備及其驅(qū)動分別增添到系統(tǒng)設(shè)備表以及系統(tǒng)驅(qū)動表之中。
b)應(yīng)用層接口。經(jīng)過硬件初始化,實現(xiàn)了對底層函數(shù)的掛接、中斷初始化以及每個時隙具體信息的定義,隨后將設(shè)備驅(qū)動函數(shù)安裝在驅(qū)動表中,調(diào)用過程如圖3所示。
圖3 FlexRay驅(qū)動接口函數(shù)掛接結(jié)構(gòu)圖
當(dāng)應(yīng)用層調(diào)用write()函數(shù)執(zhí)行寫數(shù)據(jù)操作時,會通過設(shè)備文件描述符調(diào)用系統(tǒng)驅(qū)動表中的tyWrite()函數(shù),將數(shù)據(jù)寫入對應(yīng)的輸出緩存。隨后FlexRayStartup()函數(shù)啟動中斷輸出,最后由輸出的中斷服務(wù)程序?qū)⒆址l(fā)給指定的時隙。
當(dāng)指定時隙接收到其他節(jié)點數(shù)據(jù)時,執(zhí)行輸入中斷服務(wù)程序,讀入數(shù)據(jù)到對應(yīng)的緩沖區(qū),隨后回調(diào)函數(shù)tyIRd()會將數(shù)據(jù)讀入輸入緩沖區(qū)。應(yīng)用層調(diào)用read()函數(shù)執(zhí)行讀操作時,會通過設(shè)備文件描述符調(diào)用系統(tǒng)驅(qū)動表tyRead()函數(shù),將數(shù)據(jù)讀入用戶緩沖區(qū)。
2.2.2 應(yīng)用層設(shè)計
應(yīng)用層軟件由總線初始化和參數(shù)配置、啟動通訊、數(shù)據(jù)發(fā)送與接收幾個部分組成,程序執(zhí)行步驟如圖4所示。
圖4 FlexRay應(yīng)用層架構(gòu)圖
a)初始化和配置
開發(fā)板上電后,首先會對硬件環(huán)境初始化,滿足總線運(yùn)行環(huán)境。在Fr_config_type結(jié)構(gòu)體中定義FlexRay總線通訊速率、時隙數(shù)量以及一個周期內(nèi)的時間分布等[6]。主要控制參數(shù)如表1所示。
表1 FlexRay主要控制參數(shù)表
使用Fr_mw_config()函數(shù)將定義好的結(jié)構(gòu)體傳入底層驅(qū)動,并寫入相關(guān)控制寄存器,對緩沖區(qū)及FIFO進(jìn)行初始化。
b)啟動通訊
初始化完畢后,總線控制器會向各節(jié)點發(fā)出控制命令,進(jìn)入啟動程序。調(diào)用Fr_mw_start()函數(shù),使節(jié)點加入到通訊簇中。
c)數(shù)據(jù)傳輸和接收
定義Fr_mw_receive()函數(shù),傳入時隙號N以及接收緩沖區(qū)的大小,其中緩沖區(qū)大小應(yīng)為靜態(tài)區(qū)時隙負(fù)載和動態(tài)區(qū)時隙負(fù)載長度中的較大值加上4 B后的整數(shù)倍[7]。將指定時隙接收的數(shù)據(jù)保存到應(yīng)用緩沖區(qū),創(chuàng)建時隙N數(shù)據(jù)接收任務(wù),等待其他節(jié)點發(fā)送的數(shù)據(jù)信息。
定義Fr_mw_transmit()函數(shù),傳入?yún)?shù)時隙號N以及更新數(shù)據(jù)的字節(jié)數(shù),大小應(yīng)該是靜態(tài)區(qū)時隙負(fù)載和動態(tài)區(qū)時隙負(fù)載長度中較大值的整數(shù)倍,創(chuàng)建時隙N數(shù)據(jù)發(fā)送任務(wù),定時向其他節(jié)點的接收時隙發(fā)送數(shù)據(jù)。
目前一類基于CAN總線的導(dǎo)彈發(fā)射控制系統(tǒng)主要由操顯終端、任務(wù)管理單元、指揮終端、導(dǎo)航系統(tǒng)、衛(wèi)星定位儀等5個設(shè)備組成,文中使用FlexRay替代CAN總線,構(gòu)建了圖5所示的通訊網(wǎng)絡(luò)架構(gòu),其中每個設(shè)備各自作為一個FlexRay節(jié)點。
圖5 基于FlexRay總線網(wǎng)絡(luò)通訊架構(gòu)圖
總線傳輸信號的最壞響應(yīng)時間(worst case response time,WRCT)是一個重要的網(wǎng)絡(luò)性能參數(shù),通過得到FlexRay總線的最壞響應(yīng)時間,可以反映出武器系統(tǒng)在使用FlexRay總線后所造成的數(shù)據(jù)傳輸延時。
FlexRay總線一個通訊周期的時間分布結(jié)構(gòu)如圖6所示。其中宏節(jié)拍MT為通訊周期的基本單位,由多個微節(jié)拍μT構(gòu)成,各節(jié)點的晶振頻率決定了μT值的大小[8]。
通過配置參數(shù),定義一個靜態(tài)時隙的持續(xù)時間為2 MT,其中一個MT的持續(xù)時間為1 μs,激活點偏移量為1 MT/幀[9]。
FlexRay總線的WRCT分別為靜態(tài)幀和動態(tài)幀的WRCT之和[10],假設(shè)靜態(tài)幀和動態(tài)幀的WCRT分別為WSTi和WDYNi,靜態(tài)幀和動態(tài)幀在FlexRay總線周期上最壞響應(yīng)時間的成本函數(shù)可以表示為:
(1)
式中:ns為靜態(tài)幀總數(shù)目;nd為動態(tài)幀總數(shù)目。靜態(tài)幀最壞響應(yīng)時間的成本函數(shù)可由式(2)得到:
(2)
式中:CST、CDYN、CNIT分別為靜態(tài)段、動態(tài)段和網(wǎng)絡(luò)空閑時間段NIT的傳輸時長;Ci為第i幀的通訊時長,其中:
CST=STslot·ns
(3)
CDYN=MS·ndyn
(4)
本次設(shè)計假定CNIT網(wǎng)絡(luò)空閑時間為:
CNIT=200·MT
(5)
由式(2)~式(5)可以得到靜態(tài)幀的最壞響應(yīng)時間為:
WSTi=MS·ndyn+STslot·ns+200·MT+Ci
(6)
式中:STslot為靜態(tài)時隙長度;ns為所有靜態(tài)時隙數(shù)量;MS表示動態(tài)微時隙長度;ndyn為所有微時隙的總數(shù)目;MT為每個宏節(jié)拍中的字節(jié)數(shù)。
圖6 FlexRay總線時間分布結(jié)構(gòu)圖
由于本次設(shè)計FlexRay通訊周期僅在靜態(tài)時隙中負(fù)載數(shù)據(jù),因此由式(6)可知,隨著通訊周期不斷增加,靜態(tài)幀比特數(shù)線性變大,最壞響應(yīng)時間增加,最終接近10 ms通訊周期傳輸時長,滿足某武器系統(tǒng)數(shù)據(jù)傳輸延時小于20 ms要求。
根據(jù)2.3節(jié)闡述的網(wǎng)絡(luò)架構(gòu),搭建FlexRay總線測試環(huán)境如圖7所示。其中5個節(jié)點均采用文中設(shè)計的軟硬件架構(gòu),分別模擬發(fā)射控制系統(tǒng)中操顯終端、任務(wù)管理單元、指揮終端、導(dǎo)航裝置、衛(wèi)星定位儀,每個節(jié)點的AB通道通過雙絞線掛載在FlexRay總線上。使用Vector 公司的CANoe FlexRay軟件實時監(jiān)測FlexRay總線上各時隙數(shù)據(jù)收發(fā)以及總線工作狀態(tài)。
圖7 系統(tǒng)測試環(huán)境
本次測試僅使用FlexRay靜態(tài)段進(jìn)行通訊,波特率10 Mbit/s,通訊周期為10 ms,劃分為80個時隙,每個時隙長度為108 B,有效數(shù)據(jù)100 B,另包含5 B幀頭和3 B幀尾,每個時隙占108 μs,經(jīng)計算理想條件下傳輸1 bit數(shù)據(jù)需0.1 μs,根據(jù)某發(fā)射控制系統(tǒng)信息交互關(guān)系,定義一個周期內(nèi)各節(jié)點時隙分布如表2所示。
表2 節(jié)點時隙分布表
使用4.1節(jié)中的測試環(huán)境,通過FlexRay測試設(shè)備對數(shù)據(jù)收發(fā)過程中的丟幀、錯誤幀進(jìn)行監(jiān)測,測試結(jié)果如表3所示。
表3 誤碼率測試表
測試結(jié)果表明,FlexRay總線具有很低的誤碼率,因此有很高的可靠性。
在總線上掛接示波器,觀察總線波形如圖8、圖9所示。
圖8 發(fā)射控制系統(tǒng)FlexRay總線波形圖(整體)
由圖8分析可知,FlexRay總線周期間隔10 ms,符合設(shè)計要求。
圖9 發(fā)射控制系統(tǒng)FlexRay總線波形圖(局部)
由圖9分析可得,FlexRay總線系統(tǒng)每108 μs靜態(tài)時隙傳輸一幀數(shù)據(jù),數(shù)據(jù)段大小為100 B,接近理想情況下10 Mbit/s通訊速率要求。
針對導(dǎo)彈發(fā)射控制系統(tǒng)對實時性和可靠性的需求,開展了對新型車載網(wǎng)絡(luò)FlexRay的研究,通過設(shè)計并搭建基于FlexRay網(wǎng)絡(luò)的發(fā)射控制系統(tǒng),測試驗證了FlexRay總線能夠滿足武器系統(tǒng)的性能要求,為今后在導(dǎo)彈發(fā)射控制系統(tǒng)中用FlexRay替代CAN總線打下了理論基礎(chǔ)。當(dāng)前研究仍存在一定的不足,在后續(xù)研究中通過采用靜態(tài)段和動態(tài)段混合傳輸方式,總線性能還會有一定提升。