大家好,又见面了,我是你们的朋友全栈君。
在商用车辆领域,标准化的,串行的协议用于单个电子控制单元(ECU)和传动系统组件之间的通讯已有一段时间。通过使用标准化的串行协议,可具有以下优势:
由国际汽车工程师协会(SAE)定义的SAE J1939协议替代了SAE标准J1587/J1708,并且根据ISO 11898在CAN高速的物理层工作。
SAE J193使用于重型商用机械,既包括”路用”(卡车和拖车)也包括”非路用的”(建筑用车辆,吊车等等)。在农业和林业领域在ISO11784之后应用机械ISOBUS,在海运环境下,使用NMEA2000协议,而在军事领域适合使用MilCAN – 所有这些协议都基于J1939。
由于现有J1708/J1587协议对于CAN报文标识符从11向29位扩展的兼容性需求,就要求J1939在CAN模块的开发和相应协议的实施中支持此种报文格式。
通过J1939,可以传输测量数值和控制数据,也可配置组件。此外,还可以阅读或删除单个组件的诊断数据,并且可以进行单个控制的校正。
在J1939协议中,不仅仅规定了传输模式,报文结构及其分段,流量控制等等,而且还精确地定义了报文内容本身。
根据OSI参考模型SAE J1939被划分成多个文件,文件编号指的是参考模型中的对应层级。第5层和6层在SAE J1939中不需要,这和任意现场总线类似,因此也没有详细说明。
图表:在ISO/OSI参考模型中的SAE J1939
物理层
SAE J1939协议基于CAN总线,并且将其作为物理层使用(控制器局域网,ISO 11998-1和ISO 11998-2)。有如下规格说明:
数据链路层
SAE J1939/21描述了通过基于CAN的CAN 2.0B规范进行的数据通讯。特殊的是,这种“扩展的模式”用于通讯;”标准的模式”仅用于供应商特定的应用。 该规范因此决定了如何使用11位标识符,以排除各个供应商特定报文之间的标识符冲突。除了分配和使用29位标识符,该规范本质上描述了各种各样用于报文请求模式、应答传输、以及大规模数据块分段传输的网络服务。
网络层
SAE J1939/31本质上描述了用于两个网段之间报文传输的网桥的功能。由于网桥中现存的过滤功能,这主要用于减少单个网段的通讯量,例如在拖拉机与其拖车之间。
应用层
应用层相关的文档SAE J1939/71描述了实际数据(参数或具有数值范围的网络变量,分辨率,物理单元和传输类型)。每个报文都具有独特的编码(参数组号:PGN)。
网络管理
J1939网络管理分散化,也就是说,每个控制单元必须采用最小的功能。网络管理功能在文档SAE J1939/81中有描述。由于网络管理可视为能够达到硬件(第1层)的独立单元,它在图表的右侧作为独立的功能块。
设备地址
电子控制单元(ECU)的软件是控制器应用(CA)。一个ECU可能包含一个或多个CA。每个CA具有独一无二的地址和相关的设备名称。每个由CA发送的报文都包含此源地址。
在J1939的地址空间,具有256个可能的设备地址:
大多数CA如引擎,传输等,都有首选地址。
设备名称
J1939定义了设备名称,每个代表了一个64位的(8字节)长标签并且用于识别设备及其功能。该设备名称被划分成不同的元素,这些元素有些是相互依赖的。独立的区域包括”行业组”和”制造商代码”。
图表:设备名称的结构
CAN标识符
J1939报文基于CAN 2.0B规范,并且使用特定的”扩展帧”。它们使用29位的标识符而不是通常的11位标识符。J1939-21使用这个29位标识符定义区域,如下所示。
图表:结构参数组
在CA使用地址前,它必须在网络中对该地址进行声明;这个过程叫做”地址声明” (ACL)。 在此,使用独一无二的设备名称来解决地址分配冲突:数值越小,优先级越高。在启动时,CA发送“地址声明PGN”(ACL, PGN 00EE00h)并且等待预定的时间以响应。如果在此期间没有其他CA声明相同的地址,CA就可以开始正常通讯。
图表:地址声明过程
如果网络上的另一个CA已经使用了相同的地址,这就产生了地址冲突。设备名称中具有更高优先级的CA就获得该地址。这取决于CA接下来如何工作的”地址能力” : 如果CA具有”非自配置”的地址能力,就必须发送带有“源地址”0(254)”的“不能声明地址”PGN。否则,就需要从空闲地址池(128-247)中为自己挑选新地址。
图表:具有地址冲突的地址声明过程
J1939报文示例(参数组)
名称:引擎温度 – PG号:65262 (FEEE Hex) – PDU格式:254 (FE Hex) – PDU特有:238 (EE Hex) – 默认优先级:6 – 传输速率:1 s – 数据长度:8字节
数据描述 字节1:发动机冷却液温度 字节2:燃油温度 字节3,4:发动机机油温度 字节5,6:涡轮油温 字节7:发动机中间冷却器温度 字节8:未定义
在SAE J1939报文中,具有多于8字节的数据通过“分散传输”得以传输。这就构成了订阅者导向的通讯(“点对点”)和总体通讯(“广播”)之间的区别。
点对点
在点对点通讯中,规定了目的地址(目的地址)。该数据分配给特定的订阅者,然后就可确认传输:
图表:点对点报文
广播
广播是没有确认的通讯(没有通讯量控制)。传输器/发送器不知道报文的接收对象是谁。将应用如下过程:
图表:广播报文
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/133683.html原文链接:https://javaforall.cn