原创 SAEJ1939协议_综述(转载)

2007-10-26 11:16 5490 8 9 分类: 汽车电子

       SAE J1939协议是由美国汽车工程师协会——卡车和公共汽车电气电子委员会下的卡车和公共汽车控制和通讯网络分委员会制定的高层CAN网络通讯协议。它主要用于为重型道路车辆上电子部件间的通讯提供标准的体系结构[1]。
1 SAEJ1939协议构成文件
SAEJ1939协议包括如下几部分内容:
SAE J1939-11  物理层,250 Kbits/s,屏蔽双绞线
SAE J1939-13  物理层,离线诊断连接器
SAE J1939-15  简化的物理层,250 Kbits/s,非屏蔽双绞线
SAE J1939-21  数据链路层
SAE J1939-31  网络层
SAE J1939-71  车辆应用层
SAE J1939-73  应用层-诊断
SAE J1939-81    J1939网络管理协议 


-----------------------------------------------------------------------------------


2 各层协议的功能


2.1 物理层
    SAEJ1939的物理层规范包含SAE J1939-11(物理层,250 Kbits/s,屏蔽双绞线)、SAE J1939-15(简化的物理层,250 Kbits/s,非屏蔽双绞线)和SAE J1939-13(物理层,离线诊断连接器)三部分。其中SAE J1939-11和SAE J1939-15给出了物理层为屏蔽双绞线和非屏蔽双绞线时的网络物理描述、功能描述、电气规范、兼容性测试、总线错误讨论。而SAE J1939-13(物理层,离线诊断连接器)则定义了离线诊断连接器的通用需求、性能需求和物理需求。


2.2数据链路层
    SAEJ1939的数据链路层在物理层之上提供了可靠的数据传输功能。通过数据链路层的组织,发送的CAN数据帧具有必需的同步、顺序控制、错误控制和流控制等功能。其中,流控制是通过一致的信息帧格式完成[2]。
数据链路层的功能通过命令、请求、广播/响应、应答、组功能和传输协议来实现。其中传输协议用于长度大于8个字节的参数组(PGN)的收发。传输协议涉及报文的拆装和重组,通讯方式又分为广播和点对点会话,对传输过程还定义了超时监测和错误处理,是数据链路层最复杂的部分。


2.3 网络层
    SAE J1939的网络层定义了网络互联ECU的需求和服务,它们负责不同SAEJ1939网络段之间的互联。同时网络层也定义了各种类型的网络互联ECU和它们所提供的功能。


2.4 应用层
应用层详细定义SAEJ1939协议应用层所用到的SPN(可疑参数编号)和PGN(参数组)。该层包含管理功能和所采用的支持应用的机制。在应用层技术要求中,对报文格式、ISO拉丁字符集、参数范围、传输重复率、发动机参数的命名规则等方面都有具体的规定和描述[3]。应用层定义的SPN和PGN是最多的。


2.5应用层-诊断
    SAEJ1939应用层-诊断定义了用于诊断服务的报文。诊断报文(DM)提供了进行车辆维修时的功能。SAE J1939-73提供的诊断定义是为了满足所有可能使用SAE J1939网络的用户需要的。这些定义适合SAE J1939中定义的所有工业组的应用。诊断必须具有能够满足不同客户、工业组和法规制订机构所需求的诊断能力[4]。
    SAE J1939所提供的主要诊断功能包括:周期性广播活动诊断故障代码;确定控制器诊断灯状态;读取或清除诊断故障代码;读写控制器存储器;提供安全功能;停止/起动报文广播;报告诊断就绪状态;监测发动机参数。这些功能分别由诊断报文DM1——DM19具体实现。


2.6 网络管理
    SAEJ1939的网络管理负责源地址管理、地址与功能的关联和对网络相关错误的检测和报告。它定义了名称和地址方面的需求、网络管理过程、网络错误管理、地址声明和CA(控制器应用)的初始化过程和最低限度的网络管理功能[5]。


