跳到主要內容

研究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鋰鐵評估:一年半使用心得,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 XC60鋰鐵評估:半年使用報告

這篇文章紀錄半年使用心得,接下來預計每半年追蹤一次,提早掛掉也會誠實面對 沒有遇到無法發動,突然熄火,螢幕突然黑掉等問題 觀測電壓,大多都在以下幾個區域 13.x,一般電壓;放開油門滑行會導引動力到發電機,電壓會稍高 14.x,汽車拉高電壓快速充電 ~15,剛發動會到這個電壓,快速讓電池回充,在一分鐘內會回到14.x。不會長時間處在這個區域(這個區域略為接近鋰鐵電池的充電極限電壓,略有疑慮) 自動起停的反映稍微怪一點,這一篇文章會分析 XC60的發電機需要通電(激磁)後才能發電,所以車子能控制發電機的電壓和電流。下圖是Car scanner的圖片,最重要的是上方的Alternator charge voltage request。車子啟動會短暫拉高電壓,然後就長期在13.6,自動起停做動期間就是10.6 比較怪的是下圖,發電機電壓約14.6v,電流在0A附近上下跳動。 自動起停都不會動 問題的場景和分析 這張圖車子放隔夜,這一趟自動起停無法運作。紀錄如上圖,發電機推14.6v 我猜車子認定電池 快要飽但是還沒飽( SOC=99% or 100% ) 。電腦想把電池充飽,關閉自動起停,沿路推14.6v。開到目的地,車子認定 電瓶充飽了 回去的路上,自動起停就能正確運作,並且發電機只推出13.6v,紀錄如上上圖 放隔夜後,再繼續重複上述的循環 使用半年一切正常,除了上述自動起停的反應稍微怪一點,沒有異狀。我猜XC60只認得鉛電池,也許鋰鐵電池讓XC60很想把電池充飽電。如果有人知道原因,希望能指點迷津一下

VOLVO CARS小電池

VOLVO car配備兩顆電池,主電池負責發動,穩壓;小電池 原則上 和自動起停有關。具體可以參考以下兩個youtube影片 https://www.youtube.com/watch?v=9jRPpLLJ7Qg https://www.youtube.com/watch?v=MtVthWPLa60 影片裡的文字應該是從原廠診斷工具複製貼上出來的,我摘錄一下重點 引擎發動只和主電池有關係 A standstill after start-stop the car is powered only from main 12V battery 小電池(自動啟停電池)只會在自動起停期間,連上0.5秒,避免主電池電壓掉太低,造成大燈變暗,或是音響導航重新開機 Start-stop battery (secondary battery) powers the car only for half second while the main battery starts the engine. It prevents voltage drop during engine start - otherwise lights would dim, audio/navi would restart 小電池在引擎發動後,充電240秒 Start/Stop battery is charged for x seconds after each engine start 汽車有顆繼電器(relay)控制小電池是否連上,車子只監控小電池電池,沒有監控電流 常見的問題是,不使用自動啟停,還需要照顧小電池嗎? 我覺得要 下圖是上路收集的大電池電壓(紅)和小電池電壓(藍)。綠色數線往上爬到240秒,代表小電池充電中,這段時間兩顆電池電壓一致;小電池斷開,藍色電壓逐漸下降;橘框代表行使中小電池會也會連上系統充電(有機會加減充電) 因為橘框裡,小電池會不時連上系統。如果小電池極板根本短路了,一上去就狂抽電拉低全車電壓,什麼怪症狀都來了!我做過這些實驗 我用原廠AGM電池,保養順便換了。用原廠認證的保證沒問題 手癢試了鋰鐵電池,只有自動啟停撐0.5秒,真的沒差。我的電池尺寸還不一樣(矮了點),用起來正常但尺寸不符感覺不舒服。最後我換回原裝貨 聽過車友裝機車9號電瓶也可,尺寸一樣應該沒問題,就是充電比較慢,2...