You are on page 1of 1

XCP协议是什么?⼀⽂看懂,保证明⽩

(上)
2020年12⽉22⽇

XCP协议在汽⻋电⼦开发中起着重要的作⽤,可能每天都在⽤,但是确并不清除XCP协
议到底是什么。 本⽂将说明XCP协议的前世今⽣,并分析其具体是如何通信的,以及
XCP的功能和协议内容。 为了避免⽂章太⻓,分两个部分。

1 XCP协议的来源
提及XCP协议,不得不从ASAM说起。

随着汽⻋电⼦的⾼速发展,汽⻋上的ECU越来越多,各控制器间协同⼯作,控制着不
同的部件。

电⼦控制单元作为汽⻋系统中的⼤脑,通过采集输⼊信息,⽐如加速踏板,制动踏
板,巡航,起停等,采⽤特定的算法计算输出,为了达到理想的控制效果,算法中包
含较多的可标定参数,根据不同的输⼊和⼯况等调整。

ECU中的程序由软件⼯程师设计开发,⽽软件⼯程师并不能准确将这些参数设置成合
理值,这些参数是需要在实验中根据我们追求的经济性、动⼒性、舒适性和满⾜排放
法规等来设置,这部分⼯作是由标定⼯程师(或应⽤⼯程师)在软件开发后利⽤改变
参数分析性能反复迭代最终测定,因此标定⼯程师就需要对不同参数进⾏获取(读操
作)和标定(写操作)。这时候,就需要有个测量和标定标准来规范⼤家的操作。

在1990年代,⼏个德系OEM和TIER1—奥迪,宝⻢,奔驰,⼤众,BOSCH,ETAS和
Vector等,⼀起成⽴了⼀个协会,叫做ASAM。

ASAM(Association for Standardisation of Automation and Measuring Systems,⾃动化


和测量系统标准协会)是⼀个⾮营利性组织,是汽⻋⼯业中的标准协会,致⼒于数据模
型,接⼝及语⾔规范等领域。不要⼩瞧这个协会,除了我们今天提到的测试和标定标
准,还有诊断、ECU⽹络、软件开发、⾃动化测试、数据管理和分析、仿真等范畴都
在遵循它制定的标准。

成⽴之初,ASAM发布的CCP(CAN Calibration Protocol)协议,它是⼀种基于CAN总


线的ECU标定协议,采⽤CCP协议可以快速⽽有效地实现对汽⻋电控单元的标定。现在
仍然有许多汽⻋⼚商还在使⽤。

有了CCP协议后,ASAM意识到随着整⻋⽹络需求的发展,CAN总线已经⽆法满⾜整⻋
需求,智能化和⽹联化要求FlexRay,以太⽹的加⼊。2003年左右,在CCP协议的基
础上,ASAM⼜提出了XCP(Universal Measurement and Calibration Protocol)协
议。“XCP”中"X"是Universal,通⽤的,表示能适配它能够⽀持多种底层⽹络协议和
总线类型。

2 XCP协议概述
XCP的主要应⽤于测量和标定ECU内部参数。此协议能够使数据采集⼯作与ECU内部运
⾏的任务和中断同步,从⽽保证每当ECU软件更新参数时,能快速采集到所需的参数
值。基于以太⽹的XCP传输层协议可以使⽤TCP或UDP,不仅适⽤于物理控制单元,还
可⽤于测量和调整虚拟控制单元。

RTE

IPDUM COM DCM


XCPProtocol

SoAd
PDUR
XCPonCan

XCPonEth
XCPonFr

BusInterfac(s)

CommunicationHWAbstraction

BusDriver(s)

中市汽⻋控制与)DE智能

XCP允许对内存直接进⾏读写访问:这样在读访问中就可以⽤来测量来⾃内存的参数数
值,写访问中就可以⽤于调整内存中参数的数值。

UpperLevel
AutomationSystem

TASAMIMCD.3MC
Measurementand ASAM
CalibrationSystem MCD-2MC *A2L
XCPDriver
ECUDescriptionFile
TASAMMCD-1MC
XCPDriver

ECU
汽⻋控制与⼈⼯智能

3  XCP协议框架
为了确保传输⽹络的独⽴性,XCP被分成⼀个协议和⼀个传输层。由于XCP在功能⽅⾯
增强了很多,所以不能向后兼容CAN标定协议(CCP)。同时ASAM已经对XCP协议定
义了下列传输层为标准:

基于CAN的XCP
基于LIN的XCP
基于SxI(SPI、SCI)的XCP
基于以太⽹(TCP/UDP)的XCP
基于USB的XCP
基于FlexRay的XCP

XCP由ASAM 标准化并且取代了古⽼的CAN标定协议(CCP)。相较于CCP协议,XCP
在功能上做了许多改进,包括:

⽀持任何物理层协议,不仅限于CAN
优化了控制单元资源的利⽤率
同步数据激励
⽀持启动测量
通过块传输命令优化通信
即插即⽤配置
通过测量控件内的时间戳从⽽精确测量数据采集。

