谷建偉 ,蔡云輝
(1.安全關鍵工業(yè)測控技術教育部工程研究中心,合肥 230009;2.合肥工業(yè)大學 機械與汽車工程學院,合肥230009)
FlexRay是繼CAN和LIN之后的最新研發(fā)的汽車總線,將會在未來數年內,引領整個汽車電子產品控制結構的發(fā)展方向[1]。目前,F(xiàn)lexRay聯(lián)盟推進了FlexRay的標準化,使之成為了新一代汽車內部網絡通訊協(xié)議,F(xiàn)lexRay總線具有傳輸速率高、硬實時、安全性和靈活性等特點。但FlexRay協(xié)議只規(guī)定了物理層協(xié)議和數據鏈路層協(xié)議,沒有制定網絡管理方面的標準。隨著FlexRay總線在汽車電控領域中越來越廣泛的應用,對適用于FlexRay總線的網絡管理策略的研究也變得愈加重要。
對于車載網絡管理而言,OSEK/VDX NM是通用的、公認的標準,因此各廠家在制定網絡管理規(guī)范時,應盡量遵循這個標準[2]。目前,國內外相關研究單位已經對OSEK/VDX NM規(guī)范的研究作了大量的工作。在國外,法國的電子工程學院、CEA、卡內基梅隆大學以及美國著名的嵌入式系統(tǒng)廠商WindRiver公司、Metroworks公司等都對OSEK標準進行了深入的研究[3-5]。在國內,清華大學、哈爾濱工業(yè)大學和同濟大學等高校均開展了對OSEK規(guī)范的學習與研究[6-9]。分析當前各大研究機構的研究成果可以知道,對OSEK網絡管理的研究主要是針對CAN網絡的,對于Flexray總線的網絡管理的研究幾乎處于初級階段,只有個別研究單位進行了零星的研究,如在文獻[10]中提出了基于OSEK的FlexRay總線網絡管理協(xié)議單元的定義,文獻[11]介紹了AutoSAR規(guī)范中FlexRay總線網絡管理的方法。本文分析了FlexRay總線協(xié)議和OSEK/VDX網絡管理的特點,提出了在FlexRay通信周期動態(tài)段中實現(xiàn)OSEK網絡管理的方案,并在自行設計的實驗平臺上進行了實驗,驗證了本方案的可行性。
FlexRay總線是一種高速串行通信網絡,具有高帶寬、支持雙通道、可靈活配置多種網絡拓撲結等特點。FlexRay的一個通信周期分為靜態(tài)段、動態(tài)段、標識窗和網絡空閑時間,其中,靜態(tài)段和動態(tài)段用來傳輸總線數據,即FlexRay報文。FlexRay的靜態(tài)段采用的TDMA方式,靜態(tài)段被劃分為若干個時間寬度相等的靜態(tài)時隙(Static Slot),每個時隙被分配給某個特定節(jié)點,在該時隙內,此節(jié)點唯一占有總線控制權,向總線發(fā)送數據,即使該節(jié)點此時沒有數據需要向總線上發(fā)送,它所占用的時隙也不會被其它節(jié)點所占用。靜態(tài)時隙的時間寬度以及節(jié)點訪問總線的順序在系統(tǒng)配置時被確定,系統(tǒng)運行中是固定的。與靜態(tài)段不同,動態(tài)段采用的是可伸縮時分多路(FTDMA)方式,節(jié)點訪問總線的順序是按優(yōu)先級確定的,但時隙長度是動態(tài)調整的,當節(jié)點沒有數據需要向總線發(fā)送時,經過一個微時隙(Minislot)后,總線控制權立即交給下級節(jié)點。FlexRay總線的靜態(tài)段是時間觸發(fā)方式,動態(tài)段本質上是事件觸發(fā)方式。時間觸發(fā)方式具有確定性,但實時性較差,而事件觸發(fā)方式的實時性較好,但確定性差。
OSEK網絡管理可以監(jiān)控網絡中各節(jié)點的狀態(tài),并使網絡中的節(jié)點能夠協(xié)商進入睡眠狀態(tài)。OSEK網絡管理提供兩種可供選擇的實現(xiàn)機制:直接網絡管理和間接網絡管理。直接網絡管理是使用邏輯環(huán)并通過主動廣播專門的網絡管理消息來實現(xiàn)的。在直接網絡管理中,節(jié)點進行復雜的狀態(tài)轉換,并組成邏輯環(huán);通過在邏輯環(huán)中發(fā)送網絡管理消息來主動監(jiān)控和報告網絡中其他節(jié)點的狀態(tài),使得每個節(jié)點都能在一定的時間內獲得整個網絡的狀態(tài)消息。
對于直接網絡管理,首先是要建立邏輯環(huán)。邏輯環(huán)的通信獨立于網絡的物理結構,每個節(jié)點都具有一個自己的邏輯后繼節(jié)點。當邏輯環(huán)穩(wěn)定后,每個節(jié)點依次用網絡管理信息報告自己的當前網絡狀態(tài)信息,并接收其他節(jié)點的網絡管理信息,從而監(jiān)控它們的狀態(tài)。OSEK網絡管理把直接網絡管理信息定義為網絡管理協(xié)議數據單元 (Network Management Protocol Data Unit,NMPDU)。 NMPDU 的格式見表 1。

