作者 |小懶
小編 | 不吃豬頭肉
![df45011e-b763-11ef-8084-92fbcf53809c.png](https://file1.elecfans.com//web3/M00/01/E0/wKgZPGdZOZ6AD1BdAAAG89b1ISU624.png)
SAE J1939協議概述
SAE J1939協議是由美國汽車工程師協會(SAE,Society of Automotive Engineers)定義的一種用于重型車輛和工業設備中的通信協議,主要應用于車輛和設備之間的實時數據交換。J1939基于CAN(Controller Area Network)總線技術,使用29bit的擴展標識符和擴展數據幀,CAN通信速率為250Kbps,用于車載電子控制單元(ECU)之間的通信和控制。小北同學在之前也對J1939協議做過掃盲科普【科普系列】SAE J1939協議解讀。
![df57cbe6-b763-11ef-8084-92fbcf53809c.png](https://file1.elecfans.com//web3/M00/01/E0/wKgZPGdZOZ6ADkgdAABQJKsR6nM762.png)
表 1例如1939-71 文件中定義了一些PGN(參數組),用于描述報文中待發送的參數,以及關于報文優先級和傳輸速率的信息。今天主要聊聊J1939診斷功能。提起車載診斷,想必大家最熟悉的就是UDS(ISO 14229-1)了,通過UDS中定義的服務可以獲取車輛的參數、故障信息等。那J1939協議中又是如何定義的診斷呢?大家可以帶著疑問走進J1939-73一探究竟。
![df7078ee-b763-11ef-8084-92fbcf53809c.png](https://file1.elecfans.com//web3/M00/01/E0/wKgZPGdZOZ6AXIKbAAAItnZDZwM952.png)
J1939-73車輛診斷2.1 J1939-73的基本概念
J1939-73中定義了診斷故障代碼(DTC)、診斷消息(DM)等信息,當車輛存在故障時,需要根據發送的故障相關信息,獲取故障原因并對車輛進行診斷維修。
2.2診斷故障代碼(DTC)
DTC(Diagnostic Trouble Codes)是J1939-73中的核心概念,代表診斷故障代碼,由SPN(Suspect Parameter Number)、FMI (Failure Mode Identifier) 、OC(Occurrence Count)及CM(SPN Conversion Method)四部分組成:
SPN:表示故障發生的具體參數/系統/部件,是一個19位數字;
FMI:表示故障的具體類型/模式,是一個5位數字;
OC:DTC從活動的狀態轉變為先前活動的狀態的次數(先前活動的DTC:故障發生過但當前沒有發生,活動的和先前活動的狀態是互斥的,故障不能既是活動的又是先前活動的狀態);
CM:表示SPN的轉換方式;
![df8c8a02-b763-11ef-8084-92fbcf53809c.png](https://file1.elecfans.com//web3/M00/01/E0/wKgZPGdZOZ6AZTvoAAAqkPyv0Tk552.png)
表 2
例如
油壓預濾器參數,可疑參數數值(SPN=1208) 故障模式標志(FMI)為 3 發生次數(OC)為 10 所有的DTC以Intel格式傳送(最小有效字節優先) SPN 1208 =4B8 =000 00000100 10111000(19 位) FMI 3 =3 =00011(5 位) OC 10 =A =0001010(7 位) 可疑參數編號的轉化方式(CM) =0(1 位)
整體的DTC數據如下圖:
![dfa29b4e-b763-11ef-8084-92fbcf53809c.png](https://file1.elecfans.com//web3/M00/01/E0/wKgZPGdZOZ6AT8VnAABxh-8UQQ0924.png)
圖 1-SAEJ1939-71-2006(來源)
如下圖數據流中DTC為0x10B0209,根據上面介紹的J1939-73協議中定義的DTC格式,可以得知SPN為0x209,FMI為0x0B,CM為0,OC為0x01。有了這些信息則可以根據對應故障碼表格,定位故障。
![dfba70de-b763-11ef-8084-92fbcf53809c.png](https://file1.elecfans.com//web3/M00/01/E0/wKgZPGdZOZ6AHJ2rAAIodyfNMJk453.png)
圖 2-J1939報文
2.3診斷消息(DM)
在J1939-73中還定義了很多診斷信息(DM),由不同的診斷信息(DM)實現了實時故障監控、歷史故障讀取、氧傳感器檢測等功能。下圖為J1939-73中定義的部分DM內容,可以根據自己的需求選擇對應功能的DM。
![dfd56cf4-b763-11ef-8084-92fbcf53809c.png](https://file1.elecfans.com//web3/M00/01/E0/wKgZPGdZOZ-AIgtoAAKHgmS40Eo991.png)
圖 3-SAEJ1939-71-2006(來源)常用到的診斷消息有DM1、DM2和DM3等:
DM1:獲取當前活動故障代碼(包括與排放系統相關的DTC);
DM2:獲取歷史故障和相關的故障代碼;
DM3:清除先前活動的DTC故障數據或復位;
今天主要解讀一下DM1
每當DTC變為活動故障時,就發送DM1消息,此后以1次/s的更新速率傳輸。如果一個不同的DTC在1秒的更新周期內改變了狀態,則傳輸一個新的DM1消息來反映這個新的DTC及指示燈(故障指示燈、紅色停止燈、琥珀色警告燈和保護燈)的狀態。為防止頻率非常高的間歇性故障導致消息率過高,建議每個DTC每秒傳輸的狀態變化不超過1次。DM1相關參數如下:Extended Data Page: 0 Data page: 0 PDU Format: 254 PDU Specific: 202 Default Priority: 6 Parameter Group Number: 65226 (0x00FECA)
![dff24edc-b763-11ef-8084-92fbcf53809c.png](https://file1.elecfans.com//web3/M00/01/E0/wKgZPGdZOZ-AGrewAAGvW-zGNhs696.png)
圖 4-DM1報文結構
當傳輸數據超過8個字節時,需要使用由SAE J1939-21中定義的多包報文傳輸協議進行分包傳輸。如下圖中,當存在5個激活的DTC時,需要傳輸共22個Bytes(DTC共占20個Bytes,加上2個Bytes的故障燈狀態)的數據,拆分為4包數據進行傳輸。通過TP_CM連接報文可知即將傳輸報文的PGN為0xFECA、所有傳輸數據長度為22個Bytes、數據被拆分為4個包。TP_DT傳輸報文中第一個字節表示序列號,Bytes2-7為傳輸的數據內容。如果最后一包數據≤7個Bytes,則可以設置填充位進行填充。
![e01d1fa4-b763-11ef-8084-92fbcf53809c.png](https://file1.elecfans.com//web3/M00/01/E0/wKgZPGdZOZ-AXnOlAAINXroFxFc447.png)
圖 5-多包報文傳輸
![e02a7398-b763-11ef-8084-92fbcf53809c.png](https://file1.elecfans.com//web3/M00/01/E0/wKgZPGdZOZ-AYWK4AAAJpUM_5jM821.png)
J1939診斷應用
CANoe作為一個總線開發與測試工具,可以提供J1939、FMS通用數據庫文件,也集成了J1939的NM、TP以及基于UDS/J1939-73的診斷功能。實現通過DTC監控功能捕獲和分析故障代碼,幫助工程師了解系統問題并進行故障排查。那該如何在CANoe中應用呢?
首先需要根據項目需求,選擇J1939總線,搭建好工程;
接下來可以導入創建好的對應J1939總線的DBC文件;
![e04613a0-b763-11ef-8084-92fbcf53809c.png](https://file1.elecfans.com//web3/M00/01/E0/wKgZPGdZOZ-AeE3eAAKux6ItFeU404.png)
圖 6-J1939 DBC創建
導入DBC文件之后,可以通過IG模塊發送仿真J1939報文,也可以使用CAPL腳本發送J1939報文。
使用IG模塊仿真報文
![e0605530-b763-11ef-8084-92fbcf53809c.png](https://file1.elecfans.com//web3/M00/01/E0/wKgZPGdZOaCAA-zTAAJLwsD579I286.png)
圖 7-CANoe中IG模塊設置
使用CAPL函數發送DM01報文
![e0713a94-b763-11ef-8084-92fbcf53809c.png](https://file1.elecfans.com//web3/M00/01/E0/wKgZPGdZOaCAcZEeAAJxFsbtcLI565.png)
圖 8-CAPL示例及發出報文
![e09f816a-b763-11ef-8084-92fbcf53809c.png](https://file1.elecfans.com//web3/M00/01/E0/wKgZPGdZOaCABjBsAAAH5aqh_qQ398.png)
總結
在當前汽車電子快速發展的背景下,J1939-73協議不僅能夠滿足傳統商用車輛的診斷需求,還可以支持新能源汽車等領域的診斷應用。結合CANoe等專業工具的強大功能,開發人員可以更加高效地進行協議一致性測試、診斷通信驗證等工作。
注:文中部分圖片來源于Vector及SAE 1939-73-2006協議。
-
診斷
+關注
關注
1文章
58瀏覽量
12306 -
J1939
+關注
關注
1文章
11瀏覽量
10706 -
汽車
+關注
關注
13文章
3601瀏覽量
37646
發布評論請先 登錄
相關推薦
基于J1939協議的組合儀表的設計與實現
J1939基礎入門知識分享
基于SAE J1939協議的發動機總線數據模擬器開發設計
SAE J1939協議分析指南
基于SAE J1939協議的車輛網絡通信
![基于SAE <b class='flag-5'>J1939</b>協議的<b class='flag-5'>車輛</b>網絡<b class='flag-5'>通信</b>](https://file1.elecfans.com//web2/M00/A6/03/wKgZomUMO0iAbFm1AAAWDF9lNWU896.jpg)
騰控TG900P控制卡特柴油機實現J1939協議
![騰控TG900P控制卡特柴油機實現<b class='flag-5'>J1939</b>協議](https://file.elecfans.com/web2/M00/49/F8/pYYBAGKhvICAfslgAAA4irF57eE562.png)
CM2880A控制器支持的J1939工業標準消息資料免費下載
![CM2880A控制器支持的<b class='flag-5'>J1939</b>工業<b class='flag-5'>標準</b>消息資料免費下載](https://file.elecfans.com/web1/M00/76/40/pIYBAFv7rCSAOQ0UAAIaHxy11ak390.png)
柴油機動車J1939轉RS232運行數據串口(UART)標準
CAN高層協議J1939的基礎和應用以及開發介紹
![CAN高層協議<b class='flag-5'>J1939</b>的基礎和應用以及開發介紹](https://file.elecfans.com/web1/M00/E9/36/pIYBAGBmhoSAHj_rAAJ1mr64EkU761.jpg)
淺析SAE-J1939與CAN2.0B之間的關系
新功能發布 | TSMaster如何實現J1939多幀報文收發
![新功能發布 | TSMaster如何實現<b class='flag-5'>J1939</b>多幀報文收發](https://file.elecfans.com/web2/M00/40/07/pYYBAGJrUk2AaMaTAAAQONQtdzo461.jpg)
【看點】淺析SAE-J1939與CAN2.0B之間的關系
![【看點】淺析SAE-<b class='flag-5'>J1939</b>與CAN2.0B之間的關系](https://file.elecfans.com/web2/M00/3E/6A/pYYBAGJhBGGAGyDYAACBPQuBZQI711.png)
評論