CAN通信标定协议(基于ccp协议)
一、协议简介
该通信协议采用主-从式通信方式,主设备通过CAN总线与多台从设备相连接,主设备是测量标定系统,从设备是需要标定的ECU,主设备首先与其中一个从设备建立逻辑链接, 建立逻辑连接后,主、从设备之间所有的数据传递均由主机控制,从设备执行主设备命令后返回包含命令响应值或错误代码等信息的报文,同时从设备可以根据主设备通过控制命令所设置的列表信息,来定时地向主设备传送变量信息,数据的传递是由主设备初始化并且由从设备来执行的,并且是由固定的循环采样频率或者事件触发的。 主设备通过USB-CAN接口与从设备连接,符合CAN2.0协议。
通信过程中,所有报文均为8个字节,它可以包含命令、数据、数据长度、地址等信息。 该通信协议参照ccp协议,可以与INCA,CANape等标定软件接口。
二、通信数据对象
CAN通信采用了两个报文数据对象CRO(命令接收对象)和DTO(命令发送对象),每个对象根据其数据流向,都有一个唯一的ID标志符进行标识,ID标识符可以由用户自行设定。
1.命令接收对象 (CRO)
命令接收对象(CRO)用于传递指令代码和内部功能码或主、从设备之间交换的存储区数据,对应的报文帧如图1所示,表1位场说明: Byte 0 1 CMD CTR 2 Parameter and Data Field 图1 CRO数据格式
表1
CMD (1 Byte): CTR (1 Byte): Parameter and Data(6 Byte):
1
3 4 5 6 7 命令代码。 命令计数器。 参数和数据场,命令相关的数据或参数 2.数据传输对象(DTO)
数据传输对象(DTO)指由从设备反馈的报文。DTO根据报文首字节PID的值可以由三种形式,见表2: 表2: PID值 0xFF 数据传输类型 备注 CRM(Command Return 由从设备发送,反馈CRO命令的报文 Message) 0xFE Event Message 当从设备检测到内部发生错误机制时,由从设备自行向主设备发送,报告其当前的运行状态,并请求主设备暂停当前工作进程以处理发生的错误 0-0xFD DAQ-DTO(Data Acquisition-DTO) 用于DAQ模式,由从设备定期向主设备发送。 根据对象描述表(ODT),确定需要上传的变量
(1). CRM和Event Message的报文帧如图2所示: Byte 0 1 PID ERR
Parameter and Data Field 图2 CRM-Event Message报文帧格式
表3:场说明 PID(1 Byte) ERR(1 Byte) CTR(1 Byte) Parameter and Data Field
(2). DAQ-DTO(Data Acquisition-DTO)的报文帧: Byte 0 1 PID
2 3 4 5 6 7 其值代表了DTO的类型 命令返回错误代码 命令计数器,与接收的相等。 参数和数据场,命令相关的数据或参数 2 CTR 3 4 5 6 7 Data Field(DAQ Values) 2
3. 协议命令列表及说明(标注绿色字体部分逐步补充完整)
3.1 命令列表: 命令名称 CONNECT SET_MTA DNLOAD DNLOAD_6 代码 0x01 0x02 0x03 0x23 说明 创建一个ECU的连接 设置MTA地址 下载最多5个字节数据到ECU 下载6个字节数据到ECU 从ECU上载最多5个字节数据 从ECU上载最多5个数据(不用MTA) 断开到该ECU的连接 得到指定DAQ列表大小 选中某指定DAQ列表中某ODT的某元素 设定该元素指定的地址 开始/停止采集指定的DAQ列表 得到该ECU的标识符 得到计算密钥的种子(SEED) 要求ECU释放某种功能 设置当前会话状态 得到当前会话状态 计算指定区域的校验和 清除某内存区域 FLASH编程(最多5个字节) FLASH编程(6个字节) 从MTA0处拷贝指定长度的字节到MTA1处 测试当前在线的从设备 得到当前标定页(RAM or FLASH) UPLOAD SHORT_UP DISCONNECT GET_DAQ_SIZE SET_DAQ_PTR WRITE_DAQ START_STOP EXCHANGE_ID GET_SEED UNLOCK SET_S_STATUS GET_S_STATUS BUILD_CHKSUM CLEAR_MEMORY PROGRAM PROGRAM_6 MOVE TEST 0x04 0x0F 0x07 0x14 0x15 0x16 0x06 0x17 0x12 0x13 0x0C 0x0D 0x0E 0x10 0x18 0x22 0x19 0x05 GET_ACTIVE_CAL_PAGE 0x09 DIAG_SERVICE ACTION_SERVICE 0x20 0x21
3
3.2命令返回错误代码 代码 0x00 0x01 0x10 0x11 。。。
描述 正确接收,无错误 DAQ处理器过载 命令处理器忙 DAQ处理器忙 待续 种类 状态改变 3.3命令详细说明
3.3.1 CONNECT命令: 命令接收对象(CRO): 位(bit) 0 1 2 4-7 数据类型 字节 字节 字 字节 描述 命令代码(0x01) 命令计数器 站地址 填0(不关心) 数据传送对象(DTO): 位(bit) 0 1 2 3-7
3.3.2 SET_MTA命令: 命令接收对象(CRO): 位(bit) 0 1 2 3 4-7 数据类型 字节 字节 字节 字节 描述 命令代码(0x02) 命令计数器 存贮器传输地址(MTA0,MTA1) 地址扩展 数据类型 字节 字节 字节 字节 描述 命令代码(0xFF) 命令返回代码 命令计数器 填0(不关心) 无符号长整形 地址 数据传送对象(DTO): 位(bit) 0
数据类型 字节 描述 命令代码(0xFF) 4
1 2 3-7
字节 字节 字节 命令返回代码 命令计数器 填0(不关心) 3.3.3 DNLOAD命令: 命令接收对象(CRO): 位(bit) 0 1 2 3-7 数据类型 字节 字节 字节 字节 描述 命令代码(0x03) 命令计数器 需下传的数据长度 数据 数据传送对象(DTO): 位(bit) 0 1 2 3 4-7
3.3.4 UPLOAD命令: 命令接收对象(CRO): 位(bit) 0 1 2 3-7 数据类型 字节 字节 字节 字节 描述 命令代码(0x04) 命令计数器 需上传的数据长度 填0 数据类型 字节 字节 字节 字节 字节 描述 命令代码(0xFF) 命令返回代码 命令计数器 MTA0扩展位 执行后MTA0地址(即地址加上长度) 数据传送对象(DTO): 位(bit) 0 1 2 3-7
5
数据类型 字节 字节 字节 字节 描述 命令代码(0xFF) 命令返回代码 命令计数器 上传的数据