随着国家对大气环境治理力度的加大,摩托车排放法规会逐年加严,达不到排放法规要求的摩托车将不允许投放市场。电控燃油喷射技术以其良好的节能效果和低排放的性能成为当前摩托车环保技术中的最佳选择。
摩托车发动机电控单元ECU是以单片机为主芯片,加上信号处理电路以及驱动电路组成的一种发动机管理系统。其工作原理为:通过台架和整车标定试验,将发动机的各运行工况下的最佳喷油和点火参数预先存储在数据区。当发动机运行时,电控系统根据各传感器的输入信号判断出发动机当前的运行工况,通过查表及计算得到最佳的喷油量和点火角,并通过驱动电路来控制喷油器的喷油时间和初级点火线圈的闭合时刻及断电时刻,来精确地控制混合气的空燃比与点火时刻,使发动机在最优状态下运行。
中国的摩托车工业经过20年的快速发展,年产量已经超过了1000万辆,生产规模及销售量都居世界第一位。预计在不久的将来,随着排放法规的加严,必将给摩托车电控燃油喷射系统提供一个广阔的市场。国内几家大摩托车公司,都先后开发出电控摩托车样车,有的已在市场上销售。国外的几家大汽车电子公司也已开始进入中国电控摩托车市场。
在过去的几年中,我们曾与企业合作,用MC68HC11F1开发了排量为244cc双缸摩托车和150cc单缸摩托车的电控燃油喷射系统。
本次参赛采用摩托罗拉公司新推出的高性能价格比的MC68HC908SR12单片机,对原电子控制单元(ECU)的软硬件进一步优化,降低成本,使其能够参与激烈的市场竞争。
设计概述
本次设计的目标是开发一种用于摩托车发动机管理系统的ECU,能够应用在不同排量、不同传感器和执行器特性的摩托车单缸发动机上。用单片机精确地控制汽油发动机在各种运行工况下的空燃比(吸入气缸内的空气和燃油的比例,简称空燃比)和点火正时(点燃混合气的准确时刻),以减少发动机排气中的有害成分,降低燃油消耗和改善摩托车的动力性能。
系统应具备以下主要功能:
1.发动机空燃比控制;
2.点火正时控制;
3.空燃比的加速加浓控制;
4.空燃比的减速减稀控制;
5.目标怠速控制;
6.怠速转速下CO调整功能;
7.系统的故障诊断功能;
8.在线标定监控功能。
图1 发动机电控管理系统的组成
系统的组成如图1所示。发动机在运转时,单片机通过转速传感器和节气门(油门)位置传感器提供的信号,确定发动机的运行工况。然后从数据存储区中查到预先标定好的,在这一工况下运行时最佳的基本喷油脉宽和点火时刻,再根据当时检测到的空气温度和发动机的缸壁温度对这一数值进行修正,得到最终输出的喷油脉宽和点火时刻。单片机通过功率驱动电路,控制喷油器喷油和点火线圈使火花塞点火。
单片机根据节气门位置传感器信号变化的方向和变化的速率,确定发动机是处于加速工况还是减速工况,控制发动机在过渡工况下运行时的喷油脉宽和点火时刻。怠速的稳定性和排放性能都是摩托车的重要指标,需要进行良好的控制。同时ECU还应该具有自诊断功能,可以对传感器和执行器的状态进行检测。
为了方便监控,ECU具有通讯功能,不仅可以通过上位机开发装置进行实时状态监控,还能进行在线的发动机数据标定。通过不同的标定数据,就可以将此ECU用于不同排量、不同传感器和执行器特性摩托车发动机的控制。
电控摩托车发动机ECU的硬件结构框图如图2所示,以MC68HC908SR12为核心,还包括传感器信号的处理电路、执行器的驱动电路及通讯接口电路.
硬件描述
电控摩托车发动机ECU的硬件结构框图如图2所示,以MC68HC908SR12为核心,还包括传感器信号的处理电路、执行器的驱动电路及通讯接口电路。
图2 发动机电控管理系统硬件结构框图
主芯片MC68HC908SR12
主芯片必须其满足ECU软件计算的要求以及硬件资源的要求。
由于摩托车发动机转速高达上万转,点火提前角的计算必须在目标点火时刻到来之前完成,这时间通常不到0.5ms,所以需要较高的指令的执行速度。而且执行速度越快,ECU就可以获取更新的传感器信号,计算实现更精确的控制。MC68HC908SR12采用了PLL锁相环技术,因此可以在很低的晶振频率32.768KHz下,产生高达8M的总线频率。本电控系统采用的内部总线为4.9125M,不仅满足了摩托车发动机控制的需要,还可以产生19200的SCI通讯波特率,与原有的电控系统开发装置兼容。 电控系统需要能采集5路A/D,并且具有1路输入捕捉、2路输出比较功能及各种I/O口,还要具有通讯接口。MC68HC908SR12具有4路输入捕捉/输出比较、12通道10位A/D转化器和SCI串行通讯口,3个8位I/O口和1个7位I/O口(包括与其它功能模块复用的端口),能满足控制要求。各端口的使用状况如下表1所示。
MC68HC908SR12可寻址64KB地址空间,主要包括:12KB的闪速存储器Flash、512字节的随机存储器RAM、48字节的用户定义矢量区和368字节的监控ROM,存储器的具体分配情况如下表:
其12KB的Flash ROM和512Byte的RAM都基本上能满足系统的使用要求,而且SR12的价格也比较便宜。
传感器简介
各传感器的采集周期各不相同。变化快并且重要的信号就需要很高的采集频率,变化慢不太重要的信号的采集频率就可以降低。并且采集方式也有同步与异步之分,影响发动机实时工作状态的模拟量采集方式就应该是同步的,否则可以为异步的。
节气门位置传感器
节气门由驾驶员操纵,反映驾驶员的控制意图,因此是判断发动机工况的重要信号。节气门位置传感器安装在节气门轴的尾端,常采用滑线变阻器的型式。节气门完全关闭时,传感器输出电压大于0V;节气门完全打开时,输出电压小于5V。当节气门不断开大时,其输出电压随之线形增加。
TPS信号从整体上说具有较高要求,不仅对节气门位置传感器硬件要求较高,而且还需要在电控软件中对其信号进行相应的滤波处理。
壁面温度传感器
壁面温度传感器是负温度系数的电阻型测温传感器,其电阻随着温度增加而降低,温度与电压的对应关系在电控软件中通过查表完成。
壁面温度传感器用来精确地指示发动机的工作温度。对应不同的发动机温度范围,电控单元应该对发动机的工作特性进行相应修正和补偿。比如,冷起动时,需要比热机时更多的燃油。
蓄电池电压
蓄电池电压信号直接从蓄电池的接线柱处取得。此信号对于电控单元来说非常重要,油泵、喷油器和点火线圈的工作都受到蓄电池电压的影响,因此必须根据蓄电池电压信号对喷油脉宽和点火线圈闭合时间进行修正补偿。
拖动期间,发动机转速周期性变化,蓄电池电压的瞬时值也随之周期性波动,ECU采用同步方式采集。进入运行点火工况后,采用定周期方式采集。
进气温度传感器
进气温度传感器与壁面温度传感器一样,也是负温度系数的电阻型测温传感器。安装在进气管中测量进入发动机的空气的温度。进气温度影响进气密度,因此将影响进气质量,从而改变所需的燃油量,故在电控软件中需要根据进气温度进行进一步的修正补偿。
CO调整螺钉
这个电位计也安装在电控单元内,但可以用一个小的平头改锥从外面进行调节。这种调整结果被用来在电控软件中对基本的负荷计算进行偏移,从而改变发动机运转的实际空燃比。加装此CO调整螺钉的目的就是调整发动机怠速运转时的排放状况。
发动机转速及曲轴位置传感器
发动机转速及曲轴位置传感器是所有传感器中最为重要的,本电控系统中使用的是磁电式传感器。经过电控单元的脉冲整形电路处理之后,由主芯片的输入捕捉口进行脉冲捕捉。电控系统不仅要根据此信号找到齿缺位置,从而与曲轴同步,并且还要根据转速的变化进行判缸,根据转速的不同进行不同的点火和喷油控制。如果此信号有误,发动机将无法正常工作。
壁面温度传感器用来精确地指示发动机的工作温度。对应不同的发动机温度范围,电控单元应该对发动机的工作特性进行相应修正和补偿。比如,冷起动时,需要比热机时更多的燃油。
蓄电池电压
蓄电池电压信号直接从蓄电池的接线柱处取得。此信号对于电控单元来说非常重要,油泵、喷油器和点火线圈的工作都受到蓄电池电压的影响,因此必须根据蓄电池电压信号对喷油脉宽和点火线圈闭合时间进行修正补偿。拖动期间,发动机转速周期性变化,蓄电池电压的瞬时值也随之周期性波动,ECU采用同步方式采集。进入运行点火工况后,采用定周期方式采集。
进气温度传感器
进气温度传感器与壁面温度传感器一样,也是负温度系数的电阻型测温传感器。安装在进气管中测量进入发动机的空气的温度。进气温度影响进气密度,因此将影响进气质量,从而改变所需的燃油量,故在电控软件中需要根据进气温度进行进一步的修正补偿。
CO调整螺钉
这个电位计也安装在电控单元内,但可以用一个小的平头改锥从外面进行调节。这种调整结果被用来在电控软件中对基本的负荷计算进行偏移,从而改变发动机运转的实际空燃比。加装此CO调整螺钉的目的就是调整发动机怠速运转时的排放状况。
发动机转速及曲轴位置传感器
发动机转速及曲轴位置传感器是所有传感器中最为重要的,本电控系统中使用的是磁电式传感器。经过电控单元的脉冲整形电路处理之后,由主芯片的输入捕捉口进行脉冲捕捉。电控系统不仅要根据此信号找到齿缺位置,从而与曲轴同步,并且还要根据转速的变化进行判缸,根据转速的不同进行不同的点火和喷油控制。如果此信号有误,发动机将无法正常工作。
执行器简介
当电控系统通过上述各传感器获得了发动机当前运转的状态及工况需求后,需要通过驱动电路去驱动相应的执行器,通过其动作来实现点火和喷油,从而满足工况的需要。点火控制是同步工作方式,但喷油控制的工作方式可根据实际要求分为同步工作和异步工作。
油泵
油泵为发动机提供充足的燃油量,并且保持足够的油压,使得在所有的工况下喷油器都能够进行有效的燃油喷射。调压器保持油管内的常压,这样就可以通过改变喷油器的开启和结束时间来精确计量燃油量。点火钥匙接通电源时,电控系统就开启油泵,提供第一次喷射所需的燃油压力。只要点火钥匙接通电源且发动机运转着,油泵就始终运转工作。
喷油器
喷油器的主要参数就是流量特性,即每毫秒所对应的喷油量,不仅需要精准,而且还必须能够满足发动机的使用要求,即喷油器的最小供油量必须满足发动机怠速运转的要求,最大供油量必须满足发动机大负荷工况的要求。
喷油器存在开启滞后的现象,实际喷油器打开的时刻比控制开启时刻要晚,蓄电池电压越低,滞后时间越长。在软件中设置喷油开启时刻时需要考虑到喷油开启时刻的滞后,使实际喷油持续时间更接近于软件计算值。另外,还需要在蓄电池电压低到对喷射压力造成影响时,对喷油脉宽进行相应修正。
点火线圈
点火初级线圈的闭合时间必须超过一定的有效时间(同样要根据蓄电池电压来修正),这样线圈才能存储足够的能量来点火。当点火线圈初级绕组电流断开时,就产生一次点火。
点火提前角的设置是否合适,对发动机的转矩输出影响最大,因此需要考虑转速、温度及负荷等造成的影响,并在软件中对点火提前角进行相应修正。
软件描述
软件结构介绍
摩托车电控系统不同于一般的控制系统,由于摩托车上飞轮较小,发动机转速波动较大,并且转速最高达10000转/分以上,对于系统的实时响应速度要求非常高,这些要求突出体现在对曲轴位置及转速检测、喷油正时及点火正时的实时控制等方面。
为了能够满足实时控制的要求,电控软件将采用“前景/背景”结构进行设计,即将转速信号的捕捉处理以及点火、喷油信号等的输出作为“前景”,这些实时性要求高的处理过程会立即得到主芯片的响应,而前景程序执行所需要的各种参数的计算以及其他实时性要求不高的部分,则在由主循环等待及实时中断所组成的“背景”中进行。
图3 电控软件的总体流程图
基于以上设计思路,计划将软件划分为三个基本的部分:初始化、背景程序和前景程序,流程图如上图3所示。
由于MC68HC908SR12的时钟基(TBM)模块只能产生约2ms的定时中断,而原有电控系统的背景软件执行时间必须在7.81ms以上。因此,在本ECU软件中,将背景执行程序在四次TBM中断时间内执行。MC68HC908SR12的中断优先级是固定的,故需要根据软件的中断优先级的不同来设计硬件。并且由于MC68HC908SR12没有脉冲累加器中断,因此将经过转速处理电路处理过的转速信号同时接入到TIM1的两路输入捕捉端口,以下降沿捕捉的方式发生。其中T1CH0负责进行齿缺的寻找,是优先级最高的中断。当寻找到齿缺后,即实现了电控系统与发动机的运转同步之后,就不再使能此中断,切换到另一路T1CH1,当数到相应齿号时,就使能与点火、喷油相关的中断。为了不累积误差,需要在快到齿缺时,重新切换到T1CH0。点火使用T2CH0,喷油使用T2CH1。转速处理模块
转速处理模块的软件示意框图如图4所示。转速脉冲信号是由发动机曲轴位置及转速传感器获得的,由于传感器的触发盘(如图5所示)有一个不同于其它的大齿,因此,触发盘转动一周所产生的脉冲信号中也存在一个宽度较大的脉冲。利用这一点,将此脉冲信号经过软件的处理之后,不仅可以用来提供发动机工况所需的转速,还将提供电控系统工作所需的曲轴位置信息,从而按照发动机时序控制的要求在确定的曲轴转角处实现点火和喷油输出。
图5 发动机曲轴位置及转速传感器的触发盘
点火控制模块
点火控制模块由前景时序控制和背景点火工况判别及背景点火计算程序组成,如图6所示。背景工况判别程序监测发动机转速、负荷、壁面温度等工况参数,划分不同工况段并设置相应的工况标志位,控制前景程序以特定的点火模式工作。背景点火计算程序计算初级线圈闭合时间和点火提前角,并对初级线圈闭合时刻进行更新设定。
图6 点火控制模块的流程图
点火初级线圈闭合时间决定点火能量,它受线圈规格、蓄电池电压以及线圈温度影响。闭合时间过长会损坏线圈及其驱动器件,过短则可能导致失火。
拖动工况时初级线圈的闭合时刻固定在曲轴的某一转角,且其闭合时间约为曲轴转过2齿或4齿所对应的时间(随蓄电池电压不同),而运行点火工况下,不仅要考虑到发动机转速和蓄电池电压对计算初级线圈闭合时间带来的影响,而且还要根据转速和负荷的变化来调整,从而获得最佳的初级线圈闭合时间。
软件中,运行点火工况下,初级线圈的闭合时间计算公式如下:
闭合时间 = 动态闭合时间 + 稳态基本闭合时间 + 初级线圈闭合时间蓄电池电压补偿
由于拖动工况下发动机转速变化很快,而且会迅速满足运行点火工况的要求从而脱离拖动工况,故拖动点火角只以转速为自变量,不考虑其他任何修正。
运行点火工况时,点火提前角的计算则是不仅由节气门开度TPS和发动机转速RPM确定主点火提前角,更要考虑到多种因素的影响,进行各项修正。对计算得到的点火提前角,不仅需要限定最小值和最大值,而且还要对点火提前角的变化率进行限制,避免发动机性能出现突变。
点火提前角的计算公式如下:
运行点火提前角 = 主点火提前角 + 壁面温度修正 + 充气温度修正+ 大气压修正 + 功率加浓修正
发动机起动成功后,其壁面温度将逐渐升高。为了保证摩托车能在稳定怠速下运转,可以通过调整此壁面温度修正量来调整怠速时的点火提前角。充气温度修正项与壁面温度修正项的作用相同,功率加浓修正是指发动机工作在功率加浓工况(高速大负荷)时点火提前角所需要的修正项。根据背景程序计算得到的这些数据参数及控制标志,在前景程序中将完成点火初级线圈闭合、断开时刻的设定和点火驱动脉冲的输出。 因为初级线圈对闭合时间的要求是基于时间的,而点火驱动脉冲的产生是基于曲轴转角的,因此不同转速段下,点火驱动脉冲会跨越不同的曲轴转角。为提高点火提前角的控制精度,软件中设置点火时刻的基本原则是从34X信号获取尽可能多的曲轴瞬时转速信息,使从角度到时间的转化关系更加精确。同时,还可获得更高的可靠性。但主芯片的程序代码的执行速度又限制了在高转速段(如转速 > 8000r/min)频繁利用前景事件中断获取曲轴瞬时转速信息,因此为了满足实时性的要求,将对准确性和可靠性的要求进行相应调整。在背景程序中,按发动机转速(指平均转速)划分出4种点火时序控制模式,即拖动、低速、中速及高速模式。在拖动和低速模式下,由于转速很低,准确性、可靠性和实时性的要求都可以得到满足。但随着转速逐渐提升,准确性和可靠性的要求逐渐下降,实时性成为最重要的要求,到高速模式时,实时性和可靠性又成为最主要的要求。
喷油控制模块
喷油控制模块在总体结构上与点火模块类似,从功能上可分为前景喷油时序控制逻辑和背景喷油脉宽计算模块以及喷油工况判别逻辑,如图7所示。在背景喷油脉宽计算模块中,将根据发动机工况的变化,计算出所需的喷油脉宽,其计算公式为:
喷油脉宽=基本喷油脉宽×加速加浓修正×减速减稀修正×蓄电池电压修正因子
其中:基本喷油脉宽=发动机排量×充气效率因子×空燃比(A/F)
图7 喷油控制模块的流程图
为了能够适应发动机工况的变化,同样也需要通过标定试验将相关数据存储在表格中,通过查询表格获得目标空燃比值。并由各传感器信号计算得到循环进气量,再乘以各项修正因子完成喷油脉宽的计算,在前景程序中将完成喷油驱动脉冲起止时刻的设定。
前景程序中喷油脉宽的输出是通过在参考事件中设置定时器T2CH1输出比较中断来实现的。发动机一个工作循环曲轴旋转2周,其中只在每转的第二个参考事件中设置喷油输出,这样分别在发动机的压缩冲程和排气冲程中各进行一次喷油。当驾驶员有急加速意图时,通过增加同步喷油脉宽的输出仍不能满足快速响应的需要,此时需要根据节气门变化率计算出异步喷油脉宽并在前景程序中立即输出。异步脉宽输出设计思路如下:若当前有同步脉宽正在输出,则将异步脉宽叠加于当前同步脉宽;若当前无同步脉宽输出,则将计算出的异步脉宽累加到下次同步脉宽中一起输出。考虑到每循环同步脉宽的输出均在本循环进气门打开之前,故此设计思路可以很好地保证发动机良好的加速响应性能。
SCI通讯模块
通讯模块的设计主要是为电控系统的软件开发和标定试验服务的,方便RAM监控及在线修改标定数据。此功能的实现需要得到上位机开发装置的支持,使用的开发工具是本课题组自主开发的实时监控发动机状态并进行控制的标定软件。
RAM监控功能是通过读数据单元、读数据区以及读参数显示状态的通讯模块来实现的。RAM监控可使RAM单元内容透明化,软件开发者可以实时地获得软件中点火、喷油功能模块相关变量的变化情况。无论是模拟调试还是台架试验,上位机记录的数据都可用于离线查错和数据分析,完成数据的作图、显示和存盘。上位机可以显示发动机转速,节气门开度,喷油脉宽,点火提前角等变量值,还能显示包括清淹缸,动力加浓,减速断油等状态,同时提供显示曲线功能,方便了解发动机的状态及其变化情况。而且还具有数据采集功能,能存储指定时间内的上述各种变量和状态的数据。
系统上电后禁止RAM单元监控模块工作。上位机发出监控命令触发数据接收中断后再开始回送数据。为了实时接收通讯请求,数据的接收是在前景程序中执行的,即由SCI中断程序处理,同时也可进行数据的发送。但由于某些通讯模式下一次发送数据较多,为了不影响点火、喷油等前景程序的执行,其第一个数据的发送仍在SCI中断程序中进行,但后续数据的发送则在背景程序中,通过查询方式定时进行。
图8 实时在线修改数据功能在台架验证实验中的应用
电控系统要想能够工作在最佳状态,需要有良好的数据做基础。数据区在线修改功能主要在发动机台架标定及整车标定时使用。
由于ECU软件程序及标定数据区都存储在MC68HC908SR12的12K的FLASH中,因此要实现电控系统的在线标定就需要能够对FLASH进行擦写。由于这些程序必须放在RAM中,因此电控系统软件首先需要将这些程序存放在FLASH中,在系统上电初始化之后对将这些FLASH擦写程序复制到RAM中去。由于MC68HC908SR12对于FLASH的擦写是整页擦写(最小的擦除单元是128个字节,最小写入单元是64个字节),这样在进行电控系统标定时,就不能只对特定的数据单元内容进行修改,而是为了一个单元的修改就需要进行整页的擦写才能完成。擦写一页FLASH需要3ms左右,由于摩托车发动机转速高达上万转,比如在10000rpm时,3ms就对应着发动机转过半转,在这半转的时间内,由于在进行FLASH的擦写,ECU就不能正常工作,因此台架标定时将无法进行高速时的标定。本电控系统采用的方法是将原有电控系统中的标定数据直接进行使用,然后再根据具体的使用需要进行某些数据的标定。