XCP on FlexRay在Audi上的应用
为了对通过FelxRay总线进行通信的ECU进行优化,Audi公司采用XCP on FlexRay对其进行标定。Audi的需求之一是AUTOSAR要兼容ECU内部的XCP嵌入式软件模块。对此,Vector更新了XCP的 master和slave软件使得电子开发工程师能够有效的执行测量和标定。
2009年Audi将会在下一代运动型豪华轿车上应用 FlexRay总线进行通信。与CAN总线相比,FlexRay总线提供高达10MBit/s的带宽。底盘和驾驶员辅助系统都被连接到此总线上。这就意味着Audi开发工程师必须将几千个参数在AUTOSAR的FlexRay 协议栈里直接参数化。用XCP on FlexRay能够获取大于CAN通信两倍的测量值,同时还可以进行高吞吐量的数据传输。
XCP on FlexRay
用实验室模型决定控制算法的参数受到很大的限制。尽管功能算法是确定的,但是像特性map,特性曲线和一些参数值必须在测试台架和实车上进行优化。Audi工程师在ECU的标定架构中调整了他们的底盘和辅助系统并且把参数设置文件下载到ECU的内存里。
为了使得在整个开发过程中有统一的接口,测量和标定协议标准必须要统一。在2003年,ASAM(AssociaTIon for StandardizaTIon of AutomaTIon and Measuring Systems)定义了统一的测量和标定协议——XCP协议,该协议基于CCP协议。XCP通信拓扑结构也是Master-Slave结构模式。作为 Slave,为了能够进行通信,ECU必须集成XCP软件模块。XCP协议最大的优点是传输层和协议层是独立的。无论是CAN总线、FlexRay总线、 Ethernet或者SPI/SCI,其协议层都是一样的。在2006年2月份,ASAM释放了1.0版本的XCP on FlexRay协议。
在较早的CAN项目当中,Audi开发团队在ECU测量、标定和诊断(见图1)方面就用XCP和CANape。自从2005年,CANape就已经支持 XCP on FlexRay接口。Audi要求供应商XCP主设备为CANape,同时在从设备中要使用XCP on FlexRay的协议。
图1:作为XCP on FlexRay主设备,CANape直接通过FlexRay总线对单个ECU进行测量和标定
XCP 集成在AUTOSAR模块
Audi 对不同供应商的ECU集成了XCP软件模块。即使ECU标定结束后,XCP软件模块也是有用的,从而能够有效的使用内存并且使得执行时间最小。另外,XCP软件模块必须兼容AUTOSAR,通过利用PDU router,Vector实现了XCP 与AUTOSAR的兼容。在集成时,GENy配置工具和FIBEX格式的网络描述文件可以帮助配置XCP协议和XCP传输层。
图2:Vector 提供的XCP软件模块与AUTOSAR3.0兼容的架构图
FlexRay 带宽的动态管理
由于XCP on FlexRay软件模块必须兼容AUTOSAR,这就意味着支持master的PC机也必须执行特殊的任务。ECU标定期间,XCP主设备与从设备之间进行FlexRay报文交换,这些报文要么包含命令传输对象(CTO),要么包含数据传输对象(DTO)或激励数据。当XCP对象传输到master(见图 3)时,“XCP 传输层”传输数据到PDU router,进而到“FlexRay接口”。由于要兼容AUTOSAR,所以这些传输必须按照AUTOSAR PDU(Protocol Data Unit)的格式进行。因为PDU来自于XCP模块,所以被称为XCP-PDU。FlexRay接口通过以PCI(Protocol Control InformaTIon)的形式增加特定的信息完成收到的XCP-PDU,从而形成一个L-PDU(Data Link Layer PDU),该L-PDU交给FlexRay驱动。最后FlexRay控制器在一个FlexRay时隙里作为一帧传输XCP数据。
对ECU的控制命令(CTOs)单独分配两个XCP时隙已经足够;对于DTOs来讲,每一个ECU对应的XCP时隙是不同的。
图3:经不同软件模块进行数据传输的框图
为了确保Audi工程师能够有效的传输XCP数据,必须在ECUs运行时进行动态分配带宽。但是AUTOSAR不允许FlexRay驱动在运行时重新配置,因此在集成FlexRay驱动时要把所有的XCP时隙分配给所有的ECUs;同时,在每一个Slave中要分配XCP-PDU/L-PDU/XCP时隙 (见图3)。因此对于每一个ECU的FlexRay调度表都有唯一的XCP时隙,并且该时隙对每个单独的XCP缓冲是可用的。在每次测量之前,为了使得 ECUs有很好的灵活性,那么XCP传输层命令“FLX_ASSIGN”可以用来改变针对不同的L-PDUs的XCP缓冲的分配(图4)。在软件集成时,最重要的是用最大的XCP时隙配置所有参与通信的ECUs,使得每个ECU的XCP时隙一致。动态带宽管理能够确保在所有的Slaves中间都有唯一的 XCP时隙分配。CANape在ECU描述文件A2L数据库中可以操纵这些任务,并且A2L描述文件提供了关于ECU缓冲的信息。
图4:每次测量前,XCP对象在动态段被动态的配置
XCP通过FlexRay总线对ECU内部数据进行优化
CANape 具有的动态带宽管理功能仅仅是CANape功能之一,该功能可以帮助Audi有效的对ECU进行标定。另外的三个功能为:FlexRay总线可以传输高达 254个字节的数据,而CAN总线只能在每帧报文中传输8字节的数据;“Short DownLoad”功能可以在单个的L-PDU中编码地址和内容,从而使得master和slave交换存储区时比CAN的速度更快。
此外,为了测量每个动态信号(图5),XCP能够独立于FlexRay周期进行采样。CANape在每个FlexRay基本周期可以使用称作为“多个DAQlist传输周期”的功能获取预先定义的DAQlist测量信号以及他们的多次时戳(通常为5ms)。
图5:周期传输多个DAQlist
为了提高测量效率,Write-DAQ命令的功能被增强,新命令Write-DAQ-Multiple取代Write-DAQ命令,在XCP 协议1.1版本中已经用该命令进行配置多个信号。
本文小结
Audi 工程师依靠MCD工具CANape成功的利用XCP on FlexRay对ECU内部的参数进行测量和标定。Vector已经扩展了CANape和XCP软件模块的功能,除了扩展XCP软件模块与AUTOSAR 兼容性之外,更大的特点是实现了FlexRay的动态带宽管理。Audi选择Vector作为软件供应商和开发伙伴是非常轻松的,因为Slaves所需的 XCP软件模块和XCP master CANape,均来自于Vector;并且所有的扩展都能够从当前的CANape版本中和XCP on FlexRay软件模块中获得。