8.5.2 在线标定协议
CCP协议是由德国的Audi、BMW、Mercedes-Benz、Porsche和Volkswagen公司组成的ASAP(自动化标定系统工作组)提出的。ASAP组织后来发展成为ASAM(自动化及测量系统标准化协会),并将ASAP接口的应用范围从测量和标定扩展到了诊断。
ASAM组织的目的在于标定、测量和诊断系统的标准化,并提供硬件和软件之间的兼容性和数据的可交换性。
ASAP组织在包括软件、硬件和信息交换的兼容性的需求的基础上,定义了3个系统层接口:ASAP1、ASAP2、ASAP3。
随着ASAP到ASAM的转变,ASAP1、ASAP2和ASAP3接口分别改名为ASAM-MCD1、ASAM-MCD2和ASAM-MCD3。
图8-2表明了这3个接口的整体系统层途径。测试标定系统通过ASAP1接口与ECU相连。ASAP1分为a接口和b接口。ASAP1a规定了ECU和测试标定系统之间的物理和逻辑数据链路CCP协议从属于此标准。ASAP1b是测试标定系统内部接口。ASAP2接口提供了描述了测量标定系统对控制器参数标定和数据测量的数据库。ASAP3接口连接标定测试系统与自动化系统,提供了自动测试功能。

图8-2 ASAP标准
CCP协议属于CAN总线的应用层协议。最新的CCP协议2.1版本支持CAN2.0B(11位标准帧或29位扩展帧),采用主-从通信模式,由主设备(标定系统)发出所有命令,从设备(待标定ECU)根据主设备的指示完成相应的操作。

图8-3 CCP主-从结构
根据CCP协议,主设备首先与其中一个从设备建立逻辑连接,如图8-3所示。建立逻辑连接后,主、从设备之间所有的数据传递均由主设备控制,从设备执行主设备命令后返回包含命令响应值或错误代码等信息的报文。任何一个从设备都可以定时地根据由主设备通过控制命令所设置的列表来传递内部的数据。所以说数据的传递是由主设备初始化,由从设备来执行,并且是由固定的循环采样频率或事件触发的。
CCP协议只采用了两个CAN报文对象,且每个对象根据其数据流向,都有一个唯一的ID标示符进行标示。
1)命令接收信息(主设备—从设备),简称CRO(Command Receive Object):用于传递指令代码和内部功能码或主、从设备之间交换的存储区域。字节定义及结构如图8-4所示。

图8-4 CRO报文帧格式
2)数据传输对象(从设备—主设备),简称为DTO(Data Transmission Ob-ject),指从设备反馈的报文。根据报文PID(Packet Identification)的不同,DTO又可以分为3种形式。
PID=255:命令返回消息CRM(Command Return Message),由从设备发送,用于反馈CRO命令执行情况的报文。结构如图8-5所示。


图8-5 DTO报文帧格式
PID=254:事件消息(Event Message):当从设备检测到内部发生错误机制时,由从设备自行向主设备发送,报告其当前的运行状态,并请求主设备暂停当前工作进程以及处理发生的错误,结构同CRM。
0≤PID≤253:数据获取报文Data Acquisition Message(DAQ-DTO),结构如图8-6所示,由从设备组织,周期性地向主设备发送相应数据。
(https://www.daowen.com)
图8-6 DAQ-DTO报文帧格式
CCP协议中,主要的数据获取方式有两种:查询模式(Polling Mode)和数据采集模式(DAQ—DTO Mode)。
查询模式:该模式是通过一问一答的方式来实现的,就是主设备先问,从设备回答,通过两者之间交互来实现通信和数据交换。两者之间数据通信都是由主设备命令进行控制。这种数据获取方式可靠性很高,时序简单且容易控制。但是因为ECU每上传一次数据,就需要一个命令帧,一个返回数据帧在CAN总线上来回,不仅浪费时间,而且频繁往来的数据交互难免造成CAN总线负载率过高,总线堵塞和帧丢失情况。
数据采集模式:这种模式不需要通过主设备发送命令执行CRO来执行数据上传,它按照一定的周期,或者通过某一事件的发生(如按下键盘某键),自行组织预设的需要发送的数据上传。这样就在采集同样多数据的情况下降低一半的负载率,总线传输效率高,但所需上传数据量较大时,会占用控制器较多RAM空间,且实现起来较为复杂。
首先由主设备命令遵循应答的机制为从设备配置对象描述表格(Object De-scription Table,ODT)。每条主设备配置命令需要得到从设备的应答,用于设置从设备中DAQ相关的参数。在配置过程结束后,启动DAQ模式,从设备就可以根据主设备的配置信息确定要上传主设备的数据以及相应的上传周期,自行上传数,进行数据采集。
DAQ是包含多个ODT的数组,对应关系如8-7所示。DAQ报文中所指的ODT是由7个元素构成的,每个元素的内容包括存储地址及数据长度,ODT中每个监测参数的长度不是必须的,如果不指定长度,则为一个字节,在这种情况下,一个ODT刚好可以放到一个数据发送消息(DTO)中。每个ODT都有一个唯一的编号(PID),若干个ODT组成一个DAQ队列(DAQ list),DAQ list的数据以及每个DAQ list中ODT的数目由从机实现。主设备对ODT的配置命令依次完成以下的动作:
1)获取从设备实现的DAQ list的数目及ODT数目。
2)向相应的ODT元素中赋予内容,即存储地址和数据长度。
3)针对不同的DAQ list赋予事件通道(Event Channel),同一个DAQ list中不同的ODT享有同一个事件通道,事件通道由从机程序实现,从设备可以按照一定的周期发布事件(如100ms),与事件通道对应的事件会触发从设备上传相应DAQ list中所有DTO对应的DAQ—DTO报文。

图8-7 DAQ—ODT结构示意图
采集好数据以后,从设备就按照所规定的周期自行上传DAQ类型的DTO报文(DAQ—DTO)。DAQ—DTO报文的数据场由8个字节组成,第1个字节为PID,标识了这帧报文对应的ODT,而后面7个字节对应该ODT的7个元素对应地址的数据内容,如图8-8所示。

图8-8 DAQ和ODT对应关系
CCP协议共规定了11条基本命令,17条可选命令,这28条命令具体介绍见CCP2.1协议。每条命令在CCP协议中均有自己独立的CMD代码,从设备通过对主设备发送的CRO中的CMD代码来对接收到的CCP命令进行接收并执行。另外,由于CCP协议为开放的协议,为了节省开发时间,提高效率,Vector Informatik Gmbh公司提供了控制器实现的免费CCP驱动代码。
一个完整的CCP标定软件组成如图8-9,包括:
1)支持CCP协议的标定测试工具,如CANape,该工具软件内部集成了CCP驱动程序和CAN驱动程序。
2)ASAP2控制器描述文件,用于记录ECU中各参数对应的存储地址、存储结构、数据类型等信息,是进行参数标定和数据检测的基准文件。
3)ECU的CAN驱动程序,需要实现CAN数据的收发和解包功能,供CCP驱动程序调用。
4)针对特定ECU的CCP驱动程序。需要能够调用CAN Bootloader驱动程序,实现CCP规定的各项必需功能。主要是该程序集中放置于预定的存储区域的待标定数据,包括参数、曲线和MAP。

图8-9 标定软件的组成