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

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

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

表3 方案實驗結果
車載網絡管理的主要作用是保障車載網絡通信的安全性與可靠性,并能協調網絡中的各節點同步進入睡眠狀態。OSEK網絡管理可以很好的保障FlexRay網絡在高帶寬和高靈活性的情況下,可靠安全地進行網絡通信。通過分析OSEK網絡管理規范和FlexRay總線協議,提出在FlexRay通信周期動態段中實現OSEK網絡管理,并定義了網絡管理數據協議單元 (NMPDU),分析和研究了FlexRay的OSEK網絡管理的具體過程以及網絡管理消息在動態段延遲時間問題。本文為國內研究OSEK網絡管理的FlexRay網絡實現提供了一個初步方案,為進一步研究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]欒鑫穎,孫曉民.車用嵌入式開發系統的軟構件研究[J].計算機應用研究,2006,4:57-59.
[7]張寶民,孫曉民.基于OSEK規范的嵌入式實時操作系統研究[J].計算機應用研究,2004,4:32-35.
[8]梁金祥,吳翔虎.OSEK/VDX嵌入式操作系統的設計與實現[J].2007,7:38-41.
[9]袁銘蔚,孫澤昌.陳覺曉.一種嵌入式實時操作系統[J].測控技術,2003,22:45-47.
[10]陳覺曉,袁昊昀.基于OSEK NM的Flexray網絡管理協議數據定義[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總線的聯合仿真[J].汽車科技,2009,11:57-61.