|
您要打印的文件是:CAN2.0和J1939协议的关系
|
|
|
CAN2.0和J1939协议的关系
作者:佚名 转贴自:www.cankau.cn/support/help/can-vs-j1939.html 点击数:38
CAN2.0和J1939协议的关系 2015-11-05 10:57:08 来源:华启智能 CAN2.0是一种总线规范,是数据链路层的技术。J1939是SAE(美国汽车协会)定义的基于CAN总线的规范,目的是解决不同发动机厂商、不同ECU厂商的兼容性问题。 1、J1939和CAN2.0的关系 J1939是在CAN2.0B的基础上,对仲裁场部分的29位ID的重新解释;其它部分完全一样。 29位ID分为:3位的优先级、8位的PF(帧格式)、8位的PS(帧扩展)、8位的SA(源地址)、1位的DP(Data Page数据页)、1位的保留位。 其中1位的DP、8位的PF、8位的PS组成了PGN; PGN是Parameter Group Number;是参数组列表。 在J1939中,将消息分为了PDU1和PDU2两种格式。 PDU1格式的消息发送给特定地址的ECU,地址用8位的PS记录;PDU2格式的消息则发送给所有的ECU,8位的PS用于扩展。 当PF的值在0-239时,表示该消息为PDU1格式,PS为DA(目地地址)。 当PF的值在240-255时,表示该消息为PDU2格式,PS为扩展地址。 2、J1939的物理特性: 总线最大长度为40M;最大支持30个节点;节点最大长度为1M;传输速率最大为250Kbps;3根线(CAN_H、CAN_L、GND) J1939的分层: J1939/11:物理层:物理介质、总线设计、长度、节点; J1939/21:数据层:PGN信息、帧格式; J1939/31:网络层; J1939/71/73:应用层;信息分享、控制、广播、故障诊断; 3、PGN PGN是Parameter Group Number的简称。J1939中最大支持(240+16×256)×2个PGN。 当消息为PDU1格式时,PGN=DP×256×256+PF; 当消息为PDU2格式时,PGN=DP×256×256+PF*256+PS; 在J1939中,消息的传递以参数组的形式,每个参数组中有若干参数,每个参数是一个SPN; 4、SPN SPN:Suspent Parameter Number:特定的参数编号;例如:SPN 190表示发动机转速。 5、CAN2.0与J1939的关系、J1939与特定的厂商协议的关系 CAN2.0是一种总线规范,是数据链路层的技术。J1939是SAE(美国汽车协会)定义的基于CAN总线的规范,目的是解决不同发动机厂商、不同ECU厂商的兼容性问题。J1939定义了 一系列的PGN和SPN,这些PGN包含了发动机、变速器、车轴等汽车上各部件的信息;对参数的表示方法(状态和值)又定义了SLOT(Scaling比例、Limit界限、Offset偏移、Transfer传送)。ECU厂商都应该遵循这个规范。ECU模块的功能不同,厂商不同,在J1939的基础上,又表现出其多样性:支持或者不支持某些PGN、SPN和SLOT;新增了某些J1939未定义的PGN和SPN。 6、PDU消息包在CAN2.0上的拆包和重组 CAN2.0的数据场最多支持8字节的数据,如果PDU的数据小于等于8字节,1个PDU用1个CAN2.0帧传输即可;如果PDU的数据大于8字节,就需要在发送时进行拆包,在接收时进行重组。接收端如何识别是否需要重组以及怎么重组呢?J1939的做法是在拆包的情况下,将8字节的数据区的第一个字节用于表示拆包后的序号(1-255);因此,最长的PDU为255×7字节。 7、PDU的内容解析 PDU:Protocol Data Unit:协议数据单元。 在数据链路层CAN之上的就是PDU,包含了CAN2.0中仲裁场、控制场和数据场部分的内容。对J1939协议的解析其实就是对PDU的协议解析,先对接收到的包进行重组,构建一个完整的PDU包;再从PDU中数据包中提取出PGN和SPN对应的值。
|
|