3 SAEJ1939协议软件开发
    SAEJ1939是一个复杂、完整的汽车网络体系结构,其软件实现是一项大型的系统工程。其复杂性尤其表现在:
(1) 数据链路层的传输协议——用于传送多包的长报文(最多255包,1785字节),具有详细完整的连接管理功能定义,以保证在各种情况下系统都能够稳定可靠地工作。连接管理包括广播,建立点对点会话连接、维持连接、终止连接、流控制、报文结束应答的详细约定。这部分协议还规定了在各种情况下的超时和错误处理。传输协议的软件系统架构是状态图和流程图复杂地交织在一起的混合体。以传统的软件设计、实现方式开发这部分内容需要丰富的经验和高超的技巧。
(2) 网络管理——网络管理规定了系统初始化过程中进行地址声明的过程。设计了在发生地址冲突时,单一地址能力CA(Controller Appliaction——控制器应用)、仲裁地址能力CA和命令地址能力CA的状态转移。网络管理部分软件设计的突出特点是状态转移图。
(3) 应用层—故障诊断——SAE J1939所提供的主要诊断功能包括:周期性广播活动诊断故障代码;确定控制器诊断灯状态;读取或清除诊断故障代码;读写控制器存储器;提供安全功能;停止/起动报文广播;报告诊断就绪状态;监测发动机参数。这些功能分别由诊断报文DM1——DM19具体实现。其中DM1报文是诊断报文中最基本、最常用,也是最重要的。它周期性地向SAE J1939网络广播当前故障信息(以1秒为间隔)。如果有新的故障发生或当前的某个故障消失,它会即时向网络广播故障变化情况。


上述三部分的软件开发均包含了复杂的状态/流程图的设计、仿真调试和代码实现,是SAEJ1939软件开发最复杂的部分。对这部分软件开发所采用的开发模式、开发流程和开发工具将对开发的水平、质量和效率产生很大影响。


 


 

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户1531838 2010-10-20 15:27

今天一天看了"特权"大哥的历程,不得不说你学习速度很快啊,佩服,学习!!!!

用户1380985 2008-12-31 21:20

向你学习。

用户179274 2008-12-22 22:05

加油

用户1497702 2008-12-21 20:36

加油

用户21307 2007-10-26 17:23

强烈支持!!!!!

相关推荐阅读
用户1027019 2015-03-12 10:35
LM2596器件选型
LM2596有不同生产商但提供的规格数据都一样。下图为典型12V输入,输出5V 3A电路。输出电压由R1 R2  Vref等决定 ,  Vout =Vref(1+R2/R1),Vref=1.23V固定...
用户1027019 2009-05-12 22:23
C语言 条件编译详解
预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。在C 语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义宏、根...
用户1027019 2009-04-22 16:31
c语言中volatile关键字
volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改。用volatile关键字声明的变量i每一次被访问时,执行部件都会从i相应的内存单元中取出i的值。没有用vo...
用户1027019 2009-04-10 18:09
什么是差动保护?
差动保护是输入的两端CT电流矢量差,当达到设定的动作值时启动动作元件。保护范围在输入的两端CT之间的设备(可以是线路,发电机,电动机,变压器等电气设备) 逆相序上面两位已经解释了,有功反向是逆功率而不...
用户1027019 2009-03-14 13:09
labview安装的技巧
labview安装的技巧2007-09-14 01:13下载: Labview8.0      Labview破解补丁首先下载labview8.2注册机,现在网上很多,随便提供个链接http://ww...
用户1027019 2009-02-07 22:31
LATEX文件中如何JPG插图?
使用一个名字叫ebb的工具。一般widows下装上Ctex都会带这个小工具,Linux下安装Latex后一般也会有,先用ebb生成对应的BoundingBox文件,如输入命令: ebb test.jp...
EE直播间
更多
我要评论
1
8
关闭 站长推荐上一条 /3 下一条