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

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

Guangzhou Triv Electronic Technologies Co.LTD

技术服务
SUPPORT

目前位置: 首页 > 技术服务 > 技术培训

2020-04-10

SAE J1587简介

作者:    点击:2181

SAE J1587简介
协议背景

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

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

    车辆和组件信息(性能、维护、诊断)。
    导航和时间规划(路线描述和时间估计)。
    驾驶信息(行程记录器数据、驾驶日志)。
    货物运输信息(关于起运地点和运送目的地的信息)。

协议简介

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

    J1587是一种应用层协议,与物理层J1708一起使用。
    J1587描述报文格式并定义参数。
    J1587报文由MID、PID、数据字节和检验和组成。
    按照J1708规定,J1587报文的长度限制为21个字节。
    J1587允许使用面向连接的传输服务(COTS)发送长度大于21字节的报文。

协议细节
J1587报文剖析

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

    报文的第一个字节包含一个节点特定的报文标识(MID)。J1587定义MID的区间为128-255。
    MID后面的第一个字节是一个参数标识(PID)。PID(通常)是一个字节长度,可以包含的值范围是0-255。
    每个PID后面跟一些参数数据字节。它们的值和含义取决于PID的值。注意,报文可以包含多个PID。
    报文以一个字节长的检验和结尾,这个检验和由报文中所有数据字节总和的补数组成。如果报文有效,那么对包括检验和在内的报文中的所有字节总和对256求模,结果是0。

这是一条示例报文。

J1587报文包含两个PID:21和12。

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

PID 194-196用于诊断。出于这个目的,车辆中的许多电气部件都分配有子系统标识(SID)。对于每个MID,zui多可以为其定义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,可以使用的值zui大可以为511。如果第一个PID是255,那么后面的PID被理解为256的求模结果(0=256、1=257)。
参数定义

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

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

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

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

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

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

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

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

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

连接管理PID

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

    请求发送(RTS)。从希望传输数据的节点发送。
    清除发送(CTS)。从RTS的接收方作为响应发送。
    报文结束确认(ACK)。在接收到报文所有段时从接收方发送。
    请求标准化的数据。在请求标准格式的数据时使用。例如,驾驶记录或行程记录器。
    中止。从发送方或接收方发送,用来中止通信。

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

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

连接模式数据传输PID
分段报文的传输

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

返回列表

上一篇:CanKingdom
下一篇:LIN总线简介