基于ASAP标准的发动机标定诊断系统设计
引言
发动机电子控制单元(ECU)是车用发动机控制系统的核心,它能够根据发动机的运行情况来提供最佳空燃比和点火时间,进而使发动机的动力性、经济性和尾气排放达到最优状态[1]。因此开发一个功能可靠且方便灵活的的标定工具非常重要。它能缩短ECU 的开发周期,减小匹配实验工作量,降低开发成本,帮助标定员在短时间内获得最佳的标定参数。从现有资料来看,国内设计的标定系统一般具有标定、监测和诊断功能。但其诊断功能只是对ECU提供的故障信息在上位机显示。在上位机和ECU之间的故障快速定位和修复方面没有介绍,本文设计的标定诊断系统除了具有在线标定、实时监测并能读取ECU中的故障信息功能外,在标定上位机利用软件看门狗技术实现了上位机与ECU之间的故障快速定位,并具有自动保存、加载、回读比较数据等功能。增强了标定系统的可靠性和灵活性。
1 ASAP标准体系结构
ASAP(Arbeitskreis zur Standardisierung von Applikationssystemen)指的是应用系统标准化组织,为了使车用电子产品在开发期间所用的工具和方法具有兼容性和可交换性而提出该国际标准[2]。为了实现对应用系统进行测量、标定和诊断,ASAP工作组根据MCD(Measurement,Calibration and Diagnostics)模型将该标准分成ASAP1、ASAP2和ASAP3三个子标准。
ASAP1标准为应用系统和控制设备之间提供接口;ASAP2标准对ECU的内部各种参数、外部接口信息、通信方法等进行了标准化的描述,按此标准生成的ASAP描述文件是各类控制设备的数据交换平台;ASAP3标准为自动系统(或用户)与MCD系统之间提供统一接口,用户只需通过调用MCD系统提供的接口函数来完成测量、标定和诊断等功能。
2 标定系统整体设计
采用PC机作为上位机,通过USB-CAN通信卡连到发动机ECU,实现对发动机ECU的标定、监测、诊断等操作。上位机与ECU之间的通信和数据交换平台分别由ASAP标准中的CCP协议和ASAP2标准生成的ASAP描述文件(.A2L文件)来实现。上位机标定软件采用分层和模块化思想设计,包括数据层、表示层和通信层(如图1)。其中数据层包括初始化子系统和数据管理子系统,初始化子系统主要是完成CAN通信模块和数据的初始化等操作。数据管理子系统主要是完成数据的保存、加载、回放和A2L数据库的管理等操作;表示层包括标定监测子系统和诊断子系统,该层主要完成对发动机ECU的标定、监测和诊断等操作;通信层主要是完成上位机与ECU之间的通信操作。
图1 标定诊断系统的总体框架图
由ASAP编辑器生成的A2l数据库是整个标定系统的数据交换平台,因此在系统运行开始首先导入A2L文件,然后调用CAN通信模块提供的接口库函数完成CAN通信模块初始化等操作,建立连接后可对多个ECU进行标定和监测。故障诊断(ECU故障信息上传显示和标定系统的故障诊断)贯穿于标定和监测的整个过程中(如图2)。
图2 上位机主流程图
图3 标定数据初始化流程图
2.1 初始化子系统的设计
在此子系统中包括USB-CAN模块的初始化、标定参数的初始化和DAQ参数的初始化配置。上位机通过调用CAN通信模块的相关接口库函数依次进行下列初始化操作:打开CAN通信模块、选中与ECU连接的CAN口、配置各CAN口相关参数(验收码、屏蔽码、定时器、滤波器、模式等)、启动CAN通信设备等。标定参数的初始化有两种方式:一种是从ECU的RAM区读取标定数据到上位机标定窗口,另一种是从上位机的标定数据文件中加载到程序中进行标定数据的初始化(如图3)。在监测参数上传之前,对需要监测的数据进行DAQ配置,不同上传周期的监测数据配置到不同的DAQ表中,这需要上位机发送DAQ配置命令和START_STOP命令要求ECU中的DAQ处理机配置并开启不同DAQ表进行上传并显示监测数据。在标定系统运行期间,通过开启或关闭某个DAQ表,可以实时监测到所开启DAQ表的数据上传数据。
2.2 数据管理子系统的设计
在此子系统中,主要包括A2L数据库的管理、数据的保存、打印、回放和比较等功能。A2l数据库是整个标定系统的数据交换平台,它记录了控制器内部的各种参数、外部接口信息、通信方法等详细信息。因此对其管理尤为重要。在通讯协议中采用地址结合数据段长度的方法实现数据的下载和修改。上位机程序负责查询A2L数据库以获得控制参数的地址和数据段长度等信息[3],A2L数据库的使用减轻了ECU对大量标定变量的定义和存储的负担,缩短占用微处理器的运算时间。当ECU中的参数信息改变时,只需用ASAP数据库编辑器对原有A2L文件的改动部分进行刷新。标定系统只需在新的A2L文件下对ECU进行标定、监测等操作。因此,当ECU有关信息的改变时不会对标定软件的代码做任何改动,同时也避免因标定软件内部代码的局部改动所带来的隐患[4],增加了标定系统的灵活性。
为了便于对监测到的数据进行离线分析比较,该系统具有保存监测数据并对其进行离线分析、波形回放和打印功能。
2.3 诊断子系统的设计
在此子系统中,除了读取ECU中的故障信息外,在标定上位机利用软件看门狗技术实现了标定系统的故障快速定位,大大减少故障查找时间。故障时及时地将已标定数据进行保存,避免因标定数据的丢失而进行重复性地标定工作,提高了标定系统的可靠性(如图4、图5)。
2.3.1 故障快速定位与数据的自动保存
在上位机的接收中断函数中设置一个全局变量ConnectFlag并使其值赋为0,只要有监测数据周期性上传(本文三个DAQ表的数据上传周期是10ms、20ms、50ms)ConnectFlag一直为0,当超过50ms,该变量就会在定时器函数里不断加1, 当大于指定的数值时(在指定的时间内没有数据上传),在上位机出现故障提示。根据USB-CAN提供的接口函数判断故障是ECU与USB-CAN模块之间,还是USB-CAN与ECU之间。故障时在上位机调用保存函数对已标定数据进行保存,做好标定数据的备份,避免因标定数据丢失而进行重新标定,减少标定工作量。
2.3.2 故障修复与数据的自动加载
根据故障提示快速作出故障定位,故障排除后根据故障提示点击主界面修复菜单中的复位按钮,复位成功同时自动将已标定的数据从上位机的保存文件中加载到标定窗口并下发,然后继续标定操作,不需重新进行标定。修复菜单中,对于ECU断电的情况,ECU上电后进行修复时,需要上位机重新下发配置DAQ命令和启动DAQ表等相关命令,因为一旦断电或者复位,ECU与上位机的相关命令需要重新发送才能完成两者的通信;对于ECU与USB-CAN之间线路故障的情况,只需将线路连好即可继续上位机与ECU之间的通信;对于USB-CAN与上位机故障的情况,需要在上位机先关闭CAN-USB设备再打开并初始化设备,再可继续标定工作。
2.4 标定监测子系统的设计
在上位机的标定窗口完成ECU控制参数的在线标定。通过在线修改标定窗口中的参数值就可以对ECU中RAM区的相关参数值进行优化,标定后将RAM区的标定值烧写到FLASH中。同时还可以将ECU中的标定参数值读当标定子窗口并与当前标定窗口值进行比较,确保下发标定值的正确性。标定流程图如图4所示。此外,该子系统能够实时监测ECU采集到的数据,并将数据进行多样化显示,能直观地显示所监测的数据及其变化规律。上位机一次发送命令就可要求从设备周期性地自动上传DAQ监测数据(具体见图5)。
2.5 通信子系统的设计
通信子系统主要为上位机与ECU之间提供通信接口。所用通信协议是CCP协议[5],该协议都是从ASAP1a子标准中独立出来的通信标准,该协议具有通信可靠,实时性强、通用性好等优点。在设计中,通过ccpCommand()函数调用不同的CCP命令完成命令的下发,调用fGetData()函数来接收ECU的返回命令并读取ECU中上传的监测数据。ECU根据上位机的DAQ配置命令和启动DAQ命令周期性地上传监测数据。
- 新型模块化车载电子功能测试系统将效率提升20%(08-06)
- 基于ATmega8L的新型防汽车追尾安全装置设计(07-14)