李洋,李鸿强,陈弘,孟永强,刘芳舒
(1天津工业大学电子与信息工程学院,天津 300387;2中国汽车技术研究中心,天津 300162)
CAN总线凭借其可靠性、实时性和灵活性等优势,已经成为纯电动汽车车载总线的主流,但由于CAN只定义了物理层及数据链路层,用户必须要自定义应用层的协议[1-3],这不仅带给用户相当多的困难,而且使不同厂商间的CAN设备彼此无法互通,不利于纯电动汽车的快速发展。因此,研究适用于纯电动汽车车载网络的应用层协议具有重要意义。
CANopen协议是由Bosch领导开发的一种CAN应用层协议[4-5],可作为车载网络应用层协议。国内外关于CANopen协议的研究主要集中于CANopen网络的设计和CANopen协议栈的实现两方面。孔峰等[6]提出采用CANopen作为汽车控制网络的应用层协议;Gh.Livint等[7]提出将CANopen协议应用于混合动力汽车分布式总线控制,实现了不同厂商的CAN设备采用CANopen协议互相通信;Xu等[8]将CANopen协议应用于混合动力电动汽车车载网络,提出了动力总线单元CANopen从站的设计方案;刘怡[9]等以C8051F500单片机为控制核心的开发平台上建立了CANopen协议栈;徐喆等[10]提出了一种利用开源代码CAN-festival在MC9S12XDP512平台上实现CANopen网络从节点的新方法,并将CANfestival移植到实时操作系统uC/OS-Ⅱ上。
目前关于纯电动汽车车门车窗控制系统的应用层协议研究较少,因此,本文针对纯电动汽车车门车窗控制系统,制定了其CANopen应用层协议并在WinCE5.0操作系统上开发了CANopen协议栈,采用CANoe软件实现了CANopen协议测试。
CANopen协议定义的设备模型由通讯子层、对象字典、应用子层组成。通讯子层接口定义了网络管理报文对象(NMT)、过程数据对象(PDO)、服务数据对象(SDO)、特殊功能对象4种通讯对象函数,用来在底层传输数据。对象字典由16位主索引和8位子索引构成,包括所有影响通讯接口、应用、状态机行为的数据信息,是CANopen的核心内容[11-12]。应用子层由用户编写,包括功能和通信二部分,通信部分通过对对象字典进行操作实现CANopen通信,而功能部分由用户根据应用要求实现。
纯电动汽车车门车窗控制系统包括中央、左前门、右前门、左后门、右后门5个电子控制单元。每一电子控制单元的控制对象主要为车窗和门锁,其中左前门和右前门电子控制单元的控制对象还分别有对左后视镜和右后视镜的控制。
中央电子控制单元是整个车门车窗控制系统的控制核心,为CANopen主站,管理整个车门车窗控制系统,其余电子控制单元为CANopen从站。中央电子控制单元通过NMT服务控制其他4个电子控制单元的状态。NMT主节点的对象字典条目由索引1F80H到1F9FH来定义。
中央电子控制单元通过服务数据对象SDO报文对CANopen网络上的其余电子控制单元进行参数配置。SDO客户端由对象字典中1280h-12FFh来定义,SDO服务器由对象字典中1200h-127Fh来定义。各电子控制单元SDO定义如表1所示。
中央电子控制单元和其余电子控制单元通过过程数据对象PDO报文用来传输实时数据,数据传送限制在1到8个字节。PDO包括TPDO和RPDO 2种。TPDO用于发送报文,RPDO用于接收报文,一个TPDO对应一个RPDO。中央电子控制单元接收其余电子控制单元的状态,并发送控制命令,其余电子控制单元发送本地命令和状态。根据车门车窗控制需求,中央和左前电子控制单元PDO报文定义见表2、表3,其余电子控制单元和左前电子单元的类似。
表1 各电子控制单元SDO定义Tab.1 Every electronic control unit SDO definition
表2 中央电子控制单元PDO定义Tab.2 The central electronic control unit PDO
表3 左前门电子控制单元PDO定义Tab.3 Left front door electronic control unit PDO
采用广州致远电子有限公司的EPC-8900I-W嵌入式硬件平台设计CANopen协议栈,EPC-8900I-W采用XScale系列PXA270,其操作系统为WinCE5.0,采用VS2005开发控制台应用程序实现CANopen通讯功能。
CANopen通讯主程序流程为:系统启动后首先初始化CAN通讯参数,然后从站发送启动报文,进入预操作状态并运行状态机,然后开启接收数据线程,收到报文后通过canDispatch()报文分发函数来处理报文。根据CANopen通信协议,分析从缓冲区取出的报文属于哪一种报文,之后进入相应的报文处理程序。下面详细介绍CANopen协议栈中读写对象字典、NMT状态控制、SDO快速传送和PDO报文的处理过程。
对象字典是CANopen协议中最重要的部分,它包含了设备描述及设备网络状态的所有参数。此外,在编辑对象字典时,采用CANfestival提供的对象字典编辑器来简便而高效地进行操作。
对象字典的读写流程图如图1所示。
NMT报文由主站发出,从节点通过接收主节点发送的NMT命令报文进行状态之间的转换。从节点接收到NMT报文的处理流程图如图2所示。NMT命令包括启动节点指示、进入预操作状态指示、停止节点指示、复位通信指示和复位节点指示。从节点判断NMT命令并进行相应状态转换。
图1 读写对象字典流程Fig.1 Processes of reading and writing object dictionary
图2 NMT报文的处理流程图Fig.2 Processing flow chart of NMT packet
SDO报文用于对CANopen网络上的设备进行参数配置。SDO通过使用主索引和子索引,访问设备对象字典中的对象。
SDO有快速传送和分段传送2种传送机制。快速传送最多传输4字节数据,分段传送传输数据长度大于4字节。本文主要实现SDO快速传送功能。快速传送包括快速上传和快速下载。首先SDO客户端判断报文ID是否与本地对象字典存储的ID相同,然后读取SDO报文命令字,开始进行下载或上传。在下载或上传过程中通过读取报文第1到第3字节数据获取目标主索引和字索引,并且对象字典和发送报文之间通过数据缓存区来传递数据。
SDO快速传送流程图如图3所示。
图3 SDO快速传送流程图Fig.3 Flow chart of SDO transmission
PDO报文的处理就是根据接收到PDO报文的通讯参数和映射参数解析报文,将报文中的数据保存至对象字典的对应位置。
PDO报文的处理流程图如图4所示。
图4 PDO报文处理流程图Fig.4 Processing flow chart of PDO packet
其主要流程如下:
首先遍历本地对象字典PDO通讯参数字索引01h内容,判断是否为本地RPDO报文ID,如果为本地RPDO,读取相应映射参数0x00子索引获得映射的个数mappcount,然后依次读取mappcount个子索引的值定位到标准数据区,根据将报文数据写入相应数据区。
CANoe是一个德国Vector公司开发的CAN总线仿真软件,具有网络仿真、监测和分析的功能,其组件CANoe和CANopen为开发、规划及测试CANopen设备和网络系统方面提供了有效的帮助。CANoe软件可以支持全仿真、半实物仿真和全实物仿真[13]。本文利用CANoe进行半实物仿真以验证设计的CANopen协议栈。
设计的CANopen主站控制界面如图5所示。
图5 CANopen主站控制界面Fig.5 CANopen master station control interface
根据CANopen协议定义,主站实现NMT启动节点、停止节点、进入预操作状态、复位节点和复位通信,发送心跳检测报文、发送同步报文、SDO上传和下载、发送PDO报文。
CANoe的CANcaseXL卡提供了CAN接口,必须注意的是,配置的CANoe接口的波特率须与EPC-8900I-W嵌入式硬件平台CAN的波特率相同,否则CANoe和EPC-8900I-W不能通讯。本研究CAN通讯速率为250kb/s。
整体实验平台如图6所示,PC为CANopen主站,EPC-8900I-W嵌入式硬件平台为左前门电子控制单元实现CANopen从站功能。
如图7所示,通过CANoe的Trace窗口可以查看到报文。
图6 主从站实验测试平台Fig.6 Master-slave experimental test platform
图7 通过Trace窗口查看报文Fig.7 View the message through the Trace window
首先,从站启动发送启动报文,其报文ID为0X710;接着主站发送SDO上传报文读取从站主索引1400子索引01的数据内容,即从站RPDO1的报文ID;从站收到SDO报文后,发送响应报文,上传数据;主站发送SDO下载报文设置从站RPDO1的报文ID为0X181;从站收到命令,发送下载成功响应报文;然后主站发送启动节点报文,这时从站可以接收并发送所有通讯报文;主站发送TPDO1报文;主站读取从站RPO1报文数据区内容,可以验证PDO通讯。观测结果显示实现了NMT、SDO、PDO报文通讯。
1)设计了纯电动汽车车门车窗控制系统CANopen协议,定义了各电子控制单元NMT、SDO、PDO报文ID和报文内容等参数。
2)基于WinCE5.0嵌入式硬件平台上开发了CANopen协议栈,实现了NMT、SDO、PDO报文通讯。
3)通过CANoe软件设计了CANopen主站管理界面,实现了CANopen主从通讯,结果表明设计的CANopen协议栈具有很好的实时性,能较好的满足纯电动汽车车门车窗控制系统实际控制需求。
[1]韩江洪,刘征宇,崔世辉等.混合动力汽车CAN网络通信协议的应用研究[J].汽车工程,2011,33(12):1062-1066.
[2]刘阳,马蓉,曹卫彬,等.基于ISO11783的拖拉机导航系统CAN节点设计[J].石河子大学学报:自然科学版,2011,29(5):641-644.
[3]齐向宁,曹卫彬.精量播种机监测系统的设计[J].石河子大学学报:自然科学版,2011,29(4):505-508.
[4]黄智,王科,杨沿平.车身舒适系统总线协议研究[J].汽车工程,2009,31(4):331-335.
[5]闫在春,程夕明,南金瑞,等.燃料电池客车CAN通信协议仿真[J].系统仿真学报,2006,18(9):2381-2385.
[6]孔峰,张衡,宋雪桦,等.基于CANopen协议的汽车控制网络初探[J].汽车工程,2007,29(7):594-596.
[7]Gh.Livint,V Horga,M R~atoi,et al.Implementing the CANopen Protocol for the Distributed Control of a Hybrid Electric Vehicle[C]//IEEE ELECTROMOTION,2009.-EPE Chapter'Electric Drives'Joint Symposium.July 1-3,2009,1-6.
[8]Xu Zhe,Dong Shifeng.The Design and Implementation of a CANopen Slave Stack for Powertrain Controller in Hybrid Electric Vehicle[C]//Proc.of International Conference on Intelligent Computation Technology and Automation.[S.l.]:IEEE Press,2010:755-758.
[9]刘 怡,王家乐,CANopen从站协议的设计与实现[J].电子技术设计与应用,2011,38(9):38-40.
[10]徐喆,张卓,闫士珍.基于uC/OS-II的 CANopen从节点的实现[J].计算机系统应用,2008(7):113-118.
[11]郭利进,王化祥,龚进峰.基于CAN总线的车身网络系统及其控制策略研究[J].汽车工程,2006,28(8):774-778.
[12]叶爱兵,郑华耀,陈巨涛.基于CANopen的协议分析系统设计与实现[J].扬州大学学报:自然科学版,2009,12(3):53-56.
[13]郭宏志,陈虹,宋同好,等.嵌入CAN节点的汽车电子节气门仿真系统[J].系统仿真学报,2009,21(8):5716-5719.