胡育瑞
【摘? 要】本文設(shè)計一款具有路由、OSEK網(wǎng)絡(luò)管理、診斷等基本功能的網(wǎng)關(guān),并對其進(jìn)行相關(guān)介紹,以便能進(jìn)一步提升車輛的安全、可靠及經(jīng)濟(jì)性,降低車內(nèi)網(wǎng)絡(luò)負(fù)載。
【關(guān)鍵詞】網(wǎng)關(guān);CAN總線;網(wǎng)絡(luò)管理;自動化測試
中圖分類號:U463.6? ? 文獻(xiàn)標(biāo)志碼:A? ? 文章編號:1003-8639( 2023 )04-0032-03
【Abstract】This paper designs a gateway with routing,OSEK network management,diagnosis and other basic functions,and introduces it so as to further improve the safety,reliability and economy of vehicles and reduce the network load in vehicles.
【Key words】gateway;CAN bus;network management;automated testing
汽車電子電氣行業(yè)的不斷發(fā)展,使得車內(nèi)的控制器持續(xù)增加,整車有龐大的信息量需要控制器去采集、控制以及交互。CAN總線由于有良好的通信性能,同時能減少線束,降低故障率,成為了主流的汽車總線[1]。但隨著控制器的持續(xù)增加,信號負(fù)載率也持續(xù)增大,信號傳輸延時[2]。為了降低CAN總線負(fù)載,保障通信時效性,根據(jù)控制器的功能,進(jìn)一步將其劃分為多個網(wǎng)段,各網(wǎng)段之間通過網(wǎng)關(guān)相互通信,這對網(wǎng)關(guān)的功能也提出了更高的要求,既要確保各網(wǎng)段的通信負(fù)載滿足要求,還要保障各網(wǎng)段之間能正常通信。本文基于某款車的CAN總線通信開發(fā)要求,設(shè)計了一款多網(wǎng)段式,具有路由、OSEK網(wǎng)絡(luò)管理、診斷等基本功能的網(wǎng)關(guān),并利用自動化測試工具對路由、OSEK網(wǎng)絡(luò)管理等重要功能進(jìn)行驗證測試。
1? 系統(tǒng)概述
車載CAN網(wǎng)關(guān)作為整車網(wǎng)絡(luò)的核心,主要負(fù)責(zé)連接不同的CAN網(wǎng)段,具有應(yīng)用路由、診斷功能、網(wǎng)絡(luò)管理、電源管理、Bootloader刷寫、映射、防火墻等功能[3]。其中,路由功能是網(wǎng)關(guān)最主要的功能,是為了實現(xiàn)跨網(wǎng)段信號和報文的傳輸。OSEK網(wǎng)絡(luò)管理能實時監(jiān)控整車的網(wǎng)絡(luò)狀態(tài)和管理整車網(wǎng)絡(luò)的休眠喚醒。圖1是網(wǎng)關(guān)系統(tǒng)框圖。本網(wǎng)關(guān)共有5路CAN及2路LIN通道,其中2路LIN為設(shè)計預(yù)留,以便后期進(jìn)行ECU擴(kuò)充。根據(jù)控制器的功能,將5路CAN分為:動力CAN網(wǎng)段(簡稱PT-CAN)、底盤CAN網(wǎng)段(簡稱ST-CAN)、車身CAN網(wǎng)段(簡稱BD-CAN)、娛樂CAN(簡稱INFOR-CAN)和診斷CAN網(wǎng)段(簡稱D-CAN)。其中動力CAN和底盤CAN的實時性要求較高,因此該兩路網(wǎng)段上的控制器的報文ID值小,根據(jù)CAN總線仲裁原則,這些通信報文具有優(yōu)先級[4]。網(wǎng)關(guān)工作的額定電壓為12V,正常工作電壓為9~16V,波特率為500kb/s。
1.1? 路由功能
路由是網(wǎng)關(guān)的最主要功能,通過CAN收發(fā)器上的Buffer存儲報文信號并發(fā)送,能夠從一個源網(wǎng)段向一個或多個目標(biāo)網(wǎng)段傳輸。當(dāng)路由從一個源網(wǎng)段向一個目標(biāo)網(wǎng)段傳輸,稱為1:1路由。當(dāng)源網(wǎng)段上的一個信號需要被多個目標(biāo)網(wǎng)段接收時,稱為1:N路由,N表示目標(biāo)網(wǎng)段的數(shù)量。本網(wǎng)關(guān)支持1:N路由,可在連接的任意網(wǎng)絡(luò)的任何方向間執(zhí)行。路由方式包含報文路由和信號路由,報文路由即網(wǎng)關(guān)對接收到的報文不做任何處理,直接按照路由表轉(zhuǎn)發(fā)到指定的CAN目標(biāo)網(wǎng)段上,并采用“輸入觸發(fā)”操作,只在收到源網(wǎng)段的報文時才進(jìn)行路由。網(wǎng)關(guān)一旦接收到報文,就必須在目標(biāo)網(wǎng)段發(fā)送一次該報文。報文路由僅用于報文可直接被接收節(jié)點進(jìn)行處理的情景。對于部分目標(biāo)網(wǎng)段不需要報文中的全部信號,僅需要部分信號,此時就要采用信號路由的方式。信號路由將不同報文中的有效信號提取后重組成新的報文,發(fā)送至目標(biāo)網(wǎng)段。信號路由能降低網(wǎng)絡(luò)復(fù)雜率,但是轉(zhuǎn)發(fā)方式較復(fù)雜。本網(wǎng)關(guān)的信號路由,采用“輸入無關(guān)”操作,即發(fā)送模式的定義須與接收信號獨立定義,CAN ID、周期、排列方式、發(fā)送方式等信息參照信息矩陣的需求。如果輸入信號丟失,發(fā)送信號應(yīng)以無效值進(jìn)行發(fā)送。當(dāng)網(wǎng)關(guān)檢測到源網(wǎng)段已經(jīng)進(jìn)入網(wǎng)絡(luò)未啟動狀態(tài)或網(wǎng)絡(luò)關(guān)閉狀態(tài)時,網(wǎng)關(guān)以無效值發(fā)送所有信號。
1.2? 網(wǎng)絡(luò)管理功能
網(wǎng)絡(luò)管理是通過車載網(wǎng)絡(luò)各項命令規(guī)則對汽車控制器進(jìn)行協(xié)調(diào)管理,實現(xiàn)各個控制器的協(xié)同睡眠和喚醒,進(jìn)而保證控制器低功耗安全的通信工作。網(wǎng)絡(luò)管理分為間接網(wǎng)絡(luò)管理和直接網(wǎng)絡(luò)管理。間接網(wǎng)絡(luò)管理主要通過應(yīng)用報文間接的監(jiān)控節(jié)點與網(wǎng)絡(luò)狀態(tài),本網(wǎng)關(guān)主要是通過監(jiān)控PT-CAN和ST-CAN上的部分應(yīng)用報文,從而實現(xiàn)對部分節(jié)點進(jìn)行休眠喚醒控制,例如點火開關(guān)由非關(guān)閉擋位切換到關(guān)閉擋位后,部分節(jié)點立刻停止通信或者延時一段時間通信,如EMS、EPS、TCU、ESP等。直接網(wǎng)絡(luò)管理需要使用規(guī)定的網(wǎng)絡(luò)管理報文直接對節(jié)點和網(wǎng)絡(luò)狀態(tài)進(jìn)行監(jiān)控,確保網(wǎng)絡(luò)睡眠的同步。本網(wǎng)關(guān)基于OSEK NM直接網(wǎng)絡(luò)管理策略,對BD-CAN上節(jié)點進(jìn)行休眠喚醒控制,BD-CAN上的網(wǎng)絡(luò)實時性不高,且節(jié)點主要是KL30常電供電,在點火鑰匙為OFF時仍需進(jìn)行CAN通信,如BCM、PEPS等。OSEK直接網(wǎng)絡(luò)管理采用“令牌環(huán)”的機制,每一個節(jié)點都有特定的ID標(biāo)識符,即節(jié)點地址,按照ID標(biāo)識符的大小,從小ID標(biāo)識符向大ID標(biāo)識符依次傳遞環(huán)信息(Ring報文),直至最大的ID標(biāo)識符,最后再由最大的ID標(biāo)識符傳遞至最小的節(jié)點ID標(biāo)識符,形成一個閉合的邏輯令牌環(huán)。環(huán)消息都是以廣播的方式向每個節(jié)點發(fā)送,其余節(jié)點通過監(jiān)測,并確定是否為上一個發(fā)送節(jié)點的后繼節(jié)點,并更新運行狀態(tài)等。
1.3? 刷寫功能
網(wǎng)關(guān)開發(fā)過程中,軟件功能需求變更以及功能很多,需要頻繁更新軟件升級程序,為了便于開發(fā)測試,網(wǎng)關(guān)設(shè)計了基于UDS協(xié)議的Bootloader刷寫功能。網(wǎng)關(guān)加入Bootloader之后可以理解劃分應(yīng)用程序?qū)雍虰ootloader層,Bootloader層負(fù)責(zé)日后的程序升級功能,Bootloader更新程序通常不會擦除自己的代碼塊區(qū)域,防止異常中斷而導(dǎo)致無法再次更新,所以是可以繼續(xù)中斷刷新。
主要刷寫流程包含預(yù)程序階段、程序刷寫階段及后程序階段。預(yù)程序階段主要是通過診斷命令檢查刷寫條件,關(guān)閉DTC和通信等;程序刷寫階段主要進(jìn)行安全訪問校驗、身份識別、驅(qū)動下載、數(shù)據(jù)下載、數(shù)據(jù)校驗、ECU重啟等;后程序階段是使所有ECU返回至默認(rèn)會話模式。
1.4? 防火墻
車輛與外部實現(xiàn)遠(yuǎn)近場的通信主要通過遠(yuǎn)程連接和物理連接。遠(yuǎn)程連接包含如激光雷達(dá)傳感器、毫米波傳感器、RFID及DoIP等;物理連接主要是外部診斷設(shè)備與車輛OBD口的連接,進(jìn)而實現(xiàn)與車內(nèi)網(wǎng)的通信。任何車內(nèi)網(wǎng)與外部設(shè)備的連接,都會增加車輛網(wǎng)絡(luò)的安全隱患,任何未經(jīng)授權(quán)嘗試對車輛電子架構(gòu)訪問的行為都有可能會引起致命的后果。如車輛遠(yuǎn)程受控,惡意代碼注入,從而導(dǎo)致汽車數(shù)據(jù)被外界獲取或網(wǎng)絡(luò)被外界干擾[5]。為了維護(hù)數(shù)據(jù)的安全,保證數(shù)據(jù)的完整、保密以及確定外來身份的合法性,需要開發(fā)網(wǎng)關(guān)的防火墻功能。網(wǎng)關(guān)防火墻包含物理隔離和軟件隔離兩個方面。
1)物理隔離。將與外接可連接的ECU或接口隔離出來,置于非安全端口網(wǎng)段,本設(shè)計中將OBD單獨置于診斷D-CAN,而T-box單獨置于INFO-CAN。
2)軟件隔離。非安全端口路由報文至安全端口,需要滿足必要的條件:①ID過濾,非路由表中的ID不可以路由;②周期報文,周期異常(周期變快)不路由,恢復(fù)正常周期后可以路由,如T-box的周期報文;③特定報文在特殊工況下路由(如車速限制等),如T-box與PEPS的認(rèn)證報文和學(xué)習(xí)報文;④關(guān)鍵數(shù)據(jù)需要經(jīng)過有效校驗后可路由(如軟件加密、硬件加密);⑤定義特定工況下,采用握手私有協(xié)議等。
2? 測試驗證
本文主要對路由和網(wǎng)絡(luò)管理兩個主要功能進(jìn)行驗證測試,包含手動測試和自動化測試,路由測試采用手動測試,而網(wǎng)絡(luò)管理先采用自動化測試腳本進(jìn)行全面測試,再通過手動測試對個別測試案例進(jìn)行復(fù)測和對比。
2.1? 路由測試
測試設(shè)備:計算機配備CANoe軟件、直流供電電源(12V)、維克多VN1640、網(wǎng)關(guān)樣件、網(wǎng)關(guān)控制器插接件、若干DB9連接線。
測試方法:圖2為硬件連接圖。依據(jù)圖2連接好網(wǎng)關(guān)控制器、VN1640、電源以及計算機。隨后在CANoe上位機軟件中搭建測試環(huán)境,首先配置CAN通道,與VN1640上的硬件通道相對應(yīng),將各路的DBC文件導(dǎo)入各網(wǎng)段;其次添加并打開兩個Trace窗口,通過過濾器分別觀察源網(wǎng)段和目標(biāo)網(wǎng)段,驅(qū)動外部電源,運行CANoe軟件,開始測試。
在仿真窗口通過DBC模擬各網(wǎng)段的全部報文和信號,對照車型的路由表,測試路由通路以及方向,觀察路由表中各信號和報文是否全部可正常路由至目標(biāo)網(wǎng)段。針對路由測試中的其他測試點,例如數(shù)據(jù)場變化等,則需要通過IG模塊改變信號或報文值。圖3為測試結(jié)果的部分截圖。經(jīng)測試,所有信號和報文能夠按照路由表準(zhǔn)確及時進(jìn)行路由,網(wǎng)關(guān)控制器的路由功能正常。
2.2? 網(wǎng)絡(luò)管理測試
網(wǎng)關(guān)控制器的網(wǎng)絡(luò)管理測試采用自動化進(jìn)行。
硬件環(huán)境:硬件包含待測網(wǎng)關(guān)控制器樣件、維克多VN1640(搭配CANoe軟件,CANoe軟件用來模擬除網(wǎng)關(guān)外其他節(jié)點發(fā)送和接收報文;記錄監(jiān)控總線報文;對網(wǎng)關(guān)進(jìn)行ACK應(yīng)答)、CANstressDR(對總線報文進(jìn)行干擾、對總線實施最大電阻故障等)、程控電源VH1150(可通過測試腳本實現(xiàn)控制輸出電壓,電源通斷、總線故障注入及搭鐵偏移等功能)、若干DB9連接線、樣件插接件以及PC。連接圖如圖4所示。
軟件環(huán)境:打開CANoe軟件,導(dǎo)入測試腳本,并添加DBC文件。
測試方法:勾選測試用例,啟動運行測試腳本。
測試內(nèi)容(圖5):包含初始化測試、邏輯環(huán)測試、睡眠中斷測試、跛行狀態(tài)測試以及睡眠喚醒魯棒性測試。
初始化測試主要驗證網(wǎng)絡(luò)啟動和關(guān)閉時,Alive、Ring和Limphome的報文格式以及時間參數(shù)是否滿足NM標(biāo)準(zhǔn)的要求。
邏輯環(huán)測試主要驗證邏輯環(huán)是否穩(wěn)定和目標(biāo)地址是否正確,建環(huán)后出現(xiàn)節(jié)點跳過、節(jié)點丟失或者新節(jié)點加入時,整個邏輯環(huán)是否滿足NM標(biāo)準(zhǔn)要求。在各種睡眠情況下,網(wǎng)關(guān)的相關(guān)NM報文是否滿足NM標(biāo)準(zhǔn)要求。
睡眠中斷測試主要驗證各種睡眠中斷環(huán)境,網(wǎng)關(guān)的NM報文以及時間參數(shù)是否滿足NM標(biāo)準(zhǔn)。
跛行狀態(tài)測試主要驗證Limphome狀態(tài)時網(wǎng)關(guān)收到網(wǎng)管報文時的狀態(tài)跳變是否滿足NM的標(biāo)準(zhǔn)要求。
睡眠喚醒魯棒性測試主要驗證在頻繁睡眠喚醒或者長時間睡眠情況下,網(wǎng)關(guān)仍然能夠正常睡眠或者喚醒。
由圖6的自動化測試結(jié)果可知,網(wǎng)關(guān)的初始化測試、邏輯環(huán)測試、睡眠中斷測試、跛行狀態(tài)測試以及睡眠喚醒魯棒性測試全部通過,滿足車輛通信要求。
3? 結(jié)論
本文根據(jù)車型開發(fā)需求,設(shè)計了一款多網(wǎng)段式,具有路由、OSEK網(wǎng)絡(luò)管理、診斷等基本功能的網(wǎng)關(guān)控制器。利用手動和自動化方法,主要測試了路由功能和OSEK NM網(wǎng)絡(luò)管理功能,測試結(jié)果表明,網(wǎng)關(guān)滿足車輛通信和安全要求,降低了各網(wǎng)段負(fù)載,減少車輛通信延遲, 增強了車身網(wǎng)絡(luò)的可靠性。
參考文獻(xiàn):
[1] 胡紅兵. 汽車CAN網(wǎng)絡(luò)的應(yīng)用和分析[J]. 海峽科學(xué),2010(12):46-48.
[2] 趙公旗,馮寶存,趙紅玉,等. 淺談車載總線負(fù)載對網(wǎng)絡(luò)傳輸影響及優(yōu)化[J]. 汽車電器,2015(12):22-24.
[3] 王杰. 車載網(wǎng)關(guān)設(shè)計方法及其網(wǎng)絡(luò)管理技術(shù)研究[D]. 哈爾濱:哈爾濱工業(yè)大學(xué),2011.
[4] 袁遠(yuǎn). CAN網(wǎng)絡(luò)通信及實時性研究[D]. 蘭州:蘭州大學(xué),2010.
[5] 陳振威. 基于CAN總線的車載網(wǎng)關(guān)防火墻的研究與優(yōu)化[D]. 廣州:廣東工業(yè)大學(xué),2021.
(編輯? 凌? 波)