采⽤⼀主多从的模式,单个主机可以同时与多个从机通讯。主机通过下发命令与从机
建⽴连接,解锁,读取数据,修改参数等操作。所有XCP通信都以名为“XCP数据包”的
数据对象形式传输。

XCP数据包有两种类型。

命令传输对象(CTO:Command Transfer Object)被⽤来传输⼀般的控制命令:控制


命令(CMD),命令响应(RES),错误包(ERR)事件包(EV)以及服务请求数据
包(SERV)。

数据传输对象(DTO:Data Transfer Object)被⽤于传输同步数据采集数据(DAQ)


和同步数据激励数据(STIM)。

CMD: Command
RES: Response
ERR: Error
EV: Event
SERV: Service Request Processor
DAQ: Data Acquisition
STIM: Stimulation

XCP实现测量与控制设备中的事件同步进⾏,从⽽确保测得值具有相关性。待测量的信
号可以在每次重启系统时预先选定。

写访问要求待调整的参数位于RAM内。XCP的⽤户需要知道测量和调整值在内存中的
确切地址。该地址可以通过控制单元说明⽂件(A2L⽂件)获得。XCP的⼀⼤优势是它
能够从与控制单元内的程序或事件同步变化的内存上获取测量数据,从⽽使⽤户能够
识别控制单元中的时间次序与这些变化值之间的直接关联,这被称为事件同步测量。

4  XCP协议数据结构
主、从设备之间每次传输的数据都采⽤XCP帧的格式,包含⼀个XCP报头、XCP数据包
和XCP报尾。XCP帧⽀持的传输层可将这三个帧元素映射到相应的传输帧格式。

XCP数据包包含独⽴于所选传输机制的协议数据,携带标识、时间戳和实际数据。PID
是标识字段的⼀部分,⽤于标记数据包及数据包内部的数据值。

基于以太⽹的XCP既可以使⽤TCP也可以使⽤UDP。这两种结合⽅式各有优缺点。

选择使⽤哪⼀种可根据使⽤场景决定。例如,如果要记录完整的跟踪数据,需要接收
来⾃⽹络的每⼀个帧数据,若是在传输过程中有任何丢失,则必须重传,并保证其顺
序正确如初。这种场景下必须使⽤TCP。

与此相反,在对设备进⾏实时测量时,它的信号数据仅在获得下⼀个样本时才有效。
如果测得的数据在传输过程中丢失,但下⼀个样本证实丢失的数据⽆效,那么就没有
必要重传先前的报⽂,这种场景使⽤UDP即可。

XCP报头包含⻓度信息和⼀个可⽤于检测数据包丢失情况的计数器。主设备每发送⼀个
数据包,就将计数器的值増加⼀,从设备的做法也是如此。两个计数器相互独⽴。多
个XCP数据包可以合并到同⼀个UDP数据包中,但⼀个XCP数据包不可以分成多个数据
包。UDP和TCP的XCP报尾为空。

5  ECU说明⽂件和数据记录⽂件
XCP使⽤时总是与ECU说明⽂件配合使⽤,这个⽂件就是ASAP2(A2L)⽂件。该⽂件
包含使⽤XCP所需的必要信息,包括关于ECU参数、内存变量和ECU内存详细地址信息
以及如何解锁访问XCP功能的安全信息。XCP还可以从ECU上传数据,向ECU下载数据
以及对ECU重新编程。为了实现这些功能,XCP Master必须知晓ECU不同内存区的详
细信息。

A2L是基于ECU软件⽣成的,ECU软件的对象包含在A2L⽂件中,源代码更改后A2L⽂
件也会进⾏更改。A2L⽂件的结构如下图。

标定数据记录⽂件使⽤MDF格式,全称(Measurement Data Format),即测量数据格


式,是ASAM(⾃动化及测量系统标准协会)定义的。INCA、CANape等⼯具录制的测
量数据,都是MDF格式。

1991年发布的第⼀个公开版本是MDF 2.0(.dat);MDF 3.0(.mdf)于2002年发布,


多年来,逐步扩展。当前的⾮ASAM版本MDF 3.3仍完全向后兼容所有MDF 2.x和3.x版
本。但是,由于⽂件内部链接使⽤32位数据类型,因此专有MDF 3.x格式的⽂件⼤⼩限
制为4GB。

2009年发布了ASAM MDF 4.0(.mf4),克服了先前MDF3.x版本的⼤⼩限制,并提供


了⼀系列新功能,例如通过XML的灵活可扩展性,⾃定义信号分组,事件或附件。但
是,由于诸如链接的64位数据类型之类的根本更改,MDF 4.x不再与MDF 3.x 兼容。当
前最新版本为2012年ASAM MDF 4.1。

来源:汽⻋ECU设计

推荐阅读:

XCP协议是什么?⼀⽂看懂,保证明⽩(下)

2020年线束⾏业软件及现状分析

CAN总线基础,⽹络架构学习精品读物

You might also like