标定流程及XCP协议讲解

在汽车电控领域,外国标定工具已有成熟的商业产品。这些标定工具可以使用不同的通信协议进行标定,如基于CAN总线的KWP2000或CCP或XCP协议、基于K线或Flex Ray协议等,这使得它们具有多功能性、灵活性、可扩展性和易用性等特点。汽车标定是传统汽车行业很重的工作,需要大量人员从事标定工作。ECU的程序是由软件程序员进行编写的,而软件人员并不能把这些参数设置成合理的值,这些值都是在实验中根据汽车数学模型和实际情况进行设置的,在软件开发后利用 改变参数分析性能反复迭代最终测定。XCP就提供了这种标定方式。
XCP提供了一种对ECU中某些数据进行读取、写入操作的一种协议。一般是把支持XCP的软件和汽车的CAN纵向相连接。

标定工作流程

标定系统的整体工作流程图如下图所示。首先PC标定工具对标定过程中的车速,位置,供油时间等参数进行采集,然后把需要采集的信号发送给ECU进行计算,PC标定工具与ECU之间是通过发送命令的方式建立连接。随后将计算结果发送到CAN总线网络上,can总线就可以将计算结果发送给PC标定工具。通过ECU计算、CAN总线传输、PC端标定工具就可以对传感器输出的数据进行实时采集和存储,操作人员就对标定过程中的各种参数和变量进行实时监控、控制以及调整标定参数。所谓在线标定,一般来说是先在一般是先在一个存储区(RAM)定义的变量找出一个比较好的参数,然后将这个比较好的参数固化下来,擦除原来的数据写入到另外一个映射好的存储区(flash);(其中RAM、ROM以及flash的关系可以参考https://zhuanlan.zhihu.com/p/38339306,简单来说RAM是存取速度快、断电消失,一般存储需要被改写的变量。ROM存取速度慢,断电不会消失,一般用来存储各种固化程序和数据。flash是结合了EEPROM和ram的优点,断电不会消失,程序电可擦除且存取的速度快,适用于做程序存储器)。最后操作人员将标定完成(即确定好参数变量)的软件烧录到ECU中,使用其编程的功能。
标定整体工作流程

标定系统框架

标定系统的设计需考虑到系统的可靠性、可扩展性和易用性等方面。标定系统需将PC端上位机、ECU端下位机、通信转换设备CANUSB和A2L数据库文件等组成部分进行合理地组合和管理,以便实现标定参数的读取、修改和保存等功能。标定系统的设计原则是尽量保证各功能单元模块化、层次化,降低各功能模块间的耦合度,方便后续对软件的升级和针对不同平台进行移植。为实现这一目标,标定系统需采用统一的通信协议和数据格式,以实现标定工具和ECU之间的统一管理和控制,使标定系统更加易用、可靠和有效。
标定系统框架
主要实现的模块及功能如图所示。
在这里插入图片描述
**a.用户界面功能模块。**主要包括系统配置、参数管理、数据采集、数据存储、参数标定和其他辅助功能。这些功能模块为用户提供了一个集成化的平台,实现ECU和PC机之间的数据信息交互。
b.通信及标定协议模块。包括XCP协议栈和CAN通信驱动模块。XCP协议栈负责完成将人机交互界面数据封装并生成XCP数据包,同时按照具体传输层要求生成XCP数据包。CAN通信驱动模块进一步封装符合CAN传输层格式的XCP数据包,并生成对应的CAN数据帧。最后,利用CANUSB通信转换装置将标定命令或数据从上位机传输到CAN总线上。通过这种方式,可以实现与ECU的通信,以便标定工程师进行参数优化和性能调整。
其中用户界面功能模块功能如下:
**系统设置:**标定工具可配置的内容包括系统参数、总线参数、通信参数设置、硬件信息以及其他系统环境参数等。在标定工作过程中,可通过标定工具对系统参数进行配置,以实现对整个系统的管理和调节。
**参数管理:**标定系统通过解析A2L文件获取所需标定的参数信息,此解析过程需要标定系统具备高度的规范化。只有系统解析A2L文件的过程准确无误,才能保证ECU参数标定的准确性和可靠性。
**数据采集:**标定工程师需通过对ECU运行过程中的各种信号进行采集和分析,来实现精准的控制策略和参数优化调节。因此,具备实时采集ECU信号的系统和上位机软件交互界面成为了标定工作必不可少的重要组成部分。这套系统可以实现实时采集ECU运行的各种信号,并在上位机软件的交互界面上予以同步显示。这样的设计方便标定工程师对比ECU控制策略中涉及的各个参数的具体数值和控制效果之间的关系。此外系统中需提供多种不同的形式来显示这些参数,如数值窗口、曲线窗口、三维图窗口等,不同的显示形式能够满足不同标定工程师的需求,以便在实时控制策略调整时更加方便地进行参数分析。
**数据存储:**该系统需动态记录测量监测数据并保存记录,保存修改完成的标定数据,同时具备导入导出功能,实现文件存储和能够从磁盘文件中加载读取数据至当前试验窗口中,提供可靠的数据源和高效的数据管理工具。
**参数标定:**在线修改处于连接状态的ECU特定控制参数,能够方便地进行参数优化和性能调整,而不必刷写整个ECU控制程序。这种方法最大的优点之一是可以在不中断ECU连接的情况下进行参数优化。因此,标定工程师可以直接对比控制参数修改前后系统各项性能指标所受到的影响,并快速优化参数。这种方法可以在线修改处于连接状态的ECU特定控制参数,同时避免对整个ECU控制程序的刷写。它能方便工程师对比修改前后的系统性能指标影响,进行参数快速优化。

XCP(Universal Calibration Protocol)简介:

XCP概念

XCP表示“通用测量和校准协议”。“X”代表任意的传输层(如CAN、CANFD、FlexRay、Ethernet…)可以在不同的传输层上传输,且通过该协议,一个上位机工具可以读取多个ECU数据。目前XCP主要使用的工具有Vector公司的CANape ITAS的INCA,Value CAN等工具。
为了确保传输网络的独立性,XCP被分成一个协议和一个传输层。由于XCP在功能方面增强了很多,所以不能向后兼容CAN标定协议(CCP)。同时ASAM已经对XCP协议定义了下列传输层定为标准:
基于CAN的XCP
基于LIN的XCP
基于SxI(SPI、SCI)的XCP
基于以太网(TCP/UDP)的XCP
基于USB的XCP
基于FlexRay的XCP

面向不同的传输层
XCP的主要功能主要包括以下四个方面:
XCP的功能

XCP内部结构简析

XCP的数据包分为两类:CTO(Command Transfer Object)与DTO(Data Transfer Object),即运行状态数据和系统控制命令参数及配置参数。这些数据需要按照XCP协议规定的格式和协议进行封装和传输。在XCP协议层中,CAN数据帧被用来传输XCP数据包,通过传输控制字符和数据控制字符的正确设置,确保数据的完整性和准确性。内部结构可以如下图所示。
XCP协议的相关命令主要分为逻辑连接与断开、数据监测和参数标定三大模块。逻辑连接与断开模块主要用于建立和断开上下位机之间的连接,数据监测模块即DAQ功能模块,完成下位机数据的周期性上传和监测。参数标定模块的主要功能是完成对下位机应用程序中重要控制参数的修改,在实际操作中,它还可以分为参数下载和在线编程两个阶段。
XCP内部结构
CTO用于传输控制命令,包含五种形式:

  1. CMD:上位机下发给下位机的一些命令,比如连接命令FF,解锁,获取状态等一些和下位机交互的命令;
  2. Response:肯定应答,下位机在收到上位机的指令后,当命令被执行成功时,下位机就会答复上位机的命令,发送肯定响应数据包,证明命令被执行成功;
  3. Error:否定应答上位机的命令,当命令执行发生错误时,下位机需要向上位机反馈错误响应数据包
  4. Event:指下位机发生某事件时告知上位机,下位机向上位机报告发生异步的事件时,发送数据包。
  5. Service:指下位机在某些情况下,需要上位机执行一些动作,可理解为下位机请求上位机服务。

DTO数据包传输同步数据包DAQ(Data Acquisition)和同步激励数据STIM(Data Stimulation packet)。
在DAQ模式下,下位机周期性上传数据给上位机,STIM模式正好相反,上位机周期性的向下位机下载数据。基于CAN总线的XCP报文格式
STIM:上位机向下位机发数据,相当于反向的DAQ;在数据标定时用于标定合适的控制量,上位机向下位机修改参数。
DAQ:下位机上传数据给上位机。

下图所示为XCP数据包发送的方向。Master(带上位机的笔记本)<–>CAN工具<–>Slave(ECU可多个)
传递过程
地址信息

XCP数据报文格式

上位机与下位机之间每次传输的数据都采用XCP帧的格式,包含一个XCP报头、XCP数据包和XCP报尾。XCP帧支持的传输层可将这三个帧元素映射到相应的传输帧格式。其中PID是标识字段的一部分,用于标记数据包及数据包内部的数据值。
数据报文格式
基于以太网的XCP既可以使用TCP也可以使用UDP。这两种结合方式各有优缺点。选择使用哪一种可根据使用场景决定。例如,如果要记录完整的跟踪数据,需要接收来自网络的每一个帧数据,若是在传输过程中有任何丢失,则必须重传,并保证其顺序正确如初。这种场景下必须使用TCP。与此相反,在对设备进行实时测量时,它的信号数据仅在获得下一个样本时才有效。如果测得的数据在传输过程中丢失,但下一个样本证实丢失的数据无效,那么就没有必要重传先前的报文,这种场景使用UDP即可。

XCP报头包含长度信息和一个可用于检测数据包丢失情况的计数器。上位机每发送一个数据包,就将计数器的值増加一,下位机的做法也是如此。两个计数器相互独立。多个XCP数据包可以合并到同一个UDP数据包中,但一个XCP数据包不可以分成多个数据包。UDP和TCP的XCP报尾为空。

CTO与DTO报文XCP Packet包格式如下:
在这里插入图片描述
在汽车ECU的标定中,通常使用CAN总线。基于CAN的XCP报文帧结构如图2所示,其中PID用于标识XCP报文的类型,PID与任务的对应表如表1所示,FILL用于描述报文对齐信息,DAQ表示DAQ列表的标识符,TIMSTAMP为可选项,Data存放数据。
在这里插入图片描述

XCP数据传输方式传输方式

标准传输模式:
在标准通信模型中,对从机的每个请求都有一个响应。除了 XCP 在 CAN 上,不允许多个从机对主机的命令做出响应。因此,每条 XCP 消息总是可以追溯到一个唯一的从机。这种模式是通信中的标准情况。

块传输模式:
块传输模式是可选的,可以节省大量数据传输(例如上传或下载操作)的时间。尽管如此,在这种模式下,性能问题必须朝着从机的方向考虑。因此,必须保持两个命令之间的最小时间,命令总数必须限制在最大值的上限。

交错传输模式:
交错模式也是出于性能原因而提供的,在典型通讯模式中,主机在收到上一条指令的回复前不会发送下一条指令,为提高通讯的效率,交错通讯模型可以不等待回复直接再发送下一条指令。但是这种方法也是可选的,并且与块传输模式相反,它在实践中没有相关性。

XCP测量方式(未完待续。。。。。)

XCP(Universal Calibration Protocol)标定原理:

**逻辑地址:**为了XCP的逻辑应用定义的一块地址,就像我们给一个变量定义了一个名字一样;
**物理地址:**它是直接对应存储器上的一块地址比如RAM上的0x0000~0x0200一块地址;Flash 0x1000~0x1200;一块地址;
参考页: 你可以理解为定义的逻辑地址对应Flash上的一块地址,比如逻辑地址0x00000x0200对应Flash上一块0x10000x1200这个地址;那么参考页的属性在标定过程是可读不可写;
**工作页:**你可以理解为定义的逻辑地址对应RAM上的一块地址,比如逻辑地址0x00000x0200对应RAM上一块0x00000x0200这个地址;注意工作页的属性是可读可写(方便标定修改嘛)
**激活页:**就是指选择激活的一个页,比如激活工作页或者激活参考页等。
**完整的一个标定过程:**首先激活参考页(仅可读),读取当前的参数,比如PID中的比例因子 P,然后呢切换激活页可读可写),这个时候就可以在线修改参数,来获得较好的PID曲线,从而确定优化后的参数P,最后,我们还是需要将原来参考页上的P参数参数,写入优化后的P参数,这样就完成了一个参数的标定。
标定过程

