基于CCP协议的汽车ECU标定系统DAQ模式的实现
一、前言
随着汽车电子技术的发展,电子控制单元(ECU)的标定已成为汽车电子控制装置开发的一个重要环节。大多数ECU都需要经过匹配标定的过程,从而确定其运行参数和控制参数。目前国内还没有成熟的基于CCP的ECU标定系统,已有的一些系统主要是采用Vector提供的freeCCPDriver,或者基于MATLAB的相关工具包,在此基础上作自己的应用软件,并没有独立的CCP驱动;国外的产品功能强大,但价格昂贵。因此,研究、掌握CCP的核心技术,开发针对不同用户需求提供不同的定制功能,并能适应PCI、USB等不同主机接口的ECU标定软件就具有非常重要的意义。
二、CCP协议简介
(一)CCP协议的通信方式
基于CCP协议的ECU标定采用主-从通信方式,主设备通过CAN总线与多个从设备相连,如图1所示。其中主设备测量标定系统MCS(Measurement Calibration System),从设备是需要标定的ECU。根据CCP协议,主设备首先与其中一个从设备建立逻辑连接。建立逻辑连接后,主、从机之间所有的数据传递均由主机控制,从机执行主机命令后返回包含命令响应值或错误代码等信息的报文。任何一个从机都可以定时地根据由主机通过控制命令所设置的列表来传递内部的数据。所以说数据的传递是由主机初始化,由从机来执行,并且是由固定的循环采样频率或事件触发的。
图1CCP通信结构
CCP协议定义了两种工作模式:一种是Polling(查询)模式,另一种是DAQ(数据采集)模式。在本文所设计的标定系统中,根据实际需求情况,采用了DAQ模式。
(二)CCP协议的通信数据对象
CCP协议只采用了两个CAN报文对象,且每个对象根据其数据流向,都有一个唯一的ID标识符进行标识:
1.命令接收对象(主机一从机):简称CRO。CRO用于传递指令代码和内部功能码或主、从机之间交换的存储区数据。
2.数据传输对象(从机一主机):简称DTO。DTO指由从设备反馈的报文。
根据报文PID的不同,DTO又可以分为三种形式:
命令返回消息CRM(PID=255):由从设备发送,针对CRO的反馈报文。
事件消息(PID=254):当从设备检测到内部发生错误机制时,由从设备自行向主设备发送,报告其当前的运行状态,并请求主设备暂停当前工作进程以处理发生的错误。
DAQ-DTO(0≤PID≤254):用在DAQ模式中,由从设备组织,定期向主设备发送。
三、基于CCP的ECU标定系统实现
(一)标定系统工作原理
基于CCP的ECU标定系统工作原理如图2所示,对部分控制参数进行调整后,通过一个USB转CAN的驱动模块就可以将数据送到发动机ECU当中,ECU收到控制信号后,通过内部处理又会由驱动模块返回ECU内部重要的数据到平台上显示,标定软件与发动机ECU的通信符合CCP标定协议。
图2标定系统工作原理图
CCP通信部分调用CCPDriver,为标定软件实现与ECU的通信,包括将用户指定的标定参数下载到ECU、接收ECU的测量数据供数据显示子窗口使用。
(二)标定系统的数据采集机制
本文采用的是DAQ模式,从而可以实现从设备按照指定的周期将需要监视的数据上传。
DAQ传送的数据由一系列表来组织,这些表被称为ODT(Object Descriptor Tables)。每个ODT表含7个元素,可描述7个ECU内部参数的相对地址及数据长度等属性。这些被ODT描述的参数,就是需要从设备用DAQ-DTO帧周期发送给主设备的被监视数据;而这些属性被称为"参数描述",它们可帮助从设备DAQ处理代码确定该参数的当前值,如图3所示。ODT中描述的参数,及各参数的"参数描述"由主设备通过CRO命令写入。当从设备的DAQ机制被启动时,从设备按主设备要求的周期,将每个ODT表描述的ECU参数当前值顺次放入相应的DAQ-DTO帧中,并发送给主设备。
图3数据描述表
(三)标定系统DAQ模式的软件实现
标定系统的软件设计主要分为两个部分:CANDrvier和CCPDriver。本方案的ECU采用MC9S12Dg128,因此可以直接应用芯片CAN模块提供的接口发送CAN数据。CCPDriver是标定系统的核心部分,它主要通过调用CANDriver实现与上位机标定软件的通信,从而进行对ECU的在线标定。
标定系统的实现过程如下:
1.上层标定软件部分定义List的数目、每个List中的ODT数目、每个ODT中的元素数目。
2.ECU按照上层的定义,确定自己的数据结构。即上下层都定义一个三维的数组(List,ODT,Element),用来存放映射关系。
3.上层通过协议命令初始化ODT。首先,上层发送GET_DAQ_SIZE命令(参数为List号),得到指定的List大小(numberofODTinthislist),并得到该List中DTO的第一个PID号。然后,上层发送SET_DAQ_PTR命令(参数为List号、ODT号、ODT中的元素号),指定需要初始化的参数单元。最后,上层根据SET_DAQ_PTR命令设置的具体元素,发送WRITE_DAQ命令(参数为DAQ元素的byte大小,DAQ元素的地址),反复通过SET_PTR和WRITE_DAQ两条命令,初始化完一个具体的ODT表,然后初始化完一个具体的List表,最后初始化完所有的List表格。至此,初始化ODT工作结束。
4.开始和停止DAQ数据的传输。上层发送START_STOP命令,指定的ODT数据开始上传。ODT将其中的每个元素复制到其对应的DTO(8个字节,1个PID号,7个存放数据)中,然后以DataAcquisitionMessage的形式返回给上层的标定系统。DAQ模式到此为止。
- 基于XC164的六通道ABS开发板设计(11-25)
- 本田(HONDA)奥德赛(ODYSSEY)轿车电路—防抱死制动控制系统(上)(11-30)
- FPGA技术在汽车电子中的应用(11-26)
- 本田(HONDA)奥德赛(ODYSSEY)轿车电路—防抱死制动控制系统(中)(11-30)
- 本田(HONDA)奥德赛(ODYSSEY)轿车电路—防抱死制动控制系统(下)(11-30)
- 汽车发动机控制器(ECU)中待测项目综述(01-10)