引言
這篇繼續聊怎麼讀電瓶SOC,224028。讀完以後,您會知道汽車ECU通訊的UDS大概是什麼,以及224028其實是22 + 4028
從改晶片開始聊UDS
請參考下圖,UDS是汽車ECU通訊的標準介面,VOLVO也採用
- UDS的標準的ID組合
- 0x726(發送請求)/ 0x72E(ECU回應)
- UDS定義很多標準服務,比如最有趣的Security Access Service,0x27,安全門,很複雜
- 工具發送0x27給車子,序號01,我要打開安全門
- 汽車回應0x67,序號01,附贈一把鑰匙2B466E(隨機計算)
- 工具發送0x27,序號02,回應一把鑰匙5FC105(根據2B466E計算出來)
- 汽車回應0x67,序號02,安全門打開,然後就能動內部參數了
改晶片有幾個難度,是個專業活
- 上述的亂碼計算公式只有車廠知道,另外安全門可能不只一道,需要逐一開啟
- 進了安全門,還要知道內部結構,知道表格放在哪裡
- 最後還需要引擎的專業知識,才動得了這些參數
看完這段大概還是不會改晶片,不過起碼大概知道怎麼回事(哈),另外他們的通訊協定都是UDS,以下有更多連結可以看
回來聊讀電瓶SOC
這次透過UDS來看這組封包
BEFORE
- ID=0x726 0322402800000000
- ID=0x72E 0462402861000000 // 有反應了!0x61 = 97%
AFTER
- REQUEST ID = 0x726, DATA=[03]224028
- ID = 0x726(標準UDS request ID)
- LEN = 03(3 byte有效)
- SERVICE = 22(Read Data)
- Data ID = 4028(電瓶SOC的DID本體)
- RESPONSE ID = 0x72E, DATA=[04]62402861
- ID = 0x72E(標準UDS response ID)
- LEN = 04 (4byte有效)
- SERVICE = 62(Read Data的回應)
- DID = 4028(DID=4028,電瓶SOC)
- DATA=0x61=97%(電瓶SOC)
這時候回去看我的筆記,就會發現
- 多個ID都有UDS服務,各自負責不同功能{0x720,0x726,0x7E0}
- 逆向工程Car Scanner時,發現VOLVO和福特的ID很像
- 請求都是22開頭(Request: Read data by ID),224028其實應該是22 + 4028
- 回應都是62開頭(Response: Read data by ID),然後會重複一次4028,最後才是回應
- 乍看之下這樣溝通效率很差,但就是可靠,能驗證這筆資料回應的是什麼
- 理論上可以寫個程式,暴力搜尋所有DID編號
結論
寫了三篇還是在讀電瓶SOC,難怪都沒人按讚 XD
留言
張貼留言