文档库 最新最全的文档下载
当前位置:文档库 › SAEJ1939协议的研究及其协议栈的实现

SAEJ1939协议的研究及其协议栈的实现

在汽车行业中,只有遵循同一总线标准的智能零部件才能构成可实施信息交互的总线系统。而

CAN 总线标准只包括ISO 参考模型的物理层和数

据链路层。应用层协议由用户依据应用领域自行定义。为了实施汽车总线标准化工作,需要建立更加完善的系统,在CAN 的基础上选择合适的应用层协议[1]。ISO11992、ISO11783以及SAE (美国汽车工程师协会)的J1939都是基于CAN 的汽车电器系统通信协议,而且SAE J1939通讯协议是目前汽车电子控制领域最为全面的通讯协议,研究开发人员都

遵循这个协议进行汽车电子控制器的开发,将为大家提供了统一的开发标准和接口,提高了汽车电子控制系统通用性。

J1939协议技术在国外,特别是欧洲、美国、日

本,已经相当成熟。目前,J1939已经成为世界各大车辆部件制造厂商支持的重要通信标准,尤其在大客车、载重货车、特种车辆和工程机械得到广泛的应用[2]。国内在CAN 总线方面的研究和应用与国外相比有明显差距。由此,SAE J1939协议不仅是目前有实用参考意义的车用网络协议,而且对其

SAE J1939协议的研究及其协议栈的实现

张涛,李珍珍,王思山,黄爱蓉

(湖北汽车工业学院电气与信息工程学院,湖北十堰442002)

摘要:阐述了一种基于CAN 总线的车辆网络通信协议SAE J1939,设计和实现了基于μC/OS-II 嵌入式操作系

统的协议栈,能够发送和接收J1939报文。该协议栈支持分布在车辆各个不同位置的ECU 之间的具有实时闭环控制功能的高速通信网络。最后,在采用标准SAE J1939协议的汽车仪表上验证了所设计的协议栈,很好地实现了车辆ECU 之间的高速通信。

关键词:CAN 总线;SAE J1939;μC/OS-II ;ECU 中图分类号:TP277

文献标志码:A

文章编号:1008-5483(2010)01-0025-05

SAE J1939Protocol and Implementation of Its Protocol Stack

Zhang Tao ,Li Zhenzhen ,Wang Sishan ,Huang Airong

(School of Electrical and Information Engineering ,Hubei Automotive Industries Institute ,Shiyan 442002,China )

Abstract:The SAE J1939protocol of vehicle network communication based on CAN bus is described.The protocol stack based on μCOS -II embedded operating system is designed and implemented.The J1939messages can be sent and received through it.High-speed communication network between ECUs in the different positions in the vehicle and with real -time closed -loop controlling function is supported by the protocol stack.The protocol stack is verified on the motormeter using the SAE J1939protocol,the result show that the communication between ECUs of the vehicle is implemented very well.

Key words:CAN bus;SAE J1939;μC /OS-II;ECU

收稿日期:2011-02-22

基金项目:湖北省高等学校优秀中青年科技创新团队计划项目(T200903)

作者简介:张涛(1976-),男,湖北随州人,硕士,从事网络安全、网络应用方面的研究。

湖北汽车工业学院学报Journal of Hubei Automotive Industries Institute

第25卷第1期2011年3月

Vol.25No.1Mar.2011

湖北汽车工业学院学报2011年3月

彻底分析对制定上层协议有着重要的指导意义。1SAE J1939协议的研究与分析

SAE J1939协议供卡车及其拖车、大客车、建

筑设备以及农业设备使用,是用来支持分布在车辆各个不同位置的电控单元之间实现实时闭环控制功能的高速通信标准,其数据传输速率为250kb/s ,其物理层和数据链路层以CAN2.0B 为基础,还定义了网络层和应用层协议。J1939通信协议是以

CAN 总线通信协议为基础制定的,借用CAN 的信

息帧传递J1939的信息,即利用CAN 总线的29位标识符位形成J1939的编码系统,约定了货车和客车的通信编码,并按这一规则形成了J1939的通信协议,实现了一个完整的网络定义[3]。

1.1J1939协议与OSI 模型

