初洪超(安徽江淮汽車技術中心乘用車研究院電氣系統設計部,安徽 合肥 230009)
?
網絡管理在汽車CAN系統的應用
初洪超
(安徽江淮汽車技術中心乘用車研究院電氣系統設計部,安徽 合肥 230009)
摘要:簡要闡述某汽車CAN網絡系統中的OSEK網絡管理方法應用。介紹了OSEK網絡管理的策略方法,并結合實例介紹了OSEK的應用。
關鍵詞:CAN總線;網絡管理;OSEK
10.16638/j.cnki.1671-7988.2016.05.033
CLC NO.: U463.67.4Document Code: AArticle ID: 1671-1998(2016)05-114-05
隨著時代的發展,汽車已不再只是人們的代步工具,更多功能的加入,使得汽車能夠完成更多人性化、智能化的工作。但是,更多智能化功能的加入,意味著汽車ECU數量成倍的上升。不同生產廠商制造的ECU在同一輛汽車中協同工作,互相傳輸著數據,讓整個汽車控制體系自成一統,構成了汽車控制器局域網。
雖然ECU數量的上升讓功能強大,但伴隨著的功耗也會增多。尤其在不啟動發動機,而使用汽車的某些功能時,這樣的困擾便更加明顯。因此,為了使汽車網絡工作更加有效,盡最大可能做到高效低耗,就引入了網絡管理的概念。根據這個概念,在某些不需要特定ECU工作的狀況下,如果能將部分ECU處于低功耗的待機狀態,而一旦需要其工作,又能立即將其喚醒,成為解決這一狀況的策略構想,即網絡管理策略。網絡管理有很多種,目前應用較廣泛的是基于OSEK的直接網絡管理策略。
某汽車應用CAN網絡,在這個車型上使用的就是OSEK直接網絡管理。本文介紹了網絡管理的相關策略方法和某汽車車型對網絡管理的應用。
1.1網絡管理功能
1)網絡管理應有如下的基本功能:
網絡通信的開始與停止,網絡管理控制ECU初始化,幀模式和所有開始/結束時間。
喚醒/掛起網絡通訊,網絡上所有的節點要能夠同時被喚醒或者掛起。
處理通訊錯誤,例如,Bus off 的檢測及恢復。
確認網絡配置,在網絡初始化階段,建立邏輯令牌環。
檢測網絡配置,檢測到新的ECU后,應能夠建立新的令牌環。
通過配置檢查實現節點監測,每個節點通過不同方法進行監控,如收發信號,監測。
數據轉換功能,網絡管理可以交換數據,例如,可以讀/寫網絡或節點相關參數。
2)注意,網絡管理并不包含以下功能,下述功能一般在具體的控制器功能設計規范中描述:
電源管理,定義控制器的供電方式。
處理器工作模式,定義處理器何時進入睡眠模式或低電壓模式。
CAN收發器,在節點初始化過程中應用程序使能CAN收發器,當網絡睡眠后,設置CAN收發器為standby模式。
1.2網絡管理標準
常見的網絡管理標準策略有很多,如OSEK、AUTOSAR等。某汽車使用OSEK網絡管理策略。
OSEK網絡管理有兩種機制實現網絡監測:
OSEK直接網絡管理:基于令牌環對網絡進行控制,通過休眠、喚醒等方式控制各節點通訊邏輯。
OSEK間接網絡管理:通過監測應用報文對網絡進行控制,主要服務于安全。
在某汽車項目中,低速CAN網絡節點的網絡管理策略采用基于OSEK的直接網絡管理的策略,并沒有使用其間接管理方法。具體的網絡管理標準參考OSEK/VDX_NM_2.5.3版本中的具體描述。
1.3直接網絡管理
OSEK直接網絡管理的目的是實施對當前網絡上所有節點的狀態監控,并保證所有節點在同一時間進入休眠狀態。每個節點的狀態都可以被網絡上其他的節點所監控,因此被監控的節點將向網絡上發送網絡管理報文。
直接網絡管理的令牌環通訊順序完全獨立于網絡架構,每一個節點都有一個自己指向的繼承節點,令牌環的第一個節點為最后一個節點的繼承節點。每一個節點都必須能夠發送網絡管理報文給任何其他節點,同時也必須能接收到其他節點發出的網絡管理報文。
OSEK網絡管理的軟件架構于實際連接的物理架構無關。
OSEK直接網絡管理基于令牌環對網絡進行控制,需要由令牌環來同步整個網絡的網絡管理,除了正常的應用消息幀之外,針對每個節點定義了專用的網絡管理消息幀來傳輸網絡信息和控制應用幀收發。
當某個節點仍需要網絡功能需要加入到網絡通訊中時,該節點發送“Alive”消息向其它節點表明它仍然存在。
所有發送“Alive”的節點會建立一個邏輯環來達到網絡范圍內所有節點的同步。
當某個節點不需要使用網絡功能時,它發送“Sleep Indication”告知其它節點。當所有節點都發送了“Sleep Indication”后,會發送“Sleep Acknowledge”信息確認所有節點進入休眠模式。
在邏輯環中定義的通訊序列是獨立于網絡拓撲結構的,每個節點都會被分配一個后續節點,邏輯環中的第一個節點是最后一個節點的后續節點。
網絡給每個節點定義了獨一無二的地址,源地址和目的地址都需要在明確的包含在網絡管理幀中。所有的網絡管理幀都是廣播發送的。
關于OSEK直接網絡管理方式,圖1給出了某汽車的3個節點組成的簡單示例。

