空燃比分析仪,horiba尾气分析仪,CAN总线分析仪,CAN数据记录仪

广州智维电子科技有限公司

Guangzhou Triv Electronic Technologies Co.LTD

技术服务
SUPPORT

目前位置: 首页 > 技术服务 > 技术资讯

2023-04-10

应用于重型车辆的SAE J1587协议

作者:triv    点击:619

SAE J1587协议



协议背景


SAE J1587协议是由卡车和公共汽车的电子电气委员会的一个分会提出的一种SAE标准。协议的目的是促进不同电子控制单元中软件之间的一致性。J1587协议应当与描述硬件和通信基础的SAE J1708协议一起使用。它与J1708一起用来为重型车辆(卡车和客车)中微控制器设备的开发和维护降低成本和复杂性。


SAE J1587是卡车用网络通讯协议,J1708是其对应的物理层。SAE J1939的出现比J1587晚,J1939全面的定义了卡车的通讯网络,包括物理层、应用层等。J1587与J1939都有使用,但是J1939在行业的应用更为普遍,是大家公认的行业标准。 


应用领域


J1587协议专门用在重型车辆中,用于网络中节点之间的数据交换、驾驶信息或诊断。应用领域包括:


车辆和组件信息(性能、维护、诊断)。

导航和时间规划(路线描述和时间估计)。

驾驶信息(行程记录器数据、驾驶日志)。

货物运输信息(关于起运地点和运送目的地的信息)。

图片

协议简介

图片

J1587协议定义重型车辆中微处理器设备之间发送的J1708报文的格式。它还支持与连接到总线的外部设备进行通信。


J1587是一种应用层协议,与物理层J1708一起使用。

J1587描述报文格式并定义参数。

J1587报文由MID、PID、数据字节和检验和组成。

按照J1708规定,J1587报文的长度限制为21个字节。

J1587允许使用面向连接的传输服务(COTS)发送长度大于21字节的报文。


协议细节


➡ 报文剖析

J1587报文的组成遵循J1708规范,因此报文的长度限制为21字节。


1️⃣报文的第一个字节包含一个节点特定的报文标识(MID)。J1587定义MID的区间为128-255。

2️⃣MID后面的第一个字节是一个参数标识(PID)。PID(通常)是一个字节长度,可以包含的值范围是0-255。

3️⃣每个PID后面跟一些参数数据字节。它们的值和含义取决于PID的值。注意,报文可以包含多个PID。

4️⃣报文以一个字节长的检验和结尾,这个检验和由报文中所有数据字节总和的补数组成。如果报文有效,那么对包括检验和在内的报文中的所有字节总和对256求模,结果是0。

MID

PID

数据

PID

数据1

数据2

检验和

128

21

50

12

05

48

248

上图是一条示例报文,该报文包含两个PID:21和12。


PID 0-127(以及256-383)描述一个字节长的数据参数。PID 128-191(384-447)描述包含两个字节的数据参数。需要两字节以上的数据参数分配的PID是192-253(或448-509)。这些PID后面的第一个字节将包含数据参数字节数。


PID 194-196用于诊断。出于这个目的,车辆中的许多电气部件都分配有子系统标识(SID)。对于每个MID,最多可以为其定义255个不同的SID。通过这些SID,可以标识那些无法与特定PID关联的部件。SID只应分配给可现场替换的部件或可以与MID相关的部件。大部分SID由SAE或数据格式分会预定义。SID 151-155是可用于读出非部件特定诊断信息的“系统诊断代码”。诊断信息包含一个故障模式标识符(FMI)。


PID 225-227用于仪表盘文本显示,多个ECU均可以访问它。有三个命令用于此用途:文本报文显示类型(PID 227)、要显示的文本报文(PID 226)和确认的文本报文(PID 225)。


PID 254用于传输目的地为总线上特定节点的特殊命令、数据和信息。这个PID后面发送的数据参数可以由设备厂商确定。


PID 255用于把PID扩展到两个字节,也就是说,后面的字节也是一个PID。对于这个额外的PID,可以使用的值最大可以为511。如果第一个PID是255,那么后面的PID被理解为256的求模结果(0=256、1=257)。


