[4.2]-AutoSAR零基础学习-XCP 测量/校准 <<2>>

4. XCP协议规范

4.1 数据包简介

XCP的数据包分为两类:

指令传送对象CTO(Command Transfer Object)

数据传送对象DTO(Data Transfer Object)

如将命令按传递方向,可划分下图:

CMD:指的是上位机下发给下位机的一些命令,比如连接命令FF,解锁,获取状态等一些和下位机交互的命令;

STIM:你可以理解为一种上位机向下位机大量发数据的一种方式,相当于反向的DAQ;用于数据标定时,上位机向下位机修改参数。

Response:肯定应答,指的下位机答复上位机的命令;

Error:否定应答上位机的命令;

Event:事件,指下位机发生某事件时通知上位机;

Service:指下位机在某些情况下,需要上位机执行一些动作,可理解为请求上位机服务。

DAQ:下位机上传数据给上位机。

4.2 数据包报文格式

XCP帧的格式,包含帧头帧尾+XCP数据包。XCP帧支持的传输层可将这三个帧元素映射到相应的传输帧格式。

以下为基于CAN传输层的XCP on CAN。

CTO与DTO报文XCP Packet包格式如下:

PID是标识字段的一部分,用于标记数据包及数据包内部的数据值。比如:

主结点对从结点进行XCP控制时使用“命令(CMD)”,此时的PID在“0xC0”到“0xFF”的范围内。

从结点对这个命令返回肯定应答的情况下,使用“应答(RES)”,此时PID变为“0xFF”。

5. XCP测量

参数测量本质上是作为主设备对从设备的请求而实现的:“读取存储位置0x1234的值”。按测量方式可分为异步测量与同步测量。

5.1 异步测量(Poling)

即Poling模式,Poling是最简单的测量方法:基于CTO。对需要采集的变量进行挨个轮询。

主站可以使用SHORT_UPLOAD命令从从站请求测量参数的值。这称为轮询。这是最简单的测量情况:在已接收并执行SHORT_UPLOAD命令时发送测量参数的测量值。

异步测量是使用主结点发送的命令,通过指定的XCP地址来提取从结点的ECU内部的数据,并通过从结点的应答将该数据传送给主结点,如此循环往复来实现的。为了取出数据,使用PID为“0xF4”的命令“SHORT_UPLOAD”。这个命令和应答的格式如下所述。

5.2 同步测量

异步测量,主结点决定测量时间。为使测量时机与ECU的控制相匹配,必须由ECU确定测量时机,在数据取出后由从结点发送到主结点,通过DTO来完成。

主结点在进行同步测量前,通过命令指定要取出的数据的XCP地址,从结点等到同步测量开始命令后,使用DTO发送到主结点。因此,在同步测量的情况下,不是通过命令和应答的组合,而是通过测量周期或事件,由从结点发送DTO报文到主结点。

6 校准/标定

校准是为了重写ECU内部软件中的参数,主结点发送指定XCP地址和重写数据的命令,从结点导出适当的参数地址、执行重写,并返回一个应答。简单的说 就是将从节点的某个地址的值改为指定的值。

经验分享 程序员 微信小程序 职场和发展