关于基于XCP协议支持多总线的ECU标定系统的实现

0 引言 汽车技术的飞速发展使得汽车电子控制单元(electronic control unit,ecu)中包含的控制参数大量增加,标定工作复杂度越来越高。在ecu开发过程中,控制参数的标定工作直接影响整车性能的优劣。面对日趋多样的ecu和通信总线类型,开发一种支持多总线的、通用灵活的标定系统,具有非常高的实用价值[1]。目前,can总线作为一种可靠的汽车总线已经广泛应用于高档汽车,因而多数标定系统都是基于ccp(can calibration protocol)协议开发的,具有一定的通用性[2]。但随着更为先进的flexray通信总线迅速发展,开发出一种既支持当下主流的can总线,又兼容代表汽车总线趋势的flexray总线的标定系统,无疑具有很高的技术应用价值。
本文基于xcp协议设计了一套ecu标定系统,充分利用了xcp协议物理传输层与协议层相互独立的特性,基于同一协议层分别实现了对can总线和flexray总线的支持,大大提高了标定系统的总线兼容性与可扩展性。
1 标定系统总体方案设计 xcp协议由自动化及测量系统标准协会(association for standardization of automation and measuring system,asam)提出,是对原有ccp2.1协议的继承和升级,力求使用最小的系统和硬件资源开销实现高效通信[3]。该协议分别定义了协议层、传输层和接口层,其最突出的特点就是协议层独立于传输层。对于不同类型的通信总线,只需要将xcp报文(xcp message)的报文头和报文尾填上对应信息,而中间部分的xcp数据包(xcp packet)由协议层定义,完全不受影响。因此xcp标定协议能够极好地适应总线多样化对标定系统通用性提出的要求。目前,asam已经在标准中定义的传输层包括:xcp-on-can、xcp-on-ethernet(tcp/ip、udp/ip)、xcp-on-sxi(spi、sci)、xcp-on-usb和xcp-on-flexray[3]。根据后续的实际需求,也考虑进一步定义xcp-on-lin、xcp-on-k-line和xcp-on-most。
图1是标定系统总体架构设计方案。整个标定系统框架遵循asam-mcd标准(原asap标准)搭建,包括运行于pc端的上位机标定软件、负责上位机和下位机之间通信的通信控制单元和下位机ecu。ecu端采用freescale公司的mc9s12xf512芯片。上位机集成了方便用户进行测量和标定的图形界面以及xcp命令解析模块,用户请求经由上位机xcp协议模块打包,通过通信控制单元发送至下位机ecu通信接口,再由集成在ecu中的xcp驱动模块解析后调用对应命令处理模块进行操作,将处理结果打包并通过通信控制单元发送回上位机。根据通信介质的不同,需要对xcp协议帧的帧头和帧尾进行对应的信息填充。本文设计的标定系统同时支持当下主流的can通信总线和代表未来汽车总线发展趋势的flexray总线。
2 xcp协议驱动程序的实现 xcp协议以主从方式工作,并使用命令传输对象(command transfer object,cto)和数据传输对象(data transfer object,dto)两种数据包来区分主从节点间的通信,如图2所示。
xcp协议规定了3种通信模式,分别是标准通信模式(standard mode)、块传输通信模式(block transfer mode)和交错传输通信模式(interleaved mode)。本文设计的标定系统适用于can总线和flexray总线,采用标准通信模式,即在主机主动发起会话建立连接之后,对于主机发送的每一条命令,从机都必须进行响应处理,如出错则返回错误报告信息。在没有接收到从机对上一条命令的应答之前,主机不会发送新的命令[4]。
2.1 下位机端xcp协议驱动程序的实现 xcp协议作为对ccp协议的升级,其所具有的一个重要新功能是对冷启动测量的支持,即所谓的resume模式[3]。集成了xcp协议驱动的下位机启动后其状态机模型如图3所示。
从节点设备启动并完成初始化后,会立刻检测ecu的非易失存储介质中是否有已配置好的daq list供resume模式使用,如果有,则进入resume模式,按配置列表周期性向上位机发送数据;如果没有相关配置文件,则进入diconnected模式。在resume模式和disconnected模式下,从设备只响应来自主机的con-nect命令(xcp-on-can条件下还可响应get_slave_id命令)。下位机端xcp驱动的工作流程如图4所示。
按照主从通信模式,从机端使用中断方式对主机的命令进行响应。从机启动后会首先完成系统的初始化工作,包括对从机硬件资源的初始化、配置系统默认参数以及xcp模块的初始化,并且将标定数据从rom或flash镜像到ram,为标定工作做好准备。在解析到来自主机的cto消息中包含connect命令后,从机响应主机建立连接,该设备进入在线状态,进而处理来自主机的一系列命令,并根据命令码(cmd code)调用对应的模块进行响应,完成对应操作后将数据封装成dto数据包发送给主机。如处理出错,则返回对应的err数据包,其第二字节包含具体的错误码。
2.2 上位机端xcp协议驱动程序的实现 上位机采用图形化编程语言labview开发。xcp协议共规定了18条必选命令和38条可选命令[5]。结合标定系统的功能需求和开发语言特点,实现思路是将18条必选命令和部分可选命令分别定义为独立的子vi,然后根据实际功能需求对其进行顺序调用。实现的部分命令子vi如图5所示。
结合标定软件的功能需求和xcp协议规定的cmd列表,上位机端的xcp协议实现框架如图6所示。
本文设计的标定系统软件包含部分尚未实现的可选命令。当用户操作需要用到该命令时,下位机会统一返回err_cmd_unknown错误代码。
3 xcp协议传输层设计 作为对ccp协议的升级,xcp协议最突出的特点是协议层独立于具体的物理传输层,从而增加了协议对总线适用的灵活性,减少了开发移植的重复工作。xcp协议规定的xcp报文(xcp message,也称xcp frame)结构如图7所示。
xcp报文分为3部分,分别是报文头(xcp header)、报文尾(xcp tail)和中间的xcp数据包(xcp packet)。其中xcp数据包由协议层定义,报文头和报文尾由传输层定义,从而实现同一协议层数据包可通过不同物理总线进行传输。
3.1 xcp-on-can传输层设计 当物理层传输介质为can总线时,报文头为空,报文尾由开发者根据实际需求选则有或者无,且xcp数据包中不包含时间标识段(timestamp)。其原理是:can2.1协议规定can报文数据帧的数据域长度dlc最多为8 b[6]。如果设置can报文中的数据长度dlc始终等于xcp数据包长度len,则报文尾为空,此时xcp数据包就是xcp报文;如果设定dlc长度始终为max_dlc=8,则当xcp数据包长度小于8 b时,需要通过添加xcp报文尾的方式补足8 b(填充内容任意)。本文设计的xcp-on-can报文采用第一种方式,即令dlc始终与len相等。
3.2 xcp-on-flexray传输层设计 当物理层传输介质为flexray总线时,必包含报文头,而报文尾则根据所在报文实际情况,可能为空,也可能为1 b的填充域(填充内容任意)。其原理是:报文头包含4个部分,分别为xcp节点地址(nax)、计数(ctr)、填充字节(fill)和xcp报文数(len)。除首字节nax外,其余部分均为可选项。flexray作为新一代高速总线,每一帧的理论有效数据长度能达到254 b,实际应用过程中有效数据长度取决于具体的flexray控制器参数,其中恩智浦mfr4310控制器已经可以实现0~254 b数据域长度配置[7]。为了增加总线吞吐量,当flexray数据帧中含有多个连续的xcp报文时,需要给每一个报文顺序计数ctr以保证数据的有序性,同时还要给出所包含的xcp报文个数len,而fill域用于实现byte或word对齐,提高flexray总线传输效率[8]。本文设计的flexray数据帧采用最为简洁的形式,仅包含一个xcp报文。
本文设计的xcp-on-can和xcp-on-flexray报文结构如图8所示。
4 标定系统验证 对系统进行验证的首要目标是保证系统的各项基本功能均能够准确、可靠地实现。验证的基本思路是:第一阶段,连接标定系统上位机、下位机,并运行上位机标定软件,将下位机ecu上电,通过简单的配置后可以实现上、下位机的成功连接。而后建立监测窗口,选取若干参数进行数据显示,观察是否能正常运行;再建立标定窗口,对上述某一参数数值进行修改,从而验证标定系统的基本功能。第二阶段,连接本文开发的标定系统和实验室一直使用的电池包管理ecu,重复上述验证程序,验证标定系统的适用性。实验结果表明该系统使用简单灵活,能够满足实验室标定工作的基本需求。标定系统工作时的连接参数配置界面、监测窗口和标定窗口如图9所示。
5 结论 本文基于xcp协议完成了ecu标定系统的开发,按照asam-mcd标准设计系统整体架构并予以实现,保证了系统的通用性。利用其协议层独立于传输层的特性,在同一协议层的基础上设计了can总线和flexray总线对应的两种传输层结构,克服了基于ccp协议的标定系统仅支持can总线的局限性。最后应用标定系统进行标定试验,验证其监测、标定等基本功能。本文设计的标定系统具有良好的总线适用性和可扩展性,不仅满足当下主流can总线的标定需求,而且支持新一代flexray总线。与此同时,xcp协议多总线支持的特性也为今后进一步扩展xcp-on-ethernet、xcp-on-sxi和xcp-on-most提供了保证。

核桃防盗结构智能锁 让用户享有安全稳定的生活
iPhone8最新消息:iPhone8全球首例“爆炸”诞生,苹果回复充电就不要玩手机!
新汽车信息娱乐系统中音频放大器的几个关键设计考虑因素
推进中德合作 西门子智能制造创新中心项目落户合肥
美光诉福建晋华案件有了最新的进展
关于基于XCP协议支持多总线的ECU标定系统的实现
如何去构建自己的鸿蒙生态设备
无线耳机市占苹果保持第一,小米上升至第二
开放原子开源基金会发布《全球开源发展态势洞察》2023开放原子全球开源峰会特刊
三星慌了!传京东方有意收购LGD广州8.5代线
手机射频典型电路分析
电力行业工控系统安全防护策略研究
什么是GPU及其分类?GPU如何演化为通用计算平台?
何时在微控制器中使用集成电荷泵
特斯拉8250座超级充电站在运营 10000座目标难以完成
2019年国产5G手机发展飞速价格即将提高百分之二十你了解吗
阿里首家未来酒店开业 全程机器人服务
助听器的电池的使用
中芯国际与湖北省科技投资集团公司签订合资合同
英特尔推出第10代处理器中的所有8个都使用英特尔的14纳米工艺