SAE J1939协议各层根据OSI 模型构建,针对OSI 每层都有对应的J1939协议分层,但并不是所

有的层次都是由各自的J1939文档来明确界定的。

SAE J1939协议与OSI 模型的关系如图1所示[4]。

1.2SAE J1939协议层

SAE J1939协议是车辆网络的应用层协议,其

物理层和数据链路层都是以CAN2.0B 协议为基础的,有关CAN 的介绍很多,在此不作过于详细的描述,只对本协议相关内容进行研究。

物理层主要是定义电气接口和物理介质,实现网络中电控单元(ECU )之间的电连接。物理层物理介质为中屏蔽双绞线,其特定阻抗为120Ω,电流对称驱动。2条线分别命名为CAN_H (黄色)和

CAN_L (绿色)。物理层是差动电压方式传输信号的[5]。

数据链路层通过物理链接保证数据可靠传输。主要定义了信息帧的数据结构、编码规则,包括通信优先权、通信格式、通信要求、总线仲裁、错误检测及处理,即发送CAN 数据帧中的必要同步,顺序控制,纠错控制和流控制。流控制是以统一的消息帧格式实现的。SAE J1939设备必须使用扩展帧,标准帧格式消息可以在网络中存在,但只能以本文所描述的方式。标准帧设备不响应网络管理消息,不支持标准化通信[6]。

2SAE J1939协议栈总体设计

根据OSI 模型层次的划分进行本协议栈的总

体分析与设计,并对除了网络层以外的每一层分别实现,最终对系统软硬件进行完整的设计并测试。

2.1SAE J1939协议栈框架设计

SAE J1939协议的底层沿用了CAN 标准,但

其通信协议却比CAN 复杂得多,针对具体应用的高层差别也较大,一般不能将全部协议内容封装在通信控制器芯片内,而需要采用软件的方法来实现,即通过通信协议栈实现通信功能[10]。根据ISO 模型,协议栈采用分层结构。

SAE J1939协议栈由3个模块组成:数据链路

层、传输层和网络管理层。协议栈的最底层直接面向硬件(CAN 控制器),最顶层则面向用户应用程序。通过修改配置文件和硬件抽象层,可将协议栈向多种硬件移植,适合特定应用的需要[10]。根据上述分析,可以设计出SAE J1939协议栈的软件框图如图2所示。

2.2SAE J1939软件系统选择

设计汽车ECU 的开发平台,并在其上移植

J1939通信协议栈,可快速实现汽车ECU 之间的通

信功能,使其方便的接入汽车内部网络系统中。对于汽车网络,是一个复杂的系统,各种通信以及功能的实现都需要快速准确的执行,并且可能同时还

图2

协议栈总体框图

图1与OSI 7层模型对应的SAE J1939协议分层模型

26——

第25卷第1期

有几个任务的通信和执行,所以对这些较复杂的ECU(如汽车仪表、控制中心等)需要使用操作系统。针对汽车电子的特点,从实时性、经济性、可移植性等方面考虑,嵌入式操作系统μC/OS-II是较合适的选择[3]。

μC/OS-II是一种简单、高效、可移植、可固化、可裁剪、抢占式且源代码公开的嵌入式实时操作系统,已经被广泛应用到各种嵌入式系统中。μC/OS-II最多支持256个任务,其内核为占先式,并支持信号量、邮箱、消息队列等多种进程间通信机制;用户可以根据需求对内核中的功能模块裁剪。

3系统硬件设计

通过对SAE J1939协议栈各层分析,设计实现整个J1939协议栈通信所依赖的硬件平台。微控制器选用NXP公司推出的以ARM Cortex-M3为处理器的32位微控制器LPC1768,其可用于集成度和低功耗的嵌入式应用,十分适合本项目的硬件条件。CAN收发器采用TJA1050,它是控制器区域网络(CAN)协议控制器和物理总线之间的接口,是一种标准的用于汽车和普通工业应用的先进CAN收发器。系统硬件框图如3所示。

4系统软件设计

主要围绕协议栈具体实现过程进行研究和设计,并且基于μC/OS-II嵌入式操作系统,进行整体的程序设计,以实现协议栈J1939报文数据的传输。然后,分别对各个层之间功能以及消息传递做具体的实现。

