手机端网站模板,网站建设宣传ppt模板下载,网站ui设计,如何建设文化企业网站目录
1.汽车标定概述
2.XCP协议由来及版本介绍
3.XCP技术通览
3.1 XCP上下机通信模型
3.2 XCP指令集
3.2.1 XCP帧结构定义
3.2.2 标准指令集
3.2.3 标定指令集
3.2.4 页切换指令集
3.2.5 数据采集指令集
3.2.6 刷写指令集
3.3 ECU描述文件(A2L)概述
3.3.1 标定上位…目录
1.汽车标定概述
2.XCP协议由来及版本介绍
3.XCP技术通览
3.1 XCP上下机通信模型
3.2 XCP指令集
3.2.1 XCP帧结构定义
3.2.2 标准指令集
3.2.3 标定指令集
3.2.4 页切换指令集
3.2.5 数据采集指令集
3.2.6 刷写指令集
3.3 ECU描述文件(A2L)概述
3.3.1 标定上位机的标定、测量
3.3.2 A2L文件格式
4.小结 1.汽车标定概述 汽车的标定技术最初是源自对发动机的特征值、曲线Map和图表参数的一个动态优化调整以适配不同发动机、不同车型对动力的需求。 它的基本思路是将发动机各种控制算法固化在MCU的Flash中但是这些算法所需要用的参数通过技术手段抽象出来并在ram中运行标定人员可以通过修改这些参数来观察算法的输出是否满足要求。注意哈虽然说我们知道这个参数是可以修改的但对于CPU或者控制算法来说这些参数其实是常量只有控制算法的输出才是变量。 下图是一个比较经典的标定测量流程示例图 标定Calibration就是调整和优化ECU中的对于发动机控制算法的各种特征变量 测量Measurement就是观察不同标定常量作为输入是如何影响控制算法的输出。 再举个简单一点的例子比说说现在油门踏板开度与喷油量之间存在这样的关系
y axb y--喷油量x--油门踏板开度a和b分别为常量 那么要做标定我们应该修改的是什么值 首先肯定不可能是x因为这个开度是驾驶员用脚踩出来的我们是没办法去要求别人其次不可能是y这是输出啊根据x来的那么只能是a或者b了我们假设x此时为50%表示油门踏板开度为50%对应的a、b固定那么喷油量y就是固定了 但对于某些动力车型它想要50%的踏板就有很强动力y很大这时候我们就应该去修改常数a、b此时是运行在ram中。标定就是修改这些特征值来满足不同车型的要求当我们根据车型的不同将上述a、b修改成不同值后一旦标定工程师认为这些值达到效果了就通过flash刷写的方式将这些数写进Flash中再通过技术手段告诉ECU以后就到Flash去取a、b的值吧。这就完成了汽车量产前的标定工作。 那么要完成标定这项工作需要具备哪些条件呢 首先要有一个好的修改标定常量的工具其次要有一个好的观测方式要么肉眼要么通过PC端最后还要有一个好的人机交互界面。 这时候一个名叫ASAM的组织就冒了出来它将刚才我谈到的这些内容进行一个标准化即ASAM-MCD(Standardization of Automation and Measurement systems, with the work groups: Measurement, Calibration and Diagnosis)。 借用Vector对于一个完整标定系统的描述 ASAM-MCD-1MCECU和标定测量系统接口ASAM-MCD-2MC即A2L文件是控制器内部信息描述文件规范ASAM-MCD-3MC此接口用于将另一个系统连接到标定测量系统例如用于试验台自动化
2.XCP协议由来及版本介绍 有了上述基本概念我们知道标定测量系统和ECU之间的桥梁就是ASAM-MCD-1MC最初就是大家都比较熟的CCP基于CAN的标定协议于1995年提出当前为2.011999定版但是由于CAN的速率特性对测量数据的时间戳不够精确再加上目前ADAS等高测量速率要求CCP逐渐不能满足要求因此将该协议从CCP中抽象出来是非常有必要的这时候就出现了XCPUniversal Measurement and Calibration Protocol“X”表示的是可变的传输层协议具体如下 截止到目前为止XCP协议已经迭代到了1.5版本 每个版本更新如下
版本发布时间变更点1.02003 1.传输层支持CAN、ETH(UDP和TCP/IP、SPI、USB) 2.发布标定测量、 1.120081.增加传输层支持FlexRay1.220131.增加A2L-IF_DATA描述用于预估ECU资源消耗1.320151.增加了feature:ECU状态Bypassing错误处理和时间参数相关1.420171.新增DAQ模式减少时间戳数据传输的压缩DAQ等1.520171.新增“Software Debugging over XCP”标准 3.XCP技术通览 本质上XCP协议是为使用者提供了对ECU内部memory的读写机制。读访问保证标定系统可以从RAM中读取观测量即测量(measurement)写访问保证了标定系统可以对RAM中的标定量进行数值修改即标定(calibration)。 因此XCP的实现就采用了经典的master-slave问答形式。
3.1 XCP上下机通信模型 XCP基于Master-slave原则标定系统作为MasterECU通常作为SlaveMaster与Slave之间通过标定工具硬件例如ETAS的ES582、Vector的VX1000等了解使用XCP协议规定的指令进行交互所以在Master和Slave的系统里均需集成XCP标准协议栈就和诊断栈一样。 Master与Slave的命令交互帧叫做CTO(Command Transfer Objects) Master与Slave的测量数据交互帧叫做DTO(Data Transfer Objects) 其通信模型如下 图片来源Vector官网
CTO缩写全称描述CMDCommand PacketMaster给Slave发送的指令RESCommand Response PacketSlave返回给Master的命令正响应ERR Error Packet Slave返回给Master的命令负响应EVEvent PacketSlave发给Master的异步事件帧SERVService Request PacketSlave发给Master的服务请求帧
DTO缩写全称描述DAQData AcquisitionSalve周期给Master发送测量数据STIMStimulationMaster周期发送Slave的激励数据(Bypass常见) XCP提供了如下几种数据传输方式
一问一答模式 Master块传输模式 比如说使用download传输大数据给ECU就会用到这种通讯模式
Slave块传输 Upload指令获取ECU内部的数据状态一般标定download完之后会紧跟着一个upload检查是否写进了目标ram地址。
多问答模式 这种比较少见如有用到的可以在后面留言哦。 3.2 XCP指令集 有了上位机通信模型之后我们接下来就要了解XCP协议具体定义了哪些指令。 在这之前要先来看XCP协议定义的帧结构。
3.2.1 XCP帧结构定义 XCP帧包含三部分HeaderPacketTail 其中帧头(Header)、帧尾(Tail)依赖不同传输层真正要讨论的深色部分这部分内容与传输层无关了即XCP协议栈真正要处理的数据内容它主要包含三部分内容 ID 域、时间戳域和数据域。
ID域 ID域中最重要的就是PID(Packet identifier)这个值实际上就是Master\Slave的命令ID。如下 DAQ主要是测量时根据DAQ list和ODT类型来定位数据的以后有文章着重描述测量这块。 CTR可选也是用于DAQ。
时间戳域 时间戳通常时DTO帧使用因为同一个DAQ list里的观测量是同一时间采集所以一个DAQ周期只会传输一个时间戳
数据域 Master和Slave真正交互的实际数据每个指令都有不同的Date参数放在这个域里。
连接命令问答示例 我们以FF连接命令为例详细看下PIDDATA是如何交互的如下 根据标准定义我们来分析上述报文的具体含义。 根据协议可以看到回复含义如下
15CAL/PAG、DAQ、STIM、PGM资源处于保护状态
C0: 开启slave block modeinter byte orderAG为1
08MAX CTO
08MAX DTO
01 01 XCP协议版本 1.1 有了这个基本概念我们来看看XCP协议到底提供了哪些指令。
3.2.2 标准指令集 所谓标准指令集就是提供最基础的功能包括Master和Slave的连接建立、断开ECU身份识别解锁受保护资源获取当前会话状态等等。根据XCP1.5版本标准指令集如下 其中前四条指令必选我们常见的标定上位机的连接按钮一点击就是这个四条指令的组合拳。 余下指令除了最后两条基本也是要选的UPLOAD可以与DOWNLOAD搭配使用SEED\UNLOCK也是组合。
3.2.3 标定指令集 标定指令集就是执行标定动作或者在开始标定之前将离线标定的数据批量写进calibration ram中。 其通讯流程如下 首先是SET_MTA(0xF6) 设置即将要传输的memory地址等 然后调用DOWNLOAD(0xF0)通知Slave即将要使用的传输模式结合DOWNLOAD_NEXT进行大数据传输或者使用问答方式进行小数据标定。
3.2.4 页切换指令集 页切换可以用于所谓的工作页和参考页的切换本质上就是memory地址的切换WP和RP具体可参考之前关于标定的简单描述汽车ECU的标定 页切换指令集包含如下内容 但在实际使用中页切换不是所有ECU都支持的通常是带overlay功能的CPU可以支持。因此要做页切换的目的就是想要CPU很快速滴访问WP或者RP去取算法所需的参数但做这个切换没有overlay是比较难实现的具体可参考overlay机制英飞凌TC3xx-Overlay-CSDN博客 。
3.2.5 数据采集指令集 数采指令集就是大家常见的DAQ指令集如下 DAQ可以分为动态和静态DAQ而根据ASAM_XCP_PART5的示例DAQ的响应时序如下 1.获取从机DAQ列表信息 由于首先就要获取DAQ列表信息因此在XCP初始化时就要对DAQ进行初始化。 该步骤所要用到的指令DA、D9、D7、D5、D8 2.准备DAQ列表 1静态DAQ配置常用指令E3 2动态DAQ配置 首先要释放DAQ(D6)然后分配DAQ(D4)最后分配ODT入口D3。 3.配置DAQ列表 这一步骤用到的指令有SET_DAQ_PTR(E2)WRITE_DAQ(E1) 4.开始传输数据 用到的指令有SET_DAQ_LIST_MODE(E0)、START_STOP_DAQ_LIST(DE)、GET_DAQ_CLOCK(DC)、START_STOP_SYNCH(DD)
3.2.6 刷写指令集 1.声明刷写开始 用到的指令PROGRAM_START(D2)
2.擦除FLASH 用到的指令有 SET_MTA(F6)、PROGRAM_CLEAR(D1)。
3.开始刷写数据 PROGRAM(D0)
4.结束刷写 PROGRAM_VERIFY(C8)、PROGRAM_RESET(CF) 但在实际使用通常不怎么用这个都是标号导出hex通过诊断刷进去。 因为以前如果是INCA就得开发ProF文件其次刷写的效率真的很低。 3.3 ECU描述文件(A2L)概述 在讲A2L文件之前我们先来思考几个问题。
既然标定测量的本质是对ECU内部memory进行读写访问那么Master是通过什么途径知道存放在ECU内部的标定量、观测量的地址的既然Master和Slave之间是通过CAN\ETH\FlexRay等通讯它们之间的通信速率、采样点是如何同步的 带着这样的问题我们进入A2L概述之旅
3.3.1 标定上位机的标定、测量 当我们使用INCA或者CANape时标定窗口和测量窗口通常长这样 这些数据从哪里来的呢如下图 我们可以看到这个数据集里有很多个观测量以及2个标定量我们选取其中的test_calib1和measrued_Var1进行标定和测量我们截取master的通信报文如下 Package Type Xcp Package Parameters SET_MTA F6 xx xx 00 60 00 00 00 Address extension 0x00 Address 0x00000060 RES FF DOWNLOAD F0 04 00 00 80 3F Number of data elements 0x04 Data elements 0x00 0x00 0x80 0x3F RES FF 很明显这个0x00000060就是test_calib1的地址那么这个标定工具INCA是怎么知道的呢 还记得我们ASAM-MCD-2MC吗即A2L文件它就是用来告诉标定工具ECU里面各种详细信息的包括指令支持类型、通讯方式、观测量、标定量在Flash和RAM的那个具体地址以及实际数据和算法物理数据转换公式等信息。
3.3.2 A2L文件格式 A2L文件是一种ASCII格式可读文件记事本都可以打开它包含了如下具体内容
AML部分描述了XCP协议的相关信息关键字/begin A2ML ... /end A2MLECU通用部分描述了ECU的部分信息比如ECU byte order对齐方式标定Flash\RAM等关键字 /begin MOD_COMMON ... /end MOD_COMMON/begin MOD_PAR ... /end MOD_PAR等IF_DATA描述了通讯接口传输层相关信息这个INCA要求特点严格增加在CAN的波特率描述上调bug调了大概半个月就是因为采样点的原因。A2L对象包含了标定量、观测量的具体地址、转换公式等关键词 /begin CHARACTERISTIC ... /end CHARACTERISTIC 通常我习惯把绿色部分叫做A2L header部分与/begin HEADER关键词区分在最开始没接触vector的ASAP2 editor时都是根据标准描述一行一行手撸后来掌握到关键点后用脚本做一个基于excel的配置工具也勉强能用 红色部分一般情况就是用模型生成的A2L文件如下图 最开始生成的A2L文件标定观测量没有地址的也没有相应的header需要集成编译后拿到map或者elf文件进行地址替换如果没有ASAP2 editor或者CANape那就只能用matlab自带脚本如果想再自定义A2L格式还得熟悉m语言以后会专门将这块内容。 最后以一个A2L文档结构来描述一下 4.小结 前三节内容基本上把XCP大体框架讲的七七八八后面会详细聊聊标定在ECU里面的具体概念、DAQ和ODT list的详解、INCA走XCP刷写必备ProF文件、基于模型如何开发标定测量以及生成完美的A2L文件MPC5748的ovelay概念以及在集成XCP协议栈遇到的各种奇奇怪怪的问题。