SAE J1939简介
SAE J1939简介
SAEJ1939协议是由汽车工程协会(SAE)定义的,主要用于商用车辆,但也用于舰船、轨道机车、农业机械和大型发动机。另外,SAE J1939用作国际标准NMEA 2000(海事) 和 ISO 11783(农业机械)的基础,因而此协议栈也能用于这些应用。
在商用车辆方面,由SAE制定的标准化串行协议长期以来一直用于单个电子控制单元和传动装置上元件之间的通信。基于通常可从单片机串行端获得的J1708/J1587协议可以被视作前驱。
由于需要与J1708/1587协议兼容,对于J1939来说,必须要求CAN报文标识符从11-bits扩展到29-bits(扩展格式),并且CAN模块的开发或协议实现应支持这种报文格式。
因为有扩展的CAN标识符,这就能够象用于J1708那样,将通信关系的定义规则映射到CAN。部分标识符被用于指定一个8-bit源和一个8-bit目标地址(节点数)。
所以通过SAEJ1939能够传输测量值和控制数据并配置元件。另外,还能够读或删除单个元件诊断数据,并对单个控制进行校准。
为了使这些成为可能,对于商用车方面的所有相关变量都要在SAE J1939中定义值域、分辨率、识别数等等。这些对基于J1587技术规格的大都实现。
因此,在J1939协议中,不仅仅指定了传输类型、报文结构及其分段、流量检查等,而且报文内容本身也做了**的定义。SAE J1939在ISO/OSI层模型中的分布根据OSI层模型,
SAE J1939被分成几个层,每一层都分别有相应的文档说明。类似于所有实际上的现场总线协议,在SAEJ1939上第5和6层是不需要的,因此没有定义。
SAEJ1939的功能被分为如下几层:
- **层(物理层)描述在其它事物中与物理媒介的电子接口;
- **层(数据链路层)描述通过基于CAN2.0B技术规格的CAN的数据通信;
- 第三层(网络层)主要描述两个网络部分间针对报文传输的网桥的功能,并且只与J1939网桥实现相关;
- 第四层(传输层)基本上描述的是针对报文申请模式、确认传输和大数据块的分段传输的各种网络服务;
- 第七层(应用层)描述实际的数据(参数或带有值域的网络变量、分辨率、物理单元和传输类型)。每个报文无歧义地对应一个数(参数组数);
- 由于网络管理可以被当作一个分离的单元,能直达硬件(**层),因此在这个层模型中,该模块是作为右手边的一个独立的功能块。网络管理基本上包括自动分配或决定节点地址(即插即用原则)。在SAEJ1939中没有定义节点监视,因而必须在应用时通过循环报文实现