网站群管理平台方案窝窝网
车载总线系列——J1939 二
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。
老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:
没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能站在他人的角度来反对自己。人生在世,最怕的就是把别人的眼光当成自己生活的唯一标准。到最后,既没有活成别人喜欢的样子,也没有活成自己想要的样子。
我们只有接纳真实的自己,不自卑、不自傲,才能拥有更强大的内心;只有找到自己的核心价值,才能活出自己的精彩人生。

SAE J1939是基于CAN(Controller Area Network,控制器局域网)的通信协议,广泛用于各类商用车。该协议对车辆中连接CAN的电子组件及其附加设备之间的通信进行了标准化。
SAEJ1939 PGN
参数组(PG)是具有彼此相关性且传输速率相同的一组信号。每个参数组都有唯一的编号,即PGN(Parameter Group Number,参数组编号)。参数组容易与CAN标识符混淆。本章节旨在说明J1939参数组与CAN报文标识符之间的区别。以下是两者的相同点和不同点:
相同点:
-> 将相关信号分为一组
-> 可通过唯一编号标识
-> 包含应用程序和协议数据
不同点:
-> 不限于8个数据字节(上限1785个字节)
-> 可以点对点传输
-> 报文的优先级与PGN无关
-> 如果为参数组定义的数据长度大于8个字节,则将其作为多个数据包报文发送。该规范规定了传输协议。
结构
J1939-21文档定义了一种解析29位CAN ID的机制。在CAN报文的8字节数据场中,信号由起始位和长度定义。与此类似,CAN标识符细分为参数组的各个段。通过这种方式,标识符的一部分表示PGN本身,其余部分则解析为源地址、目标地址、优先级和数据页。“From the 29-bit CAN Identifier to the Parameter Group”图显示了J1939 CAN标识符的结构。
关于PGN Format
该图显示特定PDU段 具有多种解析方式。此段的内容可用于扩展PDU 格式段、定义PGN,也可用于指定目标地址。规则如下:

如果PDU 格式段中的值小于240,特定PDU段的内容将解析为目标地址。这里称之为PDU格式1或者特定PGN。不仅可以使用点对点通信将PDU- 格式- 1中的PGN明确地发送到目标地址;也可以使用全局地址(255),这种方式可以在全局范围内传输特定的PGN,即传输到所有网络节点。
如果PDU 格式段的值大于等于240,则特定PDU段将解释为组扩展。这意味着没有目标地址,并且报文将始终发送到所有网络节点。PDU格式段和特定PDU段共同表示一个与PGN对应的16位的值。在这种情况下,PGN具有PDU 格式 2,称为全局PGN。
特定PGN在表示时不需要地址信息,使用“00”代替目标地址作为扩展。

比如:PDU格式段数值为0XEE,则PGN 表示为0XEE00。

数据内容
J1939不仅定义PGN,还定义其内容。所谓内容就是一般情况下用户自定义私有协议中所说的信号。J1939规范为PGN内容定义了术语:SPN(Suspect Parameter Number,可疑参数编号),SPN就是一种信号ID,可以是物理值、状态或命令。此外,SPN也可以表示内部协议信息。目前,J1939-DA以表格形式列出了所有指定的SPN。SPN是由SAE 指定的数字。PGN的描述中指定了SPN在PGN内的起始位置(参见章节全局参数组示例)。SPN的解析顺序为从LSB(右)到MSB(左),字母数字数据除外。一个SPN可以存在于多个PGN中。
协议中采用相同的描述方式定义SPN,并且具备以下属性:所有SPN在定义中的描述均相同,且具有以下属性:


