一、SAE J1939是什么
SAE J1939(以下简称J1939)是由汽车工程师协会(SAE )定义的标准,专门用于提供微处理器系统之间的串行数据通信。虽然CAN存在并且被广泛用于小型车辆,但J1939被设计为大型车辆复杂网络的专用通信和诊断协议。J1939通常应用于重型车辆,如卡车,拖拉机,拖车,农用车辆,船舶,援助和救援以及许多此类越野车辆。今天,它已被世界各地的柴油发动机制造商广泛认可。
二、J1939 协议通信原理及内容
1、J1939 与 CAN
J1939 是一种支持闭环控制的在多个 ECU 之间高速通信的网络协议冈。主要运用于载货车和客车上。它是以 CAN2.0 为网络核心。表 1 介绍了 CAN2.0 的标准和扩展格式,及 J1939 协议所定义的格式。表 2 则给出了 J1939 年的一个协议报文单元的具体格式。可以看出, J1939 标识符包括:PRIORTY(优先权位);R(保留位);DP(数据页位);PDU FORMAAT(协议数据单元);PDU SPECIFIC(扩展单元)和 SOURCE ADDRESS(源地址)。而报文单元还包括 64 位的数据场。
2、数据传转协议
J1939 通信中的核心是负责数据传输的传输协议。它的功能分为两部分:
(1)数据的拆分打包和重组
一个 J1939 的报文单元只有 8 个字节的数据场。因此如果所要发送的数据超过了 8 字节,就应该分成几 个小的数据包分批发送。数据场的第一个字节从 1 开始作为报文的序号,后 7 个字节用来存放数据。所以可以发送 255×7=1785 个字节 的数据。报文被接收以后按序号重新组合成原来的数据。
(2)连接管理
主要对节点之间连接的建立和关闭,数据的传送进行管理。其中定义了 5 种帧结构:发送请求帧、发送清除帧、结束应答 帧、连接失败帧以及用来全局接收的广播帧。节点之间的连接通过一个节点向目的地址发送一个发送请求帧而建立。在接收发送请求帧以 后,节点如果有足够的空间来接收数据并且数据有效,则发送一个发送清除帧,开始数据的传送。如果存储空间不够或者数据无效等原因, 节点需要拒绝连接,则发送连接失败帧,连接关闭。如果数据接收全部完成。则节点发送一个结束应答帧,连接关闭。
(3)J1939 的参数格式
J1939 中还定义了参数的具体格式,如标识符、优先级、数据长度、参数的范围等。参数又划分为状态参数和测量参数。状态参数表示具 有多态信号的某一种状态,如发动机刹车使能/禁能、巡航控制激活/关闭,扭矩/速度控制超载模式、错误代码等。而测量参数则表示所接 收到的信号的值的具体大小,如缸内爆发压力、最大巡航速度、发动机转速等。