摘 要:XCP 协议是一种标准的通用标定协议,基于XCP协议的标定方式能够实现便捷、可靠和高效的在线标定。在对 XCP 标定协议、CAN 总线通信协议以及所选芯片 TC1767 的相关功能模块进行研究的基础上,设计并开发了纯电驱动整车控制器XCP标定系统,包括其构成组件和详细方案。这一标定系统能够实现组件的相关功能主要包括实时标定数据和标定数据下载。标定工具软件 CANoe 对标定系统进行的测试,验证了XCP标定系统可以实现高效的在线标定。
关键词:文章发表,标定系统,CAN模块,TC1767控制器,XCP标定协议
Abstract: XCP protocol is a standard general calibration protocol which can provide convenient conditions for communication and transplantation. On account of the study of XCP, CAN calibration protocol and some relevant function modules on the TC1767, the designed calibration system for the pure electric vehicle controller includes the components of the theoretical model based on XCP and the detailed schemes. The system allows real-time calibration and downloading the calibration data. The calibration system was tested by the software CANoe and its effectiveness was verified.
Key words:calibration system; CAN module; TC1767 controller; XCP calibration protocol
当前,应用CAN总线网络来实现汽车内部多个ECU之间的通讯已经非常普遍。在需要对ECU进行监测和标定时,基于CAN总线的标定协议CCP得到了广泛的应用[1]。但是,车载网络变得越来越复杂和多样化,除了控制器区域网络(CAN)外,还有LIN、MOST、Flex Ray等,下一代的标定协议必须能满足这些不同网络的要求。为此,ASAM在2003年制定了XCP标定协议。XCP标定协议是CAN标定协议 CCP2.1的改进版,除了CAN网络以外,它还支持其它类型车载网络[2]。XCP协议不依赖于物理传输层,相比于CCP,其主要优点是传输层的独立性。XCP标定协议效率高、占有资源少,故而能够实现通用标定协议的要求[3]。
基于XCP标定协议的标定方式能够实现便捷、可靠和高效的在线标定。本文的主要内容就是针对基于英飞凌TC1767的整车控制器,研究与开发符合XCP标定协议的在线标定系统。标定系统的设计包括了XCP标定系统的构成组件和详细方案。标定系统能够实现实时标定数据和标定数据下载的功能。为了验证XCP标定系统的可行性和实时性,最后利用工具软件 CANoe 进行了二次开发并对标定系统进行了测试。
1 纯电动汽车的特性分析
纯电动汽车仅依靠电力作为驱动力,电动机将动力电池组的电能转化为机械能用以驱动汽车行驶。纯电动汽车的结构根据电动机的不同布置,可以分为集中电机驱动、多电机驱动、轮毂电机驱动等3种模式。
本文的研究对象选择轮毂电机四驱纯电动汽车,试验样车如图1所示。该车分别由4个轮毂电机独立驱动4个车轮,动力电池由4块12 V单体电池串联的铅酸电池组成,电动汽车的额定电压/电流为48 V/50 A,额定转速为300 r/min,额定转矩为25 N・m,额定功率为1.5 kW。
轮毂电机驱动模式将电机本体、车轮轮毂壳体和齿轮传动系统集成一体。轮毂电机控制器控制方式可直接将按需标定的信号接入电机控制器来控制电机。而试验样车的电机控制器采用CAN通讯接口和整车控制器进行通讯。基于XCP标定协议,通过CAN总线电机接受电机控制器发送的指令来实现在线标定并进行标定数据采集以实现车辆正常行驶。
本电动汽车控制器的核心芯片是英飞凌TC1767,该芯片是AUDO FUTURE产品家族中专门面向汽车应用而优化设计的芯片[4],TC1767程序就嵌入在芯片中。
TC1767是一种32位的高性能单片机,其硬件特点包括:程序内存单元指令存储器和指令缓存;串行通信接口;能够直接存储器存取控制器DMA操作和中断服务;具有通用定时器;具备高性能片上总线;片上调试和仿真设备;灵活连接到外部组件和电源管理。该芯片提供2 MB片上闪存、128 KB RAM和几种通用片上外围单位如定时器单元和模拟数字转换器。CPU时钟频率为133 MHz。
2 标定系统的设计与开发
本文中标定系统主要是对下位机的开发,选用CAN总线作为传输层,即选择TC1767上的一个CAN模块并进行CAN模块驱动程序的开发。在本标定系统中按照XCP协议进行通信,并采用主从的通讯模式。XCP-on-CAN可以采用两种工作模式:一种是标准通讯(查询)模式,另一种是块传输模式[5]。本标定系统中用查询模式实现对纯电驱动整车控制器进行参数标定,用块传输的方式实现对电机控制器采集数据的周期性上传(DAQ的实现)。
2.1 标定系统的结构和组成 标定系统总体结构如图2所示。CAN通信模块采用了CAN通信卡,将上位机USB口输出的信号经过转换后发送给ECU的CAN口。电动机驱动控制器负责处理标定界面下发的标定数据和传感器采集的测量数据。CAN通信模块将收到的USB信号转换为CAN信号发送给下位机ECU。XCP标定程序通过 TASKING编译并且嵌入到TC1767芯片中。标定时,将数据放入事先制好的DAQ表中,ECU再对这些表进行周期性上传,通过CAN模块和USB口最后在监测窗口中实时显示测量数据。
标定系统的执行过程主要有两部分:初始化和执行周期任务[6]。初始化过程包括时钟设置、输入输出引脚配置以及CAN模块的初始化设置。初始化完成后,系统方能启动定时器。
系统循环调用两个系统任务,在5 ms任务中首先检查CAN总线上有无来自上位机的XCP 命令报文,然后执行在线标定,显示标定数据数值的变化。在2.5 s任务中,主要是实现标定过程中DAQ的功能模块,在此任务中程序循环处理标定的发送队列上的数据,然后以块传输模式将数据传输至网络上,以报文的形式呈现。
相比于CCP,CAN总线上XCP的报文不需要报头,只有数据包和报尾[3]。XCP数据包与传输层的选择无关。报文的最大长度定义为8个字节,首字节为数据包标识。而设计的系统中需要把8个字节的数用报文的形式进行采集,所以用两条报文来表达。
2.2 CAN模块驱动的设计与开发
在本系统中 CAN 模块底层驱动主要由3部分组成,分别为CAN报文接收,CAN模块初始化和 CAN 报文发送[7]。
2.2.1 CAN模块收发器连接方式
每片TC1767提供了两路CAN接口,每一路CAN各有一个收发器(图3)。本文重点研究其中一路收发器。收发器上RXD引脚为CAN总线的接收输入引脚,它连接在外部端口P3.12处;TXD引脚为发送输出引脚,连接于P3.13。除此之外,CAN的高低电平信号管脚CANH和CANL分别连接在引脚插座的4和3管脚上。
2.2.2 初始化设计
每当使用CAN模块时都必须对其功能进行初始化,以保证进入复位模式[8]。选择CAN模块中Node0(1个节点)的MO0、MO1、MO2(3个信息传输对象)进行开发。在初始化过程中,需要设置CAN模块的时钟频率、波特率,进行控制器的选择。
CAN模块中的定时器时钟频率fCAN由模块控制时钟fCLC所得。分数分频器是用于生成fCAN并用于位定时计算。一个CAN的位时间可被分为不同的段(图3),每个段用时间量子tq的倍数表示[9]。时间量子tq由BRP值和DIV8值决定。
相关计算公式如下:
tq=(BRP + 1)/fCAN DIV8=0,
tq=8×(BRP+1)/fCAN DIV8=1。
根据CAN总线时钟的相关规定,可以得到
TSync=1×tq ,
TSeg1=(TSEG1+1)×tq ,
TSeg2=(TSEG2+1)×tq,
Bit time=TSync+TSeg1+TSeg2。
波特率即为其倒数。
由于CAN模块的最大时钟频率为133 MHz,本次设计的CAN模块的时钟频率设置为40 MHz,借助DAvE软件,选择CAN模块中的节点Node0,默认tq=1,设置需要达到的波特率250 kbps,当不采用8分频时,即DIV=0,可以得到TSEG1=5,TSEG2=4,BRP=15,即完成了波特率的设置。
2.2.3 接收数据的命令
本系统中将CAN接收设置为以中断方式接收,在接收报文的函数中主要是提取数据CAN模块数据缓存区中的数据。接收流程如图5所示。
2.2.4 发送数据的命令
发送数据的命令流程如图6所示。
2.3 XCP标定程序的设计
2.3.1 程序流程
标定程序启动后,首先执行的过程主要由初始化和执行周期任务两部分组成。初始化主要是对MCU时钟设置,芯片的输入输出引脚配置以及CAN模块初始化设置。初始化完成后,系统启动定时器,进行时钟频率设置,设置计数器每1 ms加1,作为系统周期任务的频率。
然后,系统循环调用5 ms、2.5 s这两个系统任务。5 ms任务的作用是调用检查CAN模块的通讯总线上有没有上位机发送的XCP命令报文,并执行在线标定。2.5 s的任务主要是实现标定系统的DAQ的函数处理功能,在此任务中程序按照频率循环处理测量的数据,并把数据从发送队列中传输到网络上,并以报文形式呈现。
2.3.2 标定基本命令的选取和使用
其中,CONNECT和DISCONNECT为最先执行的协议通信的基本命令,这两个命令用来确定是否已经与ECU建立通信。另外,需要说明的一点是,所有被下载的标定数据都要通过一个单独的DOWNLOAD报文进行下载。表1中给出了本系统中需要调用的XCP协议层的命令。
2.4 上位机软件的开发
基于TC1767的XCP标定程序的相关设置,上位机软件的设置如下:
・CTO消息ID:0x201。
・DTO消息ID:0x200,格式为标准帧格式。
・波特率设置为250 kbps。
上位机开发流程框图如图7所示。
2.5 标定系统实现的功能和特点
2.5.1 建立通信连接
建立通信连接是主从节点相互交换信息的过程,首先由主节点确认通信模式,然后再获取从节点的使能模块,建立连接的通信应答过程为
发送报文:FF 00 应答报文:FF 15 C0 08 08 00 10 10
2.5.2 数据在线标定
数据在线标定的传输过程首先由主节点在与之相关联的文件中,查找出此变量在程序中的存储地址,将此地址发送给从节点。然后主节点再发送本次要上传数据的字节数。最后再发送上传数据命令并在刚才发送的地址处修改变量值。
2.5.3 DAQ机制的实现
与CCP协议一样,XCP也采用主从通讯模式,但在主从节点对话的过程中,所有内容都以XCP数据包进行传输。XCP数据包可分为命令传输(CTO)和数据传输(DTO)两种。上述的DOWNLOAD命令就处在CTO包的CMD处理模块中,而DAQ功能模块则在DTO中。
在数据的组织形上,DAQ的传输过程首先需要观测变量的信息并进行分析,然后按照其数据的存储结构来进行传输。一般的DAQ数据的组织结构主要有3个层次:数据采集列表(DAQlist)、对象描述列表(ODT)和传输字节(Byte)。每个DAQ传输列表中有若干个ODT列表,用于存储一个变量的地址和字节数。
在CAN网络上传输的DAQ帧格式为:
其中Byte0(PID)为传输包的标识序号,而Byte1至Byte7即为要传输的数据信息[10]。
DAQ的传输结构中有多个传输队列,而每个传输队列(DAQlist)又可包含多个ODT。每个ODT又都对应一个数据传输包,该传输包的序号PID与 DAQ的数据包序号一一对应[4]。XCP协议处理过程中,在得到DAQ模式传输的命令后会依照上位机所提供的变量地址在内存RAM中的相应位置读取该变量的数值,这样就实现了标定系统中应用DAQ模块对观测量进行的传输。
在传输过程和标定过程中,DAQ传输的实现依靠系统周期性驱动及其功能函数来完成,其具体过程有3个阶段,分别为获取通信模式,设置内存RAM空间和接收传来的地址和数据。首先,程序响应并回复给主节点DAQ的工作模式和初始化信息;然后处理机会接收FREE_DAQ命令,即对主从节点的会话状态进行重新设置;随后,主节点会分别传入本次数据传来的Daqlist数量,ODT数量和每个ODT所包含的字节数和字节信息,这些信息会根据传入的顺序被存入结构体中;随后要对这个结构体进行内存空间的检测。接下来,主节点会发送SET_DAQ_PTR和WRITE_DAQ这两个命令来传入观测数据的地址和和数据的长度。这些地址所对应的数据会以周期性任务形式向网络上发送。
DAQ实现了对于标定系统中所观测变量的动态采集。这种观测方式与用轮询方式观测变量值相比可降低网络负载,节省空间,提高数据传输的实时性和准确性。
3 标定系统的测试
测试采用英飞凌公司的TC1767开发板来模拟ECU,测试平台是在原有的Vector公司的CANoe系统上进行了二次开发,针对已经开发好的基于 TC1767的标定系统,设计上位机的程序。软件环境采用英飞凌提供的编译软件TASKING进行编译。系统环境配置如图8和图9所示。
测试旨在对电动汽车的模拟标定,主要验证系统能否准确地返回所标定的变量值[11]。系统提供了两种标定方式,分别为在线标定数据下载(DOWNLOAD)和数据对象获取(DAQ)。
对于标定数据的DOWNLOAD的测试,可以通过对“cal.txt”文件中标定更新的数据的设置修改,实时观测上位机程序控制面板(图10)。
位于图10下侧的“cal.txt”文本可以用来设置上位机中需要标定的8个参量(车速、电动机转速、电池电量等)的值,对文本保存后,才可以启动标定系统。图10上侧的“Calibration”窗口是对下位机标定数据检测的一个面板。通过对右侧每个参量后的按钮依次点击,我们能够很快地在左侧的方框中得到下载的标定数据。通过重复测试,我们发现,标定的这一组数据的值与在“cal.txt”文本中预设保存的上位机的参量值是相同的,这就说明本系统能够实现标定数据DOWNLOAD的功能。
对于DAQ模式上传数据,我们测试的设计是把上位机通过DOWNLOAD下载到下位机的数据通过 DAQ模式以报文的格式上传回上位机,进而实现数据上传的标定功能。通过启动“Calibration”控制面板上的DAQ模式控制开关启动DAQ模式(打开图10左下角的“DAQ Mode”开关),数据消息的观察窗口“trace”可以实时观测到数据采集DAQ的报文信息(图11)。
我们可以观察到,每隔2.5 s进行一次数据的标定,每次标定上传数据会通过两条6字节的报文来展现。其中每条报文第一个字节为报文的序号,最后一个字节无意义,两条报文2到5字节一共8个字节中即为上传的8个参量值。它们以16进制数呈现,转换成十进制数,正好与DOWNLOAD中下载的数据一一对应。报文每隔2.5 s上传一次,之后的数据也是一一对应的。我们修改需要标定的参量,也能得到相同的结论:报文每隔2.5 s上传一次,且与下位机下载的数据一一对应相同。
综上所述,通过对标定系统进行的功能性测试,可以得出以下结论:
(1)标定系统可以准确实现通信连接。
(2)标定系统可以实现实时的标定数据下载DOWNLOAD的功能。
(3)标定系统可以实现周期为2.5 s的从下位机上传数据(DAQ)的功能,可以实现即时的电动汽车实时工况的检测。
4 总结
本文采用英飞凌TC1767整车控制器,研究并开发了基于XCP协议和CAN模块通讯的标定系统,实现了基于XCP协议的标定方式来便捷、可靠地在线标定,其方法如下:
(1)对XCP协议进研究和分析,从传输层、协议层规范等方面对标定的功能和标定流程进行了分析,并以此标准开发实现了两种方式的XCP标定系统。 (2)对CAN总线传输原理进行研究,分析CAN模块功能,详细完成了CAN总线的初始化设计并完成下位机CAN总线接口驱动开发。
(3)对整个标定系统进行测试,实现了与控制器的联调,确保系统运行的正确性。
(4)研究并实现了XCP标定系统的DOWN-LOAD和DAQ功能。
参考文献(References):
任亮,李进,杨福原,等. 电控柴油机在线标定系统设计 [J]. 内燃机工程,2005,26(2):8-11.
Ren Liang,Li Jin,Yang Fuyuan,et al. Design of Online Calibration System for Electronic Controlled Diesel Engines [J]. Chinese Internal Combustion Engine Engi-neering,2005,26(2):8-11. (in Chinese)
苏瑜,周文华,竺春狄. 一种适用不同通信方式基于XCP协议的ECU标定工具开发 [J]. 汽车工程,2010,32(1):81-85.
Su Yu,Zhou Wenhua,Zhu Chundi. Development of a XCP-based ECU Calibration Tool Suitable for Different Communication Schemes [J]. Automotive Engineering, 2010,32(1):81-85. (in Chinese)
杨时威,杨林,卓斌.基于XCP协议车用标定系统的研发 [C]//中国内燃机学会第四届青年学术年会论集,哈尔滨: 哈尔滨工程大学出版社, 2006.