(57)【特許請求の範囲】
【請求項１】
内燃機関の回転に応じて所定の回転角度毎に回転信号を出力する回転信号出力手段と、
前記回転信号出力手段の出力信号に基づき、各気筒の膨張行程における所定回転角度間の回転に要した期間を計測することにより定まる実測値を求める実測値演算手段と、
前記実測値演算手段の演算結果に基づいて、前記膨張行程が連続する２つの気筒間の実測値の偏差を求めることにより第１の変動量を演算する第１の変動量演算手段と、
前記回転信号出力手段および前記実測値演算手段からの情報に基づいて、前記第１の変動量演算手段で演算された今回の前記第１の変動量と、前記内燃機関のクランク角で３６０度の整数倍回転前に演算された前記第１の変動量との偏差を求めることにより第２の変動量を演算する第２の変動量演算手段と、
前記第２の変動量を平滑化する平滑化手段と、
前記平滑化された第２の変動量と予め設定された所定の値とを比較することにより失火を検出する失火検出手段と
を備えることを特徴とする内燃機関の失火検出装置。
【請求項２】
前記実測値演算手段は、前記膨張行程における平均回転時間を演算する手段を含むことを特徴とする請求項１に記載の内燃機関の失火検出装置。
【請求項３】
前記実測値演算手段は、前記膨張行程における前記内燃機関の機関回転数を演算する手段を含むことを特徴とする請求項１に記載の内燃機関の失火検出装置。
【請求項４】
前記失火検出手段は、各気筒毎に失火を検出する手段を備えることを特徴とする請求項１から請求項３のいずれかに記載の内燃機関の失火検出装置。
【請求項５】
内燃機関の回転に応じて所定の回転角度毎に回転信号を出力する回転信号出力手段と、
前記回転信号出力手段の出力信号に基づき、各気筒の膨張行程における所定回転角度間の回転に要した期間を計測することにより定まる実測値を求める実測値演算手段と、
前記実測値演算手段の演算結果の変動量を演算する変動量演算手段と、
前記変動量演算手段により演算された変動量を平滑化する平滑化手段と、
前記平滑化された変動量と予め設定された所定の値とを比較することにより失火を検出する失火検出手段と
を備えることを特徴とする内燃機関の失火検出装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、多気筒内燃機関において内燃機関の回転速度の変化によって失火を検出する装置に関するものである。
【０００２】
【従来の技術】
従来、代表的な失火検出方法として、内燃機関の回転数の瞬間的な変化を測定するものがある（例えば、特開平４−３６５９５８号公報）。詳しくは、点火毎に瞬時回転数を求め、この瞬時回転数に基づいて、過去の瞬時回転数との一階差分や二階差分を行う。そして、回転数の変動量を求め、この回転変動量に基づいて失火の有無を判定している。
【０００３】
なお、この際、上記回転変動量の演算は毎回更新される瞬時回転数により行われ、回転変動量の履歴については考慮されていない。
【０００４】
【特許文献１】
特開平０４−３６５９５８号公報（第１頁、第３図等）
【０００５】
【発明が解決しようとする課題】
上記のような失火判定に用いられる瞬時回転数には、測定による誤差や燃焼のばらつきによる回転変動等が含まれる。したがって、この瞬時回転数に基づき演算される回転変動量にも誤差が含まれることになる。また、エンジン回転数が高くなるほど、失火発生によるトルク変化によって引き起こされる回転変動量が小さくなる。そのため、高回転域においては、相対的に真値に対して誤差変動量が大きくなる。よって、Ｓ／Ｎ（信号雑音比）が確保できず、失火を誤検出するおそれが生じる。
【０００６】
本発明では、回転変動量に含まれる誤差成分を低減させ、良好に失火検出を行う内燃機関の失火検出装置を提供することを目的とする。
【０００７】
【課題を解決するための手段】
そこで本発明は、内燃機関の回転に応じて所定の回転角度毎に回転信号を出力する回転信号出力手段と、回転信号出力手段の出力信号に基づき、各気筒の膨張行程における所定回転角度間の回転に要した期間を計測することにより定まる実測値を求める実測値演算手段と、実測値演算手段の演算結果に基づいて、膨張行程が連続する２つの気筒間の実測値の偏差を求めることにより第１の変動量を演算する第１の変動量演算手段と、回転信号出力手段および実測値演算手段からの情報に基づいて、第１の変動量演算手段で演算された今回の前記第１の変動量と、内燃機関のクランク角で３６０度の整数倍回転前に演算された第１の変動量との偏差を求めることにより第２の変動量を演算する第２の変動量演算手段と、第２の変動量を平滑化する平滑化手段と、平滑化された第２の変動量と予め設定された所定の値とを比較することにより失火を検出する失火検出手段とを備えることを特徴とする内燃機関の失火検出装置を提供する。
【０００８】
【作用】
回転信号出力手段は、内燃機関の回転に応じて所定の回転角度毎に回転信号を出力し、実測値演算手段は、前記回転信号出力手段の出力信号に基づき、各気筒の膨張行程における所定回転角度間の回転に要した期間を計測することにより定まる実測値を求める。
【０００９】
そして、第１の変動量演算手段は、前記実測値演算手段の演算結果に基づいて、前記膨張行程が連続する２つの気筒間の実測値の偏差を求めることにより第１の変動量を演算し、第２の変動量演算手段は、前記回転信号出力手段および前記実測値演算手段からの情報に基づいて、前記第１の変動量演算手段で演算された今回の前記第１の変動量と、前記内燃機関のクランク角で３６０度の整数倍回転前に演算された前記第１の変動量との偏差を求めることにより第２の変動量を演算する。
【００１０】
平滑化手段は前記第２の変動量を平滑化し、失火検出手段は、平滑化された第２の変動量と予め設定された所定の値とを比較することにより失火を検出する。
【００１１】
これにより、第２の変動量に含まれる誤差成分や燃焼によるばらつきを低減することができるため、精度のよい失火検出を実行することが可能となる。
【００１２】
【実施形態】
本発明の実施形態の第１実施例を説明する。図１に本発明を６気筒内燃機関（エンジン）に採用した第１実施例の構成図を示す。図１において、１は６つの気筒からなり３気筒毎にＶ字型に配設されたエンジンであり、２は図示しないエアクリーナから導入された吸入空気を内燃機関１内に導く吸気管である。３は吸気管２内の圧力を検出する吸気管圧力センサであり、吸気管圧力センサ３の検出信号は後述する電子制御装置（ＥＣＵ）９に入力される。
【００１３】
５はエンジン１の図示しないクランク軸に配設され、所定クランク角度毎に信号を出力して、エンジン１の回転速度Ｎｅ（エンジン回転数）を求めるための回転角センサであり、６は同じくディストリビュータ７に内蔵され、気筒を判別するための信号を出力する、詳しくは、例えば、第１気筒（♯１）のピストン１３が最も上にきた時点（上死点：ＴＤＣ）毎に信号を出力する基準位置センサである。なお、回転角センサ５，基準位置センサ６からの信号も後述するＥＣＵ９に入力される。８はエンジン１の冷却水路に配設され、冷却水の温度を検出する水温センサであり、水温センサ８からの信号も後述するＥＣＵ９に入力される。
【００１４】
９は上記各センサおよび図示しないセンサからの検出信号に基づいて燃料系および点火系の最適な制御量を演算し、インジェクタ１０およびイグナイタ１１等を的確に制御するための制御信号を出力する公知のＥＣＵである。また、ＥＣＵ９は演算処理を行う公知のＣＰＵ９ａ，制御プログラムおよび演算に必要な制御定数を記憶しておくための読み出し専用のＲＯＭ９ｂ，上記ＣＰＵ９ａの動作中に演算データを一時記憶するためのＲＡＭ９ｃ，およびＥＣＵ９外部からの信号を入出力するための入出力（Ｉ／Ｏ）ポート９ｄにより構成されている。さらに、ＥＣＵ９は内燃機関等に異常が生じたときに、警告ランプ１２を点灯する。
【００１５】
次に、ＥＣＵ９により実行される失火判定処理を図２に示すフローチャートに従って説明する。なお、このフローチャートは３０°ＣＡ（クランク角度）毎に実行される。本処理が実行されると、ステップ１０１において、前回の割り込み時刻と今回の割り込み時刻との偏差から３０°ＣＡ回転するのに要した時間Ｔ３０ｉを算出する。ステップ１０２では、今回の割り込みタイミングが上死点（ＴＤＣ）であるか否かを判別する。上死点でないときにはステップ１０３に進み、Ｔ３０ｎ（ｎ＝ｉ，ｉ−１，ｉ−２）をＴ３０ｎ−１（ｎ＝ｉ，ｉ−１，ｉ−２）として、本ルーチンを終了する。一方、今回の割り込みタイミングが上死点であるなら、ステップ１０４に進む。
【００１６】
ステップ１０４では、気筒インデックスｊを更新する。ここで、気筒インデックスｊとは、今回、回転変動量を算出される気筒の番号である。例えば、点火順序が、♯１→♯２→♯３→♯４→♯５→♯６→♯１→・・と続く内燃機関では、気筒インデックスも♯１→♯２→♯３→♯４→♯５→♯６→♯１→・・の順（つまり、ｊが１→２→３→４→５→６→１→・・の順）で更新されていく。
【００１７】
次に、ステップ１０５ではステップ１０２，ステップ１０３によって求めたＴ３０ｎ（ｎ＝ｉ，ｉ−１，ｉ−２）から１２０°ＣＡ回転するのに要する時間Ｔ１２０ｉを算出し、さらに、この算出したＴ１２０ｉの逆数を求めることにより平均回転数ωｉを算出する。ステップ１０６では、次式に基づいて、平均回転数変動量△ωｉを算出する。
【００１８】
［数１］
△ωｉ＝（ωｉ−１−ωｉ）−（ωｉ−４−ωｉ−３）
なお、ωｉ  はステップ１０５で算出した今回の平均回転数であり、ωｉ−１は前回の平均回転数である。そして、（ωｉ−１−ωｉ）は膨張行程が連続する気筒の変動量（第１の変動量）である。また、ωｉ−３は３回前の平均回転数であり、ωｉ−４は４回前の平均回転数である。そして、（ωｉ−４−ωｉ−３）は３６０°ＣＡ前における膨張行程が連続する気筒の変動量（３６０°ＣＡ前の第１の変動量）である。
【００１９】
また、ここでは上記第１の変動量と３６０°ＣＡ前の第１の変動量とを同じルーチンで求めたが、３６０°ＣＡ前の第１の変動量を予め別のルーチンで求め、ＥＣＵ９のＲＡＭ９ｃに格納し、このルーチンの実行時に３６０°ＣＡ前の第１の変動量をＲＡＭ９ｃから読み込むというようにしてもよい。次に、ステップ１０７において、次式より変動量なまし値ｄωｉｊを算出する。
【００２０】
［数２］
ｄωｉｊ＝（（Ｋ−１）×ｄωｉ−１ｊ＋△ωｉ）／Ｋ
ここで、ｊは気筒インデックス，ｄωｉ−１ｊは前回の変動量なまし値である。また、定数Ｋの値は本実施例では８とする。なお、この定数Ｋの値は、コンピュータの処理上、２ｎとなる値を設定するのが好ましい。このように、平均回転数変動量をなますことにより、図１０に示す特性が得られ、容易に失火検出ができるようになる。
【００２１】
そして、ステップ１０８において、ステップ１０７で求めたｄωｉｊが失火判定値ＶＲＥＦより大きいか否かを判定し、失火判定を実行する。ｄωｉｊが失火判定値ＶＲＥＦより大きいときは、失火と判断してステップ１０９に進み、気筒別失火カウンタＣＭＩＳＣｊをインクリメントする。そして、ステップ１１０に進む。また、ステップ１０８で、ｄωｉｊが失火判定値ＶＲＥＦより大きくなかったときは、失火でないと判断し、そのままステップ１１０に進む。
【００２２】
ステップ１１０では、次回の平均回転数変動量を算出するための前処理として、ωｎ（ｎ＝ｉ，ｉ−１，ｉ−２，ｉ−３）をωｎ−１（ｎ＝ｉ，ｉ−１，ｉ−２，ｉ−３）とし、さらに、ｄωｉｊをｄωｉ−１ｊとして、ステップ１１１に進む。そして、ステップ１１１において、カウンタＣの値をインクリメントして、本処理を終了する。以上の処理により、失火が発生した回数だけ気筒別にカウントされることになる。
【００２３】
次に、気筒別失火カウンタＣＭＩＳＣｊに基づいて失火検出する処理を図３に示すフローチャートに従って説明する。なお、このフローチャートは６４ｍｓ毎の時間割込みにて実行される。本処理が実行されると、まず、ステップ２０１において、カウンタＣの値が３０００以上か否かを判定する。肯定判断されると、ステップ２０２に進み、以降のステップで失火判定処理を実行する。否定判断されると、そのまま本ルーチンを終了する。つまり、本実施例の場合、エンジン回転数が１０００回をこえる毎に一回、ステップ２０２以降の失火判定処理を実行することになる。
【００２４】
ステップ２０２では、気筒インデックスｊを１に、つまり、始めは♯１気筒について失火検出処理を行う。ステップ２０３では、気筒別失火カウンタＣＭＩＳＣｊ（始めは、ｊ＝１）の値が所定値ｋより大きいかを判定する。ここで肯定判断されると、失火と判断し、ステップ２０４に進む。ステップ２０４では、失火判別フラグＸＭＦを１として、ステップ２０６に進む。また、否定判断されると、ステップ２０５に進み失火判別フラグＸＭＦを０として、ステップ２０６に進む。ステップ２０６では気筒別失火カウンタＣＭＩＳＣｊの値をクリア（０に）し、ステップ２０７に進む。
【００２５】
ステップ２０７では、気筒インデックスの値が６であるかを判断し、６であれば本処理を終了する。６でなければ、ステップ２０８に進み、気筒インデックスの値をインクリメントし、ステップ２０３以降の処理を繰り返す。つまり、♯１から♯６までの全ての気筒に対して失火判定処理が終了すると、ステップ２０７において肯定判断され、本処理を終了する。
【００２６】
次に、図４に示すフローチャートにしたがって、失火が検出されたときの処理を説明する。このフローチャートは所定時間毎の時間割り込みにて実行される。本処理が実行されると、ステップ３０１において、失火判別フラグＸＭＦが１であるか否かを判定する。肯定判断されると、失火が検出されているものとし、ステップ３０２にすすみ、警告ランプ１２を点灯する。さらに、ステップ３０３に進み、フェイルセーフ処理が実行される。このフェイルセーフ処理としては、例えば、触媒保護や排出ガス中のＨＣ濃度の増大を防止する目的で、失火発生と判定された気筒への燃料供給を遮断したりする。そして、本処理を終了する。
【００２７】
また、ステップ３０１で、否定判断されたときには、失火が発生していないものと判断し、ステップ３０４に進む。ステップ３０４では、警告ランプ１２が点灯して入れば消灯する。ステップ３０５では、ステップ３０２において、フェイルセーフ処理が行われていたときに、このフェイルセール処理を終了し、正常時の制御を実行する。そして、本処理を終了する。
【００２８】
図５（ａ）は正常運転時の平均回転数変動量を平滑化する前の平均回転数変動量の出現頻度を表した特性図であり、図５（ｂ）は上記実施例のように、平均回転数変動量を平滑化したときの出現頻度を表した特性図である。図５（ａ）に示すように、平滑化する前の平均回転数変動量は出現頻度にばらつきが大きく（誤差変動量が大きく）、正常運転時にもかかわらず、失火判定レベルをこえる場合もある。しかしながら、平均回転数変動量を平滑化することにより、ばらつきを抑制することができるため、図５（ｂ）に示すような特性となる。この図に示すように、平滑化された平均回転数変動量では失火判定レベルをこえることはほとんどなく、よって、精度の高い失火検出を行うことができる。
【００２９】
図６（ａ）は平滑化した平均回転数変動量の正常運転時の特性図であり、図６（ｂ）は所定気筒に連続的に失火が発生したときの特性図である。図６（ａ）に示すように、正常運転時には、ｄωｉｊはほぼ０の値に収束している。しかし、所定気筒に連続的に失火が発生すると、図６（ｂ）に示すように、ｄωｉｊの値がばらつく。このとき、ｄωｉｊが一番大きくなる気筒に失火が発生している（実験結果から本発明者らが発見）ため、失火判定レベルＶＲＥＦを図に示すように設定することにより、失火を検出できる。なお、この失火判定レベルＶＲＥＦの値は運転状態により変えてもよいし、各気筒毎に設定してもよい。さらに、上記実施例では、図３のステップ２０２〜ステップ２０７で各気筒毎に順番に失火判定を行うため、どの気筒に失火が発生しているかがわかる。
【００３０】
第１実施例において、回転角センサが回転信号出力手段に、ステップ１０１，ステップ１０５が実測値演算手段に、ステップ１０６において、第１の変動量を演算する処理が第１の変動量演算手段に、ステップ１０６において、△ωｉを算出する処理が第２の変動量算出手段に、ステップ１０７が平滑化手段に、ステップ１０８が失火検出手段にそれぞれ相当し、機能する。
【００３１】
なお、上記第１実施例では、クランク軸が１２０°ＣＡ回転するのに要する時間Ｔ１２０ｉから平均回転速度を求め、この平均回転速度の変動量から失火を判定している、クランク軸が１２０°ＣＡ回転するのに要する時間Ｔ１２０ｉから時間変化量を求め、失火検出を行ってもよい。以下、時間変化量を算出し、これに基づいて失火検出を行う第２実施例を説明する。
【００３２】
図７に第２実施例のフローチャートを示す。このフローチャートは図２に示すフローチャートのステップ１０５〜ステップ１０８，ステップ１１０をステップ１０５’〜ステップ１０８’，ステップ１１０’としたものである。以下、この相違点を中心に説明する。ステップ１０５’では、Ｔ１２０ｉ（第２実施例では、Ｔｉと表す）のみを算出し、図２のステップ１０５で算出した平均回転数ωｉを算出せずに、次のステップ１０６’に進む。ステップ１０６’では平均回転数変動量△ωｉの代わりに平均時間変化量△Ｔｉを次式より算出する。
【００３３】
［数３］
△Ｔｉ＝（Ｔｉ−Ｔｉ−１）−（Ｔｉ−３−Ｔｉ−４）
なお、Ｔｉはステップ１０５’で算出されたクランク軸が１２０°ＣＡ回転するのに要する時間（１２０°ＣＡ回転時間）であり、Ｔｉ−１は前回の１２０°ＣＡ回転時間である。そして、（Ｔｉ−Ｔｉ−１）は膨張行程が連続する気筒の変動量（第１の変動量）である。また、Ｔｉ−３は３回前の１２０°ＣＡ回転時間であり、Ｔｉ−４は４回前の１２０°ＣＡ回転時間である。そして、（Ｔｉ−３−Ｔｉ−４）は３６０°ＣＡ前における膨張行程が連続する気筒の変動量（３６０°ＣＡ前の第１の変動量）である。
【００３４】
そして、ステップ１０７’において、ステップ１０６’で算出された△Ｔｉに基づいて変化量なまし値ｄＴｉｊを次式より求める。
【００３５】
［数４］
ｄＴｉｊ＝（（Ｋ−１）ｄＴｉ−１ｊ＋△Ｔｉ）／Ｋ
次に、ステップ１０８’にて、ｄＴｉｊが失火判定値ＶＲＥＦ’より大きいかを判定する。ここで、肯定判断されたとき（つまり、失火と判断されたとき）はステップ１０９に進む。そして、ステップ１０９にて、気筒別失火カウンタＣＭＩＳＣｊをインクリメントしてステップ１１０’に進む。また、ステップ１０８’にて否定判断されたとき（つまり、失火でないと判断されたとき）は、そのままステップ１１０’に進む。ステップ１１０’ではＴｎ（ｎ＝ｉ，ｉ−１，ｉ−２，ｉ−３）をＴｎ−１（ｎ＝ｉ，ｉ−１，ｉ−２，ｉ−３）とし、さらに、ｄＴｉｊをｄＴｉ−１ｊとして、ステップ１１１に進む。ステップ１１１ではカウンタＣをインクリメントして、本処理を終了する。
【００３６】
以上の実施例では、失火が発生すると、１２０°ＣＡ回転するのに要する時間Ｔ１２０ｉが正常運転時に比べて大きくなることを利用して失火検出を行っている。つまり、失火が発生すると数式４にて算出されるｄＴｉｊの値が失火判定値ＶＲＥＦ’より大きくなり、失火と判断できる。第２実施例において、回転角センサ５が回転信号出力手段に、ステップ１０１，ステップ１０５’が実測値演算手段に、ステップ１０６’において、第１の変動量を演算する処理が第１の変動量演算処理に、ステップ１０６’において、△Ｔｉを算出する処理が第２の変動量演算手段に、ステップ１０７’が平滑化手段に、ステップ１０８’が失火検出手段にそれぞれ相当し、機能する。
【００３７】
以上第１実施例および第２実施例に述べたような失火検出装置を用いることにより、悪路走行時の失火検出も良好に行うことができる。つまり、悪路によって生じる回転変動は回転速度を増加させる方向と、減少させる方向とに現れるため、これを平滑化することにより、悪路によって生じる回転変動の影響をなくすことができる。
【００３８】
上記第１および第２実施例では、数式２により平滑化しているが、他にも算術平均や、幾何平均、あるいは、メジアン（中央値）で平滑化してもよい。例えば、算術平均を用いて平滑化するときには、数式２の代わりに、次式を用いればよい。
【００３９】
［数５］
ｄωｉｊ＝（△ωｉ＋ｄωｉ−１ｊ＋ｄωｉ−２ｊ＋ｄωｉ−３ｊ＋・・・）／ｎ
なお、ここで、ｎはサンプルする今回および過去のｄωｉｊの数である。ｎの数が少ないほど、過去のｄωｉｊを記憶しておくメモリの容量を減らすことができる。また、幾何平均を用いて平滑化するときには、数式２の代わりに、次式を用いればよい。
【００４０】
［数６］
ｄωij＝（ａ・△ωi＋ｂ・ｄωi-1j＋ｃ・ｄωi-2j＋…）／（ａ＋ｂ＋ｃ＋…）
なお、ここで、各定数ａ，ｂ，ｃ・・・はそれぞれのサンプル値に対する重みであり、自由に設定できる。例えば、過去に検出された値ほど重みを大きくしようとするときには、ａ＜ｂ＜ｃ＜・・・というように設定すればよい。また、分母は、各重みの総和である。
【００４１】
以上の数式で平滑化を行っても、同様の効果を得ることができる。
【図面の簡単な説明】
【図１】本発明を用いた第１実施例の内燃機関の概略構成図である。
【図２】第１実施例のＥＣＵにて実行される失火検出処理のフローチャートである。
【図３】第１実施例のＥＣＵにて実行される失火検出処理のフローチャートである。
【図４】第１実施例のＥＣＵにて実行されるフェイルセーフ処理のフローチャートである。
【図５】（ａ），（ｂ）は平均回転数変動量の出現頻度を示す特性図である。
【図６】（ａ）は正常運転時の変動量なまし値のタイムチャートである。（ｂ）は失火発生時の変動量なまし値のタイムチャートである。
【図７】第２実施例のＥＣＵにて実行される失火検出処理のフローチャートである。
【符号の説明】
１  エンジン
５  回転角センサ
６  基準位置センサ
９  ＥＣＵ
【図１】
0004055611.tif 000002
【図２】
0004055611.tif 000003
【図３】
0004055611.tif 000004
【図４】
0004055611.tif 000005
【図５】
0004055611.tif 000006
【図６】
0004055611.tif 000007
【図７】
0004055611.tif 000008