01
故障現象
一臺Manitou工程機械,客戶反饋DEF(柴油機尾氣處理液)油箱即使加注到無法再加的狀態,設備仍顯示DEF 液位為空,系統中還存有故障代碼。由于這個DEF液位過低提示,整臺機器的功率被自動降低,嚴重影響了正常作業。
面對這種情況,傳統維修思路通常是直接更換液位傳感器。但這個部件的價格高達上萬元,如果診斷錯誤就會造成巨大損失。更關鍵的是,如何確保更換昂貴的部件真的能解決問題?
為此,我們將使用虹科Pico汽車示波器測量相關波形,排查故障的真正原因。
02
故障診斷
診斷思路確定
參考DEF液位傳感器工作原理手冊(如需源文件,可添加助教獲取),DEF液位傳感器的液位數據通過CAN總線傳輸,遵循J1939標準,沒有終端電阻,標準傳輸速率為250 kbit/s。
PicoScope 7 中自帶的J1939譯碼功能,可以幫助我們翻譯和分析CAN總線上的數據,并借助PGN(參數組編號)和ID進行過濾。
根據技術文檔,液位傳感器使用的ID3是0xA3。ID3(source address)即指CAN J1939的ID源地址。有了這個關鍵信息,我們就可以使用譯碼功能來捕獲和分析相關數據。
注:文檔中的傳感器和Manitou上搭載的并不是同款,但J1939標準的DEF液位相關信息具有通用性。
總線譯碼與過濾
首先使用虹科Pico汽車示波器,采集到DEF液位傳感器所在的CAN總線的信號,并利用串行譯碼功能進行J1939協議譯碼。譯碼結果如圖1所示:

圖1 J1939協議譯碼結果
如圖2,接下來進行過濾。通過添加ID3為0xA3的過濾器,我們就可以去除我們不感興趣的數據,方法如下:
1.點擊譯碼結果上方的【添加過濾】按鈕,選擇您想要過濾的參數。
2.選擇【ID3】過濾。
3.操作符選擇默認的【包含】。
4.參數輸入【A3】,即你希望軟件篩選的內容,點擊【添加】。

圖2 添加ID3為0xA3的過濾器
如圖3,現在我們就排除了所有無關的數據,只關注液位傳感器發送的信息即可。

圖3 過濾后的數據
通過過濾,我們很快就發現,數據中包含多個不同的ID2(PGN),即參數組編號。如圖4,參考技術文檔,我們找到了液位相關的PGN編號。

圖4 技術文檔中液位傳感器相關的PGN編號
接下來,我們添加第二個過濾器,按PGN進行過濾。
根據之前的技術資料,PGN是CAN消息ID中間的2個字節。在我們的案例中,FE56就是我們要找的液位PGN。

圖5 過濾出ID2(PGN)為FE56的數據
經過兩層過濾后,只剩下2條報文了,現在處理起來就會輕松很多。
數據轉化與分析
根據技術文檔的說明,DEF液位百分比信息從第0個字節開始,占用8位(即1個字節)。在我們采集的數據中,第一個數據包的這個字節值是11(十六進制)。將十六進制的11轉換成十進制,得到17。
但這并不是最終的液位百分比,需要根據技術文檔提供的轉換公式進行計算。文檔顯示,轉換需應用0.4的縮放因子(圖4),沒有偏移量。
即DEF相對于油箱總容量的百分比為:
17 × 0.4 = 6.8%
但這里出現了一個問題:這個6.8%到底表示油箱實際油量占比,還是表示油箱剩余空間占比?考慮到儀表盤顯示液位為空,我們可以推測百分比越低,液位就越低。為了驗證這個推測,我們還需要分析物理液位傳感器的數據。
物理液位測量可以通過多種方式實現,比如超聲波或浮子式來測量油箱底部到液面的高度。由于我們不確定Manitou使用的是哪種方式,所以我們將根據技術文檔中的信息進行計算,以進一步驗證。
如圖6,根據文檔中的信息,物理液位數據的位長度是16位(2個字節),起始位的位置是16。

圖6 技術文檔中的相關資料
圖7展示了總線數據中,前兩個字節的位位置(bit position)分配方式。物理液位數據的起始位置是16,這就意味著我們需要使用第3和第4個字節的數據,其排布的邏輯和前兩位也是相同的。

圖7 位位置的分配方式
在我們的數據中,第3和第4字節是55 0F。根據J1939標準,我們需要將字節順序翻轉,變成0F 55,然后將其轉換為十進制。即0F55 = 3925。再應用技術文檔中的0.1縮放因子(圖6),可以得到:
3925 × 0.1 = 392.5mm
驗證與對比
這個392.5mm(約40厘米)的讀數,是油箱底部到液面的距離,還是液面到油箱頂部的距離呢?已知故障機器的油箱是滿的,無論這個40cm指向哪一種情況,其實都說明了這個傳感器組件存在故障——這個是數據無論如何,都是錯的。
但我們是否還能收集更多證據來證明這一點?有沒有辦法確定這個40cm究竟指向什么?
有的,方法也很簡單,找一臺正常的設備進行驗證即可。
于是我們找到了一臺,沒有故障且DEF油箱在儀表盤上顯示為滿的機器。捕捉到其CAN總線數據,并使用同樣的方法進行譯碼、過濾和計算:
第一個字節的十六進制值是FA。使用相同的轉換方法:0xFA = 250(十進制),250 × 0.4 = 100%。很顯然,這表明這個數值指向的是油箱實際油量占比。當然這也驗證了,我們的轉換方法是正確的。
對于物理液位數據,正常機器顯示的是4B 00,翻轉后變成004B,轉換為十進制是75,再乘以0.1得到7.5mm。顯然,這指向的是液面到油箱頂部的距離。

圖8 正常機器的相關波形與譯碼結果
03
故障排除
通過一系列的數據分析和對比,我們有充分的證據證明:故障機器的液位傳感器讀數確實是錯誤的。基于這個準確的診斷結果,我們更換了液位傳感器,故障未再出現,故障解決!
04
案例總結
隨著總線的應用越來越廣、愈來愈深,如今很多傳感器的詳細數據已無法直接讀取,如:微塵傳感器、液位傳感器等。
而通過總線譯碼,對照傳感器相關技術文檔,我們就可以破譯這些隱藏的信息,將電壓信號轉化為可以直接讀取的物理量,進一步識別潛在的問題,實現精準維修!
-
傳感器
+關注
關注
2576文章
55028瀏覽量
791223 -
CAN總線
+關注
關注
145文章
2043瀏覽量
135212 -
DEF
+關注
關注
0文章
14瀏覽量
6595 -
虹科電子
+關注
關注
0文章
759瀏覽量
15297
發布評論請先 登錄
J1939基礎入門知識分享
基于J1939的汽車CAN總線教學實驗系統
基于SAE J1939協議的車輛網絡通信
基于LabVIEW和J1939協議的CAN總線通訊平臺開發
CAN高層協議J1939的基礎和應用以及開發介紹
基于恩智浦MPC5744P的SAE J1939協議棧開發
虹科工程機械診斷 | CAN總線J1939協議譯碼與分析:Manitou DEF 液位傳感器
評論