曹 俊, 萬志云, 夏永強, 張 懿, 熊世文
(江鈴汽車股份有限公司, 江西 南昌 330001)
智能網聯汽車時代來臨,汽車電氣化的程度將會越來越高,整車功能交互也將更加密集[1],導致通信矩陣及DBC設計形式的多樣,對于跨網段的信號之間的交互需要通過信號路由,因而網關路由表的設計也將越來越復雜。由于人工編輯的網關路由表容易出錯導致開發的網關軟件功能失效故障,而自動生成網關路由表可極高保證網關路由表的準確性。
DBC (Database Can) 表示 CAN的數據庫文件中的一種文件格式[2],DBC文件詳細定義了CAN通信矩陣的信息,包含網絡節點、數據類型、精度、偏移以及數據枚舉量等[3]。該文件可用于指導各ECU控制模塊CAN通信網絡的開發。DBC文件內容主要可分為8部分信息:版本與符號、波特率定義、網絡節點的定義、報文幀的定義、信號的定義、注解部分、屬性定義部分、信號數值部分[4-5]。DBC文件展示及說明如圖1、圖2所示。

圖1 DBC文件展示及說明1

圖2 DBC文件展示及說明2
網絡節點的定義部分展示當前DBC的所有節點及名稱;報文幀定義包含報文名稱、報文ID、數據長度以及發送節點;信號定義包含信號名稱、起始位、長度、數據格式(Motorola、Inter)、精度、偏移、最大值、最小值、單位以及接收節點;注解部分是對信號、報文、版本等的說明信息;屬性定義各參數的缺省、默認以及初始值;信號數值部分列出了信號的枚舉量。
基于DBC的詳解,發現網關路由表只要獲取各網段DBC中信號的發送節點為網關,以及信號的接收節點為網關進行分析處理,即可通過軟件生成網關路由表。
網關路由表匹配原則是對各網段信號網關發送及接收的信號名稱進行匹配,當信號名稱相同時 (信號名稱-區分大小寫),即路由成立,方案設計詳述如下。
1) 獲取源網段網關發送信號及接收信號。
2) 獲取目標網段 (目標網段可以是多個) 網關發送信號及接收信號。
3) 基于源網段網關的的發送信號,逐一與目標網段網關接收信號進行比對,當相同時,即找到路由關系 (存在同時匹配多個網段);當無任何網段能匹配時,即無路由關系;并記錄匹配關系及結果。
4) 反查網關接收信號,遍歷所有網段網關,當存在未匹配成功,即表示此信號路由出錯,無源網段發送。
對匹配關系逐一生成路由表:①目標網段某一報文ID所有信號均來自同一源網段某一報文ID,生成報文路由。若起始位、長度、精度、偏移存在差異時,生成報文路由的同時報出警告。②目標網段某一報文ID信號來自同一源段的不同報文ID,生成信號路由。若長度、精度、偏移存在差異時,報出警告。③對于所有網段網關的發送及接收信號,未匹配成功的,逐一進行報錯。
基于Qt5.10.0對該工具進行開發,軟件主要包括3部分,分別為界面模塊、DBC文件解析及邏輯判斷模塊、xls處理模塊。不同模塊功能描述如下。
1) 界面模塊:主要針對用戶,給用戶提供可視化操作界面,用于選擇需要轉換的項目;同時串聯其他模塊,串聯整體數據流程。
2) DBC文件解析及邏輯判斷模塊:主要用于對DBC文件的解析,提取各網段的收、發信號,及信號所有屬性 (起始位、長度、精度等信息);對兩網段之間的報文往來邏輯進行判斷,提取出兩網段之間的路由關系。
3) xls處理模塊:主要用于將已提取出的路由關系分sheet形式寫入文件中。
該軟件的整體設計UML如圖3所示。

圖3 軟件UML設計圖
基于某項目軟件開發的信號矩陣DBC文件,BCAN_DBC_0311.dbc及PTCAN_DBC_0311.dbc生成的網關路由表及分析如圖4、圖5所示,使用VectorCANdb++打開DBC查看網關的發送及接收如圖6所示。

圖5 PTCAN路由BCAN網關路由表

圖6 BCAN及PTCAN網關展示圖
BCAN路由PTCAN路由表:含1幀報文路由、2個信號名稱錯誤EMS_BatterVoltage及Ems_Fuelcounter、1幀網關發出的網絡管理報文屬于正常、以及信號路由報文的校驗由網關計算發出屬正常。PTCAN路由BCAN路由表:含1幀報文路由、1幀信號路由、2 個信號名稱錯誤EMS_BatteryVoltage 及EMS_BatteryVoltage。經過生成的網關路由表及DBC原文件分析核對,以及網關路由表報錯反校核,充分驗證了工具的準確性。
準確的網關路由表是網關軟件開發的關鍵,開發一種自動生成網關路由表工具有效地解決手工編輯網關路由表出錯問題,并通過案例分析驗證該工具的可行性。結果表明:該工具自動生成的網關路由表正確,同時也能檢查出DBC中的信號描述問題,此工具操作簡單,實用性強、可靠性高。