圖1 某汽車直接網絡管理令牌環
在某汽車項目的低速網段,BCM、ICM和PEPS都被分配了獨一無二的網絡管理地址,分別是BCM:0x101;ICM:0x102;PEPS:0x106。這些節點通過含有特定控制字定義和網絡管理報文結構的網絡管理報文來實現網絡管理。
1.4網絡管理報文數據結構
OSEK的每個網絡管理報文(NMPDU)都擁有相同的結構,由CAN ID域和CAN Data域組成。以某汽車為例:
CAN Id (11 bit)
0x1- 基址0x100(可配置為其他值,但所有網絡管理報文應包含同樣的基址)
SA- 源址(0x00-0x7F,屬于節點自己的標志地址)
CAN Data(8 Byte)
DA- 目的地址 (0x00- 0x7F,要發送報文至某節點時,此節點的標志地址)
CF- 控制域, 每一位對應節點相應的狀態
Data-用戶可選數據
* 注釋:完整的地址信息是0x100與源地址或目的地址之和,如1.2中的BCM為0x101,基址是0x100,標志地址是0x01。所以,BCM網絡管理地址就是0x101。
具體NMPDU結構如圖2所示。

圖2 網絡管理報文格式
SA及DA的最高位強制為0,所以網絡管理消息中可用的CAN ID范圍應該從0x100到0x17F。可選數據區域的長度通常總是6個字節,如果未使用則填充0。只有在當前節點掌握令牌期間,應用程序可以修改數據,其它時間數據不允許修改。
CAN data域的第二個字節包含了網絡管理控制域(CF),用于體現ECU的運行狀態,(Bit0為字節的最低位)字節中各個位對應的狀態定義見下圖。

圖3 CF字節位定義
Alive, Ring 和Limp Home三個位在同一時刻只能有一位置位。
當Bus Sleep Acknowledge置位時,Bus Sleep Indication需同時置位,但Bus Sleep Indication可單獨置位。保留位應被填充0。
具體情況及含義詳見圖4。

圖4 CF各個位置為情況及含義
通過上述規定,通常有的組合形式對應的CF字節控制字如下:
0x01Alive
0x02Ring
0x12Ring+Sleep Ind
0x32Ring+Sleep Ind+Sleep Ack
0x04Limp Home
0x14Limp Home+Sleep Ind
0x11Alive+Sleep Ind
1.5網絡管理策略
網絡管理策略規定了ECU網絡管理報文的時序流程,其目的是建立和維護ECU之間的聯系。網絡管理策略只是提供網絡的狀態信息,而不同狀態的控制方法由應用程序負責。網絡中各個ECU所有狀態的轉換如圖5所示。

圖5 ECU狀態轉換圖
1)關閉狀態
處于關閉狀態的ECU將失去電源,不能進行任何網絡活動。
當點火鑰匙位于OFF檔時,+30節點類型的ECU不受點火鑰匙控制,只有切斷蓄電池供電或電壓低于最小工作電壓,才會斷電進入關閉狀態。
2)初始化狀態
網絡中的ECU在上電或喚醒后,200ms內完成初始化操作,各ECU判斷只有本地ECU在線,并且其后繼ECU也被設置為本地ECU。
初始化完成后,ECU發送Alive報文,通過Alive報文將ECU加入到網絡中。
3)常規狀態
在常規狀態下,ECU主要在“邏輯環”中進行Ring報文的傳遞發送。
4)跛足狀態
跛足狀態表明網絡通信存在故障。
2.1某汽車網絡管理報文數據結構
下圖為某汽車車型BCM的網絡管理數據報文,因為某汽車車型網絡管理不使用數據交換功能,所以并沒有使用CANdata部分。

圖6 某汽車車型BCM_NM報文數據結構
從圖6中看出,首字節為報文發送的目的地址,第二字節的部分位被定義,與圖3所示一致。
2.2某汽車網絡管理策略