表1 NMPDU的格式
表1中,地址域包含源節(jié)點地址和目標節(jié)點地址。控制域包含消息類型的信息,即Ring消息(正常工作的邏輯環(huán)消息)、Alive消息 (Alive消息用于表明加入了新節(jié)點)和LimpHome消息(功能異常的節(jié)點將周期性地傳輸LimpHome消息)。數據域是可選的,可根據具體情況自行定義。
通過研究OSEK網絡管理規(guī)范和FlexRay通信周期中靜態(tài)段和動態(tài)段的特點,可知OSEK網絡管理雖然沒有指定具體的總線類型,但是其特性決定了其只適合于事件觸發(fā)方式的總線協(xié)議,如CAN總線。FlexRay通信周期動態(tài)段也是基于事件觸發(fā)方式,這與CAN總線類似。因此,可以將OSEK網絡管理消息放置在FlexRay通信周期動態(tài)段中發(fā)送。
OSEK網絡管理規(guī)范采用網絡管理協(xié)議數據單元(NMPDU)來表示一個節(jié)點的網絡管理信息。網絡管理消息要通過FlexRay總線進行傳輸,需要將其映射成FlexRay總線的數據幀格式。在FlexRay通信周期動態(tài)段數據幀中將有效數據部分的頭兩個字節(jié)設置成消息標識(Message ID),作為NMPDU的源節(jié)點標識符,用于表明接收的消息來自哪個節(jié)點;將有效數據的第3和第4個字節(jié)作為NMPDU的目的節(jié)點標識符,用于確定本消息的接收節(jié)點;第5個字節(jié)作為NMPDU的操作碼,包含了直接網絡管理的三類消息,即Ring消息、Alive消息和LimpHome消息;第6到11個字節(jié)作為NMPDU的可選數據部分,映射格式如表2所示。