4.1基于μC/OS-II系统的软件总体设计

在SAE J1939协议栈中,消息在μC/OS-II嵌入式操作系统中的接收和发送的流程如图4所示。

在消息接收中,CAN控制器将其寄存器中的如CAN帧格式、CAN数据帧ID以及CAN消息包含的数据等内容,通过建立3个邮箱进行各层数据传送,并且在数据链路层DL(Data Link Layer)、传输层TL(Transport Layer)和应用层APP(Users Ap-plication Layer)分别创建相应任务,对数据进行处理,以满足设计需要[11]。

由于SAE J1939协议的网络管理层包含的地址声明、地址冲突和地址仲裁内容繁琐复杂,不是本次课题实现的目标,故对该层只做了基本分析。故报文的发送的实现只开始于应用层。当启动一个任务,应用层就调用传输层发送报文的函数,将报文发送到传输层;或者当应用层接收到消息将消息经过处理转换成发送报文传输到TL。TL调用数据链路层的报文格式转换函数,将J1939报文转换成CAN数据帧格式,并调用物理抽象层HAL (Hardware Abstraction Layer)发送函数,将数据写入CAN各类寄存器。

当应用层将消息发送到抽象物理层,从CAN 寄存器中读取数据有可以开始进行J1939报文的接收,如此循环。在商用车上面,目前只有发送机相关参数使用了J1939协议,故对发送机转速、冷却液温度和故障等数据进行发送和接收。当给应用层发送的发送机转速、冷却液温度和故障的值做一个动态的变化时,该协议栈就可以自动的完成相关数据的发送和接收。

4.2协议栈抽象物理层设计

图3系统硬件框图

图4系统总体流程框图

张涛,等:SAE J1939协议的研究及其协议栈的实现27

——

湖北汽车工业学院学报2011年3月

抽象物理层HAL模块提供的功能:CAN硬件

初始化;CAN数据包的发送和接收。该层利用中断

接收消息,并将消息存入缓冲区。在发送报文过程

中,HAL建立3个缓冲区发送报文。

4.3协议栈数据链路层

数据链路层模块提供了一种打包应用的数据

成CAN扩展帧格式的方法,并且当物理抽象层能

够传输CAN包时缓存数据包。另外,数据链路层模

块缓存接收CAN包,根据目的地址过滤数据包,发

送过滤后的数据包到传输层。

数据链路层DL在初始化时就在数据链路层建立了一个任务。该任务请求来自抽象物理层HAL的消息发送,并对报文进行过滤,最后对过滤后的数据包进行消息发送,流程图见图5。其中如果不是所要求的CAN的ID值,就忽略该消息。

在数据链路层消息发送过程中,DL将发送报文的J1939报文格式转换成CAN数据帧格式,该函数被传输层调用,重组完毕后调用物理层消息发送函数,将消息发送到HAL。

4.4协议栈传输层

传输层为J1939协议提供消息的打包、重组和连接管理。长度小于等于8字节的消息可以直接从传输层经过处理后发送或接收。而对于大于8字节消息则需要对消息进行拆装和重组。

传输层TL在初始化时就在该层建立了一个任务。该任务请求来自数据链路层DL的消息发送,并对消息的格式从CAN到J1939报文的转换,最后对J1939报文格式的消息发送,流程图见图6。

传输层中消息的发送,主要由应用层调用传输层传输函数J1939_Transmit_Message()开始。该函数调用数据链路层中的函数Build_CAN_Packet()将消息发送至数据链路层。

4.5协议栈应用层设计

为了达到软件部分总体设计中将SAE J1939协议栈中数据发送和接收做成一个循环的流程的要求,在应用层分别发送3个动态变化的参数,即发动机转速、发送机冷却液温度和故障指示。

应用层报文的发送是启动任务的任务主体,一直处于就绪状态。给发送机转速、冷却液温度和故障指示灯赋值,并使它们处在一个连续不断的数据发送过程中。调用传输层函数将J1939报文消息从应用层一直发送到物理抽象层。

同时,为了便于观察从应用层发送的J1939报文的数据,调用J1939_Send_To_PC()函数,将应用层发出的数据输出到串口上,应用在PC机上显示出来。在上述分析过程知道接收报文的转发在SAE J1939协议栈数据之间循环发送和接收有着重要的作用。该函数对报文PGN值进行判断并且相应转换,将转换后的报文发送到传输层。

