全文最详细CPP/XCP标定协议讲解:首篇

本文是CCP/XCP协议全集的第一篇:历史概述和数据包格式。

1.概述

1996年6月,ASAP组织首次发布了CCP协议的实际应用2.0版,这个版本为ECU标定系统开发提供了标准平台,并逐渐得到了世界各大汽车公司的认可和应用。

要认识清楚CCP协议,就需要先了解一下ASAM组织(自动化及测量系统标准协会),该组织的主要工作之一是推动汽车工业自动化和测量系统的标准化,它的前身是Audi、BMW、Mercedes-Benz、Volkswagen等欧洲汽车公司成立的标准化组织ASAP,致力于推动汽车ECU标定系统的标准化。

目前CCP协议的最新版本是V2.1,随着汽车上的通信方式逐渐增多,基于CAN的标定协议已经无法满足需求,ASAM组织又发布了XCP协议,XCP协议支持CAN、Ethernet、FlexRay、SPI、SCI以及USB等通讯方式。

XCP的最新版本是1.5,其1.0版本于2003年发布。

2.ECU标定

汽车上需要标定的ECU主要包括发动机ECU、VCU、变速箱ECU、ABS、EBS、转向助力ECU等。

由于汽车的运行工况非常之多,温度、压强、湿度等外部环境,都会影响机械和电子零部件的运行状况,因为组成这些事物的微观粒子,它们是在不断运动着,它们的运动会受到环境的影响,微观影响宏观。而标定通过调整和优化ECU内部参数,使得整个控制系统适应它的运行环境,确保在各种工况下都能达到最佳性能。

例如:

a = 5;

b = 2;

y = a * x + b;

在示例中,如果偏移量b和因子a取决于具体的车辆,那么a和b的值必须根据车辆的具体条件进行个别调整。这意味着算法本身保持不变,但参数值会随车辆的不同而变化。

XCP从属设备并非绝对需要在ECU中使用。它可以在不同的环境中实现:从基于模型的开发环境到硬件在环(HIL)和软件在环(SIL)环境,再到用于通过调试接口(如JTAG、NEXUS和DAP)访问ECU内存的硬件接口。

3.XCP协议数据包

通过XCP协议的机制,可以实现对内存内容的读写访问。这些访问是以地址为导向的方式进行的。读访问允许从RAM中测量参数,而写访问则允许校准RAM中的参数。XCP允许与ECU中的事件同步执行测量,这确保了测量值之间的相关性。每次重新启动测量时,都可以自由选择要测量的信号。对于写访问,需要校准的参数必须存储在RAM中,这就要求有一个校准概念。

这引出了两个重要问题:

1.XCP协议的用户如何知道RAM中测量和校准参数的正确地址?

2.校准概念是什么样的?

第一个问题通过A2L文件解决,A2L文件(ASAM MCD-2 MC Calibration Package,即ASAM标准化组织制定的汽车测量、标定和数据交换标准中的标定包文件)是ECU标定过程中非常重要的一个文件,它包含了ECU的硬件和软件信息,包括参数的地址、类型、单位、范围等,使得标定工具能够正确地与ECU进行通信和数据交换。通过A2L文件,XCP协议的用户可以获取到RAM中测量和校准参数的正确地址。

而校准概念则是一个更广泛的主题,它涉及到如何定义和管理ECU中的参数,包括参数的初始化、存储、校准流程、数据持久化等方面,后面的文章会说明。

协议数据格式

在XCP(统一标定协议)中,数据在主从设备之间是通过基于消息的方式进行交换的。整个“XCP消息帧”被嵌入到传输层的一个帧中(在以太网环境下使用UDP时,XCP消息帧会被封装在UDP数据包中)。这个帧由三个部分组成:XCP头部、XCP数据包和XCP尾部。

关于CTO和DTO,网上的解释基本都是错误的,真实的解释如下:

CTOs(命令传输对象)用于从主设备向从设备传输命令,以及从从设备向主设备传输响应。

DTOs(数据传输对象)用于从设备在事件触发时,发送测量和校准数据到主设备。

其中各个值的含义如下:

Identification

在消息交换过程中,主设备和从设备都必须能够确定对方发送的是哪条消息。这是通过标识符字段来实现的。这就是为什么每条消息都以数据包标识符(PID)开始的原因。

在传输CTO(命令传输对象)时,PID字段完全足以识别CMD(命令)、RES(响应)或其他CTO数据包。在图中,可以看到从主设备发送到从设备的命令使用从0xC0到0xFF的PID。而XCP从设备使用从0xFC到0xFF的PID来响应主设备或向主设备发送信息。

Timestamp

DTO(数据传输对象)数据包使用时间戳,传输CTO(命令传输对象)消息时则不使用时间戳。从设备使用时间戳来提供与测量值相关的时间信息。这意味着主设备不仅获得了测量值,还获得了获取该测量值的时间点。测量值到达主设备所需的时间长短已不再重要,因为测量值和时间点之间的关系直接来自从设备。

从设备发送时间戳是可选的。

Data

XCP数据包包含存储在数据字段中的数据。在CTO(命令传输对象)数据包的情况下,数据字段由不同命令的特定参数组成。DTO(数据传输对象)数据包包含从从设备获取的测量值,而在发送STIM(激励)数据时,数据包则包含来自主设备的值。

4.总结

本文讲解了CCP/XCP协议的来源,分析了协议的用途和协议数据包格式,后面将继续讲解协议的其他部分,欢迎关注。

开源了几个项目:

基于UDS on CAN的Bootloader的刷写上位机:

https://github.com/sydyg/UDS-on-Bootloader.git

OSEKNM协议栈:

https://github.com/sydyg/OSEK_NM

嵌入式、汽车电子学习笔记:

https://github.com/sydyg/Vehicle_Soft_Class.git

  • 20
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南山墨客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值