第三讲(2)汽车发动机的爆震模式识别6.1技术背景6.1.1爆震的现象汽车发动机气缸内正常燃烧是从火花塞位置开始,逐步平滑燃烧到缸壁。而当未燃混合气的温度或压力超出临界值,可导致爆震,此时末端混合气自燃,产生冲击波使缸压突然上升,同时冲击波使缸体产生共振,共振频率与缸径、燃烧温度等因素有关。在两种不同情况下形成的爆震有区别,一是发动机低速大负荷时加速过程的爆震,这时能清晰听到敲缸声。另一种是高速大负荷的爆震,这时爆震噪声可能被发动机其它噪音所掩盖,人耳未必能听到。发动机一旦产生爆震其危害极大,它会引起发动机功率下降,油耗骤增,严重时还会使发动机的气缸壁、活塞、活塞环、气门、连杆及其连杆轴承等运动件变形损坏。所以对发动机爆震进行检测,并及时实施有效的控制是非常必要的。爆震产生的共振基本频率一般在5KHz至7KHz之间,即使同一个发动机,其基本频率可能有±400Hz的偏移。另外,从基频到20KHz之间,还存在2至4个峰值频率。6.1.2爆震测量爆震测量分直接测量与间接测量。所谓直接测量是指每个气缸内都安装压力传感器,直接测量缸压变化,这种方法最直接,但成本高昂,仅限于研究应用,不适于批量生产的汽车应用。间接测量是采用压电振动传感器,测量缸体的共振,这种方法简单,传感器便宜且安装方便。现在一般采用宽频爆震传感器,而不是峰值型爆震传感器,在低于20KHz的范围内,不存在调制峰值。这类传感器能适用于各种型号的发动机,但是传感器输出信号很容易混杂发动机的其它振动噪音,特别是发动机高速运转时,背景噪音特别大,对信号处理与模式识别提出了很高的要求。6.2爆震模式识别方法爆震识别是典型的一维信号模式识别问题。所谓模式识别是指对客观对象进行描述与分类的科学。具体地说,就是用计算机实现人的模式识别能力。模式识别的特有概念是相似度,模式识别的任务就是根据对象特征把相似的对象分类。所以模式识别的关键是确定对象的特征。目前爆震识别的有两大类方法:模拟滤波以及数字频谱特征分析。6.2.1模拟滤波模拟滤波是从传统信号处理观点出发的方法。采用模拟电路处理爆震传感器信号,计算特定频段内振动信号强度,以识别是否有爆震。相应的模拟电路结构框图如下:图1爆震信号模拟电路框图输入是较微弱的交流振动信号,所以首先通过可编程放大器进行放大,然后通过预先调整好的带通滤波器,获取爆震频段的信号,再通过整流与积分得到放映振动强度的信号,与实时变化的参考信号比较,从而确定是否有爆震。采用模拟电路的好处是减少发动机电子控制单元(ECU)的计算工作量,坏处是接口较复杂,电路调整不方便,适应性差,不过这是过去发动机电子控制系统中处理爆震的主要方法。TheParseval’sTheoremIf11()()FxnXjand22()()FxnXjThen12121()()()()2nxnxnXjXjdTheleft-handsideistheenergyform.6.2.2数字频谱特征分析——DFT频谱特征分析数字频谱特征分析是从模式识别观点出发,采用数字信号处理技术,分析振动信号的频谱特征。具体是以频域特征为主,时域特征为辅,综合多个特征进行爆震模式识别。DFT是离散傅立叶变换的英文简写,进行频谱分析,可采用快速傅立叶变换FFT,也可采用离散傅立叶变换DFT,但是DFT较FFT更适于爆震判断,原因如下:(1)爆震模式识别只需计算信号若干频率点的幅值,而不是整个频率段的幅值,信号预处理放大器带通滤波整流器积分器参考信号发生器比较器输入信号是否爆震此时采用DFT运算量远比FFT小。(2)为了滤除噪音,信号处理采用“加窗技术”,由于爆震只可能出现在发动机活塞运行上止点后10°至70°,所以上止点后10°至70°作为信号窗口,该窗口时间随发动机转速而变化,例如:500RPM时为20毫秒,8000RPM为1.25毫秒。而FFT处理信号长度只能是2的幂,DFT则无此限制,所以DFT适于这种窗口时间不断变化的特殊“加窗技术”。DFT算法如下:10/2)(][NnNknjenxkX(1)这里,k:频率索引数、n:采样时间索引数、N:样本长度、x(n):时域信号值、X[k]:正弦分量幅值。决定DFT有效中心频率与带宽(频率分辨率)的三个变量是:采样频率fs、数据块长度和索引频率(indexedfrequency)。它们关系如下:奈奎斯特(Nyquist)频率:.2/sNff最小频率:./minNffN索引频率:.][minfkkf一般爆震信号频率是5KHz-20KHz,为防止信号畸变,采样频率必须快一倍,所以采样频率应大于40KHz。当采样频率固定,数据块越大,DFT的分辨率越高。需要特别监视的爆震信号频率由][kf决定,当采样频率、数据块长度一定,则选取不同的k值,就能确定欲监视的频率。在实际应用中,DFT常采用迭代计算。DFT的迭代计算公式推导如下:根据式(1)得:1010)./2sin()()/2cos()(][NnNnNnknxjNnknxkX(2)根据上式,实部、虚部分别为:10)./2cos()(][NnRNnknxkX10)./2sin()(][NnlNnknxkX把上式改为递推形式:)./2cos()(][]1[NnknxkXkXRR(3))./2sin()(][]1[NnknxkXkXll(4)具体某点频率的幅值22][][][kXkXkXlR因为爆震只是比较相对大小,所以实际应用时,只需计算幅值的平方,并把它们作为爆震的主特征,具体如下式。.][][][222kXkXkXlR(5)6.3爆震特征选取与模式判别算法6.3.1特征向量选取经爆震传感器得到的信号是一维时变信号,针对该信号可选取如下时域特征与频域特征:表1爆震信号特征名称定义说明脉冲因子avexxI/max时域特征峰值因子rmsxxC/max时域特征方差))((112aveiaveixxxxN时域特征谱峰及对应频率maxf频域特征给定频率范围内功率谱和jjffjdffsG1)(频域特征模式特征并非越多越好,特征过多,不仅增加计算量,而且模式识别能力下降,对于一维时变信号模式识别问题,存在如下规律:P(e)特征数图2:特征数量与识别错误率P(e)的关系但是,具体选取哪些时域特征与频域特征作为最优爆震特征,难以通过理论计算获得,只有通过反复实验摸索,同时还要兼顾运算量大小。经反复实验,发现如下时域特征与频域特征搭配,能满足爆震识别要求,(1)时域特征:脉冲因子,方差。(2)频域特征:给定频率附近的功率谱。6.3.2模式判别算法一般模式识别中,已发展了种类繁多的判别算法,如Fisher线性判别、最近邻法等,但是针对爆震模式判别,必须摸索出工程上简便可行的方法。具体判别算法是先进行时域特征判断,经时域特征判断认为有可能存在爆震,再进一步进行频域特征判断。具体算法如下:第一步:采样数据并计算时域特征与频域特征for(j=0;jBlocks;j++){//Blocks是待计算的采样数据块Xr1,Xl1,Xr2,Xl2,Xr3,Xl3,Xr4,Xl4,Xr5,Xl5//变量都清为0for(m=0;m50;m++){KNK=信号采样值,//KNK爆震信号强度计算信号平均值:AveKnock=AveKnock+KNK捕获信号最大值KNKmaxDFT迭代计算://离散付立叶运算Xr1=Xr1+ResultKNK*SIN1[m],Xl1=Xl1+ResultKNK*COS1[m]Xr2=Xr2+ResultKNK*SIN2[m],Xl2=Xl2+ResultKNK*COS2[m]Xr3=Xr3+ResultKNK*SIN3[m],Xl3=Xl3+ResultKNK*COS3[m]Xr4=Xr4+ResultKNK*SIN4[m],Xl4=Xl4+ResultKNK*COS4[m]Xr5=Xr5+ResultKNK*SIN5[m],Xl5=Xl5+ResultKNK*COS5[m]}XReal1[j]=Xr1,XImg1[j]=Xl1XReal2[j]=Xr2,XImg2[j]=Xl2XReal3[j]=Xr3,XImg3[j]=Xl3XReal4[j]=Xr4,XImg4[j]=Xl4XReal5[j]=Xr5,XImg5[j]=Xl5}Xmax,XFmax[0],XFmax[1],XFmax[2],XFmax[3],XFmax[4]//变量清为0for(j=0;jBlocks;j++){//计算5个频点的幅值X0=XReal1[j]*XReal1[j]+XImg1[j]*XImg1[j];X1=XReal2[j]*XReal2[j]+XImg2[j]*XImg2[j];X2=XReal3[j]*XReal3[j]+XImg3[j]*XImg3[j];X3=XReal4[j]*XReal4[j]+XImg4[j]*XImg4[j];X4=XReal5[j]*XReal5[j]+XImg5[j]*XImg5[j];Xsum=X0+X1+X2+X3+X4;if(XsumXmax){Xmax=Xsum;XFmax[0]=X0;XFmax[1]=X1;XFmax[2]=X2;XFmax[3]=X3;XFmax[4]=X4;}}计算得到信号均值:AveKNK。计算得到信号I因子Ifactor。第二步:爆震模式判别:if((IAve20)&(EeKNK1)){//先判断时域指标for(j=0;j5;j++){if(XFmax[j]Xref[CylPtr][j]){//再判断频域指标KnkMet[CylPtr]=KnkMet[CylPtr]+Range[j];}}}CylPtr++;//代表指向不同气缸的指针if(CylPtr==3){CylPtr=0;}//爆震强度累加Knock=KnkMet[0]+KnkMet[1]+KnkMet[2]+KnkMet[3]+KnkMet[4];KnkMet[0]=0;KnkMet[1]=0;KnkMet[2]=0;KnkMet[3]=0;KnkMet[4]=0;//计算最终的爆震值KnkValue[0]if((Knock10)&(Knock=60)){//较弱的爆震if(KnkValue[0]251){KnkValue[0]=KnkValue[0]+4;}}if(Knock60){//较强的爆震if(KnkValue[0]251){KnkValue[0]=KnkValue[0]+6;}}采用时域特征的好处是程序简洁,能有效滤除个别干扰信号造成的误判现象。在时域判断基础上采用频域判断,能提高识别可信度。6.4.5爆震模式识别的自适应策略(训练与学习问题)图3:高速运行急加速急减速时爆震传感器的信号波形爆震判断算法中的比较参考量必须随发动机的运行条件(主要是转速和负荷)而变化,如图3是发动机高速运行、急加速急减速、且无爆震时爆震传感器的信号波形(整流后),经DFT计算得到的各频点幅值较大,所以必须建立参考信号工况自适应机制。根据爆震波形是正常背景波形迭加共振波形的特点,可以认为参考量就是正常背景量,所以采用历史数据滑动平均计算参考量。同时,由于每气缸波形不同,必须分别建立各气缸的参考量。具体自适应算法如下://----参考量计算------//for(j=0;j5;j++){//分别计算各频率点参考量TimePtr//是指向不同气缸的运算指针if(XFmax[j]1.2*Xref[CylPtr][j]){//如果无爆震XHis[CylPtr][j][TimePtr]=XFmax[j];//按此式计算参考值}else{//如果有爆震XHis[CylPtr][j][TimePtr]=XFmax[j]*0.75;//按此式计算参考量}//3次滑动平均计算参考量Xref[CylPtr][j]=(XHis[CylPtr][j][0]+XHis