- 柴油机电控技术及故障维修
- 母忠林 母哲轩编著
- 3282字
- 2021-12-24 15:01:08
2.3.2 电控系统的中断服务体系
ECU的中断服务功能是为了满足一些需要及时响应的控制需求。中断有外部中断和内部中断两类。外部中断一般是由某些输入线上电平的突变引发的,而内部中断则是由ECU微处理器内产生的某类条件引发的。对于外部中断而言,ECU的某些输入线具有这样的功能:当输入线上的电平发生突变,就会引发对应的中断。
引发中断的可以是电平的上升沿,也可以是下降沿,或者是上升沿与下降沿都引发中断。这就是前面提到的单片机输入捕获(input capture,IC)功能。一般的单片机都有若干个具有IC功能的输入口线,通过ECU的接口与外部器件连接。在ECU基础软件系统初始化过程中,可以对输入捕获功能做出设置。例如可以设置成上升沿触发、下降沿触发,或者是上升沿与下降沿都触发。
中断触发后,程序会暂停当前的程序执行,转移到与中断对应的服务程序继续运行。在中断服务程序中,完成该中断功能对应的工作任务。一般中断服务程序不宜过长,不能影响下一个同类中断信号的接收。在计算机原理课程中有对中断管理的较详细阐述,这里不再详细说明。由于目前我们用于柴油机控制的单片机的处理功能都很强,所以只要注意别将太多的工作放在中断服务执行,一般就不会引起对下一中断执行的屏蔽。
(1)曲轴信号中断
曲轴信号是曲轴上的信号轮轮齿与曲轴信号传感器相对运动而产生的,它与凸轮轴的信号有固定的相位关系,如图2⁃12所示。这里假设单片机自由运行计数器设置的时间常数Ct是3.2μs。
图2⁃13 曲轴信号周期
在初始化时,设定捕获的是曲轴信号的下降沿,如图2⁃13所示。在这种情况下,曲轴中断服务程序会给出本次中断与上次中断的时间间隔量Tci。根据这一间隔量可以算出曲轴转过一个齿的时间,进而算出曲轴转速n。
例如:如果这一间隔量为200,则单齿(占据6°曲轴转角)的转动耗时为:
S=200×3.2=640 (μs)
曲轴转速为:
n=(6/640)×106×(60/360)=1562.5(r/min)
曲轴中断是柴油机电控中最重要的组成要素之一。它不仅用于计算转速,而且用于较精确的相位定位控制,这种相位的控制基于对信号轮齿本身的计数。针对60-2的信号齿轮对齿的计数可以达到6°的齿轮转角精度,更高的转角控制精度可以在此基础上通过时间量的控制来实现。
对Tci值的动态采样和处理,可以离散化地计算曲轴的运动规律。由于曲轴齿较密,每转有60个齿位,因此能够比较连续地反映曲轴运行规律的变化。常用Tci0信号的连续采样计算出曲轴的每转平均转速、每循环平均转速、每缸平均转速、齿的瞬时转速、齿的角加速度及在一段转角间的平均角加速度等。这些数据对于柴油机控制是最根本的依据,只有保证这些数据的准确,才能谈得上控制实施的正确。
对于曲轴信号的处理源于对单片机内自由运行计数器的计数。例如:当经历某次曲轴中断时自由运行计数器中的值Tci是300,而下次曲轴中断时Tci的值是500,则两次间差值即为200。这就是两次中断间的时间间隔量。
这里要注意一个问题,就是所谓计数器的“溢出”问题。例如:如果是16位的计数器,则其能够表达的最大值是65535,即16位全为2进制的1。达到此数后,计数器会回到全0状态再开始按时间递增,依此循环。由此可以区分三种情况:
① 前后两次中断落入同一次计数循环过程中。这种情况,其两次中断的间隔自然是后次减前一次。
② 后一次中断落入下一次计数循环过程中,且计数值小于第一次中断的计数值。这种情况,由于后一次的值减前一次的值时发生借位,本位减法的结果小于计数器的最大值,因此结果仍是正确的。例如:第一次计数是65530,第二次是194。则时间间隔为:
65536+194-65530=200
③ 后一次中断落入下一次计数循环过程中,且计数值大于第一次中断的计数值。后一次中断时刻符合这种情况或再靠后,都无法通过简单的本位减法求得正确的时间间隔。这是因为两次中断时间间隔大于计数器的本位最大计数能力,这就是所谓的“溢出”现象。在这种情况下,为计算两次中断时间间隔必须考虑两次中断间经历的“溢出”次数。
以时间常数Ct是3.2μs为例,上述的16位自由运行计数器的最大计时量为:
65536×3.2=209715.2(μs)≈0.21s
而对于曲轴脉冲信号,即使是在较慢的10r/min的转速下,脉冲周期仍有0.1s的较低值,即两次脉冲间隔不会超过16位自由运行计数器的最大计时量,所以几乎不需要在处理曲轴信号时考虑溢出问题。但是要注意到这一问题的存在,对于特殊情况下这一问题可能造成的影响要有必要的认识,避免发生意外。
(2)凸轮轴信号中断
凸轮轴信号在形式上与曲轴信号较为相似,也是通过对脉冲信号跳变沿采样的方式获得相邻信号沿的时间差值,并由此进行进一步的利用。凸轮轴信号轮在不同的电控发动机上有几种不同的结构形式:有的在一周内只能提供一个脉冲,这种结构形式只能使凸轮轴信号起到辅助确定曲轴相位的作用;较常用的倒是我们在EDBM中设定的图2⁃12中这种4+1型,它不仅能起到辅助确定曲轴相位的作用,也能通过它的信号完成柴油机转速的计算,并达到一定的精度。这种利用凸轮轴信号完成转速计算的方式,主要能够在两种情况下有用。一种情况是针对电控单体泵的泵台试验,由于这时根本没有曲轴信号,只能靠凸轮轴信号来确定转速和相位;另一种情况是针对柴油机车辆在行驶时曲轴信号传感器的失效,此时要依靠凸轮轴信号维持使车辆实现“缓慢回家”的功能。
对于利用凸轮轴信号齿做转速计算的这种情况,前面提到的计数器溢出问题会影响到计算过程。EDBM中设定的凸轮轴是4+1齿的。考虑4个齿产生的脉冲间隔时间,当柴油机转速为60r/min时,凸轮轴的转速为30r/min,即齿速为120齿/min,即2齿/s。齿与齿间隔约为500ms,这大大超过了16位自由运行计数器的最大计时量0.21s,产生了溢出。因此,处理用凸轮轴信号齿做转速计算问题时,除了使用A_FTV变量之外,还必须利用A_FTVO。这两者联合使用可以表达更长的时间周期,满足凸轮轴信号齿做转速计算的需求。
图2⁃14 高速电磁阀驱动波形要求
(3)供油输出驱动的中断控制
对于供油输出驱动中断的设置有不同的实现方式。此处介绍的是一种较典型的处理方式。针对实际受控环境,无论是针对电控单体泵的供油驱动还是共轨系统的喷射驱动,都可以认为是同一种大功率的电驱动脉冲实现方式,目的是产生如图2⁃14所示的驱动波形。要在确定的相位产生上述的驱动波形,要把握如下要素:
① 低位开关开启时刻tq1。
② 高位开关开启时刻tq2。
③ 高位开关关闭时刻tq3。
④ 低位开关关闭时刻tq4。
这里所提到的低位开关和高位开关都是在电路中用于控制产生大功率驱动脉冲的电路。大功率驱动脉冲是依靠这两个开关与一些IC电路的配合而实现的。而上述的4个时刻不仅决定了驱动脉冲开启与结束的时机,也决定和影响了驱动脉冲的形状特征。
为进一步说明上面这些时间量,请参考图2⁃15。
图2⁃15 供油脉冲与曲轴信号相位
齿脉冲信号中断源取自齿脉冲信号的下降沿。在一般情况下,供油信号的相位根据供油提前角计算出来,应该是相对于某一齿之后的某一位置tq1,滞后于齿脉冲信号tq1-tq0=dtq1时间段。dtq1被用于作为时间量在齿脉冲信号处理过程中设置一个比较输出中断(OSCOI),对这一时间做倒计数。当倒计数达到0时,即产生中断,转入中断处理程序。
在中断处理程序中,首先打开低位开关,然后用tq2-tq1=dtq2作为时间量重设置比较输出中断(OSCOI),再执行中断返回。当下一次OSCOI中断发生时,时间刚好过去dtq2,程序将重新转入中断处理程序。
在这次的中断处理程序中,首先打开高位开关,然后用tq3-tq2=dtq3作为时间量重设置比较输出中断(OSCOI),再执行中断返回。当下一次OSCOI中断发生时,时间刚好过去dtq3。程序将重新转入中断处理程序。
在这次的中断处理程序中,首先关闭高位开关,然后用tq4-tq3=dtq4作为时间量重设置比较输出中断(OSCOI),再执行中断返回。当下一次 OSCOI中断发生时,时间刚好过去dtq4。程序将重新转入中断处理程序。
在这次的中断处理程序中,首先关闭低位开关,再执行中断返回,供油过程即告结束。在控制多缸柴油机过程中,每缸要有1个独立的上述这种输出比较中断控制OCI,以满足供油控制需求。
在EDBM_ECU软件资源中,实现上述功能的函数较为简单。用户只需执行简单的函数调用, OSCOI中断功能就在这一函数中得到运用。这一函数为:
void Oil_Supply?()
其中? 表示对应各缸的函数,如第1缸为1、第2缸为2等。另外定义的变量有以下含义:
A_Dtq1=dtq1-dtq0;自齿中断时刻到供油低位开关打开
A_Dtq2=dtq2-dtq1;自低位开关打开到高位开关打开
A_Dtg3=dtq3-dtq2;自高位开关打开到高位开关关闭
A_Dtq4=dtq4-dtq3;自高位开关关闭到低位开关关闭
这4个变量都是全局变量,在 Oil_Supply?()执行过程中会受到这4个变量的控制,产生不同的效果。