017 CCP协议简介

在标定系统中上、下位机之间的通信协议多种多样,包括CAN总线、串口通讯、K线、ETK等。其中串口通讯的数据传输最慢,ECT传输速度最快但需要添加额外设备,K线主要负责故障诊断通信,而CAN总线在数据传输速度以及质量方面都满足标定匹配对于数据的可靠性与实时性的要求,在所有满足ASAM标准的标定协议中,基于CAN总线的CCP(CAN calibration protocol)标定协议被运用的最为广泛。CCP协议采用主从通信方式,即只有一台标定主设备,而从设备(被标定的ECU)可有多个,在同一时刻主设备只能与其中的某一个从设备进行直接会话。当两者建立连接通信(CONNECT命令)时,则处于连接状态。此时其他设备依旧可以接收到主设备的命令报文,但只有处于连接状态的从设备才会对报文做出响应。通信结束了,主设备断开逻辑连接(DISCONNECT命令),才能与其他从设备进行响应通信。

017 CCP协议简介:原文配图 1

1 CCP报文帧

CCP协议规定,主设备发给从设备的数据对象为CRO(command receive object),从设备发给主设备的数据对象为DTO(data transmission object),即CCP协议只需要两个CAN的ID号。CRO和DTO的ID号由目标CAN网络自行定义。CRO的优先级必须高于DTO,命令与数据通过8字节的报文数据来进行交互,由主设备发出的普通命令均要求从设备返回带握手信心的反馈消息,握手信息包含命令返回码或者错误码。

1 命令接收报文(CRO)

命令接收报文CRO用于主设备向从设备发送命令。报文的第一字节表示命令代码CMD(command code)。CCP协议总共规定了28条命令,其中13条为基本命令,其余为可选命令。下位机CMD判断主设备所请求的命令内容。报文的第二字节表示命令计数器CTR(command counter),用于记录当前命令的执行次数。其余的6个字节均表示命令参数,每条命令接收后必须返回一个DTO帧。

017 CCP协议简介:原文配图 2

CRO报文格式

2 数据发送报文(DTO)

数据发送报文(DTO)用于从设备向主设备发送信息。DTO共有以下三种形式:

017 CCP协议简介:原文配图 3

(a)CRM、Event Message (b)DAQ-DTO 1.CRM(command return message):由从设备发送至主设备,用于CRO报文反馈。2.Event Message:当从设备内部发生处理错误(如繁忙、等待、丢失等)时,用从设备自行向主设备发送,报告当前状态,并请求暂缓当前命令进程。3.DAQ-DTO(data acquisition-DTO):用于DAQ模式,由从设备向主设备以固定的周期发送。前两者的数据场的第一字节为PID,用于定义DTO的类型;第二个字节为命令返回/错误代码ERR;第三个字节CTR为命令计数器,其值与CRO报文中的CTR值相同。在DAQ-DTO报文中,PID对应ODT列表(对象描述表)的编号,其余字节全部用于DAQ模式下的数据传输。

017 CCP协议简介:原文配图 4

2 CCP协议命令

CCP协议共支持28条命令,其中11条为基本命令,17条为可选命令。基本命令、CMD代码及描述基本命令 CMD 描述CONNECT 0x01 建立与从机设备的逻辑连接GET_CCP_VERSION 0x1B 获得从机CCP协议版本EXCHANG_ID 0x17 获取ECU身份SET_MTA 0x02 设置内存传输地址DNLOAD 0x03 从ECU内存中下载(最多5个字节)UPLOAD 0x04 从ECU内存中上传(最多5个字节)GET_DAQ_SIZE 0x14 获取DAQ列表尺寸SET_DAQ_PTR 0x15 设置DAQ列表中某个ODT地址WRITE_DAQ 0x16 写入ODT至DAQ列表START_STOP 0x06 启动/停止某个DAQ列表DISCONNECT 0x07 结束与从机的逻辑连接可选命令、CMD代码及描述

可选命令 代码 描述GET_SEED 0x12 获取访问保护密码UNLOCK 0x13 解除访问保护DNLOAD_6 0x23 从ECU内存中下载6个字节SHORT_UP 0x0F 从ECU内存中上传(最多5个字节)SELECT_CAL_PAGE 0x11 选择活动中的标定页GET_ACTIVE_CAL_PAGE 0x09 获取活动中的标定页SET_S_STATUS 0x0C 设置ECU会话(session)状态GET_S_STATUS 0x0D 获取ECU会话(session)状态BUILD_CHKSUM 0x0E 计算内存求和效验CLEAR_MEMORY 0x10 清除某内存范围PROGRAM 0x18 下载编程字节(最多5个字节)PROGRAM_6 0x22 下载6个编程字节MOVE 0x19 移动某内存范围TEST 0x05 测试模式DIAG_SERVICE 0x20 用诊断服务ACTION_SERVICE 0x21 用于特定操作服务START_STOP_ALL 0x08 启动/停止所有DAQ列表

对于基本命令,CCP驱动程序必须实现,可选命令主要是为了增加CCP协议的效率的初衷而设计的,在A2L文件中,可以设置上位机(如INCA)开启哪些可选命令。例如在A2L文件中的IF_DATA ASAP1B_CCP部分内增加了如下内容:OPTIONAL_CMD 0xC OPTIONAL_CMD 0xD OPTIONAL_CMD 0xE OPTIONAL_CMD 0x11 OPTIONAL_CMD 0x19表示上位机程序将使用下列CCP可选命令,SET_S_STATUS,GET_S_STATUS,BUILD_CHKSUM,SELECT_CAL_PAGE,MOVE。

3 DAQ模式

DAQ模式是以固定周期向主设备自动上传数据的一种高效的采集模式。在DAQ模式下,主设备通过配置ODT(Object descriptor table,对象描述列表)列表来配置需要上传数据所在的地址,并写入DAQ列表中。配置结束后,从设备就会以某一固定的周期向主设备上传数据,再无需主设备进行控制,从而减少对CAN总线的资源利用率。

017 CCP协议简介:原文配图 5

DAQ、ODT结构示意图每个DAQ列表可以包含多个(最多254)ODT列表,每个ODT列表包括检测变量在ECU内的存储地址、长度(可以为1、2、4字节)。如果不指定ODT长度,则为一个字节,这种情况下一个ODT列表刚好可以放入一个DAQ-DTO报文中。每一个ODT列表都有一个唯一的PID编号,若干个ODT列表写入DAQ列表完成DAQ列表配置。

017 CCP协议简介:原文配图 6

DAQ列表配置流程

017 CCP协议简介:原文配图 7

后记

Vector公司有提供开源的CCP驱动程序代码,大家可以在网上下载,如果能吃透里面的代码,那么你对CCP的了解就到家了~

017 CCP协议简介:原文配图 8

未经许可禁止转载,氮素你可以分享到朋友圈

← 返回文章列表