曹 俊, 萬志云, 夏永強, 張 懿, 熊世文
(江鈴汽車股份有限公司, 江西 南昌 330001)
智能網(wǎng)聯(lián)汽車時代來臨,汽車電氣化的程度將會越來越高,整車功能交互也將更加密集[1],導(dǎo)致通信矩陣及DBC設(shè)計形式的多樣,對于跨網(wǎng)段的信號之間的交互需要通過信號路由,因而網(wǎng)關(guān)路由表的設(shè)計也將越來越復(fù)雜。由于人工編輯的網(wǎng)關(guān)路由表容易出錯導(dǎo)致開發(fā)的網(wǎng)關(guān)軟件功能失效故障,而自動生成網(wǎng)關(guān)路由表可極高保證網(wǎng)關(guān)路由表的準(zhǔn)確性。
DBC (Database Can) 表示 CAN的數(shù)據(jù)庫文件中的一種文件格式[2],DBC文件詳細定義了CAN通信矩陣的信息,包含網(wǎng)絡(luò)節(jié)點、數(shù)據(jù)類型、精度、偏移以及數(shù)據(jù)枚舉量等[3]。該文件可用于指導(dǎo)各ECU控制模塊CAN通信網(wǎng)絡(luò)的開發(fā)。DBC文件內(nèi)容主要可分為8部分信息:版本與符號、波特率定義、網(wǎng)絡(luò)節(jié)點的定義、報文幀的定義、信號的定義、注解部分、屬性定義部分、信號數(shù)值部分[4-5]。DBC文件展示及說明如圖1、圖2所示。
圖1 DBC文件展示及說明1
圖2 DBC文件展示及說明2
網(wǎng)絡(luò)節(jié)點的定義部分展示當(dāng)前DBC的所有節(jié)點及名稱;報文幀定義包含報文名稱、報文ID、數(shù)據(jù)長度以及發(fā)送節(jié)點;信號定義包含信號名稱、起始位、長度、數(shù)據(jù)格式(Motorola、Inter)、精度、偏移、最大值、最小值、單位以及接收節(jié)點;注解部分是對信號、報文、版本等的說明信息;屬性定義各參數(shù)的缺省、默認以及初始值;信號數(shù)值部分列出了信號的枚舉量。
基于DBC的詳解,發(fā)現(xiàn)網(wǎng)關(guān)路由表只要獲取各網(wǎng)段DBC中信號的發(fā)送節(jié)點為網(wǎng)關(guān),以及信號的接收節(jié)點為網(wǎng)關(guān)進行分析處理,即可通過軟件生成網(wǎng)關(guān)路由表。
網(wǎng)關(guān)路由表匹配原則是對各網(wǎng)段信號網(wǎng)關(guān)發(fā)送及接收的信號名稱進行匹配,當(dāng)信號名稱相同時 (信號名稱-區(qū)分大小寫),即路由成立,方案設(shè)計詳述如下。
1) 獲取源網(wǎng)段網(wǎng)關(guān)發(fā)送信號及接收信號。
2) 獲取目標(biāo)網(wǎng)段 (目標(biāo)網(wǎng)段可以是多個) 網(wǎng)關(guān)發(fā)送信號及接收信號。
3) 基于源網(wǎng)段網(wǎng)關(guān)的的發(fā)送信號,逐一與目標(biāo)網(wǎng)段網(wǎng)關(guān)接收信號進行比對,當(dāng)相同時,即找到路由關(guān)系 (存在同時匹配多個網(wǎng)段);當(dāng)無任何網(wǎng)段能匹配時,即無路由關(guān)系;并記錄匹配關(guān)系及結(jié)果。
4) 反查網(wǎng)關(guān)接收信號,遍歷所有網(wǎng)段網(wǎng)關(guān),當(dāng)存在未匹配成功,即表示此信號路由出錯,無源網(wǎng)段發(fā)送。
對匹配關(guān)系逐一生成路由表:①目標(biāo)網(wǎng)段某一報文ID所有信號均來自同一源網(wǎng)段某一報文ID,生成報文路由。若起始位、長度、精度、偏移存在差異時,生成報文路由的同時報出警告。②目標(biāo)網(wǎng)段某一報文ID信號來自同一源段的不同報文ID,生成信號路由。若長度、精度、偏移存在差異時,報出警告。③對于所有網(wǎng)段網(wǎng)關(guān)的發(fā)送及接收信號,未匹配成功的,逐一進行報錯。
基于Qt5.10.0對該工具進行開發(fā),軟件主要包括3部分,分別為界面模塊、DBC文件解析及邏輯判斷模塊、xls處理模塊。不同模塊功能描述如下。
1) 界面模塊:主要針對用戶,給用戶提供可視化操作界面,用于選擇需要轉(zhuǎn)換的項目;同時串聯(lián)其他模塊,串聯(lián)整體數(shù)據(jù)流程。
2) DBC文件解析及邏輯判斷模塊:主要用于對DBC文件的解析,提取各網(wǎng)段的收、發(fā)信號,及信號所有屬性 (起始位、長度、精度等信息);對兩網(wǎng)段之間的報文往來邏輯進行判斷,提取出兩網(wǎng)段之間的路由關(guān)系。
3) xls處理模塊:主要用于將已提取出的路由關(guān)系分sheet形式寫入文件中。
該軟件的整體設(shè)計UML如圖3所示。
圖3 軟件UML設(shè)計圖
基于某項目軟件開發(fā)的信號矩陣DBC文件,BCAN_DBC_0311.dbc及PTCAN_DBC_0311.dbc生成的網(wǎng)關(guān)路由表及分析如圖4、圖5所示,使用VectorCANdb++打開DBC查看網(wǎng)關(guān)的發(fā)送及接收如圖6所示。
圖5 PTCAN路由BCAN網(wǎng)關(guān)路由表
圖6 BCAN及PTCAN網(wǎng)關(guān)展示圖
BCAN路由PTCAN路由表:含1幀報文路由、2個信號名稱錯誤EMS_BatterVoltage及Ems_Fuelcounter、1幀網(wǎng)關(guān)發(fā)出的網(wǎng)絡(luò)管理報文屬于正常、以及信號路由報文的校驗由網(wǎng)關(guān)計算發(fā)出屬正常。PTCAN路由BCAN路由表:含1幀報文路由、1幀信號路由、2 個信號名稱錯誤EMS_BatteryVoltage 及EMS_BatteryVoltage。經(jīng)過生成的網(wǎng)關(guān)路由表及DBC原文件分析核對,以及網(wǎng)關(guān)路由表報錯反校核,充分驗證了工具的準(zhǔn)確性。
準(zhǔn)確的網(wǎng)關(guān)路由表是網(wǎng)關(guān)軟件開發(fā)的關(guān)鍵,開發(fā)一種自動生成網(wǎng)關(guān)路由表工具有效地解決手工編輯網(wǎng)關(guān)路由表出錯問題,并通過案例分析驗證該工具的可行性。結(jié)果表明:該工具自動生成的網(wǎng)關(guān)路由表正確,同時也能檢查出DBC中的信號描述問題,此工具操作簡單,實用性強、可靠性高。