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