汽车标定是传统汽车行业很重的工作,需要大量人员从事标定工作,ECU中的程序由软件工程师进行设计,而工程师不可能把这些参数设置成合理的值,这些值是需要在实验中根据汽车数学模型进行设置,XCP就提供了这种标定的方式。

XCP提供了一种对ECU中某些值进行读取、写入操作的一种协议,一般是把支持XCP的软件与汽车的CAN总线相连,目前XCP主要使用的工具有Vector公司的CANape  ITAS的INCA,Value CAN等工具。这里以INCA7.2作为介绍。

1. XCP工作流程

     首先XCP是主从的工作结构,主节点即一个上位机(XCP工具),一个主节点可以连接多个从节点(Slave),以XCPOnCAN为例,可以通过CAN ID的方式来识别不同的从节点,一般从节点需要两个CANID,一个源地址,一个目标地址。那么硬件连接:         Master(带上位机的笔记本)<-->CAN工具<-->Slave(ECU 可多个)

  1. 第一步我们要将Master和Slave连接起来,当然是通过发命令的方式建立连接,具体命令后面进行讲解。
  2. 第二步可以通过上位机工具监控之前定义好的一些变量,例如速度,转矩,电压等参数;
  3. 第三步可以进行一些在线标定功能,比如在台架上标定PID的一些参数,标定过程一般是先在一个存储区(RAM)定义的变量找出一个比较好的参数,然后将这个比较好的参数固化下来,擦除原来的数据写入到另外一个映射好的存储区(flash),这个是标定的一般过程;
  4. 当然也可以通过重新擦写一个数据区域,使用其编程的功能。

我认为映射关系可能是XCP中较核心的一个部分,下面我们讲一讲c步骤中的地址映射。

2. XCP概念和过程简介

     首先我们介绍一些概念:

  1. 逻辑地址:为了XCP的逻辑应用定义的一块地址,就像我们给一个变量定义了一个名字一样;
  2. 物理地址:它是直接对应存储器上的一块地址比如RAM上的0x0000~0x0200一块地址;Flash 0x1000~0x1200;一块地址;
  3. 参考页: 你可以理解为定义的逻辑地址对应Flash上的一块地址,比如逻辑地址0x0000~0x0200对应Flash上一块0x1000~0x1200这个地址;那么参考页的属性在标定过程是可读不可写;
  4. 工作页:你可以理解为定义的逻辑地址对应RAM上的一块地址,比如逻辑地址0x0000~0x0200对应RAM上一块0x0000~0x0200这个地址;注意工作页的属性是可读可写(方便标定修改嘛)
  5. 激活页:就是指选择激活的一个页,比如激活工作页 或者激活参考页等。

完整的一个标定过程:首先激活参考页(仅可读),读取当前的参数,比如PID中的比例因子 P,然后呢切换激活页可读可写),这个时候就可以在线修改参数,来获得较好的PID曲线,从而确定优化后的参数P,最后,我们还是需要将原来参考页上的P参数参数,写入优化后的P参数,这样就完成了一个参数的标定。

3. XCP地址映射

硬件方式:有些芯片是支持硬件地址映射的,它的工作方式比较简单,就是在你切换激活的工作页时,操作寄存器,硬件完成地址映射。举个例子 假如Reg1 = 0时,激活页是参考页,逻辑地址0x000~0x200 对应的Flash中的0x100~0x300;切换激活页为工作页时,Reg1=1,对应逻辑地址0x000~0x200 对应Ram中的0x000~0x200;是不是超简单,但是相应芯片价格会贵一点。

软件方式:其实就是加入一个offset偏移量来实现。还是以上面的例子为例:

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

4. XCP的命令简介

Master->Slave (上位机到下位机)总共0xFF条

  • 名称     PID范围
  • CMD   0xC0~0xFF   指的是上位机下发给下位机的一些命令,比如连接命令FF,解锁,获取状态、下位机交互的命令;
  • STIM   0x00~0xBF   你可以理解为一种上位机下下位机大量发数据的一种方式,相当于反向的DAQ;

Slave ->Master(下位机到上位机)总共0xFF条

  • 名称                    PID范围
  • Response             0xFF    肯定应答,指的下位机答复上位机的命令;
  • Error                     0xFE    否定应答上位机的命令;
  • Event                    0xFD    事件,指下位机发生某事件时通知上位机;
  • Service                 0xFC    指下位机在某些情况下,需要上位机执行一些动作,你可以理解为请求上位机服务。
  • DAQ                   0x00~0xFB  //ODT的序号  很显然,就是下位机上传数据给上位机。

5. XCP的A2L文件

A2L文件是啥呢?它其实就是一种方便XCP进行工作的描述性一个文件,你可以理解为一个通讯矩阵,包含了项目信息、ECU信息、标定变量信息、测量变量信息等等如下所示。

