分享

一文搞懂J1939

 Kuai2012 2022-04-26
前面已经整理了LIN、CAN、CAN FD总线了。
—>LIN总线
—>一文搞懂CAN总线
—>一文搞懂CAN FD总线
今天我们来理一理J1939。首先J1939是建立在CAN2.0B协议基础上的总线,其中物理层和数据链路层大部分跟CAN2.0B是相同的,如图1所示,对于开发而言,可能更加关注应用层和网络管理,本文的话主要捋一捋应用层。
图1 J1939的分层模型
J1939应用层借用了CAN总线的数据帧格式,不过J1939所有的报文均采用29位标识符,不同的是J1939对29位标识符进行了重新定义,如图2所示。稍微有点区别的是J1939的标识符中与CAN相比要少一部分,比如SRR, IDE,其他部分J1939并未对这部分做任何修改。另外J1939将标识符和数据域称之为PDU(Protocal Data Uint)。
图2 CAN ID与J1939 标识符域的对比
那J1939的标识符中各个位的含义是什么呢?
下面来依次聊聊J1939标识符,如图3所示,包括:
优先级P(PRIORTY 优先权位);
R(保留位)=>扩展数据位页(Extended Data Page,EDP);
DP,数据页位(Data Page);
PF,PDU Format,PDU格式;
PS,PDU Specific,PDU特定域;
SA,source address,源地址;
图3 PDU格式
下面来简单聊聊各个部分。
优先级P
其大小为3个bit,即0~7。与CAN Id一样,越小优先级越高。不过J1939协议中优先级P仅用于优化数据发送时的报文延迟,对接收报文无影响。通常情况下,所有控制报文的优先级为3,面向数据信息的报文优先级为6。
保留位R
其大小为1bit,又称为扩展数据页(EDP),目前未使用该位,设置为零。
数据页DP
其大小为1bit,用于联合扩展数据页来表示不同的PGN(参数组数),如图目前通常PGN定义在0页。
图4 数据页定义
PF(PDU格式)
PF大小为8bit,用于确定分配到数据域的PGN,有两种不同标识的参数PDU格式,分别为PDU1,PDU2,当PF<240为PDU1格式,当PF≥240且PF≤255,为PDU2格式。PDU1用于将数据传递至特定的目标地址,也就是某个确定的ECU;PDU2用于将数据传递至扩展参数组,类似于局部广播。
PS(PDU特定域)
PS大小为8bit,它的定义由PF格式确定,PDU1格式下,PS为目标地址;PDU2格式下PS为组扩展值。
SA(源地址)
SA大小为8bit,用于填充发送ECU的地址。
上面简单聊了下J1939的标识符域,那J1939都有哪些类型的报文呢?
目前J1939共支持5种报文类型,分别为命令、请求、广播/响应、确定和组功能。
命令报文
命令报文指目标地址接收到报文后,根据接收到的报文采取特定的动作。PDU1格式和PDU2格式都可作为命令。
请求报文
请求类型提供了全局或者特定目标地址请求信息能力,最典型的为请求PGN报文,如图5所示。
图5 请求PGN报文定义
广播/响应报文
此类型报文可以用于某个ECU主动进行报文广播,也可以是命令或请求的响应。常见与总线上的数据交换,例如某个ECU以固定周期广播部分参数。
确认报文
确认报文有两种,一种是CAN协议规定的ACK,当接收方收到后在ACK间隙期间发送一个显性位,以表示接收方已经接收到报文。另一种是由应用层规定,对特定的命令、请求的“ACK”、“NACK”等进行响应。
组功能报文
这种报文通常用于特殊功能组,例如网络管理、多包数据传输等。
好了,以上就是今天要讲的,麻烦各位点个“在看”。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多