張 利 張本宏 王躍飛 刁新超 劉征宇
合肥工業(yè)大學(xué)安全關(guān)鍵工業(yè)測(cè)控技術(shù)教育部工程研究中心,合肥,230009
F1exRay總線是新一代汽車內(nèi)部網(wǎng)絡(luò)通信協(xié)議,它為車內(nèi)控制系統(tǒng)提供所需的速度和可靠性。F1exRay與CAN、LIN等已成為現(xiàn)代汽車網(wǎng)絡(luò)總線的關(guān)鍵技術(shù),它們根據(jù)傳輸帶寬和價(jià)格比的要求被應(yīng)用在汽車不同的領(lǐng)域,相互補(bǔ)充、相互支撐,組合成多種總線混合的汽車網(wǎng)絡(luò)[1-2]。
FlexRay總線系統(tǒng)將事件觸發(fā)和時(shí)間觸發(fā)兩種方式相結(jié)合,具有高速可確定性和故障容錯(cuò)等特點(diǎn)。隨著FlexRay重要性的日益顯現(xiàn),對(duì)其研究也越來(lái)越多,然而對(duì)FlexRay網(wǎng)絡(luò)帶寬利用率的研究很少。文獻(xiàn)[3]分析了通信周期中靜態(tài)部分和動(dòng)態(tài)部分的時(shí)間特性,計(jì)算了消息和任務(wù)在最壞情況下的響應(yīng)時(shí)間,但沒(méi)有進(jìn)行時(shí)序性能驗(yàn)證。文獻(xiàn)[4]計(jì)算了FlexRay消息幀的傳輸時(shí)間,在考慮有效FlexRay幀長(zhǎng)度情況下,分析靜態(tài)部分的網(wǎng)絡(luò)帶寬丟失率,進(jìn)一步得到了靜態(tài)部分的網(wǎng)絡(luò)利用率計(jì)算公式,但沒(méi)有考慮FlexRay動(dòng)態(tài)部分消息傳輸時(shí)間。文獻(xiàn)[5]提出一種消息的調(diào)度算法來(lái)減小總線占用率,但總線占用率計(jì)算方法中沒(méi)有考慮動(dòng)態(tài)消息的總線占用率。
FlexRay消息幀[6-7]由幀頭、有效數(shù)據(jù)和幀尾三部分組成。FlexRay幀格式如圖1所示。幀頭部分共由5個(gè)字節(jié)組成(共40位),包括保留位、有效數(shù)據(jù)指示位、空幀指示位、同步幀指示位、啟動(dòng)幀指示位、幀ID、有效數(shù)據(jù)長(zhǎng)度、頭部循環(huán)校驗(yàn)CRC和周期計(jì)數(shù)。有效數(shù)據(jù)部分可由0~254個(gè)字節(jié)組成。幀尾部分只含有單個(gè)的數(shù)據(jù)域,即一個(gè)24位的CRC。
FlexRay提供兩種媒體接入時(shí)序的選擇,一種是靜態(tài)的分時(shí)多址接入時(shí)序(TDMA),一種是動(dòng)態(tài)的基于最小時(shí)間片的柔性時(shí)分多址接入時(shí)序(FTDMA)[2,6]。在一個(gè)通信周期內(nèi),有4個(gè)時(shí)間等級(jí),從最低層到最高層分別是最小時(shí)間節(jié)拍層、最大時(shí)間節(jié)拍層、仲裁網(wǎng)格層和通信周期層[6-7],如圖2所示。
圖1 FlexRay幀格式
圖2 通信周期時(shí)間分層
最高層即通信周期層,由靜態(tài)段、動(dòng)態(tài)段、特征窗和網(wǎng)絡(luò)閑置時(shí)間四部分組成。靜態(tài)段由若干個(gè)長(zhǎng)度相等的靜態(tài)時(shí)間片(static slot)組成,采用的是TDMA方式;動(dòng)態(tài)段由若干個(gè)長(zhǎng)度相等的最小時(shí)間片(minislot)組成,采用的是基于最小時(shí)間片的FTDMA方式。靜態(tài)時(shí)間片和最小時(shí)間片均由若干個(gè)最大時(shí)間節(jié)拍(Macrotick,MT)組成,1個(gè)MT的時(shí)長(zhǎng)通常被配置為1~6μs,本文用gdMacrotick表示1個(gè)MT的時(shí)長(zhǎng)。
時(shí)間片長(zhǎng)度是指消息傳輸使用的時(shí)間長(zhǎng)度,這里用MT的數(shù)量表示。消息在傳輸過(guò)程中被分成獨(dú)立的字節(jié)進(jìn)行傳輸,為保證消息的正常傳輸,還需使用更多的空間,包括傳輸起始序列(3~15位)、幀起始序列(1位)、字節(jié)起始序列(2位)、幀結(jié)束序列(2位)、通信空閑分隔符(11位)和幀前與幀尾的觸發(fā)點(diǎn)偏移量。FlexRay的傳輸序列如圖3所示。
如果消息幀在動(dòng)態(tài)段進(jìn)行傳輸,則還要在幀結(jié)束序列后附加動(dòng)態(tài)尾部序列。動(dòng)態(tài)尾部序列時(shí)間值是變化的,最小值為2gdBit(gdBit指?jìng)鬏?位所需的時(shí)間)。
圖3 FlexRay幀物理層傳輸規(guī)則
當(dāng)消息i放在靜態(tài)段傳輸時(shí),假設(shè)其長(zhǎng)度為k個(gè)字節(jié),則傳輸該消息所需的靜態(tài)時(shí)間片長(zhǎng)度Ti(單位為MT的個(gè)數(shù))為
其中,29為15位傳輸起始序列、1位幀起始序列、11位通道空閑分隔符和2位幀結(jié)束序列的位數(shù)之和;10為字節(jié)前的2位字節(jié)起始序列與字節(jié)的位數(shù)之和;TAPO1為靜態(tài)段觸發(fā)點(diǎn)偏移量(gdAction-PointOffset)。由于靜態(tài)段的靜態(tài)時(shí)間片長(zhǎng)度由最長(zhǎng)的消息決定,因此靜態(tài)時(shí)間片長(zhǎng)度為所有時(shí)間片長(zhǎng)度的最大值,即
當(dāng)消息i放在動(dòng)態(tài)段傳輸時(shí),其最小時(shí)間片長(zhǎng)度Ti為
式中,TAPO2為最小時(shí)間片觸發(fā)點(diǎn)偏移量;2gdBit為動(dòng)態(tài)尾部序列時(shí)間。
假設(shè)系統(tǒng)中消息總數(shù)為N,其中有m條靜態(tài)消息和n條動(dòng)態(tài)消息,則總線占用率U計(jì)算公式為
式中,Tc為FlexRay總線的通信周期;fi為第i個(gè)消息的傳輸頻率;Tpi為i個(gè)消息的傳輸周期。
由式(4)可知,在幀數(shù)目、幀傳輸周期、幀長(zhǎng)度一定的情況下,F(xiàn)lexRay總線占用率由靜態(tài)時(shí)間片長(zhǎng)度、最小時(shí)間片長(zhǎng)度以及消息被分配到動(dòng)態(tài)段還是靜態(tài)段的分配方法決定。
在圖4a中,靜態(tài)時(shí)間片長(zhǎng)度由最長(zhǎng)的靜態(tài)消息決定,因此,F(xiàn)lexRay總線占用率為
式中,TM2為消息M2對(duì)應(yīng)的靜態(tài)時(shí)間片長(zhǎng)度。
由圖4a可以看出,靜態(tài)段傳輸?shù)南㈤L(zhǎng)度是變化的,但靜態(tài)段的靜態(tài)時(shí)間片長(zhǎng)度是相等的,由此導(dǎo)致總線占用率較大,帶寬利用率不是很高,特別是最長(zhǎng)靜態(tài)消息和最短靜態(tài)消息長(zhǎng)度差值很大的情況。本文提出一種消息分配規(guī)則,即將最長(zhǎng)的靜態(tài)消息分配到動(dòng)態(tài)段進(jìn)行傳輸,如圖4b所示,以降低總線占用率,提高帶寬利用率。
圖4 最長(zhǎng)靜態(tài)消息分配到動(dòng)態(tài)段
本算法以獲得最小總線占用率為目標(biāo),依據(jù)分配規(guī)則不斷重復(fù)運(yùn)行分配過(guò)程以獲得最小總線占用率。令Uk為k(k=0,1,…,N)個(gè)消息被分配到動(dòng)態(tài)段的總線占用率,則最小總線占用率可表示為
其中,總線占用率Uk的計(jì)算依據(jù)式(4),計(jì)算時(shí)需要同時(shí)考慮靜態(tài)消息和動(dòng)態(tài)消息的總線占用率。
該分配算法以式(4)、式(5)為基礎(chǔ),在計(jì)算最小總線占用率Umin時(shí),除了不考慮消息傳輸失敗及其處理的情況以外,還必須保證所有的FlexRay消息的傳輸時(shí)間都在最壞情況下的響應(yīng)時(shí)間之內(nèi)。
圖5為算法的流程圖[8-11]。FlexRay網(wǎng)絡(luò)參數(shù)值必須提前給出,參數(shù)包括系統(tǒng)配置信息,如節(jié)點(diǎn)參數(shù)、網(wǎng)絡(luò)帶寬和消息參數(shù)等。
圖5 算法規(guī)則流程圖
獲取輸入?yún)?shù)值后進(jìn)行網(wǎng)絡(luò)初始化配置,該過(guò)程包括消息分配與設(shè)定及計(jì)算時(shí)序值和占用率。消息分配包括將FlexRay消息分配到節(jié)點(diǎn)和根據(jù)性質(zhì)不同分配到靜態(tài)段或者動(dòng)態(tài)段。通常情況下,周期發(fā)送的消息分配到靜態(tài)段,隨機(jī)發(fā)生的消息分配到動(dòng)態(tài)段。在運(yùn)行分配規(guī)則過(guò)程中,當(dāng)消息重新分配后,需要重新計(jì)算靜態(tài)段中靜態(tài)時(shí)間片大小與數(shù)目,同時(shí),需要依照所給出的消息優(yōu)先級(jí)次序重新設(shè)定消息傳輸次序,以保證消息傳輸?shù)膶?shí)時(shí)性。時(shí)序值是指消息實(shí)際傳輸時(shí)間與所規(guī)定傳輸時(shí)間的比較值。通過(guò)時(shí)序值判斷消息是否在響應(yīng)時(shí)間內(nèi)傳輸完,若所有消息在最壞情況下的響應(yīng)時(shí)間內(nèi)傳送,則時(shí)序值為1,否則為0。
在進(jìn)行消息分配時(shí),必須保證每個(gè)消息在截止時(shí)間前傳輸完畢。當(dāng)分配方法改變時(shí),如果U*<U(U和U*分別為分配方法改變前后的總線占用率),即總線占用率降低,則該消息將被分配到動(dòng)態(tài)段;否則該消息被分配到靜態(tài)段。在初始化網(wǎng)絡(luò)配置完成后,分配過(guò)程被重復(fù)執(zhí)行以得到總線占用率的最小值,該分配過(guò)程在沒(méi)有靜態(tài)消息被分配到動(dòng)態(tài)段時(shí)結(jié)束。
本文引用文獻(xiàn)[5]中所用的美國(guó)汽車工程學(xué)會(huì)(SAE)的基準(zhǔn)數(shù)據(jù)(表1)對(duì)消息分配算法進(jìn)行驗(yàn)證。由于不同傳輸速率下,傳輸一幀要求的時(shí)間不一樣,而在gdMacrotick值一定的情況下,所需MT數(shù)目也不同,為了表述方便,表1中將幀的長(zhǎng)度用不同傳輸速率下所需時(shí)間片長(zhǎng)度即MT的數(shù)目來(lái)表示。進(jìn)行驗(yàn)證的FlexRay通信參數(shù)在表2中定義。
表1 FlexRay消息幀
表2 FlexRay通信參數(shù)
由表1可知,為了保證所有的消息在截止時(shí)間前傳輸完畢,F(xiàn)lexRay通信周期不能超過(guò)5ms。如果將傳輸周期為1000ms的幀放在靜態(tài)段中傳輸,則200個(gè)通信周期才能傳輸一次,這不符合FlexRay協(xié)議中通信周期計(jì)數(shù)器不能超過(guò)63的規(guī)定。因此,消息幀16、17和18首先被分配在動(dòng)態(tài)段中傳輸。
由表1可看出,消息12所需的時(shí)間片最多,當(dāng)傳輸速率為5Mbit/s時(shí),初始階段靜態(tài)時(shí)間片長(zhǎng)度為60MT。在算法的初始階段,靜態(tài)時(shí)間片長(zhǎng)度由最長(zhǎng)消息12所需的MT數(shù)目決定。根據(jù)分配規(guī)則,靜態(tài)段最長(zhǎng)的消息幀被分配到動(dòng)態(tài)段傳輸。表3顯示了5Mbit/s速率下靜態(tài)段參數(shù)值的變化及總線占用率的變化。在分配算法的初始化階段,消息16、17、18被分配到動(dòng)態(tài)段,其他消息被分配到靜態(tài)段。通過(guò)運(yùn)行分配算法,最終8個(gè)消息被分配到動(dòng)態(tài)段,此時(shí),靜態(tài)段時(shí)間片長(zhǎng)度為40MT,總線占用率減小到最小值4.8176%。
表3 參數(shù)變化及網(wǎng)絡(luò)利用率(傳輸速率5Mbit/s)
不同傳輸速率下,使用該消息分配算法后得到的總線占用率數(shù)據(jù)如表4所示,由表4可知,傳輸速率越低,該消息分配算法使總線占用率下降得越多,網(wǎng)絡(luò)利用率越高。
表4 網(wǎng)絡(luò)利用率前后對(duì)照表
本文基于FlexRay幀格式和物理層傳輸規(guī)則分析FlexRay消息幀的長(zhǎng)度,得到消息長(zhǎng)度計(jì)算方法。通過(guò)對(duì)FlexRay消息幀在靜態(tài)段和動(dòng)態(tài)段傳輸時(shí)間的分析,計(jì)算總線帶寬利用率,最終得到總線占用率的計(jì)算公式。實(shí)例驗(yàn)證表明,將靜態(tài)段最長(zhǎng)的消息幀放在動(dòng)態(tài)段進(jìn)行傳輸,在不同傳輸速率下,總線占用率都得到了降低。下一步工作將對(duì)動(dòng)態(tài)段消息傳輸?shù)臅r(shí)間性能和調(diào)度規(guī)則進(jìn)行研究。
[1]王躍飛,王子涵,張利,等.基于改進(jìn)調(diào)度算法的新一代汽車總線及其網(wǎng)關(guān)[J].電子測(cè)量與儀器學(xué)報(bào),2011,25(10):289-295.
[2]顧嫣,張鳳登.FlexRay動(dòng)態(tài)段優(yōu)化調(diào)度算法研究[J].自動(dòng)化儀表,2009,30(12):25-29.
[3]Kang Minkoo,Park Kiejin,Kim Bongjun.Determining the Size of a Static Segment and Analyzing the Utilization of In-Vehicle FlexRay Network[C]//Third International Conference on Convergence and Hybrid Information Technology.Daejeon,Korea,2008:50-53.
[4]Kang Minkoo,Park Kiejin,Kim Bongjun.A Static Message Scheduling Algorithm for Reducing FlexRay Network Utilization[C]//IEEE International Symposium on Industrial Electronics.Lisbon,Portugal,2009:1287-1291.
[5]Matthias H,H?ss V,Müller-Glaser V.Physical Layer Extraction of FlexRay Configuration Parameters[C]//IEEE International Symposium on Rapid System Prototyping.Paris,2009:173-180.
[6]羅峰,陳智琦,劉矗,等.基于FlexRay的車載網(wǎng)絡(luò)系統(tǒng)開(kāi)發(fā)[J].電子測(cè)量與儀器學(xué)報(bào),2009,23(增刊):289-295.
[7]Schmidt K,Schmidt E G.Message Scheduling for the FlexRay Protocol:the Static Segment[J].IEEE Transactions on Vehicular Technology,2009,58(5)2170-2179.
[8]趙歡,熊振華,丁漢.基于IEEE1394的運(yùn)動(dòng)控制系統(tǒng)總線協(xié)議與同步機(jī)制研究[J].中國(guó)機(jī)械工程,2009,20(23):2850-2855.
[9]張利,李縣軍,王躍飛.汽車CAN網(wǎng)絡(luò)時(shí)鐘同步方法研究[J].電子測(cè)量與儀器學(xué)報(bào),2011,25(2):147-152.
[10]張利,王躍飛,嚴(yán)剛,等.混合動(dòng)力汽車CAN網(wǎng)絡(luò)優(yōu)先級(jí)的動(dòng)態(tài)分配方法[J].農(nóng)業(yè)機(jī)械學(xué)報(bào),2011,42(5):22-26.
[11]李傳斌,嚴(yán)剛,劉夢(mèng)陽(yáng).FlexRay-CAN網(wǎng)關(guān)中的多隊(duì)列消息處理方法[J].合肥工業(yè)大學(xué)學(xué)報(bào),2011,34(1):28-33.