基于OSEK_VDX的乘用車車身CAN網絡管理與實現
隨著汽車電子技術的不斷發展,車輛上電控單元的數量不斷增加,而且功能也越來越復雜,多個處理器之間相互連接、協調工作并共享信息構成了汽車車載計算機通信網絡。車載網絡運用多路傳輸技術,采用多條不同速率的總線分別連接不同類型的節點,并使用網關服務器來實現整車的信息共享和網絡管理。其中, 在汽車車載網絡中,CAN(Controller Area Network 控制型局域網) 總線技術得到了最廣泛的應用。CAN 總線的物理層協議和數據鏈路層協議作為國際標準,已經被大家廣泛熟知,并且得到國際大芯片廠商的支持,各種的CAN 網絡協議芯片和物理層芯片已經相當的普及。由于應用場合的不同,應用層的協議則是百家爭鳴, 其中應用于工業現場的主要有DeviceNet ,CANopen 等,應用于卡車和客車的協議主要有SAE J1939[1] 。但是, 應用于轎車的應用層協議則沒有統一的標準,這是因為各個廠家的轎車的應用層協議是多年積累的結果,作為保密協議不對外公開。這也是最近幾年我國轎車產業在CAN 總線應用方面比較滯后的原因。本文主要研究了轎車CAN 車身網絡應用層協議中的基礎核心,基于OSEKΠVDX 的網絡管理,并給出了關鍵的設計方法。
本文引用地址:http://www.104case.com/article/197012.htm2 網絡管理基礎
2. 1 OSEKΠVDX 介紹
CAN 協議的錯誤處理能力以及物理層的抗EMC 等特性保證了CAN 節點的相對可靠性。但是對于CAN
網絡來說,單個節點的可靠性不能代表整個網絡的可靠性。為了保證整個CAN 網絡的可靠性,必須存在網絡管理功能,通過網絡管理保證各個節點的協調工作,并監督網絡其他節點的運行狀態或錯誤區別情況。汽車CAN 網絡管理的主要參考標準是OSEKΠVDX 。
OSEKΠVDX 是用于分布式實時結構的一組標準,由歐洲汽車制造商和供應商的一個社團與德國Karlsruhe 大學共同開發。它包含4 個標準:操作系統(OS) 、通信(COM) 、網絡管理(NM) 和OSEK 實現語言(OIL) 。OSEKΠ的許多電子控制單元(ECU) 。在不同的設計中,可以重用編碼和專業技術,而且使用通用接口標準,可以在工業生產方面實現明顯的節約。其中符合OSKEΠVDX 的操作系統在國內已有研究,但是對網絡管理還沒有相關的文章報道。本文主要研究以CAN 網絡為基礎的車身網絡間接管理方法,并提出具體的實現方式。
2 2. 2 CAN 總線網絡幀的傳輸模式根據觸發條件的不同,在車身CAN 網絡中可以分為事件型、周期型、混合型3 種傳輸模式[3] 。
2 2. 2. 1 事件型傳輸模式
隨著類型或數據的轉變而及時發送的消息。此類型消息的好處是極少占用總線資源,但是可能會存在漏發等情況。這種消息類似于網絡的中斷,用于故障診斷的幀可以是事件型的。
2. 2. 2 周期型傳輸模式
以某個時間為周期,循環發送的消息類型。此類型的消息要求的時間精度一般小于10 %, 可以盡可能的保證消息的可靠性,如果周期過短,可能會使總線的負載過大,影響網絡的質量。在設計網絡中,可以遵守如下的基本規則:如果幀的ID 號越小,它的優先級高,那么它的周期可以越小。用于監督網絡狀態的幀可以是周期型的。
2. 2. 3 混合型傳輸模式
即事件型與周期型混合類型的幀。事件型消息發送實時變化的幀,周期性的發送保證了消息的完備性。如用于監控外部設備的幀,如果幀中的參數沒有變化,將周期性的發送,如果幀中的參數發生了變化,將會以事件發送此幀,然后重新計時,以周期型發送。
三種傳輸模式的分類,使CAN 網絡中的幀的類型更加清晰,有利于制定應用層協議和網絡管理規則。
3 網絡管理方式
3. 1 OSEKΠVDX NM 研究
由于汽車的運行環境比較惡劣,安全性要求又非常的高,所以對于通訊網絡要求非常嚴格。OSEKΠVDX 網絡管理的主要任務就是保證ECU 之間互相通信網絡的安全性和可靠性[2] 。由于每個網絡的結構和特性要求不同,所以網絡管理的實現方式也不同。
OSEKΠVDX 提供了兩種網絡管理機制直接監控與間接監控。直接監控是利用標記的通訊機制進行直接監控,網絡中的每一個節點被其他節點所監控,所以每一個被控節點會發出一個特定的統一的網絡關系消息。直接監控通過一個邏輯環來實現網絡監控信息的同步。在這個環上每個節點有一個地址,通過獨立于網絡協議的專用單向網絡管理通訊,可以檢測到網絡上每個節點的狀態。直接網絡管理方式可靠性高,但是需要更多的時間,并且增加了網絡負載和CPU 的負載。
間接網絡管理是以監督ECU 節點的周期型信息幀為基礎。也就是說,一個節點發出的一個周期性的幀被一個或多個節點接收,接收節點通過監督這個周期性的幀完成間接網絡管理。間接網絡管理節點狀態類型分類描述常用于中央控制型網絡,有一個功能強大的網關發送狀態非無聲的(not mute) 可以傳送特定的消息幀作為網絡管理的主ECU ,其他節點ECU 被網關無聲的(mute) 傳送某特定的信息幀超時監控。每個節點ECU 必須要發送特定的周期性接受狀態存在的(present) 特定消息幀可以被接受的幀來實現被監督。一個網絡節點存在兩種狀消失的(absent) 態:接受狀態或者發送狀態,如表1 所示。
3. 2 CAN 車身網絡狀態管理
為了實現車身網絡的低功耗,網關系統會協調控制,在這個狀態只能接受外部喚醒幀,或內部喚醒幀等,不能接收功能信息幀[4] 。
圖1 所示為4 種網絡狀態的轉換圖。箭頭方向為ECU 狀態轉換的方向,ECU 初始狀態進入休眠狀態,如果有網關的喚醒命令,那么ECU 進入喚醒狀態,如果在喚醒狀態收到網關的正常狀態的命令,那么ECU 進入正常的狀態。其他狀態轉換類似[5] 。
4 網絡管理的設計方法
圖1 網絡狀態轉換
網絡節點ECU 通過C MUTE 和C ABSENT 計數器來確定節點是不是達到了MUTE 或ABSENT。當計數器達到255 時,節點就出現了故障。故障的出現或消失, ECU 通過事件類型幀的方式發送故障幀到網關。故障幀設計實例如表2 所示。
幀的ID 為0x499 ,DLC 為8 。其中第1 個字節表明故障是出現還是消失,第2 ,3 兩個字節表明了故障代碼,第4 個字節表明了故障后是否需要功能降級。第5 到8 個字節表明故障的其他情況。C MUTE 和C ABSENT 的計數加減規則是通過監督不同周期型的幀來完成的。對于C MUTE ,如果ECU 沒有成功發送一幀數據,那么C MUTE 加數直到255 ,故障確認。如果ECU 成功的發送一幀數據,那么C MUTE 減數直到0,故障消失。同理,對于C ABSENT ,如果ECU 沒有成功接收一幀數據,那么C ABSENT 加數直到255 ,故障確認。如果ECU 成功接收一幀數據,那么C ABSENT 減數直到0,故障消失。在實際例子中,對于周期為200ms 的幀,如果3 幀數據沒有發送成功或接收成功,增量為77 , 減量為26 。對于周期為100ms 的幀,如果3 幀數據沒有發送成功或接收成功,增量為39 , 減量為13 。所以,如果使用這樣網絡管理方式,每個ECU 必須有一個100ms 或200ms 周期發送的幀。C MUTE 和C ABSENT 的故障類型可以根據具體情況自己定義。圖2 所示為節點K的C-ABSENT 計數規則,分別表示了節點K的技術規則,節點K的缺失或存在狀態與計數器之間的關系以及節點K的擴展狀態。
圖2 節點K的C ABSENT 計數規則
實現網絡管理的另一個幀是監督幀。監督幀是一個周期性的幀,ECU 按照周期發送監督幀到網關。主要內容包括ECU 的CAN 總線的物理錯誤(如果是低速容錯CAN) , ECU 單元是否ABSENT,ECU 單元是否MUTE ,ECU 單元的BUSOFF 次數以及ECU 單元的發送超時錯誤的次數[6] 。通過這些參數,網關會了解到當前ECU 的運行情況。如果出現錯誤情況,網關會將這些錯誤記錄到EEPROM 中,這樣有利于維修人員通過診斷工具進行后期診斷,并且能夠判斷出在行車時不易跟蹤的隨機出現的故障。
5 小結
隨著中國技術實力的不斷提高和國家政策的調整,中國的汽車企業將不再只重視市場,正在逐漸將重點放在了核心技術的突破上。本文的支撐項目就是在這個大背景下實施的。基于CAN 網絡的網絡管理方法和網絡狀態管理已經在某車型得到了應用,運行良好,證明了方法的可行性與可靠性。
評論