徐学滢,孙永生,曹永娣
(华北水利水电学院,河南 郑州 450011)
基于XCP电控单元网络通信模块的开发
徐学滢,孙永生,曹永娣
(华北水利水电学院,河南 郑州 450011)
基于XCP-on-Ethernet传输层,采用模块化和分层的软件设计方法,设计并开发了电控单元的通信模块,将通信模块分成标定协议和Ethernet驱动2部分,从而保证了通信模块软件在多平台上的移植,且通信模块也更具通用性.实验结果表明,电控单元和标定工具实时传输数据快,通信可靠性高,为电控单元后续匹配标定打下基础.
XCP;标定协议;模块化
在开发和调试ECU的过程中,监控和标定是一个非常重要的环节,监控就是实时检测ECU运行过程中的各种重要参数;标定就是根据发动机的性能要求(如经济性、排放和动力性等)来优化调整ECU的运行及控制参数.由于ECU与标定工具之间存在着频繁的数据通信,所以需要一个稳定、高速及动态特性好的通信协议.欧洲ASAP(标定系统标准化组织)对CCP进行了扩充,产生了XCP[1].欧美国家对标定工具的研究虽然比较成熟,而且开发出了很多标定通信软件,但这些软件大都价格昂贵,通用性差,不能广泛推广和应用.笔者针对这些问题,提出并设计了一种基于XCP-on-Ethernet电控单元的通用的通信模块.
XCP采用独立的协议层和传输层,其中协议层是通用的,根据不同的传输层,XCP协议可能是XCP-on-CAN,XCP-on-Ethernet,XCP-on-UART/SPI或XCP-on-Lin.
XCP可以实现同步数据采集(DAQ)、同步数据激励(STIM)、在线存储器标定、标定数据页的初始化和切换及ECU开发的Flash编程[2].其中同步数据采集(DAQ)和同步数据激励(STIM)互为反操作.主设备和从设备之间通信的数据流如图1所示.
图1 主从设备之间的数据流
XCP协议只定义了2个通信帧,分别是上位机发送到ECU的指令接受对象(Command Receive Object,CRO)和由ECU向上位机传送的数据帧(Data Transmission Object,DTO),每条CRO都必须有对应的指令响应帧和错误回应帧[3].XCP的报文格式分3部分:XCP报头,XCP数据包及XCP报尾,如图2所示.
图2 XCP报文格式
由于讨论的是XCP-on-Ethernet的ECU标定模式,其报文格式只有报头和数据包而没有报尾.XCP报头为LEN+CTR,其中,LEN为数据包的总长度,CTR表示每发送一个新包时增加的值.
XCP遵循主从通信模式,不仅可以实现对控制器的标定,同时还可以以循环或事件驱动的方式对数据进行采集和监测[4].循环模式下,主、从设备之间是“一问一答”的通信方式,即从设备只有在接收到主设备的请求命令后才会执行相应的操作.这种通信方式效率不高,但具有实现简单、占用ECU内存资源少的优点.DAQ模式下,主设备采用应答机制为从设备配置对象描述表(Object Descriptor Table,ODT).配置过程结束后,从设备根据主设备的配置信息确定上传的数据以及上传的周期,无需再由主设备控制.这种通信方式虽然使效率提高,但实现较复杂,且占用ECU内存资源较大.
该通信模块所采用的开发编译环境为Keil公司的RealView MDK4.01,采用C语言编程,并利用J-Link进行下载和调试程序.同时采用模块化的设计方法,将XCP协议的实现作为单独一个模块来设计和调试,增加了其可移植性和复用性.
使用以太网进行数据交换,必须要有TCP/IP协议的支持,选取LwIP作为TCP/IP协议栈的实现.LwIP是Light Weight(轻型)IP协议,其是瑞典计算机科学院的一个开源的TCP/IP协议栈,有无操作系统都可以稳定可靠地运行,是一种简单可靠和使用方便的TCP/IP协议栈.LwIP在保持TCP协议主要功能的基础上减少了对RAM的占用,一般它只需要几百字节的RAM和40 k左右的ROM就可以运行,这使LwIP协议栈适合在中低端的嵌入式系统中使用.
由于LwIP对硬件的要求低,适合应用在实时性响应要求比较高的嵌入式场合.
选取意法半导体公司的全新STM32互连型系列产品STM32f107作为主芯片.该芯片集成了各种高性能工业标准接口,且STM32不同型号产品在引脚和软件上具有完美的兼容性,可以轻松适应更多的应用要求.
物理层网络层收发器采用NS公司的10/100 Mb/s自适应DP83848,其支持各种工业以太网标准.网络收发器连接电路如图3所示.
该通信模块采用分层的软件设计模式,XCP通信模块作为ECU应用程序的一个接口,作为通信模块的顶层,是建立在LwIP协议栈的基础之上的,底层是依靠以太网驱动模块来实现的.具体设计流程如下:首先在main函数中进行XCP协议的初始化及ECU其他模块的初始化,然后进入任务调度器;ECU对上位机指令的接收采用中断模式,对接收到的数据的解析则采用任务模式,这样就可以保证对上位机发送的命令帧的实时响应.也就是说,当ECU进入接收中断后,首先将接收到的数据转存到循环缓冲区,然后退出中断.任务调度器周期性调用解包函数对接收到的数据进行解析,解包函数所完成的功能为:解析出每个完整的数据包,然后调用封包函数HandleXCPMessage(XCPCTO*pRecData)对解析出的CRO_ID调用不同的处理模块.该函数按照28条不同指令组装反馈信息帧、处理数据和调用不同的模块.最后调用udpsend(UNS16 len,UNS8*msg)函数,完成一次对话过程,从而保证上位机和ECU之间的数据的成功传送.主流程如图4所示.
DAQ处理及应答模块采用静态DAQ及事件驱动模式.即对需要传送的数据进行分组,每组数据对应唯一的事件号,从而上位机只需根据事件号即可启动相应的DAQ数据组的传送.
由于采用静态DAQ,所以在进行XCP模块初始化时,必须要将DAQ_List,ODT以及Entry进行初始化,进而确定要发送的数据与DAQ之间的映射关系.静态DAQ最大的缺点就是每个DAQ_List都对应着一个固定的事件号,但是这种模式很简单,也很实用.所以在此采用静态DAQ.上位机如果需要启动DAQ模式,只需发送对应的事件号,然后启动任务进行发送.当标定工具启动START_STOP,开始DAQ数据传输命令后,ECU周期性地上传数据.其流程如图5所示.
准确性和通用性是评价电控系统通信模块性能的重要指标.考虑到标定工具的内容随着控制策略的修改而变化,标定工具将标定变量信息置于变量描述文件中.ECU通信程序首先读出所有标定变量相对地址,设为Add,通过相对地址来实现程序的通用性.通信模块包括Ethernet驱动和XCP驱动两部分,后者是对协议的解析,是标定协议内容的实现;前者是通过移植LwIP来实现底层驱动的,将LwIP移植到其他的微控制器,能够对其电控单元标定,实现在不同硬件平台上移植,增加了通信模块的兼容性和通用性.
将通信模块和上位机标定工具通过网线接成标定系统.经调试发现其传输速率可以达到5 Mb/s.经过反复的标定试验发现:该通信模块运行稳定,数据传输速度快,实时性好.
图3 以太网收发器电路
图4 XCP驱动总框架
基于XCP-on-Ethernet开发的通信模块能够可靠地实现数据标定和参数监测功能,在试验中取得了良好效果.通信模块采用国际通用标定协议XCP,使得ECU和标定软件之间的通信有较好的移植性.若需移植,只需要根据不同传输层修改XCP报头和报尾,即可实现驱动程序的移植[5].同时使用内部时戳,可消除由于传输延迟而引起的不确定性,提高了稳定性[1].将标定协议实现与底层Ethernet驱动分离,实现通信模块的通用性.同时,采用模块化和分层的软件设计方法,将通信模块封装成库函数,作为ECU应用程序的一部分.模块化的设计方法提高了程序的复用性和可移植性,最大限度地降低了程序的耦合,从整体上改善了软件性能.
图5 从机DAQ驱动流程
[1]Patzer A.标定和测量应用的焦点—XCP.[2009-07-30].http:∥www.vogel.com.cn/AUTO/.
[2]Schuermans R,Zaiser R,Hepperle F,et al.XCP -Part 1 -Overview-1.0[C]∥Association for Standardization of Automation and Measuring System,2003.[2011-10-10].http:∥www.asam.net.
[3]Schuermans R,Zaiser R,Hepperle F,et al.XCP - Part 2-Protocol Layer Specification-1.0[C]∥[2011 -10 -10].Association for Standardization of Automation and Measuring System,2003.[2011 -10 -10].http:∥www.asam.net.
[4]冯静,王俊席,卓斌.基于CCP协议的电控发动机标定系统CAN通信模块的研发[J].内燃机工程,2003,24(5):33-38.
[5]杨时威,杨林,卓斌.基于XCP协议车用标定系统的研发[C]∥中国内燃机学会.中国内燃机学会第四届青年学术年会论集.哈尔滨:哈尔滨工程大学出版社,2006.
Development of Network Communication Module for Electronic Control Units Based on XCP
XU Xue-ying,SUN Yong-sheng,CAO Yong-di
(North China Institute of Water Conservancy and Hydroelectric Power,Zhengzhou 450011,China)
By adopting the modularization and stratification method in software design,the communication module for electronic control unit is designed and developed based on XCP-on-Ethernet transport layer.The communication module is divided into two parts,calibration protocol and Ethernet driver module,which guarantees the transplantability of the communication modules on the multi-platforms and its universalization.The experiment results show that the electronic control unit and the calibration tool feature rapid data transport and high communication reliability,which lays a solid foundation for the follow-up matching of the electronic unit.
XCP;calibration protocol;modularization
1002-5634(2012)02-0104-04
2012-01-30
徐学滢(1987—),男,河南南阳人,硕士研究生,主要从事氢发动机的燃烧和排放控制方面的研究.
(责任编辑:杜明侠)