地址映射

  **硬件方式:**有些芯片是支持硬件地址映射的,它的工作方式比较简单,就是在你切换激活的工作页时,操作寄存器,硬件完成地址映射。举个例子假如Reg1 = 0时,激活页是参考页,逻辑地址0x000~0x200 对应的Flash中的0x100~0x300;切换激活页为工作页时Reg1=1,对应逻辑地址0x000~0x200 对应Ram中的0x000~0x200。
  **软件方式:**其实就是加入一个offset偏移量来实现。还是以上面的例子为例:

激活页->参考页 逻辑地址 0x000~0x200 -> Offset=0x100 Flash地址0x100~0x300 =(逻辑地址+Offset)
激活页->工作页 逻辑地址 0x000~0x200 -> Offset=0x000 Flash地址0x000~0x200 =(逻辑地址+Offset)
同样也不不复杂,但是会部分增加软件的维护工作。

A2L文件与XCP协议连接(后续补充)

XCP使用时总是与ECU说明文件配合使用,这个文件就是ASAP2(A2L)文件。该文件包含使用XCP所需的必要信息,包括关于ECU参数、内存变量和ECU内存详细地址信息以及如何解锁访问XCP功能的安全信息。XCP还可以从ECU上传数据,向ECU下载数据以及对ECU重新编程。为了实现这些功能,XCP Master必须知晓ECU不同内存区的详细信息。
A2L是基于ECU软件生成的,ECU软件的对象包含在A2L文件中,源代码更改后A2L文件也会进行更改。标定数据记录文件使用MDF格式,全称(Measurement Data Format),即测量数据格式,是ASAM(自动化及测量系统标准协会)定义的。INCA、CANape等工具录制的测量数据,都是MDF格式。
在这里插入图片描述
XCP允许对内存直接进行读写访问:这样在读访问中就可以用来测量来自内存的参数数值,写访问中就可以用于调整内存中参数的数值。
一般A2I框架如下图所示:
基本框架
以上信息块可分为两类:
在这里插入图片描述

  • 38
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值