跳到主要內容

研究VOLVO的PIDs (3):UDS通訊協定超簡介

引言

這篇繼續聊怎麼讀電瓶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,安全門打開,然後就能動內部參數了

改晶片有幾個難度,是個專業活
  1. 上述的亂碼計算公式只有車廠知道,另外安全門可能不只一道,需要逐一開啟
  2. 進了安全門,還要知道內部結構,知道表格放在哪裡
  3. 最後還需要引擎的專業知識,才動得了這些參數
看完這段大概還是不會改晶片,不過起碼大概知道怎麼回事(哈),另外他們的通訊協定都是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

留言

這個網誌中的熱門文章

VOLVO XC60鋰鐵評估:電池的修整(Recondition)分析

這一篇要回答 前一篇 的問題,歡迎交流(畢竟我也只能觀測自己的車) 結論放前面 XC60 2017裝上鋰鐵電池,每次放隔夜會認定BMS Sensor不可靠,試圖修整(recondition)電池,試圖充飽電,此時自動起停無法運作;等電池充飽,熄火放一下等車子認定BMS sensor可靠就一切正常,電壓在13.x自動起停能運作;但是放隔夜又會再度循環 一般車子每年對電池修整數次,確保BMS Sensor追蹤的SOC有效;修整期間會充電到14.8v附近,大概是一節鋰鐵3.7v,每次放隔夜都修整電池不至於弄壞電池,但讓人不大舒服就是 再來解釋原因 裝鋰鐵電池,可能電壓比預期高,導致放一晚車子判定BMS Sensor Reliable = 0。既然BMS sensor不可靠,發動汽車會對電池做recondition(原裝診斷工具術語,修整)。以下有三個場景,我們看一下VOLVO car的行為 BMS不可靠,SOC=90啟動 BMS不可靠,SOC=100啟動 BMS可靠,啟動 BMS不可靠,SOC=90啟動 發動後,CEM向發電機要了15.4v;鋰鐵吃下大電流同時電壓緩緩上升。電池摸到14.8v附近,發電機目標電壓也逐漸下降,完成recondition 下圖當電池電壓(綠線)上升到14.8v附近,發電機電壓(紅線)就快速的下降 BMS不可靠,SOC=100%啟動 一樣是BMS sensor不可靠,一發動就要了15.2v。因為電池本來就滿電,電壓很快就升高到14.8v附近,連帶使發電機降壓,收斂在14.6v,完成recondition 一樣把發電機電壓(紅線)和電池電壓(綠線)畫一起,彼此的關聯更清楚 BMS可靠,啟動 最後一張圖,BMS可靠,在正常運作下,電壓操作點約13.6v;裡面還附帶Break Energy Regeneration(電池電壓13.8v)以及Auto Start/Stop作動 結論 發動時BMS Sensor Reliable = 0就會做修整,把電池充飽電。充飽後鎖定放一下,汽車重新判定BMS Sensor Reliable = 1再發動,電壓會在13.x浮動 修整期間,極限14.8v大概是每節電池3.7v,離極限電壓4.2v還有點距離 VOLVO的電池控制花了不少功夫,用鋰鐵需要調一些參數,真希望原廠能支援啊!...

VOLVO XC60鋰鐵評估:一年半使用心得,BMS reset

大概半年前,我發現車子自動啟停都不會動,選單點進去說電池充電中。試了很多招,最後照著以下影片歸零BMS,一切就正常了 重置VOLVO BMS VOLVO car很依賴健康的電池,在電池負極放了Battery Management Sensor監控電池狀態。大宗的指標像是電池,電壓,還有使用時間,會影響充電策略;比如換了新電池沒有重置,據說容易因為電壓過高弄壞電池(大概認為老電池需要更高的電壓充電) 不過我換的是鋰鐵電池,鉛電池一切充電策略根本沒意義。所以BMS reset完的操作點如果是我們要的,那就重置吧 本來 車子放隔夜 ,一上路會因為BMS sensor不可靠做電池recondition,把電瓶充得飽飽飽14.8v;等之後BMS可靠了,鬆開油門滑行(車子覺得可以藉機充電),就很容易噴出高壓15v(電瓶吃飽了) 現在發動前我會順手BMS reset,熟練10秒就弄完;重置完瞬間BMS sensor就是可靠的,正好閃過上次遇到的問題;另外電池沒吃飽,鬆開油門滑行,電瓶也有餘裕吃下額外電力 寫到這裡也很有趣,本來我設計 VOLVO+ 是要讓自動啟停預設關閉,換上鋰鐵電池倒是花了不少功夫讓自動啟停恢復正常😂 也許VOLVO+下個功能功能是汽車發動後,自動做BMS reset,作為改裝鋰鐵電池的配菜

研究VOLVO的PIDs (5):ELM327界的賓士

前言,椅子界的賓士 十年前和同事去辦公椅專門店,Herman Millar經典的Aeron Chair最合我胃口,只是報價35K嚇得我吃吃手,同事這麼勸敗的 你可能買不起賓士,但是椅子界的賓士還是沒問題的 Aeron非常耐用,十年來沒有任何零件鬆脫。每天支撐我的背,工作一整天忘了它的存在。好的工具解決問題,同時不產生新的問題。如果您要找張辦公椅,那真的值得去試坐看看 ELM327界的賓士:OBDLink MX+ 接下來我們聊一下,為什麼 OBDLink MX+ 堪稱ELM327的王者 原因1:他賣得很貴 沒牌子賣10塊美金,Vgate賣20塊美金,OBDLink MX+要賣120美金!所以要問,貴是不是貴得有道理 原因2:通吃Android/ iOS OBDLink MX+同時支援Android/ iPhone都能用,下足苦功和$$搞MFI認證真的不容易 OBDLink MX+支援SPP(Serial Port Profile),這是藍芽標準介面,全世界的ELM327都走這條路,可惜蘋果不能用(故意的)。蘋果的周邊要過 MFI 認證,支援iAP2 Profile,這條錢可能認證花一次,甚至每個硬體都要再付,基本上是蘋果稅的概念(微軟也有類似的稅)。一般iPhone可以用WiFi版繞過去,但先前我測vgate WiFi版也有相容性不好的症狀,品質未必可靠 原因3:安全性好,有一顆實體的連接按鈕 大多數ELM327配對的密碼是1234,任何人都能連;OBDLink MX+有顆實體的按鈕,要按下才能連線,避免不明人士惡搞 原因4:支援MS-CAN,SW-CAN OBDLink MX+支援MS-CAN(VOLVO/Ford車都有),SW-CAN(賓士車有),可以和車上更多的ECU裝置溝通.我正是看到Car Scanner Pro跑出一堆MS-CAN的PID才決定狠下心買一顆(好貴啊!) 原因5:免費軟體更新服務 OBDLink MX+提供 韌體更新 ,代表廠商持續修補錯誤,提供服務。假如iPhone某一版突然修改通訊協定,有韌體更新才能持續修補軟體;某道ELM327的指令有bug,也可以快速的修正 原因6:支持車廠專屬的Code OBDLink+ MX+ 專屬的APP 提供 車廠專屬的PID ,只有最高階的MX+才有。這些內碼大概都從車廠專屬的診斷工具, 逆向工程 弄出來,...