参考链接
xcp
CTO(命令传输对象)被用来将命令从Master发送到Slave,以及将Slave的响应发送到Master。
DTO(数据传输对象)可用于数据交换、同步测量和标定数据
DAQ表示数据采集,是通过Slave向Master发送DTO(数据传输对象)来实现的。
xcp 数据格式
单帧命令
命令格式
字节 | 描述 | 备注 | |
---|
0 | CMD | 发生的命令 | |
1~MAX_CTO-1 | parameter | 发生的命令的参数 | |
应答格式
肯定应答
字节 | 描述 | 备注 | |
---|
0 | 0xFF | 肯定应答 | |
1~MAX_CTO-1 | parameter | 应答参数 | |
否定应答
字节 | 描述 | 备注 | |
---|
0 | 0xFE | 否定应答 | |
1 | ErrorCode | 错误码 | |
2~MAX_CTO-1 | parameter | 应答参数 | |
Slave To Master
Asynchronous Event(异步事件)
字节 | 描述 | 备注 | |
---|
0 | 0xFD | 事件命令 | |
1 | EventCode | 事件码 | |
2~MAX_CTO-1 | parameter | 发生的命令的参数 | |
Service
字节 | 描述 | 备注 | |
---|
0 | 0xFC | 服务命令 | |
1 | ServiceRequestCode | 服务请求码 | |
2~MAX_CTO-1 | parameter | 发生的命令的参数 | |
xcp 命令
标准命令
命令 | PID | 备注 | |
---|
CONNECT | 0xFF | 连接ECU | 必实现指令 |
DISCONNECT | 0xFE | 断开ECU连接 | 必实现指令 |
GET_STATUS | 0xFD | 获取ECU状态 | 必实现指令 |
SYNCH | 0xFC | 同步ECU | 必实现指令 |
GET_COMM_MODE_INFO | 0xFB | 获取ECU通过模式信息 | |
GET_ID | 0xFA | 获取id | |
SET_REQUEST | 0xF9 | 获取id | |
GET_SEED | 0xF8 | 请求种子 | |
UNLOCK | 0xF7 | 发生秘钥解锁受保护资源 | |
SET_MTA | 0xF6 | 初始化一个指针 | |
UPLOAD | 0xF5 | 从ECU获取数据 | |
SHORT_UPLOAD | 从ECU获取短数据 | | |
BUILD_CHECKSUM | 0xF3 | 构建校验和 | |
TRANSPORT_LAYER_CMD | 0xF2 | 传输层命令,有子命令 | |
USER_CMD | 0xF1 | 用户指令 | |
标定指令
命令 | PID | 备注 | |
---|
DOWNLOAD | 0xF0 | 下载到ECU | 必实现指令 |
DOWNLOAD_NEXT | 0xEF | 下载到ECU(块模式) | |
DOWNLOAD_MAX | 0xEE | 下载到ECU(固定模式) | |
SHORT_DOWNLOAD | 0xED | 下载短数据到ECU | |
MODIFY_BIT | 0xEC | 修改bit位 | |
页切换指令
命令 | PID | 备注 | |
---|
SET_CAL_PAGE | 0xEB | 设置校准页 | 必实现指令 |
GET_CAL_PAGE | 0xEA | 获取校准页 | 必实现指令 |
GET_PAG_PROCESSOR_INFO | 0xE9 | 获取页处理信息 | |
GET_SEGMENT_INFO | 0xE8 | 获取段信息 | |
GET_PAGE_INFO | 0xE7 | 获取页信息 | |
SET_SEGMENT_MODE | 0xE6 | 设置段模式 | |
GET_SEGMENT_MODE | 0xE5 | 获取段模式 | |
DCOPY_CAL_PAGE | 0xE4 | 拷贝校准页 | |
数据采集(DAQ)指令(静态)
命令 | PID | 备注 | |
---|
CLEAR_DAQ_LIST | 0xE3 | 清空DAQ列表 | 必实现指令 |
SET_DAQ_PTR | 0xE2 | 设置DAQ指针 | |
WRITE_DAQ | 0xE1 | ODT条目写DAQ列表 | |
SET_DAQ_LIST_MODE | 0xE0 | 设置DAQ列表模式 | |
GET_DAQ_LIST_MODE | 0xDF | 获取DAQ列表模式 | |
START_STOP_DAQ_LIST | 0xDE | 启动/停止/选择DAQ列表 | |
START_STOP_SYNCH | 0xDD | 同步启动/停止DAQ列表 | |
数据采集(DAQ)指令(动态)
命令 | PID | 备注 | |
---|
FREE_DAQ | 0xD6 | 清除所有的DAQ列表 | 必实现指令 |
ALLOC_DAQ | 0xD5 | 为XCP从设备分配了一些DAQ列表 | 必实现指令 |
ALLOC_ODT | 0xD4 | 将若干odt分配到指定的DAQ列表 | 必实现指令 |
ALLOC_ODT_ENTRY | 0xD3 | 将若干ODT表项给到指定的DAQ中 | 必实现指令 |
存储器编程(PGM)指令
命令 | PID | 备注 | |
---|
PROGRAM_START | 0xD2 | 编程序列开始 | 必实现指令 |
PROGRAM_CLEAR | 0xD1 | 清除一段非易失性内存 | 必实现指令 |
PROGRAM | 0xD0 | 编程指令 | 必实现指令 |
PROGRAM_RESET | 0xCF | 编程指令 | 必实现指令 |
GET_PGM_PROCESSOR_INFO | 0xCE | 获取编程处理器信息 | 必实现指令 |
GET_SECTOR_INFO | 0xCD | 获取段信息 | 可选指令 |
PROGRAM_PREPARE | 0xCC | 准备编程 | 可选指令 |
:PROGRAM_FORMAT | 0xCB | 编程前设置数据格式 | 可选指令 |
PROGRAM_NEXT | 0xCA | 编程一个存储段(快模式) | 可选指令 |
PROGRAM_MAX | 0xC9 | 编程一个存储段(固定大小模式) | |
PROGRAM_VERIFY | 0xC8 | 程序验证 | 可选指令 |
xcp 通信过程过程
XCP 发生ID 610
XCP 接收ID 61A
xcp 建立连接
xcp 标定过程
第一帧 设置地址:
| | 描述 | F6 00 00 00 10 69 03 08 |
---|
0 | CMD | 设置DAQ地址 | F6 |
1~2 | Reserved | | 0x0000 |
3 | Extension | 地址扩展 | 0x00 |
4~7 | Address | 地址 | 0x08036910 |
第二帧 下载数据:
| | 描述 | F0 01 6D 00 00 00 00 00 |
---|
0 | CMD | 设置DAQ地址 | F0 |
1 | Number | 传输数据字节数 | 0x04 |
2~n | Data | 地址扩展 | 0x6D000000 |
xcp 观察量启动停止过程过程
获取事件通道 0信息:
| | 描述 | D7 00 00 00 00 00 00 00 |
---|
0 | CMD | 获取事件通道信息 | 0xD7 |
1 | Reserved | 保留 | 0x00 |
2~3 | Event channel number | 事件通道号 | 0x0000 |
事件通道信息应答:
| | 描述 | FF 04 01 06 01 06 03 |
---|
0 | CMD | 肯定应答 | 0xFF |
1 | Property | Bit3:STIM Bit2:DAT | 0x04:仅支持DAQ |
2 | MAX_DAQ | 最大DAQ | 01 |
3 | EventNameLength | 事件名称字节数 | 06 :“CH_1ms” |
4 | Time Cycle | 事件周期 | 01:1ms |
5 | Time Unit | 时间单位 | 06 |
6 | Priority | 优先级 | 03 |
请求从设备上传数据:
| | 描述 | F5 06 00 00 00 00 00 00 |
---|
0 | CMD | 从设备上传数据 | 0xF5 |
1 | Number | 数据长度 | 0x06 |
从设备上传数据:
| | 描述 | FF 43 48 5F 31 6D 73 |
---|
0 | CMD | 肯定应答 | 0xFF |
1~n | Data | 数据 | 0x06 |
清除所有的DAQ列表:
| | 描述 | D6 00 00 00 00 00 00 00 |
---|
0 | CMD | 清除所有的DAQ列表 | 0xD6 |
分配了一些DAQ列表
| | 描述 | D5 00 01 00 00 00 00 00 |
---|
0 | CMD | 分配了一些DAQ列表 | 0xD5 |
1 | Reserved | 保留 | 0x00 |
2~3 | DAQ_COUNT | DAQ 数量 | 0x01 |
为DAQ列表分配ODT个数
| | 描述 | D5 00 01 00 00 00 00 00 |
---|
0 | CMD | 分配了一些DAQ列表 | 0xD4 |
1 | Reserved | 保留 | 0x00 |
2~3 | DAQ_LIST_NUMBER | DAQ 编号 | 0x0000 |
4 | ODT_COUNT | ODT个数 | 0x01 |
若干ODT表项分配给指定的DAQ名单
| | 描述 | D3 00 00 00 00 01 00 00 |
---|
0 | CMD | ODT表项分配 | 0xD3 |
1 | Reserved | 保留 | 0x00 |
2~3 | DAQ_LIST_NUMBER | DAQ 编号 | 0x0000 |
4 | ODT_NUMBER | | ODT编号 |
4 | ODT_ENTERIES | 分配的ODT条目数 | 0x01 |
设置DAQ地址
| | 描述 | E2 00 00 00 00 00 00 00 |
---|
0 | CMD | DAQ地址 | 0xE2 |
写DAQ
| | 描述 | E1 FF 04 00 08 69 03 08 |
---|
0 | CMD | 写DAQ地址 | 0xE1 |
1 | BIT_OFFSET | 字节偏移 | 0XFF:该字段可以忽略 |
2 | size of DAQ | DAQ 大小 | 04 |
3 | Externsion | 地址扩展 | 00 |
4~7 | Address | 地址 | 0x08036908 |
设置DAQ模式
| | 描述 | E0 00 00 00 01 00 01 00 |
---|
0 | CMD | 设置DAQ模式 | 0xE0 |
1 | Mode | BIT5:PID_OFF(PID) BIT4:TIMESTAMP(时间戳) BIT1: 数据采集模式 | 0x00:DAQ设置为数据采集模式(Slave -> Master) |
2~3 | DAQ_LIST | DAQ 列表编号 | 0x0000 |
4~5 | Event Channel | 事件通道号 | 0x0001 |
6 | Rate | 传输速率 | 0x01 |
7 | Priority | 优先级 | 0x00 |
启动同步传输:
| | 描述 | DD 01 00 00 00 00 00 00 |
---|
0 | CMD | 同步启停数据层传输 | 0xDD |
1 | Parameter | 0x00:停止所有 | 0x01 |
| | 0x01:启动被选择的 | |
| | 0x02:停止被选择的 | |
返回的观测量
| | 描述 | 00 6D F3 09 00 00 24 06 |
---|
0 | | 数据开始i | 0x00 |
1 | data | 一个uint8观测量数据 | 0x6D |
2~5 | data | 一个uint32观测量数据 | 0x000009F3 |
6~7 | data | 一个uint32观测量数据低二字节 | 0x0624 |
第二帧 | | | 01 24 00 |
0~1 | data | 一个uint32观测量数据高二字节 | 0x2401 |
3 | | 数据结束 | 0x00 |