基于VC++的发动机ECU测试系统的研究与设计
扫描二维码
随时随地手机看文章
摘要:基于Freescale公司MC9SDG128微控制器和Microsoft公司的Visual C++软件,构建了发动机ECU测试分析系统。系统可以模拟出实车的各种传感器信号来驱动发动机ECU工作,并采集ECU输出的喷油和点火信号加以分析,实现在脱机状态下对发动机ECU的测试。通过对桑塔纳2000型轿车发动机ECU实际测试表明,使用该系统来模拟发动机ECU的实际工作状态,可以深入了解ECU的控制特性和工作参数,为研究和评价ECU提供大量有价值的数据。与就车测试相比,它具有调控容易,重复性好,仪器的测试范围可以无限扩展等优点。
关键词:发动机;ECU;MC9SDG128微控制器;Visual C++;测试技术
电子控制单元ECU(Electronic Control Unit),又称“行车电脑”、“车载电脑”等。从用途上讲则是汽车专用微机控制器,也叫汽车专用单片机。它和普通的单片机一样,由微处理器(CPU)、存储器(ROM、RAM)、输入,输出接口(I/O)、模数转换器(A/D)以及整形、驱动等大规模集成电路组成。
电子控制单元的功用是根据其内存的程序和数据对空气流量计及各种传感器输入的信息进行运算、处理、判断,然后输出指令,向喷油器提供一定宽度的电脉冲信号以控制喷油量。电控单元由微型计算机、输入、输出及控制电路等组成。
在电子控制单元中CPU是核心部分,它具有运算与控制的功能,发动机在运行时,它采集各传感器的信号,进行运算,并将运算的结果转变为控制信号,控制被控对象的工作。它还实行对存储器(ROM、RAM)、输入/输出接口(I/O)和其它外部电路的控制;存储器ROM中存放的程序是经过精确计算和大量实验取的数据为基础,这个固有程序在发动机工作时,不断地与采集来的各传感器的信号进行比较和计算。把比较和计算的结果控制发动机的点火、空燃比、怠速、废气再循环等多项参数的控制。
电子控制单元是汽车发动机的核心部件,其软硬件的可靠性将直接影响发动机运行的稳定性、排放性和车辆行驶的安全性,因此,ECU的性能检测至关重要。ECU的检测系统是将计算机仿真技术与汽车检测技术相结合,实现发动机ECU工作环境的仿真模拟以及各输出信号的采集与分析。
其信号模拟部分可用于汽车的故障检测,在怀疑某个传感器出现故障时,可用ECU模拟系统相关信号代替原传感器信号,检测故障是否消失,并判断故障所在。此外,还可进行ECU工作状况的检查以及学习ECU在发动机不同工况下对喷油和点火的控制方式。
1 系统硬件设计
发动机ECU测试系统可以根据需要模拟不同转速下的曲轴位置信号,冷却液温度信号、进气温度信号、空气流量信号、节气门位置信号、氧传感器信号等,并将这些信号输入真车发动机ECU,再采集ECU输出给执行器的信号并加以分析。硬件结构如图1所示。
控制器由飞思卡尔(Freescale)公司的MC9SDG128微控制器担任,该16位控制器拥有丰富的I/O接口以及SCI/SPI/IIC等总线控制器,操作信号通过串行接口发送和接收。MC9S12系列单片机是MC68HC12系列单片机的更新替代产品。这种单片机的中央处理器CPU12由以下三部分组成:算术逻辑单元ALU、控制单元和寄存器组。CPU外部总线频率为8 MHz,内部运算速度可达25 MHz。寻址方式有16种。内部寄存器组中的寄存器、堆栈指针和变址寄存器均为16位。它具有很强的高级语言支持功能。
电源管理电路需产生+5 V以及±12 V稳定电压,为降低成本电源部分采用线性工频变压器,输出端分别经LM7812、LM7805和LM7912分别将电压稳压至+12V、+5V和-12V。
数控电位器采用的是X95840,它是InterSil公司出产的低噪声、低功耗、两线制8位数控电位器。DAC变换器采用的是AD5624,它是Anal-og Device公司12位效模转换器,最高频率可达5 MHz。运算放大器采用的是AD824,它是将DAC输出的四路0~5 V电压放大至-12~+12 V。
系统产生的信号需要经过电平变换,转换成RS-232电平,与计算机通信。这里采用MAX3232为核心电平变换电路。其原理图如图2所示。
2 系统软件设计
本系统的编写和调试采用的是Microsoft公司的VisualC++软件。Visual C++因其拥有方便易用的AppWizard、ClassWizard和丰富的可视化资源编辑工具,成为人机对话界面设计中使用最广泛的平台之一。Visual C++拥有强大的集成开发环境,在此环境中用户可以方便的进行项目管理、编写C++源程序、编译、改错,更重要的是,Visual C++还提供了一套MFC(Microsoft Foundation Classes)的程序类库。
其控制流程如图3所示。
2.1 信号模拟
信号模拟是为发动机ECU产生各种必要的模拟信号,这些信号等效于汽车传感器在不同工况下的输出信号。系统提供两种生成这些信号所需要数据的方法可供选择。一种是由手动设置给出,一种是选择关联设置。关联时,秒表开始计时,各信号参数根据汽车动力学在后台计算。
2.2 信号采集和分析
系统采集发动机ECU的输出信号,得到一组相关的测试数据,根据采集的数据绘制发动机ECU喷油脉冲信号和点火控制信号。还可以根据发动机ECU的输出信号计算出频率、峰-峰值、脉冲宽度、占空比等物理参数,给出发动机ECU的喷油时间、喷油量相对变化率、点火提前角等工作参数。
2.3 数据交换实现方法
计算机通过串行口向发动机ECU发送数据,采集到ECU喷油和点火输出信号,通过串行口将这些数据传给计算机。计算机接收数据并绘制图形。
计算机根据应采集数据个数收集数据,编制成固定格式再发送。采集的数据存放在一个整型数组里,再转换成VARIANT数据类型,计算机通过串口将这些数据发送到发动机ECU中。
数据格式:标识参数名+数据+标识参数名+数据……标识参数名+数据。
每两位表示一个量,前一位指明参数,后一位给出数值。
2.4 测试软件的主工作界面
几乎所有的Windows应用程序都要借助于对话框来和用户交流,本测试系统也是如此。对话框是Windows应用程序中常见的元素之一,是用户与应用程序进行交互的最简单且最常用的方式之一。一个完整的对话框主要是由对话框资源和对话框类构成,所以创建一个对话框就是创建对话框资源和对话框类的过程。创建对话框资源包括添加对话框模板、修改对话框属性,并在对话框中添加各种控件;创建对话框类包括添加控件变量和添加控件消息处理函数。
界面设计要遵循简单直观的原则,这样操作人员用起来才会得手,减少求助,提高工作效率。本程序的编写和调试采用的是Microsoft公司的VisualC++软件。
测试系统的主界面如图4所示,各种控制参数都很直观的显示出来,用户可以直接对一些主要控制参数做连续调整,操作方便。
2.5 串口通信参数设置
要实现计算机串行通信的功能,一种较为简便的方法是使用MSComm(Microsoft Communication Control)通信控件,它提供了标准的事件处理函数过程,是微软公司开发的专门用于串行通信的控件。它是高级语言编写的串行通信程序和PC串口之间的桥粱。本系统采用得就是这种方法。设置控件的属性。添加控件的响应代码。就可以使串口按照要求进行工作。在这个界面,可以进行串口号和波特率的设置。通信参效设置界面如图5所示。
3 结果显示
发动机油路中汽油压力是一定的。因此喷油器通电时,单位时间的喷油量是一定的。发动机一个工作循环喷油量,可通过喷油持续时间来控制。由于电喷发动机喷油嘴是通过电磁阀来控制关闭,而发动机转速较高,喷油时间很短,喷油器响应快,因此ECU输出的喷油信号是一个很短暂的脉冲信号,这个信号的时间宽度就是喷油脉宽。
点火控制信号实际上就是点火器中功率结晶管的通断控制信号。它是ECU输出到点火组件的点火命令信号,也是点火组件计算闭合角的基准信号。点火控制信号输出后,在活塞位置达到存储器所记忆的最佳点火时间时,点火控制信号消失,也就是发出了点火指令,如图6所示。
4 结束语
通过对桑塔纳2000型轿车发动机ECU实际测试表明,通过该系统可以方便的将各种信号传递到发动机ECU中,采集发动机ECU的输出信号,还可以测试发动机ECU是否正常工作。其产生的各种传感器信号可用于实际车辆检测。此外还可以用于学习和演示不同环境不同工况下,ECU如何控制发动机工作。