作者 |小懶
小編 | 不吃豬頭肉

SAE J1939協(xié)議概述
SAE J1939協(xié)議是由美國(guó)汽車工程師協(xié)會(huì)(SAE,Society of Automotive Engineers)定義的一種用于重型車輛和工業(yè)設(shè)備中的通信協(xié)議,主要應(yīng)用于車輛和設(shè)備之間的實(shí)時(shí)數(shù)據(jù)交換。J1939基于CAN(Controller Area Network)總線技術(shù),使用29bit的擴(kuò)展標(biāo)識(shí)符和擴(kuò)展數(shù)據(jù)幀,CAN通信速率為250Kbps,用于車載電子控制單元(ECU)之間的通信和控制。小北同學(xué)在之前也對(duì)J1939協(xié)議做過(guò)掃盲科普【科普系列】SAE J1939協(xié)議解讀。

表 1例如1939-71 文件中定義了一些PGN(參數(shù)組),用于描述報(bào)文中待發(fā)送的參數(shù),以及關(guān)于報(bào)文優(yōu)先級(jí)和傳輸速率的信息。今天主要聊聊J1939診斷功能。提起車載診斷,想必大家最熟悉的就是UDS(ISO 14229-1)了,通過(guò)UDS中定義的服務(wù)可以獲取車輛的參數(shù)、故障信息等。那J1939協(xié)議中又是如何定義的診斷呢?大家可以帶著疑問(wèn)走進(jìn)J1939-73一探究竟。

J1939-73車輛診斷2.1 J1939-73的基本概念
J1939-73中定義了診斷故障代碼(DTC)、診斷消息(DM)等信息,當(dāng)車輛存在故障時(shí),需要根據(jù)發(fā)送的故障相關(guān)信息,獲取故障原因并對(duì)車輛進(jìn)行診斷維修。
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:表示故障發(fā)生的具體參數(shù)/系統(tǒng)/部件,是一個(gè)19位數(shù)字;
FMI:表示故障的具體類型/模式,是一個(gè)5位數(shù)字;
OC:DTC從活動(dòng)的狀態(tài)轉(zhuǎn)變?yōu)橄惹盎顒?dòng)的狀態(tài)的次數(shù)(先前活動(dòng)的DTC:故障發(fā)生過(guò)但當(dāng)前沒(méi)有發(fā)生,活動(dòng)的和先前活動(dòng)的狀態(tài)是互斥的,故障不能既是活動(dòng)的又是先前活動(dòng)的狀態(tài));
CM:表示SPN的轉(zhuǎn)換方式;

表 2
例如
油壓預(yù)濾器參數(shù),可疑參數(shù)數(shù)值(SPN=1208) 故障模式標(biāo)志(FMI)為 3 發(fā)生次數(shù)(OC)為 10 所有的DTC以Intel格式傳送(最小有效字節(jié)優(yōu)先) SPN 1208 =4B8 =000 00000100 10111000(19 位) FMI 3 =3 =00011(5 位) OC 10 =A =0001010(7 位) 可疑參數(shù)編號(hào)的轉(zhuǎn)化方式(CM) =0(1 位)
整體的DTC數(shù)據(jù)如下圖:

圖 1-SAEJ1939-71-2006(來(lái)源)
如下圖數(shù)據(jù)流中DTC為0x10B0209,根據(jù)上面介紹的J1939-73協(xié)議中定義的DTC格式,可以得知SPN為0x209,F(xiàn)MI為0x0B,CM為0,OC為0x01。有了這些信息則可以根據(jù)對(duì)應(yīng)故障碼表格,定位故障。

圖 2-J1939報(bào)文
2.3診斷消息(DM)
在J1939-73中還定義了很多診斷信息(DM),由不同的診斷信息(DM)實(shí)現(xiàn)了實(shí)時(shí)故障監(jiān)控、歷史故障讀取、氧傳感器檢測(cè)等功能。下圖為J1939-73中定義的部分DM內(nèi)容,可以根據(jù)自己的需求選擇對(duì)應(yīng)功能的DM。

圖 3-SAEJ1939-71-2006(來(lái)源)常用到的診斷消息有DM1、DM2和DM3等:
DM1:獲取當(dāng)前活動(dòng)故障代碼(包括與排放系統(tǒng)相關(guān)的DTC);
DM2:獲取歷史故障和相關(guān)的故障代碼;
DM3:清除先前活動(dòng)的DTC故障數(shù)據(jù)或復(fù)位;
今天主要解讀一下DM1
每當(dāng)DTC變?yōu)榛顒?dòng)故障時(shí),就發(fā)送DM1消息,此后以1次/s的更新速率傳輸。如果一個(gè)不同的DTC在1秒的更新周期內(nèi)改變了狀態(tài),則傳輸一個(gè)新的DM1消息來(lái)反映這個(gè)新的DTC及指示燈(故障指示燈、紅色停止燈、琥珀色警告燈和保護(hù)燈)的狀態(tài)。為防止頻率非常高的間歇性故障導(dǎo)致消息率過(guò)高,建議每個(gè)DTC每秒傳輸?shù)臓顟B(tài)變化不超過(guò)1次。DM1相關(guān)參數(shù)如下:Extended Data Page: 0 Data page: 0 PDU Format: 254 PDU Specific: 202 Default Priority: 6 Parameter Group Number: 65226 (0x00FECA)

