覃華強,蘇 凱,周志良
(1.上汽通用五菱汽車股份有限公司,廣西 柳州 545007;2.中國汽車技術研究中心有限公司,天津 300300)
隨著汽車電子技術的發展,汽車電子電器架構日趨復雜,從而導致網絡結構越來越復雜,一個網段的車載CAN總線網絡架構已經無法滿足目前車輛功能的需求,需要通過網關連接多個網段的網絡通信,在車載網絡中具有非常重要的作用。在汽車量產之前,網關必須進行嚴格的網絡性能測試,只有測試驗證沒有問題之后才能認可通過,成為量產件。測試工作的嚴謹性重點體現在測試方式上,所以測試模型在測試中便顯得十分重要。
CANoe是德國Vector公司開發的系統級總線軟件開發工具,它能支持總線開發的整個過程,從最初的設計、仿真到最終的分析測試。通過Vector的CAN總線硬件接口卡CANcaseXL/CANcardXL可以實現虛擬總線與物理總線的連接。也可以利用CANoe進行基于全部虛擬節點的全數字總線仿真和物理節點與虛擬節點相結合的半實物仿真,還可以對真實物理總線的通信進行實時監控與分析[2-3]。
基于CANoe的虛擬節點與實物相結合的仿真功能,開發出來的CAN總線網關測試模型主要包含以下幾個部分:①整車網絡所有節點的數據庫 (dbc)文件;② 整車網絡虛擬節點;③ 控制面板;④ 信號發生器;⑤ 結果輸出窗口;⑥ 報文監控窗口。測試模型總體界面如圖1所示。
車載網絡中通信報文欲從源網段傳輸到目標網段,那么兩個網段之間必須要有網關進行轉發。首先,網關需要對源網段上的報文進行篩選,只有篩選出的有效報文才能從源網段轉發到目標網段。網關接收到有效報文之后,按照規定的時間轉發到目標網段。網關在進行報文轉發的過程中,報文不能出現丟失、周期錯誤和信息改變等情況。
綜上所述,CANoe建立的測試模型,需要實時檢測被網關轉發報文的ID、信號值、數據長度和周期,如果發生了變化,網關不應該將產生錯誤的報文轉發至目標網段。同時,測試模型還需要實時監測需要轉發的ID報文在源網段的數目與目標網段上的數目,如果二者數目不一致,則說明網關在轉發報文的時候出現丟幀的情況;對于報文路由的延遲時間情況,網關在源網段接收到需要轉發的報文后,應該在規定時間內將此報文無任何改變地轉發到目標網段上。這就要求仿真模型實時對報文路由時間進行檢測,路由延遲時間超過設定值時,網關測試模型應該在結果輸出界面打印出超時報文的時間戳。每個測試用例測試結束之后,測試模型將整個測試記錄數據和結果保存下來。

圖1 測試模型總體界面
整車網絡通信網段超過兩個時才需要網關進行連接。如本文舉出兩個網段的車載網絡例子,將其中一個網段定義為HS_CAN1,另一個網段定義為HS_CAN2。HS_CAN1網段具有:PCU(動力控制單元)、ABS(防抱死制動系統)和HCU(隨動前照燈控制單元)等電子控制單元;HS_CAN2網段具有:BCM (車身控制模塊)、IC(儀表組合)、ACM(自動空調控制模塊)等電子控制單元。兩個網段的數據交互通過Gateway(網關,簡稱GW)實現,如圖2所示。

圖2 車載網絡通信結構
由于采用虛擬節點相結合的半實物仿真模型測試網關,需要在CANoe中建立虛擬網絡節點。虛擬節點架構如圖3所示。

