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