5系统调试

系统测试分为SAE J1939协议栈报文发送测试和接收测试。这里讲到的软件调试准确的说应该是软硬件的联合测试,这些软件的测试都是基于硬件平台和辅助软件调试助手完成的。

根据以上分析,整体的测试可以采用如图7所示方案。PC机上编辑显示界面,用于监视开发板1所发出的报文,而开发板1上的指示灯指示其发送一个报文就闪烁一次。与此同时,开发板2接收到开发板1发送过来的报文,并且开发板2上的指示灯2用来指示没接收到一个报文就闪烁一次。即可

图7J1939协议栈测试总体框图

图5报文接收过程中DL层的任务图6CAN数据帧转换成J1939格式示意图

28——

第25卷第1期(上接第24页)

控电动AMT 换挡操纵机构的特点,采用如下控制策略,能保证在理想换挡时间基础上,有效减小换挡冲击、延长同步器使用寿命。

1)通过对换挡电机的PWM 控制,准确地控制

挂挡全过程中的换挡力矩,实现快速无冲击挂挡。

2)换挡结束后控制电机微动以完全消除拨叉

与结合套间压力,能有效减少其磨损量,并消除由此造成的脱挡故障。

参考文献:

[1]何忠波,白鸿柏.AMT 技术的发展现状与展望[J ].农业

机械学报,2007,38(5):181-186.

[2]陈家瑞.汽车构造[M ].北京:机械工业出版社,2008.[3]高维山.变速器设计[M ].北京:人民交通出版社,1995.[4]何忠波,白鸿柏,张培林,李国璋.提高AMT 车辆换挡

品质控制策略与试验研究[J ].汽车工程,2006,28(9):

839-843.

验证J1939报文的接收。之后,开发板2将报文进行转发,汽车仪表遵循SAE J1939协议,就可以将相应数据显示。

6

总结

通过深入分析研究SAE J1939协议各层的具

体规范,然后确立实现了硬件和软件方案。通过对

SAE J1939协议栈物理层、数据链路层、传输层和

应用层的报文的发送和接收,实现车辆ECU 之间的相互通信。但是J1939协议的彻底实现还需进一步研究。比如地址声明,地址发生冲突时有地址仲裁,重新声明地址需要制定SAE J1939协议报文传输的仲裁机制,这就是协议栈的网络管理层作用之一。文中没有对该层进行设计实现,要对SAE

J1939协议栈的实现做更进一步的完善,也是今后

研究和设计发展的重点方向之一。

参考文献:

[1]高燕,高松,赵明.SAE J1939协议在客车上的应用现

状及展望[J ].工业控制计算机,2006,19(4):68-69.[2]高松,高燕,王吉华.SAE J1939协议在车辆上的应用

[J ].拖拉机与农用运输车,2006,33(6):1-2.

[3]夏继强,李晓君,曹磊,孙进.SAE J1939协议栈设计及

μC/OS-II 系统下的开发平台的研究[J ].汽车工程,2008,30(12):1069-1074.

[4]SAE J1939-01,Recommended Practice for Control and

Communications Network for On-Highway [S ].2000.

[5]SAE J1939-11,Physical Layer,250Kb/s,Shielded Twisted

Pair [S ].1999.

[6]SAE J1939-21,Data Link Layer [S ].2001.[7]SAE J1939-31,Network Layer [S ].2004.

[8]SAE J1939-71,Vehicle Application Layer [S ].2008.[9]SAE J1939-73,Application Layer-Diagnostics [S ].2006.[10]

Port GmbH .J1939Protocol Stack

[K/OL ].(2010)

[2011-01-06].www .port.de.

[11]任哲,潘树林,房红征.嵌入式操作系统基础μC/OS-II

和Linux [M ].北京:北京航空航天大学出版社,2006.[12]丁海涛,杨建森.SAE J1939协议培训教程[B/OL ].

(2008-10-30)[2010-12-08].https://www.wendangku.net/doc/6415532428.html,/p -33474417.html.

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

张涛,等:SAE J1939协议的研究及其协议栈的实现

29——

相关文档