/begin PROJECT /*表示一整个项目,一个文件一个项目*//begin HEADER /*描述项目信息,包括项目编号,项目版本等信息*/ /end HEADER/begin MODULE Device/*描述ECU需要的所有信息,一个ECU对应一个MODULE块*//begin MOD_PAR /*管理ECU的数据,CPU 客户 编号等等,最重要的是内存的分段分页管理,类似DSP中的CMD文件*//end   MOD_PAR /begin MOD_COMMON/*一般性描述信息,比如大小端,数据的对齐方式*//end   MOD_COMMON/begin CHARACTERISTIC/*定义标定变量,包含被标定的变量的名字,地址,长度,计算公式,精度,最大最小值等信息*//end   CHARACTERISTIC /*可定义多个*//begin AXIS_PTS/end AXIS_PTS/begin MEASUREMENT/*定义测量变量,包含了被测量的变量的名字,地址,长度,计算公式,精度,最大最小值等信息*//end MEASUREMENT/*可定义多个*//begin COMPU_METHOD/*定义计算公式,及原始值和物理值之前的转换关系 如phy = ax+b*//end COMPU_METHOD/begin COMPU_TAB /*定义原始值和物理值的映射关系 一般是枚举变量*//end COMPU_TAB/begin FUNCTION/end FUNCTION/begin GROUP/end GROUP/begin RECORD_LAYOUT/*定义标定变量的物理存储结构(一维,二维表,三维表等)*//end RECORD_LAYOUT/end  MODULE Device
/end PROJECT

自动驾驶(四十五)---------汽车标定-XCP简述相关推荐

  1. 吴甘沙创业照见自动驾驶十年变迁,产业爆发在下一个春天里 | 自动驾驶这十年...

    个人创业照见自动驾驶十年变迁. 效力英特尔16年.三发创业之心最终"出走"人工智能,吴甘沙的创业故事已经被说得太多.而他所领衔创立的驭势科技,继2017年完成国内首个自动驾驶商业运 ...

  2. 小鹏、蔚来相继车祸,自动驾驶四字不等于“全自动”,也分等级!

    这两天,伴随着新能源汽车头部玩家小鹏.蔚来相继发生车祸,自动驾驶一下成为热议话题. 毕竟自动驾驶功能都是小鹏.蔚来的核心卖点之一,且是引以为豪的核心技术. 先来看看小鹏汽车的: 销售:你看这个ACC, ...

  3. [系统安全] 四十五.APT系列(10)Metasploit后渗透技术信息收集、权限提权和功能模块详解

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  4. android相册幻灯片功能,玩机教程 篇四十五:「MIUI玩机技巧63」MIUI相册新增“幻灯片播放”功能...

    玩机教程 篇四十五:「MIUI玩机技巧63」MIUI相册新增"幻灯片播放"功能 2020-02-17 16:15:35 0点赞 0收藏 0评论 本帖主要解决2大问题: 1) 功能科 ...

  5. 孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备

    孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天本来应当继续学习Python的数据库操作,但根据过去我自学 ...

  6. 【正点原子STM32连载】第四十五章 SD卡实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  7. 四十五岁还能学计算机专业吗,女人40到45岁之间该学点什么技术好?

    四十岁到四十五岁之间,学电脑比较好. 最基本的学习步骤包括以下四个方面: 第一步:学会启动电脑. 把电脑的各个部分都连接好之后,检查主机和显示器的电源线是否已经接好,然后就可以启动电脑了. 主机的电源 ...

  8. 【正点原子Linux连载】第四十五章 pinctrl和gpio子系统实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  9. 计算机软件发展四十五年

    计算机软件发展四十五年 2011年05月17日 09:00博览网原文链接我要评论(0) 摘要:通过对计算机软件发展的四十多年历史的回顾,详细论述其发展的三个不同阶段:开创阶段.稳定阶段以及发展阶段的过 ...

  10. 【Visual C++】游戏开发笔记四十五 浅墨DirectX教程十三 深度测试和Z缓存专场

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/details/8607864 作者:毛星云(浅墨 ...

最新文章

  1. 一次DPM备份Exchange DAG的故障处理过程
  2. chrome浏览器极简插件大全
  3. window环境编译在linux环境运行的golang程序
  4. Spring定时器配置
  5. 怎样安装两个tomcat,怎样配置
  6. 数据结构基础(19) --堆与堆排序
  7. 如何在 Apache Flink 1.10 中使用 Python UDF?
  8. 西门子step7安装注册表删除_不用重装系统就能完全卸载西门子PLC编程软件STEP 7...
  9. 计算机应用基础146jpg,计算机应用基础——复习题2.pdf
  10. java项目tkmybatis整合_springboot集成tk mybatis
  11. axure rp8 添加动态面板_AxureRP教程–动态面板高级应用
  12. 计算机网络安全存在哪些潜在威胁,【计算机安全论文】威胁计算机安全论文(共4016字)...
  13. 斐讯w2换表盘_斐讯W2智能手表初体验:路由不要钱!手表也白送!
  14. RS485通信--AT_SURF案例No.10
  15. 【汇正财经】股票上市交易的费用都有哪些?
  16. sql server 添加表注释、字段注释
  17. html怎样给文字设置底纹,使用HTML和CSS来实现为文字设置图片底纹
  18. 【Java笔记+踩坑】SpringBoot基础2——运维实用
  19. 那些 Cynthia 教我的事 之 PMSec (二)
  20. 百度云android平板,百度网盘hd版本下载-百度网盘hd平板版本下载v11.6.3 安卓官方版-2265安卓网...

热门文章

  1. Android网络通讯之Retrofit
  2. 访问chm文件出现 已取消到该网页的导航的解决方法
  3. cad角度命令怎么输入_CAD中用好这个命令,任意等分角度不再是难事
  4. The Beer House 终于运行起来了
  5. 通过图分析分散股票投资组合并降低风险增加收益
  6. SMA(简单移动平均线)
  7. 金彩教育:店铺运营怎么看数据
  8. 花生壳内网发布外网可以访问的网站
  9. gem5中的O3 Pipeline Viewer Visualization实现方法
  10. 话费充值api接口 手机话费充值功能接入