圖 4-DM1報(bào)文結(jié)構(gòu)
當(dāng)傳輸數(shù)據(jù)超過(guò)8個(gè)字節(jié)時(shí),需要使用由SAE J1939-21中定義的多包報(bào)文傳輸協(xié)議進(jìn)行分包傳輸。如下圖中,當(dāng)存在5個(gè)激活的DTC時(shí),需要傳輸共22個(gè)Bytes(DTC共占20個(gè)Bytes,加上2個(gè)Bytes的故障燈狀態(tài))的數(shù)據(jù),拆分為4包數(shù)據(jù)進(jìn)行傳輸。通過(guò)TP_CM連接報(bào)文可知即將傳輸報(bào)文的PGN為0xFECA、所有傳輸數(shù)據(jù)長(zhǎng)度為22個(gè)Bytes、數(shù)據(jù)被拆分為4個(gè)包。TP_DT傳輸報(bào)文中第一個(gè)字節(jié)表示序列號(hào),Bytes2-7為傳輸?shù)臄?shù)據(jù)內(nèi)容。如果最后一包數(shù)據(jù)≤7個(gè)Bytes,則可以設(shè)置填充位進(jìn)行填充。

圖 5-多包報(bào)文傳輸

J1939診斷應(yīng)用
CANoe作為一個(gè)總線開發(fā)與測(cè)試工具,可以提供J1939、FMS通用數(shù)據(jù)庫(kù)文件,也集成了J1939的NM、TP以及基于UDS/J1939-73的診斷功能。實(shí)現(xiàn)通過(guò)DTC監(jiān)控功能捕獲和分析故障代碼,幫助工程師了解系統(tǒng)問(wèn)題并進(jìn)行故障排查。那該如何在CANoe中應(yīng)用呢?
首先需要根據(jù)項(xiàng)目需求,選擇J1939總線,搭建好工程;
接下來(lái)可以導(dǎo)入創(chuàng)建好的對(duì)應(yīng)J1939總線的DBC文件;

圖 6-J1939 DBC創(chuàng)建
導(dǎo)入DBC文件之后,可以通過(guò)IG模塊發(fā)送仿真J1939報(bào)文,也可以使用CAPL腳本發(fā)送J1939報(bào)文。
使用IG模塊仿真報(bào)文

圖 7-CANoe中IG模塊設(shè)置
使用CAPL函數(shù)發(fā)送DM01報(bào)文

圖 8-CAPL示例及發(fā)出報(bào)文

總結(jié)
在當(dāng)前汽車電子快速發(fā)展的背景下,J1939-73協(xié)議不僅能夠滿足傳統(tǒng)商用車輛的診斷需求,還可以支持新能源汽車等領(lǐng)域的診斷應(yīng)用。結(jié)合CANoe等專業(yè)工具的強(qiáng)大功能,開發(fā)人員可以更加高效地進(jìn)行協(xié)議一致性測(cè)試、診斷通信驗(yàn)證等工作。
注:文中部分圖片來(lái)源于Vector及SAE 1939-73-2006協(xié)議。
-
診斷
+關(guān)注
關(guān)注
1文章
60瀏覽量
12426 -
J1939
+關(guān)注
關(guān)注
1文章
11瀏覽量
10794 -
汽車
+關(guān)注
關(guān)注
14文章
3797瀏覽量
39216
發(fā)布評(píng)論請(qǐng)先 登錄
基于J1939協(xié)議的組合儀表的設(shè)計(jì)與實(shí)現(xiàn)
J1939基礎(chǔ)入門知識(shí)分享
基于SAE J1939協(xié)議的發(fā)動(dòng)機(jī)總線數(shù)據(jù)模擬器開發(fā)設(shè)計(jì)
SAE J1939協(xié)議分析指南
基于SAE J1939協(xié)議的車輛網(wǎng)絡(luò)通信

騰控TG900P控制卡特柴油機(jī)實(shí)現(xiàn)J1939協(xié)議

CM2880A控制器支持的J1939工業(yè)標(biāo)準(zhǔn)消息資料免費(fèi)下載

柴油機(jī)動(dòng)車J1939轉(zhuǎn)RS232運(yùn)行數(shù)據(jù)串口(UART)標(biāo)準(zhǔn)
CAN高層協(xié)議J1939的基礎(chǔ)和應(yīng)用以及開發(fā)介紹

SAE J1939協(xié)議標(biāo)準(zhǔn)文檔中英文合集
淺析SAE-J1939與CAN2.0B之間的關(guān)系
新功能發(fā)布 | TSMaster如何實(shí)現(xiàn)J1939多幀報(bào)文收發(fā)

【看點(diǎn)】淺析SAE-J1939與CAN2.0B之間的關(guān)系

CAN總線之J1939地址定義

評(píng)論