Professional Documents
Culture Documents
(上)
2020年12⽉22⽇
XCP协议在汽⻋电⼦开发中起着重要的作⽤,可能每天都在⽤,但是确并不清除XCP协
议到底是什么。 本⽂将说明XCP协议的前世今⽣,并分析其具体是如何通信的,以及
XCP的功能和协议内容。 为了避免⽂章太⻓,分两个部分。
1 XCP协议的来源
提及XCP协议,不得不从ASAM说起。
随着汽⻋电⼦的⾼速发展,汽⻋上的ECU越来越多,各控制器间协同⼯作,控制着不
同的部件。
电⼦控制单元作为汽⻋系统中的⼤脑,通过采集输⼊信息,⽐如加速踏板,制动踏
板,巡航,起停等,采⽤特定的算法计算输出,为了达到理想的控制效果,算法中包
含较多的可标定参数,根据不同的输⼊和⼯况等调整。
ECU中的程序由软件⼯程师设计开发,⽽软件⼯程师并不能准确将这些参数设置成合
理值,这些参数是需要在实验中根据我们追求的经济性、动⼒性、舒适性和满⾜排放
法规等来设置,这部分⼯作是由标定⼯程师(或应⽤⼯程师)在软件开发后利⽤改变
参数分析性能反复迭代最终测定,因此标定⼯程师就需要对不同参数进⾏获取(读操
作)和标定(写操作)。这时候,就需要有个测量和标定标准来规范⼤家的操作。
在1990年代,⼏个德系OEM和TIER1—奥迪,宝⻢,奔驰,⼤众,BOSCH,ETAS和
Vector等,⼀起成⽴了⼀个协会,叫做ASAM。
有了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
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数据包有两种类型。
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⽂件的结构如下图。
来源:汽⻋ECU设计
推荐阅读:
XCP协议是什么?⼀⽂看懂,保证明⽩(下)
2020年线束⾏业软件及现状分析
CAN总线基础,⽹络架构学习精品读物