文章目录前言一、CCP的消息类型1.命令接收对象—CRO2.数据传输对象—DTO二、CCP的命令代码三、CCP的错误代码总结前言大家好我是左工在前面文章CCP 基本概念与核心原理和CCP基本操作流程与效果展示中我们介绍了CCP协议的基本概念、基本操作流程和效果。现在大家基本了解CCP的意义、用途和便利性。从今天开始我们就进入了更加技术性的学习了解CCP协议技术细节。CCP协议是通过CAN报文实现信息交互的因此CAN报文的格式也就是消息格式是CCP协议最核心最基础的概念。所以我们先从CCP协议的最基本知识点——消息基本格式入手学习。一、CCP的消息类型在文章CCP 基本概念与核心原理中左工已经介绍了上位机向ECU发送的命令帧Command叫做命令接收对象Command Receive ObjectCROECU向上位机发送的响应帧Response叫做数据传输对象Data Transmission Object。今天我们来详细了解这两帧报文的格式。1.命令接收对象—CRO我们先聊比较简单的命令帧的CRO的格式。CRO是上位机软件向ECU发送的消息包括命令代码和命令参数信息。该消息由8个字节组成具体结构如下所示。CMD是命令代码Command Code的简称CCP协议规定了28条命令每个命令都有一个相对应的命令代码。CTR是命令序号Command Counter的简称它是CRO命令发送的序号按照命令的发送顺利依次递增。本文后半部分详细的罗列了所有命令。2.数据传输对象—DTO与CRO相比数据传输对象DTO就稍微复杂一些。数据传输对象按照不同的用途可以分为三种命令返回消息Command Return MessageCRM-DTO事件消息Event Message-DTO数据采集消息Data Qcquisition-DTODAQ-DTO命令返回消息CRM-DTO顾名思义就是针对命令帧的回复。因为根据CCP的规定当ECU收到一个CRO后必须回复一帧DTO。这个CRM-DTO就是为这种机制存在的。事件消息Event Message-DTO是当ECU内部发生错误时ECU主动发出的因此不需要CRO触发。CRM-DTO和Event Message-DTC的消息格式是一样的如下所示。PID是包标识符Packet ID的意思主要用来表示DTO的类型。PID0xFE命令返回消息CRM-DTCPID0xFF事件消息Event Message-DTOPID0x00~0xFD数据采集消息DAQ-DTOERR是错误代码Error Code的意思主要用来表示CRO请求命令的执行情况或者ECU内部发生了什么错误。如果ERR为0x00表示CRO命令被正确执行了。CTR与CRO中的定义相同也是命令序号的意思。CCP规定DTO的CTR必须与对应的CRO中的CTR相同才能算响应完成。数据采集消息DAQ-DTO是ECU向外持续发送的测量量信息。它的格式比较简单如下所示。PID依然是是包标识符Packet ID。上位机软件会根据测量值的发送周期和字节大小自动分配一个PID值。在启动数据采集时上位机软件会通过CRO指令将需要观测的测量值及PID码发送给ECUECU根据PID码打包数据通过DAQ-DTO发送出来。上位机软件收到DAQ-DTO后也会根据PID解压信息并显示出来。二、CCP的命令代码上一节提到了上位机软件会发送命令代码CMD给ECU实现标定和测量功能。本节我们就介绍一下CCP的命令代码到底是什么样子。CCP共有28条命令其中11条是必选命令17条是可选命令每条命令都有自己独立的CMD代码。由于CCP的开放性我们可以根据需要只选择其中一部分命令实现。如下是CCP的全部28条命令。命令CMD解释1CONNECT0x01连接请求2EXCHANGE_ID0x17获取ECU的ID3TEST0x05测试ECU连接状态4SET_MTA0x02设置内存传输地址5DNLOAD0x03下载5个字节到ECU6DNLOAD_60x23下载6个字节到ECU7UPLOAD0x04从ECU上传5个字节8SHORT_UP0x0F从ECU快速上传5个字节9GET_DAQ_SIZE0x14获取DAQ列表的大小10SET_DAQ_PTR0x15设置DAQ列表指针11WRITE_DAQ0x16写DAQ列表12START_STOP_ALL0x08启动或停止所有数据传输13START_STOP0x06驱动或停止部分数据传输14DISCONNECT0x07断开连接请求15SET_S_STATUS0x0C设置ECU会话状态16GET_S_STATUS0x0D获取ECU会话状态17BUILD_CHKSUM0x0E计算校验和18CLEAR_MEMORY0x10清除内存19PROGRAM0x18编程指定大小20PROGRAM_60x22编程6个字节21MOVE0x19内存转移22GET_ACTIVE_CAL_PAGE0x09获取激活标定页23GET_CCP_VERSION0x1B获取CCP协议版本24UNLOCK0x13解锁ECU25GET_SEED0x12获取种子26SELECT_CAL_PAGE0x11选择标定页27DIAG_SERVICE0x20诊断服务28ACTION_SERVICE0x21操作服务以上命令组合起来就能实现丰富CCP功能。比如当我们在上位机软件中点击“建立连接”时。上位机会自动调用CONNECT、GET_CCP_VERSION、EXCHANGE_ID、UPLOAD、GET_SEED等命令实现上位机软件与ECU的联接。后续左工会通过实例向大家介绍CCP命令的详细格式和用法。三、CCP的错误代码下面我们进入了今天学习的最后一部分——错误代码。前面我们命令返回消息和事件消息的格式中提到其报文的第1字节是错误代码ERR的意思。那么ECU一般会反馈哪些错误代码呢请看下表。代码描述10x00确认/无错误20x01DAQ处理器超载30x10指令处理器忙40x11DAQ处理器忙50x12内部超时60x18请求密钥70x19阶段状态请求80x20冷启动请求90x21标定数据初始化请求100x22DAQ列表初始化请求110x23更新代码请求120x30未知指令130x31指令句法错误140x32参数超出许可范围150x33访问被拒绝160x34超载170x35访问锁止保护180x36资源/功能暂不可用这18条错误码中我相信大家可以从描述中大概猜出部分错误码的意义有一部分可能完全看不明白。大家不要担心今天大家就混个脸熟就行了。后续左工会依托于实例向大家详细说明ECU内部发生了什么情况才会调用这些错误码。总结今天我们了解了CCP消息的基本格式。左工仅讲了核心概念帮助大家了解CCP的核心原理。更详细的内容大家可以从CCP的标准文档中查到。如果大家找不到文档或者阅读困难可以给左工发私信。后续左工会依托于实际应用向大家详细介绍和解析CCP中各种命令的具体使用方法。请敬请收藏关注不迷路。