➡ 参数定义

通常,数据发送时最低有效位在前面。但是字母数字数据发送时最高有效位在前面,按照ISO Latin 1(8859-1)标准进行解释。有符号整数作为2的补数发送。所有温度都采用华氏温度。浮点数遵循IEEE浮点标准。


➡ 优先级

报文的优先级和传输速度由设备的厂商确定。J1587包含关于如何设置优先级和传输速度以避免总线过载的建议。如果单条报文中发送多个参数,那么优先级将基于具有最高优先级的参数。应该为包含诊断请求的报文赋予低优先级,以避免干扰正常的总线通信。


➡ 如何理解J1587报文?

SAE的网店中提供J1587标准。表1定义MID。例如,128是引擎(确切地讲是1号引擎),130是传输。表2是所有PID的列表。例如,21是引擎ECU温度。标准的附录1中包含每个PID数据的定义。下面是一个例子:


A.21 引擎ECU温度 — 引擎ECU的内部空气温度。

参数数据长度:

1个字符

数据类型:

有符号的短整型

位精度:

2.5 °F

最大范围:

–320.0至317.5 °F

传输更新周期:

1.0 s

报文优先级:

8

格式:

PID

数据

21

a

a—

引擎ECU温度

本例中,我们可以看到温度编码为一个字节(紧跟在PID字节后面的21)。它是一个有符号的值并带有刻度,所以每个位对应于2.5 °F。

图片

分段报文的组成

图片

使用外部通信链路从“封闭式系统”中读出信息的需求一直在增加。因此J1587提供本设置。使用的方法称为面向连接的传输服务(COTS)并提供方法来发送用于内部通信的长度超过21字节的报文。


这种传输协议可以处理的最大报文长度是3825字节。报文分成段,每个段包含15个字节。最后一个段的长度可能小于15。每个段都被赋予一个带有段号的报头,然后以带有一个MID和一个特殊PID的J1708报文进行发送。分段报文的接收方删除报头和检验和,并且从剩下的15个数据字节重构原来的报文。当整条报文传输完毕后,可以根据需要处理报文,例如可以通过网关发送到外部设备或内部发送到显示器。


用于传输分段报文的服务使用两个特殊的PID。连接管理PID(197)控制连接的开始和结束、报文流控制和报文接收。连接模式数据传输PID(198)专门用于数据传输。


➡ CMP(连接管理PID)

这个PID(197)管理分段的数据传输。这个PID后面的第一个字节包含后续的字节数。第二个字节包含接收方的MID。第三个字节包含连接管理控制命令(CMCC),后面跟随数据字节(不同命令有不同长度的数据字节)。

PID

n

MID

CMCC

数据(1)

数据(2)

数据(3)

数据(...)

△ 连接管理PID

CMCC字节可以包含下列命令:


请求发送(RTS)。从希望传输数据的节点发送。

清除发送(CTS)。从RTS的接收方作为响应发送。

报文结束确认(ACK)。在接收到报文所有段时从接收方发送。

请求标准化的数据。在请求标准格式的数据时使用。例如,驾驶记录或行程记录器。

中止。从发送方或接收方发送,用来中止通信。


➡ CDP(连接模式数据传输PID)

这个PID(198)用于传输分段的报文。这个PID后面的第一个字节包含后续的字节数。第二个字节包含接收方的MID。第三个字节包含段标识(1-255),后面跟随15个数据字节。最后一个段可能不到15个数据字节。


PID

n

MID

Id

数据
(1)
数据
(2)
数据
(...)
数据
(15)
△ 连接模式数据传输PID


➡ 分段报文的传输

要想在两个节点之间传输分段的报文,必须从发送方发送一个虚拟连接请求给接收方。这需使用RTS命令完成,RTS命令包含段数目和要传输的总字节数。接收方必须通过发送一个CTS命令接受请求,CTS命令包含其可以接收的段数目和段发送的先后次序。当这个握手成功完成后,可以使用连接模式数据传输PID来传输数据。当所有数据都传输完成后,通过一个EOM命令关闭虚拟连接。请参见下图。
图片

△ 分段数据通信 ( 图片引自J1587规范 )

返回列表