圖3 虛擬節點架構
通過CAPL ECU和Test Module/TestUnit,CANoe可以往虛擬總線或真實總線上發送報文,CAPL ECU需要使用CAPL語言進行編程生成.can文件,調用發送報文指令output(),使能虛擬節點往虛擬總線發送報文或往真實總線發送報文。在CAPL ECU中也可以使用建立好的dbc文件和內置的IL接口,直接將編寫好的整個ECU的報文發送到總線。Test Module/TestUnit也需要使用CAPL語言進行編程生成.can文件才可以發送報文。如果要人為手動改變發送報文內的信號值,需要借助Panel(控制面板)直接對CAPL ECU和Test Module/TestUnit內的報文信號進行賦值。在CAPL ECU中,如果調用dbc文件和內置IL接口發送報文,可以在信號發生界面對報文信號進行賦值[4-6]。
dbc文件作為CANoe的數據庫,CANoe在接收來自總線的報文時,可根據數據庫內的定義對接收的報文進行解析,CANoe也可以調用dbc文件內的報文信息,進行報文發送。
標準的dbc文件應該包含:節點名稱、節點包含的收發報文、報文ID、報文數據長度、報文信號、報文發送類型和報文發送周期等。由于是雙網段通信結構,建立dbc文件時需要建立兩個dbc文件,建立好的dbc文件如圖4所示。

圖4 dbc文件
控制面板操作實質上是修改系統變量或是環境變量信息的一種手段,控制面板上的按鍵或是信息輸入框均是直接關聯相關變量。操作控制面板就是改變環境變量或信號的數值,修改的變量或信號會觸發虛擬節點設定的對應功能,從而實現控制測試進程的目的。
需要在dbc文件中建立的系統變量有:Message_Lost_Rate;Route_Delay;……
在控制面板界面建立的控制按鈕關聯相應的環境變量有:按鍵Route_Delay關聯系統變量Route_Delay;按鍵Message_Lost_Rate關聯系統變量Message_Lost_Rate。設計效果如圖5所示。

圖5 控制面板界面
環境變量實例。觸發按鍵Route_Delay,會直接觸發路由延遲時間用例的測試,如下所示:
on sysvar//獲取環境變量 (按鍵)狀態
sysvar::Gateway_Tester::Route_Delay
{
if (@sysvar::Gateway_Tester::Route_Delay)
ILControlStart ();//開始測試
else
ILControlStop ();//停止測試
}
虛擬節點的建立包括:網絡虛擬節點的建立和測試節點的建立。網絡虛擬節點的建立就是在Simulation網絡上建立虛擬節點 (即:節點BCM、IC、ACM),虛擬節點可以模擬發出對應真實節點的報文。測試節點 (即:節點CAN1_Test)主要是由.can文件組成,文件中集成了測試網關的所有算法和策略。建立好的虛擬節點結構如圖6所示。

圖6 虛擬節點結構
在對真實網關模塊進行實際測試時,需要將虛擬的Gateway節點進行屏蔽處理,通過硬件CANcase接口接入真實的網關。
信號發生器可以直接給即將發送的報文信號值進行賦值,信號值變化規律可以根據信號發生器內設置的變化類型進行改變,也可以根據用戶自己定義的變化類型進行信號值設置。如圖7所示,報文的所有信號值被設置為隨機數模式。

圖7 信號發生器
監控界面 (即:trace界面)能夠實時監控總線上報文的信息,總線上任意時刻的報文都會顯示在此界面上。監控界面的信息會生成trace文件,以便測試完成后,測試人員對測試中出現的問題進行復查分析。
結果輸出界面 (即:write界面),在輸出界面中可以打印出測試結果,輸出的內容可以保存為.txt文件。在測試模型節點的.can文件中,通過write();函數可以測試結果或者是其他重要提示信息打印的輸出界面中。

圖8 監控與結果輸出界面
目前,在一些較為高端的汽車當中,車載網絡已經擴展到了5路網段。為了滿足轉發報文數目不斷增加的要求,網關的路由報文能力被不斷提高。后續車型設計中,網關還會加入以太網、MOST總線、FlexRay總線和CANFD等,由此,網關測試的重要性會提升一個級別,測試模型也會不斷更新與升級。