CAN2.0与J1939协议

更新时间:2023-08-13 07:47:01 阅读量: IT计算机 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

CAN2.0 与J1939协议的区别

CAN2.0与J1939协议

1、CAN2.0A

CAN2.0A帧格式

帧起始:

SOF:start of frame;1位:显性:为0;

仲裁场:

ID:11位的ID;数值越小,优先级越高;

RTR位: Remote terminal Request:远程终端请求;控制场:

IDE位:ID扩展位;

R0位:保留位;

DLC: Data Length Code;数据长度码;

数据场:

0-8字节;

校验场:

15位CRC+1位CRC分隔符;

应答场:

1位应答+1位应答分隔符;

帧结束:

EOF:End Of Frame:7位:隐性:为1;

CAN2.0A帧,不含数据场,共44位。

2、CAN2.0B

CAN2.0B帧格式:

帧起始:

SOF: Start Of Frame;

仲裁场:

ID:11位ID;

SRR;代用远程请求;

IDE:

ID:18位ID;

RTR:

控制场:

R1、R0保留位;

DLC;4位的数据长度码;

数据场:

0-8字节;

校验场:

15位CRC+1位CRC分隔符;

应答场:

1位应答+1位应答分隔符;

帧结束:

CAN2.0 与J1939协议的区别

7位1;

CAN2.0B帧比CAN2.0A帧,在仲裁场多出20位,共64位(不含数据场)。

3、J1939

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为扩展地址。

J1939的物理特性:

总线最大长度为40M;最大支持30个节点;节点最大长度为1M;传输速率最大为250Kbps;3根线(CAN_H、CAN_L、GND)

J1939的分层:

J1939/11:物理层:物理介质、总线设计、长度、节点;

J1939/21:数据层:PGN信息、帧格式;

J1939/31:网络层;

J1939/71/73:应用层;信息分享、控制、广播、故障诊断;

4、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;

5、SPN

SPN:Suspent Parameter Number:特定的参数编号;例如:SPN 190表示发动机转速。

6、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。

CAN2.0 与J1939协议的区别

7、PDU消息包在CAN2.0上的拆包和重组

CAN2.0的数据场最多支持8字节的数据,如果PDU的数据小于等于8字节,1个PDU用1个CAN2.0帧传输即可;如果PDU的数据大于8字节,就需要在发送时进行拆包,在接收时进行重组。接收端如何识别是否需要重组以及怎么重组呢?J1939的做法是在拆包的情况下,将8字节的数据区的第一个字节用于表示拆包后的序号(1-255);因此,最长的PDU为255×7字节。

8、PDU的内容解析

PDU:Protocol Data Unit:协议数据单元。

在数据链路层CAN之上的就是PDU,包含了CAN2.0中仲裁场、控制场和数据场部分的内容。对J1939协议的解析其实就是对PDU的协议解析,先对接收到的包进行重组,构建一个完整的PDU包;再从PDU中数据包中提取出PGN和SPN对应的值。

9、国内的发动机厂商

CY:朝柴

EQB:康明斯

CA:一汽无锡

YC:玉柴

本文来源:https://www.bwwdw.com/article/bvij.html

Top