謝娟娟,李 晉,鄭創(chuàng)明
(1.周口師范學(xué)院 機(jī)械與電氣工程學(xué)院,河南 周口 466001;2.周口師范學(xué)院 物理與電信工程學(xué)院,河南 周口 466001)
?
SAE J1939多包傳輸協(xié)議及應(yīng)用分析
謝娟娟1,李晉1,鄭創(chuàng)明2
(1.周口師范學(xué)院 機(jī)械與電氣工程學(xué)院,河南 周口 466001;2.周口師范學(xué)院 物理與電信工程學(xué)院,河南 周口 466001)
摘要:描述一種SAE J1939-21協(xié)議應(yīng)用于商用車車載CAN網(wǎng)絡(luò)系統(tǒng)設(shè)計(jì)過程的多包數(shù)據(jù)傳輸協(xié)議的傳輸原理、傳輸過程,結(jié)合工程實(shí)踐,分析了多包傳輸協(xié)議在商用車整車CAN網(wǎng)絡(luò)系統(tǒng)開發(fā)過程中的應(yīng)用,該協(xié)議對處理診斷報文等數(shù)據(jù)具有重要的意義.
關(guān)鍵詞:多包數(shù)據(jù);傳輸協(xié)議;SAE J1939
SAE J1939網(wǎng)絡(luò)協(xié)議規(guī)范定義的數(shù)據(jù)幀中,數(shù)據(jù)場的長度不能超過8個字節(jié).在工程應(yīng)用中,發(fā)動機(jī)信息及診斷報文等信號需要傳輸?shù)臄?shù)據(jù)長度會達(dá)到幾十個字節(jié)甚至上百字節(jié).這些長度大于8個字節(jié)的消息是無法用單個CAN數(shù)據(jù)幀來裝載.在這種情況下,需要使用SAE J1939“多包數(shù)據(jù)傳輸協(xié)議”[1-3].多包數(shù)據(jù)傳輸?shù)目傮w思路是:將長數(shù)據(jù)拆分為若干個小的數(shù)據(jù)包,然后使用單個的數(shù)據(jù)幀對其逐一傳送,接收節(jié)點(diǎn)再將接收的數(shù)據(jù)進(jìn)行重組還原[4].
通過介紹SAE J1939協(xié)議定義的多包數(shù)據(jù)傳輸原理和傳輸過程,并結(jié)合工程實(shí)踐,對多包傳輸協(xié)議的應(yīng)用過程進(jìn)行了分析.
文中涉及的術(shù)語及縮寫如表1所示.
1SAE J1939多包數(shù)據(jù)傳輸協(xié)議
SAE J1939協(xié)議在數(shù)據(jù)鏈路層定義了多包數(shù)據(jù)傳輸?shù)姆椒?多包傳輸協(xié)議定義了兩個方面的內(nèi)容:消息的拆裝和重組以及連接管理[5-6].
(1)數(shù)據(jù)的拆分、打包和重組.SAE J1939協(xié)議定義CAN數(shù)據(jù)幀數(shù)據(jù)域的長度為8字節(jié).在進(jìn)行長數(shù)據(jù)傳輸時,組成長信息的單個數(shù)據(jù)包必須能被識別出來以便接收節(jié)點(diǎn)正確重組.為此便于識別,把單個數(shù)據(jù)包的數(shù)據(jù)域首字節(jié)定義為數(shù)據(jù)包的編號,每個數(shù)據(jù)包都會被分配到一個從1到255的序列編號;數(shù)據(jù)域的后7個字節(jié)用來存放有效的數(shù)據(jù).最后一個數(shù)據(jù)包如果有未使用的位,均以0xFF填充.消息幀被接收節(jié)點(diǎn)接收以后,接收節(jié)點(diǎn)按數(shù)據(jù)域首字節(jié)中的序號重新組合出原來的數(shù)據(jù).
表1 術(shù)語及縮寫
(2)連接管理.數(shù)據(jù)傳輸需要首先在節(jié)點(diǎn)之間建立連接.連接管理主要是對節(jié)點(diǎn)之間連接的建立和關(guān)閉、數(shù)據(jù)的傳送過程進(jìn)行管理.SAE J1939協(xié)議中定義了用于點(diǎn)對點(diǎn)會話的請求發(fā)送幀、允許發(fā)送幀、結(jié)束應(yīng)答幀、放棄連接幀及用于全局會話的廣播幀5種幀結(jié)構(gòu).
2連接管理(TP.CM)
SAE J1939-21協(xié)議中定義的連接管理有兩種類型[7]:
(1)點(diǎn)對點(diǎn)會話.多包消息需要發(fā)送到指定目標(biāo)地址時使用的一種連接管理,這種類型的連接管理用于處理節(jié)點(diǎn)間虛擬連接的打開、使用和關(guān)閉.
(2)廣播會話.如果消息是發(fā)送到多個節(jié)點(diǎn)或者是全局,則不需要數(shù)據(jù)流控制和關(guān)閉的管理功能,只需要通過廣播消息來通知信息的發(fā)送即可.
SAE J1939-21協(xié)議定義了一個專用的PGN參數(shù)組(60416(00EC0016))用于多包傳輸?shù)倪B接管理.該報文中,數(shù)據(jù)域的首字節(jié)為控制字節(jié),通過改變控制字節(jié)的數(shù)據(jù)可以實(shí)現(xiàn)不同的控制功能,完成數(shù)據(jù)傳輸過程的連接管理.
TP.CM的具體信息如表2和表3所示:
表2 TP.CM參數(shù)組描述[8]
表3 TP.CM參數(shù)組功能的參數(shù)范圍[8]
2.1點(diǎn)對點(diǎn)會話
當(dāng)多包消息需要發(fā)送到指定目標(biāo)地址,需要使用點(diǎn)對點(diǎn)會話模式.具體過程如下[9-10]:
首先在發(fā)送節(jié)點(diǎn)與接收節(jié)點(diǎn)之間建立連接.節(jié)點(diǎn)之間連接的建立通過發(fā)送節(jié)點(diǎn)向接收節(jié)點(diǎn)發(fā)送請求幀而建立.發(fā)送節(jié)點(diǎn)發(fā)送一條請求發(fā)送消息(TP.CM_RTS)給接收節(jié)點(diǎn).在接收到TP.CM_RTS以后,接收節(jié)點(diǎn)可以根據(jù)實(shí)際情況選擇是接受或者拒絕.
接收節(jié)點(diǎn)如果有足夠的空間來接收數(shù)據(jù)并且數(shù)據(jù)有效,則發(fā)送1個允許發(fā)送幀(TP.CM_CTS).當(dāng)發(fā)送節(jié)點(diǎn)接收到TP.CM_CTS后,就認(rèn)為連接已經(jīng)建立了,數(shù)據(jù)傳輸正式開始.接收節(jié)點(diǎn)在數(shù)據(jù)接收全部完成后,發(fā)送1個結(jié)束應(yīng)答幀“TP.CM_EndOfMsgAck”給消息的發(fā)送者來釋放連接,連接關(guān)閉,數(shù)據(jù)傳輸結(jié)束.
如果存儲空間不夠或數(shù)據(jù)無效等原因,接收節(jié)點(diǎn)需要拒絕連接,則發(fā)送放棄連接的消息(TP.CM_Abort),連接關(guān)閉.
在點(diǎn)對點(diǎn)模式的數(shù)據(jù)傳輸過程中,由接收節(jié)點(diǎn)負(fù)責(zé)調(diào)整節(jié)點(diǎn)間的數(shù)據(jù)流控制.如果連接已經(jīng)建立,接收節(jié)點(diǎn)想停止數(shù)據(jù)流,它可以再TP.CM_CTS中把要接收的數(shù)據(jù)包數(shù)目設(shè)置為零,以此來停止數(shù)據(jù)的傳送.當(dāng)數(shù)據(jù)流傳輸需要暫停幾秒時,接收節(jié)點(diǎn)必須每0.5秒(Th)重復(fù)發(fā)送一次TP.CM_CTS,來告知發(fā)送者連接沒有中斷.
點(diǎn)對點(diǎn)會話過程中,發(fā)送節(jié)點(diǎn)或者接收節(jié)點(diǎn)在任何時候都可以使用TP.CM_Abort消息來終止連接.當(dāng)接收到TP.CM_Abort時,所有已傳送的數(shù)據(jù)包將被丟棄.
點(diǎn)對點(diǎn)會話中用到的連接管理報文的參數(shù)如表4所示.
2.2廣播會話
當(dāng)多包消息不需要發(fā)送到指定目標(biāo)地址時,可以使用廣播會話.
發(fā)送節(jié)點(diǎn)首先要發(fā)送一條廣播公告消息TP.CM_BAM,向其他節(jié)點(diǎn)聲明自己要發(fā)送多包消息.之后直接開始發(fā)送數(shù)據(jù),而不必等待接收節(jié)點(diǎn)的響應(yīng).數(shù)據(jù)發(fā)送完畢后也沒有關(guān)閉連接的操作.
在BAM消息中,包含了即將廣播的長消息的參數(shù)組編號、消息大小和它被拆裝的數(shù)據(jù)包的數(shù)目[11-12].TP.CM_BAM的具體參數(shù)如表5所示.
表4 連接管理報文的參數(shù)描述
表5 TP.CM_BAM參數(shù)描述
3數(shù)據(jù)傳輸(TP.DT)
SAE J1939-21協(xié)議定義了一個專用的PGN參數(shù)組(60160(00EB0016))來傳輸拆分后的數(shù)據(jù).數(shù)據(jù)傳送報文TP.DT的參數(shù)組結(jié)構(gòu)如表6所示:
在數(shù)據(jù)傳送報文中,數(shù)據(jù)域的第1個字節(jié)用作消息幀的序號,后7個字節(jié)用來存放有效數(shù)據(jù).單次可以發(fā)送255×7=1 785個字節(jié)的數(shù)據(jù)(255表示最大能夠發(fā)送的包數(shù);7表示每包消息幀的字節(jié)數(shù)).數(shù)據(jù)包按照包編號順序逐個發(fā)送,最后一個數(shù)據(jù)包中未用的字節(jié)按規(guī)定進(jìn)行填充.
4多包傳輸協(xié)議的應(yīng)用分析
4.1點(diǎn)對點(diǎn)會話
點(diǎn)對點(diǎn)會話的過程如圖1所示.圖1描述了基于請求、應(yīng)答模式的連接管理及數(shù)據(jù)傳輸.
表6 TP.DT參數(shù)組描述
發(fā)送節(jié)點(diǎn)首先發(fā)送TP.CM_RTS報文到接收節(jié)點(diǎn),目的是請求傳輸一個PGN為65259的數(shù)據(jù)包,該數(shù)據(jù)包字節(jié)長度為23字節(jié),分為4包進(jìn)行傳輸.
接收節(jié)點(diǎn)收到請求消息后,發(fā)送TP.CM_CTS報文,依據(jù)該報文,允許單次連續(xù)發(fā)送2包的數(shù)據(jù).
傳輸過程中,接收節(jié)點(diǎn)通過將TP.CM_CTS報文中要接收的數(shù)據(jù)包數(shù)目設(shè)置為零,中止了數(shù)據(jù)的傳送,之后重新發(fā)送TP.CM_CTS報文,從第3包數(shù)據(jù)開始重新接收.
圖1 點(diǎn)對點(diǎn)會話過程圖
下面以國內(nèi)某發(fā)動機(jī)控制單元EMS為例,介紹點(diǎn)對點(diǎn)會話在工程實(shí)踐中的應(yīng)用,該實(shí)例中,數(shù)據(jù)傳輸過程如圖2所示:
(1)首先,使用測試設(shè)備模擬一個仿真節(jié)點(diǎn)用來激活發(fā)動機(jī)控制單元,節(jié)點(diǎn)源地址為24(即下圖中ECU24).仿真節(jié)點(diǎn)發(fā)送一則請求EMS系統(tǒng)DM1報文PGN的報文:Request Message ID:18EA0018,DLC:3,Data:CA FE 00;
(2)EMS在接收到Request Message后發(fā)送TP.CM_RTS報文,請求發(fā)送多包報文,數(shù)據(jù)長度為82個字節(jié),整個數(shù)據(jù)分為12包進(jìn)行傳輸;
(3)仿真節(jié)點(diǎn)模擬接收節(jié)點(diǎn),發(fā)送一則TP.CM_CTS報文,準(zhǔn)許EMS發(fā)送數(shù)據(jù),要求是:從第一包數(shù)據(jù)開始,連續(xù)發(fā)送完所有12包數(shù)據(jù);
(4)EMS收到消息后,通過TP.DT報文,順序連續(xù)發(fā)送數(shù)據(jù);
(5)仿真節(jié)點(diǎn)在接收完最后一包數(shù)據(jù)后(包編號為:C16),發(fā)送TP.CM_EndofMsgAck報文(圖中EoMA)來釋放連接,連接關(guān)閉.
圖2 某發(fā)動機(jī)控制單元點(diǎn)對點(diǎn)會話圖
4.2廣播會話應(yīng)用分析
圖3描述了基于廣播模式的多包數(shù)據(jù)傳輸過程:發(fā)送節(jié)點(diǎn)首先發(fā)送一條廣播消息,請求傳輸一個PGN為65260的數(shù)據(jù)包,字節(jié)長度為17字節(jié),包長度為3包;之后無需等待任何節(jié)點(diǎn)的響應(yīng),直接開始順序發(fā)送數(shù)據(jù).
圖3 廣播公告?zhèn)鬏斶^程圖
下面以國內(nèi)某廠家發(fā)動機(jī)控制系統(tǒng)EMS為例,介紹廣播傳輸?shù)倪^程,該EMS支持廣播公告.某工況下,EMS_DM1報文長度為78個字節(jié),整個數(shù)據(jù)的傳輸分為12包,其傳輸過程如圖4所示.
5結(jié)論
SAE J1939協(xié)議定義的多包數(shù)據(jù)傳輸機(jī)制在商用車CAN網(wǎng)絡(luò)系統(tǒng)設(shè)計(jì)中有著廣泛的應(yīng)用.在ECU開發(fā)過程中,如果沒有考慮到多包數(shù)據(jù)的傳輸需求,并按照統(tǒng)一的收發(fā)機(jī)制進(jìn)行設(shè)計(jì),很可能造成網(wǎng)絡(luò)節(jié)點(diǎn)不兼容的現(xiàn)象,影響網(wǎng)絡(luò)系統(tǒng)的功能.充分理解和掌握多包數(shù)據(jù)傳輸機(jī)制,才能更加方便地指導(dǎo)CAN網(wǎng)絡(luò)系統(tǒng)的設(shè)計(jì)和零部件的開發(fā),提升網(wǎng)絡(luò)系統(tǒng)的質(zhì)量.
圖4 某發(fā)動機(jī)控制單元廣播會話圖
參考文獻(xiàn):
[1]羅峰, 孫澤昌.汽車CAN總線系統(tǒng)原理、設(shè)計(jì)與應(yīng)用[M]. 北京:電子工業(yè)出版社,2010: 80-105.
[2]劉明. J1939協(xié)議在 ECU 通信中的應(yīng)用研究[J]. 電子科技, 2015, 28(5): 36-38.
[3]鄧剛, 楊冰. 基于J1939協(xié)議解析與數(shù)據(jù)庫創(chuàng)建[J]. 電子制作, 2015(2): 106.
[4]張超. 基于CAN總線的車載GPS導(dǎo)航系統(tǒng)研究[D]. 沈陽: 東北大學(xué), 2007.
[5]陳石東. 汽車CAN總線數(shù)字傳感器數(shù)據(jù)傳送技術(shù)研究[D]. 廈門: 廈門大學(xué), 2008.
[6]相鐵武. 基于CAN/LIN總線的汽車電子網(wǎng)絡(luò)化研究和應(yīng)用[D]. 南京: 南京理工大學(xué), 2007.
[7]李永強(qiáng), 宋希庚, 薛冬新. CAN局域網(wǎng)及J1939協(xié)議在貨車和客車上的運(yùn)用[J]. 汽車工程, 2003, 25(4): 377-352.
[8]張峰魁. 基于CAN總線的LNG氣瓶監(jiān)測系統(tǒng)的研究與實(shí)現(xiàn)[D]. 西安: 電子科技大學(xué), 2012.
[9]高松, 高燕. 淺談J1939協(xié)議在客車CAN總線中的應(yīng)用[J]. 農(nóng)業(yè)裝備與車輛工程, 2005(2): 29-31.
[10]朱正禮, 孫磊, 蘭志波. 商用車OBD診斷協(xié)議與標(biāo)準(zhǔn)[J]. 汽車電器, 2011(8):11-16.
[11]陸世鵬, 許勇, 陳偉波. 基于SAE J1939協(xié)議的車輛下線檢測系統(tǒng)設(shè)計(jì)[J]. 汽車技術(shù), 2013(2): 41-45.
[12]駱志宏, 許勇, 馬秋香. 商用車在線故障診斷系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)測量與控制, 2015, 23(4): 1098-1101.
SAE J1939 multi packet transmission protocol and application analysis
XIE Juanjuan1, LI Jin1, ZHENG Chuangming2
(1.School of Mechanical & Electrical Engineering, Zhoukou Normal University,Zhoukou 466001, China;2.School of Physical & Telecommunication Engineering,Zhoukou Normal University, Zhoukou 466001, China)
Abstract:In this paper, transport protocol and transport process for multiple packet data was introduced detailedly. This transport protocol was defined in SAE J1939-21 protocol and used in CAN network design of commercial vehicles. Then, the application of multiple packet transport was analyzed based on the components of CAN network. The protocol is of great significance to the diagnosis of message data processing.
Key words:multiple packet data; transport protocol; SAE J1939
收稿日期:2015-11-12;修回日期:2015-12-10
作者簡介:謝娟娟(1985- ),女,河南新鄭人,助理實(shí)驗(yàn)師,碩士,主要從事實(shí)驗(yàn)室建設(shè)管理、機(jī)械工程專業(yè)教學(xué)與研究.
中圖分類號:U463.6
文獻(xiàn)標(biāo)志碼:A
文章編號:1671-9476(2016)02-0066-05
DOI:10.13450/j.cnki.jzknu.2016.02.015