前面
标定离不开 CCP/XCP协议,本文对CCP进行一个简单介绍。
CCP的全称是CAN Calibration Protocol,是基于CAN总线的ECU标定协议,采用主从通信方式。通过ASAP2文件对电子控制单元(ECU)的标定部分进行描述。
标定工具在ASAP2文件的支持下,找到变量在ECU中的实际物理地址,并按APAP2文件中定义的转换格式,ECU收到标定工具发送的命令后,对变量进行存储或修改。
CCP消息格式
CCP协议可通过两帧报文实现数据传输:分别是命令接收对象(Command Receive Object,CRO)和命令传输对象(Data Transmission Object,DTO)。
CRO报文格式如图4-19所示。CRO的数据场为8个字节,第0个字节为命令代码,第一个字节为命令计数器。第2到7位是与命令相关的参数。
DTO可分为命令返回消息(CRM-DTO)、DAQ-DTO和事件消息DTO三类。
CRM-DTO和事件消息DTO报文格式相同,报文格式如图4-20所示。第0个字节表示DTO的类型,第1个字节表示错误代码,第2个字节表示命令序号,其余5个字节表示参数数据域。
DAQ-DTO只用于DAQ通信模式,其报文格式略有不同,第0个字节表示PID号,其余7个字节表示命令参数。
CCP数据通信
主设备采用Vector公司的CANape标定工具,在对ECU进行标定与测量前,必须让从设备ECU内部包含CCP协议。
CCP协议总共规定了28条命令,其中11条是必选命令。主设备可要求ECU通过Polling模式或DAQ模式上传数据。
命令 | 功能描述 | PID | 命令 | 功能描述 | PID |
---|---|---|---|---|---|
CONNECT | 连接命令 | 0x01 | SET_DAQ_PTR | 指定DAQ中某个ODT | 0x15 |
SET_MIT | 设定MTA地址 | 0x02 | UPLOAD | 上传最多5个数据字节 | 0x04 |
DNLOAD | 下载最多5个数据字节 | 0x03 | EXCHANGE_ID | 获取ECU标识符 | 0x17 |
GET_CCP_VERSION | 获取CCP版本 | 0x1B | PROGRAM | 最多5个字节FLASH编程 | 0x18 |
TEST | 测试是否连接 | 0x05 | MOVE | 从MTA0拷贝到MTA1 | 0x19 |
START_STOP | 开始/停止某个DAQ | 0x06 | DIAG_SERVICE | 诊断服务 | 0x20 |
DISCONNECT | 断开连接 | 0x07 | ACTION_SERVICE | 激活服务 | 0x21 |
START_STOP_ALL | 开始/停止全部DAQ | 0x08 | GET_S_STATUS | 获取当前状态 | 0x0D |
GET_ACTIVE_CAL_PAGE | 获取当前页 | 0x09 | DNLOAD_6 | 下载6个字节数据 | 0x23 |
CLEAR_MEMORY | 擦除FLASH地址 | 0x10 | SHORT_UP | 不用MTA上传数据 | 0x0F |
SELECT_CAL_PAGE | 页切换 | 0x11 | WRITE_DAQ | 设定元素地址 | 0x16 |
GET_SEED | 获取种子 | 0x12 | SET_S_STATUS | 设置当前状态 | 0x0C |
UNLOCK | 解锁 | 0x13 | BUILD_CHKSUM | 计算校验和 | 0x0E |
GET_DAQ_SIZE | 获取指定DAQ列表大小 | 0x14 | PROGRAM_6 | 6个字节FLASH编程 | 0x22 |
Polling模式通信流程如图4-22所示。首先通过CONNECT命令建立通信连接,然后通过SET_MTA设置数据上传的起始地址。主设备请求上传数据超过5个字节,可通过UPLOAD命令请求从设备以MTA0为起始地址,完成指定字节数的数据上传。当从设备完成数据上传后,MAT0的地址指针会增加相应的字节数,可保持数据传输的连续性。当主设备需求的数据字节小于5个字节时,通过SHORT_UP命令完成数据的上传。
DAQ模式通信流程如图4-23所示。首先通过CONNECT命令建立逻辑连接,然后通过SET_S_STATUS命令设置状态字节DAQ等于0,表示DAQ初始化未完成,接着通过GET_DAQ_SIZE获取DAQ列表的大小。通过SET_S_STATUS命令设置DAQ入口地址指针,主设备通过WRITE_DAQ命令分n次将数据写入DAQ列表中的每个ODT中。完成DAQ列表配置后,主设备通过SET_S_STATUS命令设置状态字节DAQ等于1,表示DAQ列表初始化完成。最后通过START_STO命令,开始DAQ通信。