今天是2022年6月26日,魔都晴天、燥熱,又是一個奢侈的周末,可睡眠到自然醒。 記錄一些文字,期盼能夠留下時間的印記,在年終復盤有記錄可查。按照習慣,分享一段喜歡的文字,避免自己成為高知識低文化的工程師:“ 人只有知道自己無知后,才能從骨子里謙和起來,不再恃才傲物,不再咄咄逼人。所以說人總是越活越平和,我們稱之為成長,成長就是慢慢的像尊重自己一樣尊重他人,承認自己無知不代表否定自己,而是為了改善自己。” Return to today's topic! 本文主題是DoIP協議時間參數,需要了解幾個背景信息: -> 車載診斷:診斷是Tester發送請求至待測ECU,獲取響應,分析數據,界定產生故障的車身部位和相應信息。伴隨著需求不斷豐富,診斷也囊括了車輛下線配置、Software update等功能; ![]() -> DoIP協議:伴隨著ADAS和智能座艙引入到車輛中,車身總線的帶寬和速度需求不斷提升,傳統的車載CAN總線不能滿足需求,就引入新的車載總線類型——車載以太網。類比如CAN總線傳輸層定義CAN TP,就有了DoIP協議。 DoIP全稱是Diagnostic Over IP,望文知意就是基于IP的診斷協議,主要定義內容: 車輛識別和聲明:識別整個網絡(局域網)都有誰在參與DoIP通信; 路由激活(Routine Activation):通信機制允許單個診斷消息路徑被激活或不區別對待不同的協議(如UDS和OBD),也可以以不同的方式對待單個測試客戶端; 通信網絡節點信息:提供單個DoIP實體的自屬信息。測試工程師使用它獲取DoIP實體當前DoIP協議相關信息; 活動機制:用于維護不同的測試客戶端連接策略。 ![]() 類比機制如上,是AUTOSAR中關于基于以太網診斷通信的數據流走向。 ![]() DoIP協議優勢: 處理大量數據,方便對帶寬要求; 節省ECU重編程時間; 快速接入其他IT設施,應用遠程診斷設備; 標準通信靈活使用策略。 ![]() 車載以太網在車輛診斷應用過程中,會涉及到很多時間參數,用于保證整個通信快速有效進行,時間參數列表如下: ![]() ![]() 1、A_DoIP_Ctrl 應用場景:多個車輛在同一個網絡 在常規條件下,當車輛接入DoIP網絡且IP地址分配完成時,DoIP實體會連續發送3次車輛聲明。 ![]() 等待該時間,匯總入網的所有車輛聲明信息。 ![]() 2、A_DoIP_Announce_Wait 上述時間參數典型應用場景如下: (1)DoIP實體獲取IP地址后,加入網絡成功到發送第一個車輛聲明信息的時間間隔; (2)DoIP實體在收到Tester發送的車輛信息請求(Vehicle information request)后發送車輛信息響應報文的時間間隔長度; 在規范中定義該參數值是0-500ms范圍隨機值,目的是避免所有DoIP實體同時發送車輛聲明報文或車輛信息響應報文,造成網絡堵塞。 3、A_DoIP_Announce_Interval 該事件參數具體如下圖所示: ![]() 該時間參數是三條車輛聲明報文之間的時間間隔,協議推薦值是500ms。 4、A_DoIP_Announce_Num 該參數不是時間參數值,具體是指DoIP實體(邊緣節點)發送車輛聲明報文的次數,協議推薦定義為3次。 5、A_DoIP_Diagnostic_Message 具體參數示意圖如下: ![]() 如上示意圖所示,該參數指DoIP實體(邊緣節點)在接受到診斷報文后,到發送診斷ACK/NACK的時間間隔,含義有二: -> 對DoIP節點來說,是對節點性能的要求,要求DoIP實體在50ms內做出響應; -> 對診斷設備來說,發送完診斷報文后的等待時間,超時時間為2s,超時后仍未收到診斷響應報文的話,應該重復發送該診斷報文。 ![]() 6、T_TCP_General_Inactivity DoIP實體內部管理著一個DoIP連接表(DoIP Connection Table),用于記錄和維護診斷通信的邏輯連接。當一個新的Socket 建立,邏輯連接狀態從“Listen”跳轉到“Socket initialized”,并同時啟動一個定時器:initial inactivity timer 該參數指DoIP節點在收到路由激活報文后,且沒有進行TCP數據交互的情況下,保持TCP連接的最長時間,超時時間為5min,超時后仍沒有任何TCP數據交互的話將關閉TCP連接。 7、T_TCP_Initial_Inactivity 該參數指DoIP實體(可為邊緣節點也可是車內DoIP實體)在建立TCP連接后等待路由激活報文的最長等待時間,協議推薦超時時間為2s,如果2S后仍沒有收到路由激活報文,DoIP節點將關閉TCP連接。 8、T_TCP_Alive_Check 該時間參數指DoIP節點在發送診斷設備在線檢查請求后的等待響應時間,協議推薦值超時時間為500ms,如果超時后未收到相應的響應,則DoIP實體判斷診斷設備已離線,關閉TCP連接。注意,當DoIP節點向TCP socket發送請求失敗時也應該啟動該定時器,意味著診斷設備通信失敗,可能已經離線。 這里分享個趣事,去年在參加一場線上面試時,被考官問過一個問題:Alive Check發送者是什么? ![]() 不是Tester,是DoIP實體。 9、A_Processing_Time 在診斷范疇中,有些UDS診斷請求是不需要診斷響應的(e.g. 肯定響應抑制位被置為TRUE),診斷設備在發送完一個不需要響應的診斷報文后,應等待一段時間再發送下一個診斷請求,給ECU預留一段時間進行處理。A_Processing_Time就是指這個間隔時間。保證整個通信機制正確無誤進行。 ![]() 10、A_Vehicle_Discovery_Timer 該參數是指車上DoIP實體做GID同步的時間,診斷設備只有在收到的車輛信息響應報文或車輛聲明報文中帶有效的 VIN/GID 且 VIN/GID sync. status 為 “incomplete(0x10)”時,啟動該定時器,等待車上的DoIP實體進行GID同步。該定時器超時時間為5s(協議推薦),超時后診斷設備可再次請求車輛信息。 ![]() 上述時間參數是DoIP通信過程中所用的時間參數(次數),是為了保證協議通信一致性和有效性。有的是超時處理、間隔時間處理等。在做DoIP模塊功能實現或者測試時需要注意這方面的要求。 ![]() ----------------------------------- 作者簡介 | 穿拖鞋的漢子 汽車電子工程師 |
|