谢娟娟,李 晋,郑创明
(1.周口师范学院 机械与电气工程学院,河南 周口 466001;2.周口师范学院 物理与电信工程学院,河南 周口 466001)
SAE J1939多包传输协议及应用分析
谢娟娟1,李晋1,郑创明2
(1.周口师范学院 机械与电气工程学院,河南 周口 466001;2.周口师范学院 物理与电信工程学院,河南 周口 466001)
摘要:描述一种SAE J1939-21协议应用于商用车车载CAN网络系统设计过程的多包数据传输协议的传输原理、传输过程,结合工程实践,分析了多包传输协议在商用车整车CAN网络系统开发过程中的应用,该协议对处理诊断报文等数据具有重要的意义.
关键词:多包数据;传输协议;SAE J1939
SAE J1939网络协议规范定义的数据帧中,数据场的长度不能超过8个字节.在工程应用中,发动机信息及诊断报文等信号需要传输的数据长度会达到几十个字节甚至上百字节.这些长度大于8个字节的消息是无法用单个CAN数据帧来装载.在这种情况下,需要使用SAE J1939“多包数据传输协议”[1-3].多包数据传输的总体思路是:将长数据拆分为若干个小的数据包,然后使用单个的数据帧对其逐一传送,接收节点再将接收的数据进行重组还原[4].
通过介绍SAE J1939协议定义的多包数据传输原理和传输过程,并结合工程实践,对多包传输协议的应用过程进行了分析.
文中涉及的术语及缩写如表1所示.
1SAE J1939多包数据传输协议
SAE J1939协议在数据链路层定义了多包数据传输的方法.多包传输协议定义了两个方面的内容:消息的拆装和重组以及连接管理[5-6].
(1)数据的拆分、打包和重组.SAE J1939协议定义CAN数据帧数据域的长度为8字节.在进行长数据传输时,组成长信息的单个数据包必须能被识别出来以便接收节点正确重组.为此便于识别,把单个数据包的数据域首字节定义为数据包的编号,每个数据包都会被分配到一个从1到255的序列编号;数据域的后7个字节用来存放有效的数据.最后一个数据包如果有未使用的位,均以0xFF填充.消息帧被接收节点接收以后,接收节点按数据域首字节中的序号重新组合出原来的数据.
表1 术语及缩写
(2)连接管理.数据传输需要首先在节点之间建立连接.连接管理主要是对节点之间连接的建立和关闭、数据的传送过程进行管理.SAE J1939协议中定义了用于点对点会话的请求发送帧、允许发送帧、结束应答帧、放弃连接帧及用于全局会话的广播帧5种帧结构.
2连接管理(TP.CM)
SAE J1939-21协议中定义的连接管理有两种类型[7]:
(1)点对点会话.多包消息需要发送到指定目标地址时使用的一种连接管理,这种类型的连接管理用于处理节点间虚拟连接的打开、使用和关闭.
(2)广播会话.如果消息是发送到多个节点或者是全局,则不需要数据流控制和关闭的管理功能,只需要通过广播消息来通知信息的发送即可.
SAE J1939-21协议定义了一个专用的PGN参数组(60416(00EC0016))用于多包传输的连接管理.该报文中,数据域的首字节为控制字节,通过改变控制字节的数据可以实现不同的控制功能,完成数据传输过程的连接管理.
TP.CM的具体信息如表2和表3所示:
表2 TP.CM参数组描述[8]
表3 TP.CM参数组功能的参数范围[8]
2.1点对点会话
当多包消息需要发送到指定目标地址,需要使用点对点会话模式.具体过程如下[9-10]:
首先在发送节点与接收节点之间建立连接.节点之间连接的建立通过发送节点向接收节点发送请求帧而建立.发送节点发送一条请求发送消息(TP.CM_RTS)给接收节点.在接收到TP.CM_RTS以后,接收节点可以根据实际情况选择是接受或者拒绝.
接收节点如果有足够的空间来接收数据并且数据有效,则发送1个允许发送帧(TP.CM_CTS).当发送节点接收到TP.CM_CTS后,就认为连接已经建立了,数据传输正式开始.接收节点在数据接收全部完成后,发送1个结束应答帧“TP.CM_EndOfMsgAck”给消息的发送者来释放连接,连接关闭,数据传输结束.
如果存储空间不够或数据无效等原因,接收节点需要拒绝连接,则发送放弃连接的消息(TP.CM_Abort),连接关闭.
在点对点模式的数据传输过程中,由接收节点负责调整节点间的数据流控制.如果连接已经建立,接收节点想停止数据流,它可以再TP.CM_CTS中把要接收的数据包数目设置为零,以此来停止数据的传送.当数据流传输需要暂停几秒时,接收节点必须每0.5秒(Th)重复发送一次TP.CM_CTS,来告知发送者连接没有中断.
点对点会话过程中,发送节点或者接收节点在任何时候都可以使用TP.CM_Abort消息来终止连接.当接收到TP.CM_Abort时,所有已传送的数据包将被丢弃.
点对点会话中用到的连接管理报文的参数如表4所示.
2.2广播会话
当多包消息不需要发送到指定目标地址时,可以使用广播会话.
发送节点首先要发送一条广播公告消息TP.CM_BAM,向其他节点声明自己要发送多包消息.之后直接开始发送数据,而不必等待接收节点的响应.数据发送完毕后也没有关闭连接的操作.
在BAM消息中,包含了即将广播的长消息的参数组编号、消息大小和它被拆装的数据包的数目[11-12].TP.CM_BAM的具体参数如表5所示.
表4 连接管理报文的参数描述
表5 TP.CM_BAM参数描述
3数据传输(TP.DT)
SAE J1939-21协议定义了一个专用的PGN参数组(60160(00EB0016))来传输拆分后的数据.数据传送报文TP.DT的参数组结构如表6所示:
在数据传送报文中,数据域的第1个字节用作消息帧的序号,后7个字节用来存放有效数据.单次可以发送255×7=1 785个字节的数据(255表示最大能够发送的包数;7表示每包消息帧的字节数).数据包按照包编号顺序逐个发送,最后一个数据包中未用的字节按规定进行填充.
4多包传输协议的应用分析
4.1点对点会话
点对点会话的过程如图1所示.图1描述了基于请求、应答模式的连接管理及数据传输.
表6 TP.DT参数组描述
发送节点首先发送TP.CM_RTS报文到接收节点,目的是请求传输一个PGN为65259的数据包,该数据包字节长度为23字节,分为4包进行传输.
接收节点收到请求消息后,发送TP.CM_CTS报文,依据该报文,允许单次连续发送2包的数据.
传输过程中,接收节点通过将TP.CM_CTS报文中要接收的数据包数目设置为零,中止了数据的传送,之后重新发送TP.CM_CTS报文,从第3包数据开始重新接收.
图1 点对点会话过程图
下面以国内某发动机控制单元EMS为例,介绍点对点会话在工程实践中的应用,该实例中,数据传输过程如图2所示:
(1)首先,使用测试设备模拟一个仿真节点用来激活发动机控制单元,节点源地址为24(即下图中ECU24).仿真节点发送一则请求EMS系统DM1报文PGN的报文:Request Message ID:18EA0018,DLC:3,Data:CA FE 00;
(2)EMS在接收到Request Message后发送TP.CM_RTS报文,请求发送多包报文,数据长度为82个字节,整个数据分为12包进行传输;
(3)仿真节点模拟接收节点,发送一则TP.CM_CTS报文,准许EMS发送数据,要求是:从第一包数据开始,连续发送完所有12包数据;
(4)EMS收到消息后,通过TP.DT报文,顺序连续发送数据;
(5)仿真节点在接收完最后一包数据后(包编号为:C16),发送TP.CM_EndofMsgAck报文(图中EoMA)来释放连接,连接关闭.
图2 某发动机控制单元点对点会话图
4.2广播会话应用分析
图3描述了基于广播模式的多包数据传输过程:发送节点首先发送一条广播消息,请求传输一个PGN为65260的数据包,字节长度为17字节,包长度为3包;之后无需等待任何节点的响应,直接开始顺序发送数据.
图3 广播公告传输过程图
下面以国内某厂家发动机控制系统EMS为例,介绍广播传输的过程,该EMS支持广播公告.某工况下,EMS_DM1报文长度为78个字节,整个数据的传输分为12包,其传输过程如图4所示.
5结论
SAE J1939协议定义的多包数据传输机制在商用车CAN网络系统设计中有着广泛的应用.在ECU开发过程中,如果没有考虑到多包数据的传输需求,并按照统一的收发机制进行设计,很可能造成网络节点不兼容的现象,影响网络系统的功能.充分理解和掌握多包数据传输机制,才能更加方便地指导CAN网络系统的设计和零部件的开发,提升网络系统的质量.
图4 某发动机控制单元广播会话图
参考文献:
[1]罗峰, 孙泽昌.汽车CAN总线系统原理、设计与应用[M]. 北京:电子工业出版社,2010: 80-105.
[2]刘明. J1939协议在 ECU 通信中的应用研究[J]. 电子科技, 2015, 28(5): 36-38.
[3]邓刚, 杨冰. 基于J1939协议解析与数据库创建[J]. 电子制作, 2015(2): 106.
[4]张超. 基于CAN总线的车载GPS导航系统研究[D]. 沈阳: 东北大学, 2007.
[5]陈石东. 汽车CAN总线数字传感器数据传送技术研究[D]. 厦门: 厦门大学, 2008.
[6]相铁武. 基于CAN/LIN总线的汽车电子网络化研究和应用[D]. 南京: 南京理工大学, 2007.
[7]李永强, 宋希庚, 薛冬新. CAN局域网及J1939协议在货车和客车上的运用[J]. 汽车工程, 2003, 25(4): 377-352.
[8]张峰魁. 基于CAN总线的LNG气瓶监测系统的研究与实现[D]. 西安: 电子科技大学, 2012.
[9]高松, 高燕. 浅谈J1939协议在客车CAN总线中的应用[J]. 农业装备与车辆工程, 2005(2): 29-31.
[10]朱正礼, 孙磊, 兰志波. 商用车OBD诊断协议与标准[J]. 汽车电器, 2011(8):11-16.
[11]陆世鹏, 许勇, 陈伟波. 基于SAE J1939协议的车辆下线检测系统设计[J]. 汽车技术, 2013(2): 41-45.
[12]骆志宏, 许勇, 马秋香. 商用车在线故障诊断系统设计与实现[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- ),女,河南新郑人,助理实验师,硕士,主要从事实验室建设管理、机械工程专业教学与研究.
中图分类号:U463.6
文献标志码:A
文章编号:1671-9476(2016)02-0066-05
DOI:10.13450/j.cnki.jzknu.2016.02.015