圖7 網絡管理狀態轉換圖
某汽車車型的網絡管理各個狀態之間的跳轉如圖7所示。
各個狀態的轉移,只有當轉移條件滿足的情況下才能切換狀態。網絡管理狀態機的處理時間一般為10ms。
轉換 1
轉換條件:應用程序調用StartNM()。
*注釋:應用程序應該使能CAN收發器,初始化CAN控制器,并做好通訊前的準備工作。如初始化失敗,則此轉換不應進行。
轉換 2
轉換條件:節點功能需要網絡通訊,并調用GotoMode (Awake)。
轉換 3
轉換條件:NMReset狀態中的工作結束并且接收錯誤及發送錯誤計數器未達到限值。
轉換 4
轉換條件:發送錯誤計數器達到限值。
轉換 5
轉換條件:節點功能不再需要網絡通訊,并調用GotoMode(BusSleep)。
轉換 6
轉換條件:接收到一條包含"sleep acknowledge=1"的Ring報文,或者一條包含“sleep acknowledge=1”的Ring報文被發出。
轉換 7
轉換條件:CAN控制器進入Bus Off狀態。
轉換 8
轉換條件:接收錯誤超過限值或者發送錯誤超過限值。
轉換 9
轉換條件:Ring報文接收超時。
轉換 10
轉換條件:接收到任意一條“Sleep Acknowledge=0”的NM報文。
轉換 11
轉換條件:節點功能需要網絡通訊,應用程序調用GotoMode(Awake),或者有包含“sleep indication=0”的網絡管理報文收到。
轉換 12
轉換條件:超過TWaitBusSleep 限值。
轉換 13
轉換條件:應用程序調用GotoMode(Awake)或StartNM(), 或者被總線通訊喚醒。
轉換 14
轉換條件:應用程序調用SilentNM()。
轉換 15
轉換條件:應用程序調用TalkNM()。
轉換 16
轉換條件:應用程序調用StopNM()。
轉換 17
轉換條件:節點功能不再需要網絡通訊,并調用GotoMode(BusSleep)。
轉換 18
轉換條件:應用程序需要網絡通訊,并且調用GotoMode (Awake)。
轉換 19
轉換條件:應用程序調用GotoMode(Awake),或者有包含“sleep indication=0”的網絡管理報文收到。
轉換 20
轉換條件:接收到包含“sleep acknowledge=1”的網絡管理報文收到,或者在TRingMax時間內沒有Ring報文收到。
2.3某汽車網絡管理應用
下面是用CANoe測出的一些某汽車網絡管理的應用實例。
1)建立邏輯環
如圖8所示,步驟1中,BCM、ICM、PEPS三節點剛出現時都對自己發送0x01的Alive網絡管理報文,然后在步驟2中,組成邏輯環,分別向自己的繼承節點發送0x02的Ring報文。

圖8 網絡節點建立邏輯環
2)網絡休眠
如圖9所示,步驟1中ICM、PEPS均發出請求睡眠指令,但BCM不滿足睡眠條件,仍發送0x02網絡管理Ring報文,直到步驟2中BCM滿足睡眠條件發送0x12后,則到達步驟3,由其繼承節點發送0x32,所有節點進入睡眠狀態。

圖9 網絡節點休眠
3)網絡節點的增加
如圖10所示,步驟1中三個節點BCM出現,到步驟2時突然出現一個節點ICM,它出現時對自己發送Alive報文0x01,其他節點也分別對自己發送0x01,然后到達步驟3,所有節點形成新的邏輯環。

圖10 網絡節點增加
4)網絡節點的減少
如圖所示,步驟1為BCM、ICM、DVD、PEPS四個節點都已經形成穩定邏輯環。到步驟2時,DVD丟失,PEPS沒有接到DVD發送的Ring報文,環的傳遞被打破。間隔一個時間T=251ms后,到達步驟3,BCM、ICM、PEPS都從新向自己發送Alive報文。從而最后在步驟4中,建立一個三個節點的新邏輯環。

圖11 網絡節點減少
OSEK直接網絡管理是一種使用較為廣泛的網絡管理策略,隨著汽車產品CAN網絡的普及,選擇一種低成本高效率的網絡管理策略十分必要,而OSEK直接網絡管理符合這樣的特點。某汽車是第一款加入CAN網絡的產品,對日后江淮的CAN網絡發展研究具有開拓意義。
參考文獻
[1]張利,路園,張建軍,張本宏,王躍飛. OSEK網絡管理在汽車CAN系統中研究與實現[J]. 電子測量與儀器學報,2011,25(6): 522-527.
[2]陳筠翰,秦貴和,于赫,黃玥.基于OSEK/VDX直接NM規范的車載網絡系統[J]. 吉林大學學報:工學版, 2011,41(5):1407-1413.
The Application of OSEK in CAN-bus System of Motor
Chu Hongchao
(JAC Technical Center Electric System Design Department, Anhui Hefei 230009)
Abstract:You will see the application of OSEK network management of CAN network in the car.The method of OSEK network management is introduced in this paper and it is presented with cases to tell how to implement OSEK.
Keywords:CAN bus; network management; OSEK
中圖分類號:U463.67.4
文獻標識碼:A
文章編號:1671-1998(2016)05-114-05
作者簡介:初洪超,就職于安徽江淮汽車股份有限公司。