表2 NMPDU到FlexRay動態(tài)段數據幀的映射
與CAN總線不同,由于FlexRay總線動態(tài)段特殊的通信機理,動態(tài)幀消息不能實時發(fā)送。因此,在動態(tài)段中發(fā)送的網絡管理消息會出現(xiàn)延遲的情況,從而造成網絡管理系統(tǒng)誤判當前網絡狀態(tài)和節(jié)點狀態(tài)。網絡管理消息在最壞情況下延遲時 間 Tdelay[12]為:
式中:Tt為發(fā)送網絡管理消息所需要的時間,可用式(2)表示:
式中:FrameSize為報文長度;BusSleep為總線速率。
Te表示在給定時間內,由于靜態(tài)段內的消息和更高優(yōu)先級動態(tài)段消息的發(fā)送所消耗的時間,可用式(3)表示:
式中:TCycle為一個通信周期的時間長度;DelayCycles(t)為由于出現(xiàn)更高優(yōu)先級和由于網絡管理消息使用更低幀標識而導致網絡管理消息無法發(fā)送的周期數;Te′為某消息發(fā)送的周期內,從該周期開始到該消息被發(fā)送之間的時間長度。
Tc表示網絡管理消息在屬于它的微時隙之后產生,從而引起在這個周期內的時間延遲,可以用式(4)來表示[13]:
式中:TST為靜態(tài)段傳輸時間;FrameID為幀ID的值;gdMinislot為微時隙的時間。
直接網絡管理是通過在邏輯環(huán)上網絡管理消息的傳遞來實現(xiàn)對整個網絡和節(jié)點的監(jiān)控,因此,邏輯環(huán)的可靠運行是直接網絡管理的重要內容。下面就通過分析邏輯環(huán)的建立、邏輯環(huán)的穩(wěn)定運行、節(jié)點增加和節(jié)點離線及網絡故障處理來說明FlexRay的OSEK網絡管理的過程,并研究邏輯環(huán)運行過程中網絡管理消息可能出現(xiàn)的最壞情況下的延遲時間Tdelay問題。
2.3.1邏輯環(huán)的建立
FlexRay網絡中各節(jié)點啟動網絡管理服務時,首先發(fā)送Alive消息成功的節(jié)點將成為邏輯環(huán)中的第一個節(jié)點。如果多個節(jié)點同時發(fā)送Alive消息時,在動態(tài)段中每個時刻,都是通過節(jié)點消息的優(yōu)先級來競爭總線的,即通過每個節(jié)點發(fā)送消息的Frame ID值,并且只有當消息的Frame ID值與動態(tài)時慒相等時,才允許發(fā)送Alive消息,成為第一個發(fā)送的節(jié)點。收到第一個發(fā)送節(jié)點發(fā)送的Alive消息后,其他節(jié)點按相同的方式繼續(xù)競爭發(fā)送自己的Alive消息,最后按消息的Message ID的大小順序形成邏輯環(huán)。
2.3.2 邏輯環(huán)的穩(wěn)定運行
Ring消息是網絡管理的主要消息,它采用令牌環(huán)機制在邏輯環(huán)中被依次傳遞,在邏輯環(huán)中,各節(jié)點按Message ID的大小依次連接,Message ID值小的節(jié)點是Message ID大的節(jié)點的邏輯前驅節(jié)點,最大Message ID的節(jié)點的邏輯后繼節(jié)點是最小Message ID的節(jié)點。
當FlexRay網絡中某節(jié)點接收到Ring消息后,此節(jié)點會判斷Ring消息的NMPDU中的目的節(jié)點地址,如果Ring消息的目的地址不是此節(jié)點,則取消TTyp定時器,啟動TMax定時器(如果定時器TMax沒有運行則啟動,如果定時器TMax正在運行則重啟);如果Ring消息的目的地址是此節(jié)點,則取消TMax定時器,啟動TTyp定時器(如果定時器TTyp沒有運行則啟動,如果定時器TTyp正在運行則重啟),TTyp定時器到時后,發(fā)送Ring消息到自己的后繼節(jié)點,其實現(xiàn)過程如圖2所示。
在圖1中,節(jié)點在t2時刻向其后繼節(jié)點發(fā)送Ring消息,由于存在最壞情況下的延遲時間Tdelay可能出現(xiàn)在TMax定時器到時(t3時刻)時,Ring消息還未發(fā)送出去,這就造成網絡上其他節(jié)點誤認為A節(jié)點已經掉線,從而將節(jié)點A從邏輯環(huán)中排除掉,造成網絡管理系統(tǒng)無法正常工作。
所以,必須保證t2到t3時間段的長度大于最壞情況下的延遲時間Tdelay,即:
2.3.3節(jié)點增加
如果FlexRay網絡中有新的節(jié)點加入,那么該節(jié)點將向網絡中發(fā)送一條將其后繼節(jié)點設置為自身地址的Alive消息。邏輯環(huán)中已有的節(jié)點在接收到Alive消息后,認為有新節(jié)點加入網絡并判斷新節(jié)點是否為自己邏輯后繼節(jié)點。之后新節(jié)點將監(jiān)聽網絡中的Ring消息,當接收到Ring消息時,便將自己的后繼節(jié)點更新為Ring消息的源節(jié)點地址。此時,網絡中其他的節(jié)點將會判斷自己是否被跳過,如果某節(jié)點發(fā)現(xiàn)自己被跳過,將向網絡中發(fā)送一條Alive消息表明自己還在網絡中。新節(jié)點收到Alive消息后,便將自己的后繼節(jié)點更新為Alive消息的源節(jié)點地址,此時,新節(jié)點便加入邏輯環(huán)中。
2.3.4節(jié)點離線及網絡故障處理
OSEK網絡管理規(guī)范提供了檢測節(jié)點離線的機制,如果TMax定時器到時,表明在此期間邏輯環(huán)中沒有消息,一定有節(jié)點離線,此時,網絡管理系統(tǒng)將重新建立邏輯環(huán)并將離線節(jié)點排除在外。如果某節(jié)點的網絡管理消息傳輸失敗,則啟動TTx計數器并增加計數器TTx的值。如果計數器TTx值超過一定的次數,則該節(jié)點將進人LimpHome狀態(tài),表明該節(jié)點存在故障。當節(jié)點因故障進人LimpHome狀態(tài)后,由其TError定時器控制周期性地發(fā)送LimpHome消息,表示自己處于網絡故障狀態(tài)。
在OSEK網絡管理系統(tǒng)中,定時器TError的值一般遠大于TMax和TTyp定時器的值,也滿足式(5)。因此,LimpHome消息能成功發(fā)送,而不受最壞響應時間Tdelay的影響。
本方案使用自行設計的三個FlexRay節(jié)點構建邏輯環(huán),各節(jié)點采用Freescale公司生產的MC9S12XF512單片機作為中央控制單元,TJA1080T作為FlexRay節(jié)點的收發(fā)器并將Vector公司開發(fā)的Davinci軟件接入網絡來觀察邏輯環(huán)運行過程[14]。限于篇幅,只給出了邏輯環(huán)建立過程的實驗結果,如表3所示。
從表3實驗結果可知,節(jié)點1首先發(fā)送Alive消息,之后,節(jié)點2也發(fā)送Alive消息。節(jié)點1根據更新的網絡配置發(fā)送Ring消息到它的邏輯后繼節(jié)點2,TTyp定時器到時后,節(jié)點2也更新自己的網絡配置,并發(fā)送Ring消息到它的邏輯后繼節(jié)點1。節(jié)點4啟動網絡管理,并向網絡中發(fā)送Alive消息。節(jié)點1仍會按當前網絡配置將Ring消息發(fā)送給節(jié)點2,而節(jié)點2則會把Ring消息發(fā)送給節(jié)點4。節(jié)點4會根據網絡上當前最小的節(jié)點地址,將Ring消息發(fā)送給節(jié)點1。由此可以看出,這個實驗結果實現(xiàn)了邏輯環(huán)建立的功能。

表3 方案實驗結果
車載網絡管理的主要作用是保障車載網絡通信的安全性與可靠性,并能協(xié)調網絡中的各節(jié)點同步進入睡眠狀態(tài)。OSEK網絡管理可以很好的保障FlexRay網絡在高帶寬和高靈活性的情況下,可靠安全地進行網絡通信。通過分析OSEK網絡管理規(guī)范和FlexRay總線協(xié)議,提出在FlexRay通信周期動態(tài)段中實現(xiàn)OSEK網絡管理,并定義了網絡管理數據協(xié)議單元 (NMPDU),分析和研究了FlexRay的OSEK網絡管理的具體過程以及網絡管理消息在動態(tài)段延遲時間問題。本文為國內研究OSEK網絡管理的FlexRay網絡實現(xiàn)提供了一個初步方案,為進一步研究FlexRay總線的網絡管理做些鋪墊。
[1]FlexRay Consortium.FlexRay Communications System Protocol Specification [S].December 2005.Version 2.1 Revision A.
[2]OSEK/VDX Group.OSEK/VDX Network Management Concept and Application Programming Interface [S].2008.Version 2.5.3.
[3]B.Frank,L.George.FP/FIFO Feasibility Conditionswith Kernel Overheads for Periodic Tasks on an Event Driven OSEK System [J].The IEEE International Conference on Industtrial,2006,7:1-8.
[4]F.Laqarde,A.Radermacher,S.Robert,S.Gerard,D.Servat.Issues in mapping CORBA component model to OSEK [J].Communication of the ACM,2005,8:434-437.
[5]P.H.Feiler.Real-Time Application Development with OSEK A Review of the OSEK Standards[J].CMU/SEI,2003,5:7-46.
[6]欒鑫穎,孫曉民.車用嵌入式開發(fā)系統(tǒng)的軟構件研究[J].計算機應用研究,2006,4:57-59.
[7]張寶民,孫曉民.基于OSEK規(guī)范的嵌入式實時操作系統(tǒng)研究[J].計算機應用研究,2004,4:32-35.
[8]梁金祥,吳翔虎.OSEK/VDX嵌入式操作系統(tǒng)的設計與實現(xiàn)[J].2007,7:38-41.
[9]袁銘蔚,孫澤昌.陳覺曉.一種嵌入式實時操作系統(tǒng)[J].測控技術,2003,22:45-47.
[10]陳覺曉,袁昊昀.基于OSEK NM的Flexray網絡管理協(xié)議數據定義[J].機電一體化,2009,1:70-72.
[11]袁昊昀,陳覺曉.車載FlexRay網絡管理策略的初步研究[J].單片機與嵌入式應用,2008,(5):20-21.
[12]KLAUS S,ECE G S.Message scheduling for the FlexRay protocol:the static segment[J].IEEE Trans Actions on Vehicular Technology,2009,58(5):2170-2179.
[13]ECE G S.Message scheduling for the FlexRay protocol:dynamic segment [J].IEEE Trans on Vehicular Technology,2009,58( 5):2160-2169.
[14]李定根,曹晶,張杰.基于CANoe-MATLAB的車輛CAN總線的聯(lián)合仿真[J].汽車科技,2009,11:57-61.