(57)【特許請求の範囲】
【請求項１】
内燃機関出力軸の回転に応じた回転角度信号に基づき同機関出力軸の気筒別回転角速度変動量を求め、該求めた気筒別回転角速度変動量と所定の失火判定値とを比較して当該機関の失火発生を検出する内燃機関の失火検出装置において、
前記機関出力軸の気筒別回転角速度変動量を同機関の運転条件の別に学習する学習手段と、
前記失火判定値、若しくは同判定値と比較される前記気筒別回転角速度変動量をその都度の対応する運転条件での学習値に基づき補正する補正手段とを具え、
前記学習手段は、当該機関が正常点火されていることを条件に、前記学習を実行し、
前記補正手段は、前記学習手段による学習値と機関出力軸の気筒別回転角速度変動量との偏差を測定し、該測定した偏差に応じて前記失火判定値、若しくは同判定値と比較される前記気筒別回転角速度変動量を補正する偏差補正手段を含むことを特徴とする内燃機関の失火検出装置。
【請求項２】
請求項１記載の内燃機関の失火検出装置において、
前記学習手段は、前記機関出力軸の気筒間回転角度偏差を求め、該求めた気筒間回転角度偏差を同機関の気筒並びに運転条件の別に学習するものであり、
前記補正手段は、同機関のその都度の対応する気筒並びに運転条件での学習値に基づき前記気筒間回転角度偏差を補正して同機関出力軸の気筒別回転角速度を求め、該求めた気筒別回転角速度の推移に基づいて前記失火判定値と比較される気筒別回転角速度変動量を演算するものであることを特徴とする内燃機関の失火検出装置。
【請求項３】
前記学習手段は、前記回転角度信号に基づき求めた機関出力軸の気筒別回転角速度変動量が仮の失火判定値以下であることに基づいて当該機関が正常点火されていることを判断する請求項１または２に記載の内燃機関の失火検出装置。
【請求項４】
前記学習手段は、失火検出対象となる気筒及びその隣接気筒の回転角度差分から３６０゜クランク角だけ後の気筒及びその隣接気筒の回転角度差分を差し引いた２階差分によって前記回転角度信号に基づき求めた機関出力軸の気筒別回転角速度変動量が仮の失火判定値以下であるか否かを判断する請求項１または２に記載の内燃機関の失火検出装置。
【請求項５】
請求項１または２に記載の内燃機関の失火検出装置において、
内燃機関の燃焼ガスの酸素濃度に基づき空燃比を検出する空燃比センサと、
該空燃比センサの出力に基づき所望の空燃比を得るべく前記内燃機関への燃料噴射量を空燃比補正係数を用いてフィードバック制御する空燃比フィードバック制御手段とを具え、
前記学習手段は、前記空燃比フィードバック制御手段によるフィードバック制御の実行中、その空燃比補正係数と同補正係数の平均値との和、若しくは空燃比補正係数と同補正係数の学習値との和が所定の値よりもリーン側にないことに基づいて当該機関が正常点火されていることを判断する手段を含むことを特徴とする内燃機関の失火検出装置。
【請求項６】
請求項１または２に記載の内燃機関の失火検出装置において、
内燃機関の燃焼ガスの酸素濃度に基づいて空燃比を検出する空燃比センサを具え、
前記学習手段は、前記空燃比センサの活性時、その出力が所定期間以上リーン側にないことに基づいて当該機関が正常点火されていることを判断する手段を含むことを特徴とする内燃機関の失火検出装置。
【請求項７】
請求項１または２記載の内燃機関の失火検出装置において、
内燃機関の燃焼ガスの酸素濃度に基づいて空燃比のリッチ／リーンを検出する酸素センサを具え、
前記学習手段は、該酸素センサの活性時、その出力周期が所定の範囲内であることに基づいて当該機関が正常点火されていることを判断する手段を含むことを特徴とする内燃機関の失火検出装置。
【請求項８】
請求項１または２に記載の内燃機関の失火検出装置において、
内燃機関の燃焼ガスに基づいて空燃比をリニアに検出するリニア空燃比センサを具え、
前記学習手段は、前記リニア空燃比センサの出力が所定値以上リーン側にないことに基づいて当該機関が正常点火されていることを判断する手段を含むことを特徴とする内燃機関の失火検出装置。
【請求項９】
請求項１〜８記載の何れかに記載の内燃機関の失火検出装置において、
前記学習手段は、更新しようとする値とそれまでの学習値との差が所定以上に大きいときには、その更新しようとする値が複数回連続してほぼ同じ値となるときに限り、その値による学習値の更新を許可することを特徴とする内燃機関の失火検出装置。
【請求項１０】
請求項１〜９記載の何れかに記載の内燃機関の失火検出装置において、
前記学習手段は、当該機関の運転状態を監視し、該運転状態が同機関出力軸の大きな回転変動を招く状態にあるとき、前記学習の実行を中止することを特徴とする内燃機関の失火検出装置。
【請求項１１】
請求項１〜１０記載の何れかに記載の内燃機関の失火検出装置において、
前記学習手段は、当該機関の運転状態を監視し、同機関が失火判定不能な運転域にあるとき、前記学習の実行を中止することを特徴とする内燃機関の失火検出装置。
【請求項１２】
請求項１〜１１記載の何れかに記載の内燃機関の失火検出装置において、
前記偏差補正手段は、前記偏差の測定に際し、前記学習手段による学習値と機関出力軸の気筒別回転角速度変動量との最大偏差を同機関の運転条件の別に学習することを特徴とする内燃機関の失火検出装置。
【請求項１３】
請求項１２記載の内燃機関の失火検出装置において、
前記偏差補正手段は、一学習値に対する運転条件が一通り運転されたと判断されたとき、前記最大偏差を前記運転条件の学習値として更新する手段を含むことを特徴とする内燃機関の失火検出装置。
【請求項１４】
請求項１２または１３記載の内燃機関の失火検出装置において、
前記偏差補正手段による偏差の学習が完了するまで失火検出を実行しないことを特徴とする内燃機関の失火検出装置。
【請求項１５】
内燃機関出力軸の回転に応じた回転角度信号に基づき同機関出力軸の気筒別回転角速度変動量を求め、該求めた気筒別回転角速度変動量と所定の失火判定値とを比較して当該機関の失火発生を検出する内燃機関の失火検出装置において、
前記機関出力軸の気筒別回転角速度変動量を同機関の運転条件の別に学習する学習手段と、
前記失火判定値、若しくは同判定値と比較される前記気筒別回転角速度変動量をその都度の対応する運転条件での学習値に基づき補正する補正手段とを具え、
前記学習手段は、更新しようとする値とそれまでの学習値との差が所定以上に大きいときには、その更新しようとする値が複数回連続してほぼ同じ値となるときに限り、その値による学習値の更新を許可し、
前記補正手段は、前記学習手段による学習値と機関出力軸の気筒別回転角速度変動量との偏差を測定し、該測定した偏差に応じて前記失火判定値、若しくは同判定値と比較される前記気筒別回転角速度変動量を補正する偏差補正手段を含むことを特徴とする内燃機関の失火検出装置。
【請求項１６】
内燃機関出力軸の回転に応じた回転角度信号に基づき同機関出力軸の気筒別回転角速度変動量を求め、該求めた気筒別回転角速度変動量と所定の失火判定値とを比較して当該機関の失火発生を検出する内燃機関の失火検出装置において、
前記機関出力軸の気筒別回転角速度変動量を同機関の運転条件の別に学習する学習手段と、
前記失火判定値、若しくは同判定値と比較される前記気筒別回転角速度変動量をその都度の対応する運転条件での学習値に基づき補正する補正手段とを具え、
前記学習手段は、当該機関の運転状態を監視し、同機関が失火判定不能な運転域にあるとき、前記学習の実行を中止し、
前記補正手段は、前記学習手段による学習値と機関出力軸の気筒別回転角速度変動量との偏差を測定し、該測定した偏差に応じて前記失火判定値、若しくは同判定値と比較される前記気筒別回転角速度変動量を補正する偏差補正手段を含むことを特徴とする内燃機関の失火検出装置。
【請求項１７】
内燃機関出力軸の回転に応じた回転角度信号に基づき同機関出力軸の気筒別回転角速度変動量を求め、該求めた気筒別回転角速度変動量と所定の失火判定値とを比較して当該機関の失火発生を検出する内燃機関の失火検出装置において、
前記機関出力軸の気筒別回転角速度変動量を同機関の運転条件の別に学習する学習手段と、
前記失火判定値、若しくは同判定値と比較される前記気筒別回転角速度変動量をその都度の対応する運転条件での学習値に基づき補正する補正手段とを具え、
前記学習手段は、当該機関の運転状態を監視し、同機関が失火判定不能な運転域にあるとき、線形補間によってそれら運転域での気筒別回転角速度変動量を学習し、
前記補正手段は、前記学習手段による学習値と機関出力軸の気筒別回転角速度変動量との偏差を測定し、該測定した偏差に応じて前記失火判定値、若しくは同判定値と比較される前記気筒別回転角速度変動量を補正する偏差補正手段を含むことを特徴とする内燃機関の失火検出装置。
【請求項１８】
請求項１５〜１７記載の何れかに記載の内燃機関の失火検出装置において、
前記学習手段は、前記機関出力軸の気筒間回転角度偏差を求め、該求めた気筒間回転角度偏差を同機関の気筒並びに運転条件の別に学習するものであり、
前記補正手段は、同機関のその都度の対応する気筒並びに運転条件での学習値に基づき前記気筒間回転角度偏差を補正して同機関出力軸の気筒別回転角速度を求め、該求めた気筒別回転角速度の推移に基づいて前記失火判定値と比較される気筒別回転角速度変動量を演算するものであることを特徴とする内燃機関の失火検出装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、内燃機関に発生した失火を検出する内燃機関の失火検出装置に関し、特にクランク角速度に偏差を有する装置にあってその失火検出精度の向上を図る装置に関する。
【０００２】
【従来の技術】
内燃機関にあっては一般に、ある気筒の爆発行程において失火が発生すると、そのときのクランク角速度、すなわち機関出力軸であるクランク軸の回転角速度は小さくなる。このため、こうしたクランク角速度の変化を監視することで、それら気筒毎の失火発生の有無を検出することができるようになる。
【０００３】
ただし通常、各気筒毎に異なる燃焼量の差による影響、或いはクランク角度を検出するセンサの気筒間公差等により、それら各気筒において正常に点火されている場合であっても、その測定されるクランク角速度は変化する。すなわち、該測定されるクランク角速度の遅い気筒にあっては、正常に点火されているにも拘わらず失火した旨誤判断される虞がある。
【０００４】
そこで従来は、
（イ）失火の有無による影響のない燃料カット時に、各気筒間におけるクランク角速度の偏差を求め、この求めた偏差に基づいて燃料噴射時のクランク角速度に対する失火判定値を補正する（例えば特開平４−２６５４７５号公報参照）。
（ロ）常時、各気筒間におけるクランク角速度の偏差を求めるとともに、それら求めた偏差が異なる運転条件において同一となったとき正常点火されているものとみなし、そのとき求めた偏差によってクランク角速度を補正する（例えば特開平４−１１０６３２号公報参照）。
等々、失火時以外の気筒間クランク角速度偏差（回転角度偏差）を学習し、失火判定時に、それら学習した偏差に基づき判定値、或いはクランク角速度を補正することによって、同失火検出にかかる精度を向上させるようにしている。
【０００５】
【発明が解決しようとする課題】
このように、失火時以外の気筒間クランク角速度偏差（回転角度偏差）を学習することで、上記気筒毎に異なる燃焼量の差による影響、或いはクランク角度を検出するセンサの気筒間公差等も確かに吸収されるようにはなる。
【０００６】
しかし、こうした各気筒間のクランク角速度偏差（回転角度偏差）は、例えば図１３に、６気筒内燃機関を例にとって、その第１、第４気筒グループに対する第２、第５気筒グループ、並びに第３、第６気筒グループの角度公差を例示するように、内燃機関の回転速度等、同機関の運転条件によっても変化する。
【０００７】
したがって、単に失火時以外の気筒間クランク角速度偏差（回転角度偏差）を学習したからといって、内燃機関の全ての運転条件において上記気筒毎に異なる燃焼量の差による影響やクランク角度を検出するセンサの気筒間公差等が完全に除去されるとは限らない。
【０００８】
しかも、上記従来の（イ）として例示した方法にあっては、燃料カットされるまでは、上記偏差学習が行われないために正常な失火検出が不可能であり、また学習が行われたとしても、その学習値自体がこうした機関の運転条件はおろか、燃焼による本来の気筒間クランク角速度偏差を考慮したものではないために、該失火の有無についての判定結果そのものに疑問が残る。
【０００９】
一方、上記従来の（ロ）として例示した方法にあっても、こうした機関の運転条件によって変化する気筒間クランク角速度偏差、すなわち上記気筒毎に異なる燃焼量の差による影響やクランク角度を検出するセンサの気筒間公差等についてはこれを完全に除去することはできない。
【００１０】
なお、上記クランク角度を検出するセンサは通常、被検出部となる突起等を有して機関のクランク軸に装着されるロータと、このロータに近接して配設される電磁ピックアップとを具えて構成されるが、同センサが気筒間におけるクランク角速度偏差を生む要因としては、通常考えられる
・「ロータ被検出部の製造公差」
以外に、
・「ロータ被検出部と電磁ピックアップとの間のエアギャップのばらつき」
などもある。
【００１１】
すなわち同センサにあっては、上記ロータ被検出部の通過に伴って電磁ピックアップに誘起される交流信号を適宜の波形整形回路に取り込んで２値信号に変換し、この変換した２値信号の論理レベルが反転されるタイミングに応じて気筒毎の回転時間或いは回転角速度を求めるようにしている。なおこのとき、上記誘起される交流信号のレベルは上記ロータ被検出部と電磁ピックアップとの間のエアギャップによって変化し、また上記２値信号の論理レベルが反転されるタイミングはこの交流信号のレベルによって変化する。このため、上記エアギャップが気筒毎に異なると、この２値信号の論理レベルが反転されるタイミングにも偏差が生じることとなる。そしてこの偏差が上述した機関の運転条件（回転速度）に応じて更に変化するようになる。
【００１２】
この発明は、こうした実情に鑑みてなされたものであり、内燃機関に発生した失火を検出する精度を向上せしめることを目的とし、特に、内燃機関の運転条件に拘わらず、常に高い精度にて当該機関に発生した失火を検出することのできる内燃機関の失火検出装置を提供することを目的とする。
【００１３】
またこの発明は、空燃比センサの出力を用いて、高い精度にて内燃機関に発生した失火を検出することのできる内燃機関の失火検出装置を提供することを目的とする。
【００１４】
【課題を解決するための手段】
こうした目的を達成するため、この発明では、気筒別のクランク角速度偏差（機関出力軸の回転角速度変動量）を機関の運転条件の別に学習するようにしている。
【００１５】
すなわち、請求項１記載の発明において、学習手段は、機関出力軸の気筒別回転角速度変動量を同機関の運転条件の別に学習する。なおここで、回転角速度変動量は必ずしもそれ自身でなくともよく、それに相当する値、例えば請求項２に記載のように回転角度偏差であってもよい。更に、この回転角度偏差に相当する値、或いは回転所要時間偏差などもこの回転角速度変動量に相当する値として用いることができる。
【００１６】
何れにしろ、同請求項１記載の発明によるように、気筒別回転角速度変動量（若しくは該角速度変動量に相当する値）と所定の失火判定値とを比較して当該機関の失火発生を検出する際、補正手段を通じてそれら失火判定値若しくは気筒別回転角速度変動量（若しくは該角速度変動量に相当する値）をその都度の対応する運転条件での学習値に基づき補正するようにすれば、同機関の運転条件に拘わらず、失火検出精度が高く維持されるようになる。
ところで、上記学習手段においてその学習値をより信頼性の高い値に維持するためには、当該機関が正常点火されているか否かを判断し、正常点火されているときにのみ上記学習を実行することが望ましい。
こうした構成を採用することにより、当該機関が正常点火されていない旨判断される場合、上記学習の実行は禁止され、同機関の当該運転条件に対応した学習値の信頼性も好適に維持されるようになる。
また、発明者等の実験によれば、内燃機関の特性として、機関本体の振動等により、ある特定の回転速度においてクランク角偏差が著しく不均一となるいわゆる特異点が生じることが確認されている。その原因としては、機関本体の振動により、クランク角度を検出するための電磁ピックアップの取り付け腕（ステー）が共振し、同ピックアップとロータ被検出部との位置関係が変化することなどが考えられる。
そして、このような特異点が生じる場合、クランク角偏差についての前記運転条件別の公差学習を行い、それ以外の運転領域ではそれら公差学習値からの直線補間によってその角度公差を求めたとしても、該特異点を含む当該角度公差特性を正確に角速度変動量若しくはその相当値に反映させることはできず、ひいてはそれら値と前記失火判定値との比較のもとに行われる失火判定についての誤判定をも招きかねなくなる。
そのような場合、請求項１記載の発明によるように、
・前記補正手段は、前記学習手段による学習値と機関出力軸の気筒別回転角速度変動量との偏差を測定し、該測定した偏差に応じて前記失火判定値、若しくは同判定値と比較される前記気筒別回転角速度変動量を補正する偏差補正手段を含む。
といった構成が、上記特異点による影響を回避する上で有効となる。
すなわち、上記特異点が生じる場合であっても、それに起因する公差学習値との偏差分が上記態様で補正されることにより、該特異点が失火判定に及ぼす影響は好適に相殺されるようになる。
【００１７】
また、請求項２記載の発明のように、上記回転角速度変動量に相当する値として回転角度偏差を用いたときには、補正手段を、
・内燃機関のその都度の対応する気筒並びに運転条件での学習値に基づき気筒間回転角度偏差を補正して同機関出力軸の気筒別回転角速度を求め、該求めた気筒別回転角速度の推移に基づいて前記失火判定値と比較される気筒別回転角速度変動量を演算するもの。
として構成することが好ましい。
【００１８】
こうした構成とすれば、近年のマイクロコンピュータ支援による失火検出装置を構築する上で、その学習構造、並びに補正（気筒別回転角速度及び気筒別回転角速度変動量の演算）構造を極めて演算効率の高いものとすることができるようにもなる。
【００２１】
なお、同機関が正常点火されているか否かを判断するための構成としては以下の構成がある。例えば３６０°ＣＡ（クランク角）差分法、すなわち失火検出対象となる気筒及びその隣接気筒の回転角速度差分を３６０°ＣＡ離れた気筒の同差分から差し引いた２階差分法を用いた失火判定が可能である場合には、請求項３記載の発明によるように、
・得られた機関出力軸の気筒別回転角速度変動量が仮の失火判定値以下であることに基づいて当該機関が正常点火されていることを判断する。といった構成が有効である。
【００２２】
因みに、上記３６０°ＣＡ差分法によれば、機関の出力軸回転角度（クランク角度）を検出するセンサの３６０°ＣＡ離れた気筒間のばらつきは好適に相殺される。このため、３６０°ＣＡ離れた気筒同士が失火している場合を含まない状態の失火が発生しているような場合には、該請求項３記載の発明の構成を通じて簡単且つ確実にその旨を判断することができるようになる。そして、当該機関が正常点火されていない旨判断される場合、上記学習の実行は禁止され、同機関の当該運転条件に対応した学習値の信頼性も好適に維持されるようになる。
【００２３】
また、特にこうした３６０°ＣＡ差分法を採用する場合には、請求項４記載の発明によるように、
・失火検出対象となる気筒及びその隣接気筒の回転角度差分から３６０゜ＣＡだけ後の気筒及びその隣接気筒の回転角度差分を差し引いた２階差分によって前記回転角度信号に基づき求めた機関出力軸の気筒別回転角速度変動量が仮の失火判定値以下であるか否かを判断する。といった構成がＳ／Ｎ（信号／雑音）比の向上を図る上で望ましい。
【００２４】
すなわち、ある気筒において失火が発生した場合、機関出力軸の角速度（クランク角速度）は通常、その後徐々に正常な角速度に戻るようになる。このため、こうして３６０゜ＣＡだけ後の（未来の）気筒及びその隣接気筒の回転角度差分との２階差分をとるようにすることで、失火発生の際には機関出力軸の気筒別回転角速度変動量としてより大きな値が得られるようになる。
【００２５】
一方、上記３６０°ＣＡ差分法では失火の判定が不可能である場合、すなわち３６０°ＣＡ離れた気筒同士が共に失火している場合（以下これを３６０°ＣＡ対向気筒連続失火という）には、請求項５記載の発明によるように、
・空燃比フィードバック制御の実行中、その空燃比補正係数と同補正係数の平均値との和、或いは空燃比補正係数の学習制御が実施されている場合には空燃比補正係数と同補正係数の学習値との和が所定の値よりもリーン側にないことに基づいて当該機関が正常点火されていることを判断する。といった構成が有効となる。なおここで、空燃比補正係数及びその平均値の和、若しくは空燃比補正係数と同補正係数の学習値との和と比較される上記所定の値とは、空燃比センサの特性や内燃機関個々の機差等による初期公差であってよい。
【００２６】
このような構成により、３６０°ＣＡ対向気筒連続失火によって上記３６０°ＣＡ差分法では失火の判定が不可能であった場合でも、当該機関の失火の有無についてこれを的確に判断することができるようになる。そしてこの場合も、機関が正常点火されていない旨判断される場合には、上記学習の実行が禁止され、同機関の当該運転条件に対応した学習値の信頼性は好適に維持される。
【００２７】
ところで、請求項５記載の発明の上記構成では、空燃比のフィードバック制御が実行中であることが大前提となる。しかし、例えば高負荷燃料増量中など、こうしたフィードバック制御が行われない場合であっても、当該機関が正常点火されているか否かについての判断が行われることが望ましい。
【００２８】
そしてそのような場合には、請求項６記載の発明によるように、
・空燃比センサの活性時、その出力が所定期間以上リーン側にないことに基づいて当該機関が正常点火されていることを判断する。といった構成、また特に、空燃比センサとして酸素センサが用いられる場合には、請求項７記載の発明によるように、・酸素センサの活性時、その出力周期が所定範囲内であること（所定の値よりも低くないという意味をも含む）に基づいて当該機関が正常点火されていることを判断する。といった構成、また更に、空燃比センサとしてリニア空燃比センサが用いられる場合には、請求項８記載の発明によるように、
・リニア空燃比センサの出力（同出力の平均値や平滑化した値をも含む）が所定以上リーン側にないことに基づいて当該機関が正常点火されていることを判断する。といった構成が有効となる。
【００２９】
すなわち、酸素センサやリニア空燃比センサ等の空燃比センサにあってはその活性時、当該機関に失火が発生すると、
・その出力がリーン側に固定される。
といった状態を示すようになり、また特に、同空燃比センサが酸素センサである場合には、
・その出力周期が極端に短くなる。
といった状態を示すようになり、そして同空燃比センサがリニア空燃比センサである場合には、
・その出力が全体的にリーン側へのオフセットを持つようになる。
といった状態を示すようになることが発明者等によって確認されている。
【００３０】
そこで、上記請求項６〜８記載の発明の構成によって、それぞれこれら各状態を監視することで、空燃比フィードバック制御が行われていない状態においても当該機関の失火の有無を判断することができるようになる。そしてこの場合も、同機関が正常点火されていない旨判断される場合には、上記学習の実行が禁止され、同機関の当該運転条件に対応した学習値の信頼性が好適に維持されるようになる。
【００３１】
また一方、こうした学習値についての信頼性の維持を図る上では、上記学習手段に、請求項９記載の発明によるように、・更新しようとする値とそれまでの学習値との差が所定以上に大きいときには、その更新しようとする値が複数回連続してほぼ同じ値となるときに限り、その値による学習値の更新を許可する。といった学習アルゴリズムを採用することが有効である。このような学習アルゴリズムによれば、偶然に求まった値によって誤った学習が行われることもなく、それら学習値の信頼性が更に向上されるようになる。
【００３２】
他方、同学習手段については更に、請求項１０記載の発明によるように、
・当該機関の運転状態が同機関出力軸の大きな回転変動を招く状態にあるとき、学習の実行を中止する。といった構成とすること、或いは請求項１１記載の発明によるように、
・当該機関が失火判定不能な運転域にあるとき、学習の実行を中止する。といった構成とすることも有効である。これらの運転状態或いは運転域において学習の実行を中止することで、前記学習値の信頼性も自ずと高く維持されるようになる。
【００３３】
なお、「機関出力軸の大きな回転変動を招く運転状態」としては、例えば急加速や急減速等の過渡状態、シフトチェンジ状態、燃料カット時や復帰時、始動時や電気負荷投入時、アイドル状態、パージ制御状態、ＥＧＲ（排気還流制御）実行中、可変吸気実行中、等々がある。
【００３４】
また、「失火判定不能な運転域」としては、例えば軽負荷運転域や高回転域がある。
【００４０】
また請求項１〜１１の場合、請求項１２記載の発明によるように、
・前記偏差補正手段は、前記偏差の測定に際し、前記学習手段による学習値と機関出力軸の気筒別回転角速度変動量との最大偏差を同機関の運転条件の別に学習する。
といった構成が、当該補正に必要とされるメモリ容量を最小限に抑える上で有効となる。ここでも、回転角速度変動量が必ずしもそれ自身でなくともよいことは上記請求項１記載の発明と同様である。
【００４１】
また、更にこのとき、請求項１３記載の発明のように、偏差補正手段は、一学習値に対する運転条件が一通り運転されたと判断されたとき、最大偏差を運転条件の学習値として更新するようにしてもよい。
【００４２】
また、請求項１４記載の発明のように、偏差補正手段による偏差の学習が完了するまで失火検出を実行しないようにしてもよく、このような構成を採用することにより、クランク角速度偏差による失火の誤判定を抑制することができるようにもなる。
【００４８】
【発明の実施の形態】
図１に、この発明にかかる内燃機関の失火検出装置についてその一実施形態を示す。
【００４９】
この実施形態では、内燃機関として６気筒の内燃機関を対象とし、該６気筒の内燃機関に発生した失火を検出する装置について示す。
すなわち、同図１に示すこの実施形態の装置おいて、内燃機関１は、上記６気筒からなる内燃機関である。
【００５０】
この内燃機関１には吸気管２が設けられ、図示しないエアクリーナから導入された吸入空気は、該吸気管２を通じて同機関１に取り込まれるようになる。また、この吸気管２には吸気管圧力センサ３が設けられ、この吸気管圧力センサ３を通じて吸気管２内の圧力ＰＭが逐次検出される。この検出される吸気管２内の圧力ＰＭは、内燃機関１の運転状態を示す１パラメータとして、後述する電子制御装置９に取り込まれるようになる。
【００５１】
一方、内燃機関１の図示しないクランク軸には、同クランク軸の所定クランク角毎に回転信号ＮＥを出力する回転角センサ５が設けられている。同機関１の回転数等は、この回転角センサ５から出力される回転信号ＮＥに基づいて算出されることとなる。そしてこの回転信号ＮＥも、内燃機関１の運転状態を示す１パラメータとして、後述する電子制御装置９に取り込まれるようになる。
【００５２】
また、内燃機関１には、その各気筒に対する点火時期や点火順序等を制御するためのディストリビュータ７が設けられ、該ディストリビュータ７には更に、それら各気筒を判別するための基準位置信号ＣＹＬを出力する基準位置センサ６が内蔵されている。この基準位置センサ６では、同機関１の例えば第１気筒のピストン１３が最上部、すなわち圧縮上死点（＃１ＴＤＣ）に達する毎に、上記基準位置信号ＣＹＬを同じく電子制御装置９に対して出力する。なお、ディストリビュータ７自体は通常、内燃機関１からの回転動力を得て、その（１／２）の回転速度で回転する。
【００５３】
また、内燃機関１の冷却水路には、同水路を循環する冷却水の温度を検出するための水温センサ８が設けられ、排気管１４には、燃焼ガスの酸素濃度に基づき空燃比のリッチ（Ｒ）／リーン（Ｌ）を検出する酸素（Ｏ2 ）センサ１５が設けられている。これら水温センサ８を通じて検出される冷却水の温度、並びに酸素センサを通じて検出される空燃比のリッチ（Ｒ）／リーン（Ｌ）を示す信号も、機関１の運転状態を示すパラメータとして電子制御装置９に取り込まれる。
【００５４】
これら水温センサ８や酸素センサ１５をはじめ、上述した吸気管圧力センサ３、回転角センサ５、及び基準位置センサ６による各検出信号が取り込まれる電子制御装置９は、同図１に併せ示されるように、ＣＰＵ（中央演算処理装置）９ａをはじめ、制御プログラムや演算処理に必要とされる制御定数等を記憶しておくための読み出し専用メモリであるＲＯＭ９ｂ、演算データ等を一時記憶するいわゆるデータメモリとしてのＲＡＭ９ｃ、図示しないバッテリを通じてその記憶内容がバックアップされるバックアップＲＡＭ９ｄ、及び外部装置との間で信号を入出力処理するためのＩ／０ポート９ｅを有して構成されている。
【００５５】
この電子制御装置９では、大きくは
（イ）上記センサによる各種検出信号に基づき、内燃機関１の燃料系及び点火系の最適な制御量を演算して、燃料噴射手段であるインジェクタ１０、或いは点火手段であるイグナイタ１１等を的確に制御するための制御信号を出力する。
（ロ）同センサによる各種検出信号に基づき、内燃機関１の各気筒において失火が発生したか否かを検出する。
といった処理を実行する。なお、同電子制御装置９において、上記（イ）のインジェクタ１０の駆動に際しては、酸素センサ１５の出力に基づく周知の空燃比フィードバック制御を併せ実行する。また、上記（ロ）の失火が発生したか否かの検出において、失火が発生した旨判断される場合には、例えば警告ランプ１２を点灯制御して失火の発生を運転者等に知らせるとともに、適宜のフェイルセーフ処理を実行する。
【００５６】
図２は、こうした電子制御装置９の主に失火検出装置としての構成を機能的に示したものであり、次に、この図２を併せ参照して、同実施形態にかかる失火検出装置の構成、並びに機能を更に詳述する。
【００５７】
同図２に示す電子制御装置９において、角速度変動量演算部９０１は、上記取り込まれる吸気管圧力ＰＭ、回転信号ＮＥ、及び基準位置信号ＣＹＬに基づき、気筒別にクランク軸の角速度（クランク角速度）ωｎ（ｎ＝１〜６）を求めるとともに、それら角速度ωｎから気筒間の角速度変動量Δω(n-α-1)を算出する部分である。
【００５８】
ここで、同実施形態にかかる装置のように、６気筒の内燃機関を対象とする場合には、上記クランク角速度ωｎの算出に際し、クランク軸が１２０°ＣＡ回転するのに要した時間Ｔ１２０ｉ（ｉは電子制御装置９による処理回数を示す）が用いられ、
ωｎ＝（ＫＤＳＯＭＧ−ΔθｎＬ）／Ｔ１２０ｉ    …（１）
といった態様で、同クランク角速度ωｎが算出される。
【００５９】
この（１）式において、係数ＫＤＳＯＭＧは、クランク軸の回転角速度（ｒａｄ：ラジアン）を求めるための変換係数であり、また値ΔθｎＬは、前記バックアップＲＡＭ９ｄ内の後述する気筒間クランク角偏差（公差）学習値メモリ９１０に格納されている同気筒間クランク角偏差についての学習値である。
【００６０】
角速度変動量演算部９０１ではこのように、気筒間クランク角偏差をその学習値ΔθｎＬにより補正してクランク角速度ωｎを求めるようにしている。
なお因みに、４気筒の内燃機関を対象とする場合には、同クランク角速度ωｎの算出に、クランク軸が１８０°ＣＡ回転するのに要する時間Ｔ１８０ｉが用いられる。
【００６１】
また、同角速度変動量演算部９０１において、上記角速度変動量Δω(n-α-1)の算出に際しては、これら求めたクランク角速度ωｎについての現在並びに過去の値に基づき、
Δω(n-α-1)＝（ω(n-α-2)−ω(n-α-1)）−（ω(n-1) −ωｎ）…（２）
といった２階差分演算を実行する。
【００６２】
この（２）式において、値ωｎは、今回求めたクランク角速度であり、値ω(n-1) は、前回求めたクランク角速度である。そして、これら値の差分（ω(n-1) −ωｎ）は、爆発行程が連続する気筒間での角速度変動量である。
【００６３】
また、同（２）式において、値αは、６気筒の内燃機関を対象とする同実施形態の装置の場合「０〜５」の値をとることができ、通常は、同角速度変動量Δω(n-α-1)として、失火によるそれら角速度の変動が表れ易い値が用いられる。同実施形態の装置にあっては、この値αとして「１」を採用している。因みに、４気筒の内燃機関を対象とする場合には、この値αとして「０〜３」の値が用いられることとなる。
【００６４】
なお、上記値ω(n-1) 以前の過去の値は、例えば前記ＲＡＭ９ｃ或いはバックアップＲＡＭ９ｄからなる角速度記憶部９０５に対して逐次更新登録されていく。６気筒の内燃機関を対象とする同実施形態の装置の場合、それら過去の値としては、最大でもω(n-1) 〜ω(n-5) の５つの値があれば足りる。
【００６５】
また、同図２に示す電子制御装置９において、失火判定部９０２は、上記算出された気筒間の角速度変動量Δω(n-α-1)と同角速度変動量に対応した所定の失火判定値ＲＥＦ１とを比較して、内燃機関１における失火発生の有無を判定する部分である。ここでは、気筒間の角速度変動量Δω(n-α-1)をそれら気筒の別に失火判定値ＲＥＦ１と比較し、同角速度変動量Δω(n-α-1)が失火判定値ＲＥＦ１を超えるとき、前記ＲＡＭ９ｃ内にある仮失火カウンタ９０４の当該気筒に対応するカウンタＣＭＩＳ(n-α-1)をインクリメントする。
【００６６】
こうした各気筒に対応したカウンタＣＭＩＳ(n-α-1)のインクリメントは、点火数カウンタ９０３を通じて計数される点火数が「１００」或いは「５００」等の所定の点火数に達するまで継続して実行される。そして例えば、点火数「１００」のうち、ある気筒に対応したカウンタＣＭＩＳ(n-α-1)の計数値が「３０」以上であったような場合、失火による触媒コンバータ（図示せず）のダメージ等が懸念されるため、該電子制御装置９では、前記警告ランプ１２の点灯制御等を通じてその旨を運転者に警報する。
【００６７】
一方、同電子制御装置９において、学習制御部９０６は、上記取り込まれる吸気管圧力ＰＭ、回転信号ＮＥ、及び基準位置信号ＣＹＬに基づいて気筒間のクランク角偏差（公差）を学習制御する部分である。
【００６８】
ここでは、上記６つの気筒のうち、第１気筒（＃１）に対する第２〜第６気筒（＃２〜＃６）のクランク角偏差を学習するものとし、大きくは、
（１）上記クランク軸が１２０°ＣＡ回転するのに要した時間Ｔ１２０ｉに基づいて上記第１気筒（＃１）に対する第２〜第６気筒（＃２〜＃６）のクランク角偏差Δθｎ（ｎ＝２〜６）を気筒別に、且つ機関１の運転条件の別に所定数ずつ積算する。
（２）機関１が正常点火されていることを条件に、上記クランク角偏差Δθｎの気筒別、且つ運転条件別の積算値を平均するとともに、その平均値に更になまし処理（徐変処理）を施して、これを同クランク角偏差についての学習値ΔθｎＬとする。
といった処理を実行する。
【００６９】
なお、上記（１）の処理における積算数の計数には積算カウンタ９０７が用いられ、クランク角偏差Δθｎの気筒別、且つ運転条件別の積算値の登録には前記ＲＡＭ９ｃ内の気筒間クランク角偏差（公差）積算値メモリ９０８が用いられる。また、上記学習値ΔθｎＬも、機関１の気筒別、且つ運転条件の別に求められるものであり、それら求められた学習値ΔθｎＬは、前記バックアップＲＡＭ９ｄ内の気筒間クランク角偏差（公差）学習値メモリ９１０に対して各々更新登録される。
【００７０】
その他、ラフロード（ＣＲＧ）カウンタ９１１及び仮失火カウンタ９１２は、同学習制御部９０６の上記（２）の処理において機関１が正常点火されているか否かについてのチェック結果が所定点火数分（例えば「１００」点火分）の計数値としてセットされるカウンタであり、また点火数カウンタ９０９は、こうした点火数を繰り返し計数するためのカウンタである。
【００７１】
図３に、同電子制御装置９の上記角速度変動量演算部９０１並びに失火判定部９０２を通じて実行される失火判定に際してのメインルーチンを、また図４に、同電子制御装置９の上記学習制御部９０６を通じて実行される公差学習制御ルーチンをそれぞれ示す。以下、これら図３及び図４を併せ参照して、同実施形態にかかる装置の失火判定動作を更に具体的に説明する。
【００７２】
はじめに、図３に示すメインルーチンについて説明する。
このメインルーチンは、前記回転信号ＮＥに基づき認識される内燃機関１のクランク角が６０°ＣＡとなる毎に、角度割り込み処理として起動される。
【００７３】
すなわちいま、クランク軸が６０°ＣＡ回転してこうした割り込み条件が成立すると、電子制御装置９はまず、ステップＳ１００にて、本ルーチンの前回の割り込み時刻と今回の割り込み時刻との偏差から、同クランク軸が６０°ＣＡ回転するのに要した時間Ｔ６０ｉを算出する。
【００７４】
こうして時間Ｔ６０ｉを算出した電子制御装置９は次いで、ステップＳ１０１にて、今回の割り込みタイミングが上死点後（ＡＴＤＣ）６０°ＣＡであるか否かを前記基準信号ＣＹＬに基づき判断する。そして、この割り込みタイミングが上死点後６０°ＣＡではない旨判断される場合、電子制御装置９は、ステップＳ１１０において、上記求めた時間Ｔ６０ｉをＴ６０ｉ-1とした後、本ルーチンを一旦終了する。なお、これら時間の添字ｉが同電子制御装置９による処理回数を示すことは前述した。
【００７５】
他方、同割り込みタイミングが上死点後６０°ＣＡである旨判断される場合、電子制御装置９は、ステップＳ１０２以降の失火判定処理を実行する。
すなわちこの場合、電子制御装置９は、ステップＳ１０２にて、前記基準信号ＣＹＬに基づき今回の気筒の気筒番号ｎを識別した後、ステップＳ１０３にて、上記求めた時間Ｔ６０ｉについての過去２回分のデータを累積して、クランク軸が１２０°ＣＡ回転するのに要した時間Ｔ１２０ｉを算出する。
【００７６】
そして、こうして時間Ｔ１２０ｉを算出した電子制御装置９は、前記クランク角偏差（公差）学習値メモリ９１０に対応する学習値、すなわち当該気筒の当該運転条件（回転速度ＮＥ・機関負荷ＰＭ）に対応する学習値ΔθｎＬ(NE,PM) が存在することを条件に（ステップＳ１０４）、次のステップＳ１０５にて、先の（１）式に基づき公差補正した、すなわち当該学習値ΔθｎＬに基づき補正した当該気筒のクランク角速度ωｎを算出する。なおここで、当該気筒の当該運転条件に対応する学習値が存在しない旨判断される場合には、例えば
ωｎ＝ＫＤＳＯＭＧ／Ｔ１２０ｉ                …（１）’
といった態様で、クランク角速度ωｎのみを算出して、これを前記角速度記憶部９０５に更新登録する（ステップＳ１０９）。
【００７７】
上記公差補正したクランク角速度ωｎを求めると、電子制御装置９は更に、次のステップＳ１０６にて、先の（２）式に基づき、気筒間クランク角速度変動量Δω(n-α-1)を算出する。そして、ステップＳ１０７にて、該算出したクランク角速度変動量Δω(n-α-1)と前記失火判定値ＲＥＦ１とを比較し、同クランク角速度変動量Δω(n-α-1)が失火判定値ＲＥＦ１を超えている旨判断される場合には、ステップＳ１０８にて、前記仮失火カウンタ９０４の当該気筒番号「ｎ−α−１」に対応するＣＭＩＳカウンタをインクリメントする。
【００７８】
他方、同クランク角速度変動量Δω(n-α-1)が失火判定値ＲＥＦ１を超えていなければ、仮失火カウンタ９０４をインクリメントすることなく、本ルーチンの最後のステップであるステップＳ１０９の処理に移行する。このステップＳ１０９では、前記角速度記憶部９０５に既に格納されているクランク角速度データに対し、ω(n-5) →廃棄、ω(n-4) →ω(n-5) 、ω(n-3) →ω(n-4) 、ω(n-2) →ω(n-3) 、ω(n-1) →ω(n-2) 、ωｎ→ω(n-1) といったかたちで更新処理が施される。
【００７９】
なお、仮失火カウンタ９０４のインクリメントが前記点火数カウンタ９０３を通じて計数される所定の点火数に達するまで継続して実行され、その都度の同仮失火カウンタ９０４による失火計数値に応じて前記警告ランプ１２の点灯制御等が行われるようになることは前述した通りである。
【００８０】
次に、図４に示す公差学習制御ルーチンについて説明する。
この公差学習制御ルーチンも、上記メインルーチンと同様、回転信号ＮＥに基づき認識される内燃機関１のクランク角が６０°ＣＡとなる毎に、角度割り込み処理として起動される。
【００８１】
そして、この公差学習制御ルーチンにおいても、クランク軸が６０°ＣＡ回転してこうした割り込み条件が成立する毎に、
（１）本ルーチン（公差学習制御ルーチン）の前回の割り込み時刻と今回の割り込み時刻との偏差から、クランク角が６０°ＣＡ回転するのに要した時間Ｔ６０ｉを算出する（ステップＳ２００）。
（２）今回の割り込みタイミングが上死点後（ＡＴＤＣ）６０°ＣＡであるか否かを前記基準信号ＣＹＬに基づき判断する（ステップＳ２０１）。
（３）この割り込みタイミングが上死点後６０°ＣＡではない旨判断される場合、上記求めた時間Ｔ６０ｉをＴ６０ｉ-1とした後、本ルーチンを一旦終了する（ステップＳ２１８）。
（４）同割り込みタイミングが上死点後６０°ＣＡである旨判断される場合には、前記基準信号ＣＹＬに基づき今回の気筒の気筒番号ｎを識別した後（ステップＳ２０２）、上記求めた時間Ｔ６０ｉについての過去２回分のデータを累積して、クランク軸が１２０°ＣＡ回転するのに要した時間Ｔ１２０ｉを算出する（ステップＳ２０３）。
といった処理が、電子制御装置９（学習制御部９０６）を通じて実行される。
【００８２】
こうして時間Ｔ１２０ｉを算出した電子制御装置９は次に、ステップＳ２０４にて、上記識別した気筒番号ｎが第１気筒（＃１）であるか否かを判断する。該識別した気筒番号ｎが第１気筒ではない旨判断される場合、電子制御装置９は、そのままステップＳ２１０の公差学習実行条件のチェック処理に移行する。
【００８３】
他方、同識別した気筒番号ｎが第１気筒である旨判断される場合には、次のステップＳ２０５にて、該第１気筒に対する第２〜第６気筒（＃２〜＃６）のクランク角偏差（気筒公差）時間ΔＴｎを算出する。
【００８４】
例えば、第１気筒に対する第２気筒のクランク角偏差時間ΔＴ#2は、
0003758236.tif 000002
として算出される。ここで、「（Ｔ１２０ｉ−Ｔ１２０ｉ-6）／６」項は、過渡補正項であり、気筒間のクランク角偏差時間の算出にこうした過渡補正項を加味することにより、例えば急加速時や急減速時等、内燃機関の運転条件による過渡的な回転変動増減の影響は好適に排除されるようになる。
【００８５】
同様にして、第１気筒に対する第３〜第６気筒のクランク角偏差時間ΔＴ#3〜ΔＴ#6は、それぞれ
ΔＴ#3＝｛（Ｔ１２０ｉ＋２×Ｔ１２０ｉ-6）／３｝−Ｔ１２０ｉ-4…（４）
ΔＴ#4＝｛（Ｔ１２０ｉ＋Ｔ１２０ｉ-6）／２｝−Ｔ１２０ｉ-3…（５）
ΔＴ#5＝｛（２×Ｔ１２０ｉ＋Ｔ１２０ｉ-6）／３｝−Ｔ１２０ｉ-2…（６）
ΔＴ#6＝｛（５×Ｔ１２０ｉ＋Ｔ１２０ｉ-6）／６｝−Ｔ１２０ｉ-1…（７）
として算出される。
【００８６】
なお、上記第１気筒の前回のクランク軸１２０°ＣＡ回転時間Ｔ１２０ｉ-6を含め、第２〜第６気筒のクランク軸１２０°ＣＡ回転時間Ｔ１２０ｉ-5〜Ｔ１２０ｉ-1は、上記ステップＳ２０３を通じて算出され、後のステップＳ２１７を通じて更新されている値が用いられる。
【００８７】
こうして第１気筒に対する第２〜第６気筒のクランク角偏差時間ΔＴｎを算出した電子制御装置９は次に、ステップＳ２０６にて、次式に基づき、それらクランク角偏差時間ΔＴｎをクランク角偏差Δθｎ、すなわち回転角度の偏差に変換する。ただし、次式（８）式において、ｎは、＃２〜＃６の５気筒分である。
Δθｎ＝ΔＴｎ×（１２０°ＣＡ／Ｔ１２０ｉ）    …（８）
この第１気筒に対する第２〜第６気筒のクランク角偏差Δθｎを求めると、同電子制御装置９では、次のステップＳ２０７にて、内燃機関１が現在、特定の運転条件下、例えば急加速や急減速等の過渡状態、シフトチェンジ状態、燃料カット時や復帰時、始動時や電気負荷投入時、アイドル状態、パージ制御状態、ＥＧＲ（排気還流制御）実行中、可変吸気実行中等々、クランク軸の大きな回転変動を招く特定の運転状態、或いは軽負荷運転域や高回転域等、いわゆる失火判定不能な運転域にないか否かをその都度の運転情報に基づき判断する。そして、同機関１がこうした特定の運転条件下にないことを条件に、ステップＳ２０８にて、各気筒別、且つ運転条件の別に上記求めた（変換した）クランク角偏差Δθｎを積算し、続くステップＳ２０９にて、前記積算カウンタ９０７をインクリメントする。
【００８８】
すなわち、内燃機関１が上記急加速や急減速等の過渡状態、シフトチェンジ状態、燃料カット時や復帰時、始動時や電気負荷投入時、等々の運転条件下にあった場合には、上記クランク角偏差Δθｎも、同機関１の正常な燃焼状態において求められた値ではない可能性が高い。そこで、内燃機関１のそのような運転条件下では、上記求めたクランク角偏差Δθｎについての積算処理を行わないようにしている。なお後述するように、同実施形態にかかる装置にあっては、この積算処理されるいわば正常なクランク角偏差Δθｎのみが、後に実施される公差学習処理に供されることとなる。
【００８９】
また、上記ステップＳ２０８におけるクランク角偏差Δθｎの各気筒別、且つ運転条件別の積算処理は前述のように、前記気筒間クランク角偏差（公差）積算値メモリ９０８に対して行われる。この積算値メモリ９０８のメモリ構造を図５に例示する。
【００９０】
この図５に示されるように、上記気筒間クランク角偏差（公差）積算値メモリ９０８は、第２〜第６気筒（＃２〜＃６）の別に、且つ機関１の運転条件である回転速度（ＮＥ）及び負荷（吸気管圧力ＰＭ）の別に、クランク角偏差Δθｎが積算登録される構造となっている。すなわち、本学習制御ルーチンの繰り返しの実行に基づき、同図５に示されるテーブルの各々には、それぞれ正常なクランク角偏差Δθｎが、「ΣΔθｎ(NE,PM) 」といったかたちで積算登録されるようになる。そして、前記積算カウンタ９０７は、こうして気筒間クランク角偏差（公差）積算値メモリ９０８に登録されたクランク角偏差ΣΔθｎ(NE,PM) の積算数をその計数値として示すこととなる。
【００９１】
こうしてクランク角偏差Δθｎの積算処理を行うと、電子制御装置９は次に、ステップＳ２１０にて、公差学習を行うべきか否か、その実行条件をチェックする。この実行条件のチェック処理については、後に図７及び図８を併せ参照して詳述する。
【００９２】
該公差学習実行条件についてのチェックを終えた電子制御装置９は、次のステップＳ２１１にて、前記点火数カウンタ９０９の計数値に基づき例えば「１００」点火等、所定の点火数が経過しているか否かを判断する。この結果、所定の点火数に達していない旨判断される場合には、ステップＳ２１６に移行して、前記点火数カウンタ９０９をインクリメントし、ステップＳ２１７にて、前記各気筒のクランク軸１２０°ＣＡ回転時間Ｔ１２０ｉの値を
Ｔ１２０ｉ-6 ＝Ｔ１２０ｉ-5                    …（９）
Ｔ１２０ｉ-5 ＝Ｔ１２０ｉ-4                    …（１０）
Ｔ１２０ｉ-4 ＝Ｔ１２０ｉ-3                    …（１１）
Ｔ１２０ｉ-3 ＝Ｔ１２０ｉ-2                    …（１２）
Ｔ１２０ｉ-2 ＝Ｔ１２０ｉ-1                    …（１３）
Ｔ１２０ｉ-1 ＝Ｔ１２０ｉ                      …（１４）
といったかたちで更新した後、本ルーチンを一旦抜ける。
【００９３】
他方、所定の点火数を経過している旨判断される場合には、ステップＳ２１２にて、上記公差学習実行条件についてのチェック結果に基づき、同実行条件の成否判定を行う。この公差学習実行条件の成否判定処理については、後に図１１を併せ参照して詳述する。
【００９４】
電子制御装置９は次いで、ステップＳ２１３にて、該公差学習実行条件の成否判定が公差学習実行の「可」を示すものであるか「不可」を示すものであるかを判断する。そして、同成否判定が「公差学習実行不可」を示すものであった場合には、上記ステップＳ２１６及びステップＳ２１７の処理を実行して本ルーチンを一旦抜け、「公差学習実行可」を示すものであったときに、ステップＳ２１４にて公差学習を実行する。
【００９５】
この公差学習は、前記バックアップＲＡＭ９ｄ内の気筒間クランク角偏差（公差）学習値メモリ９１０に対して行われる。この学習値メモリ９１０のメモリ構造を図６に例示する。
【００９６】
この図６に示されるように、該学習値メモリ９１０も、上記気筒間クランク角偏差（公差）積算値メモリ９０８（図５）同様、第２〜第６気筒（＃２〜＃６）の別に、且つ機関１の運転条件である回転速度（ＮＥ）並びに負荷（吸気管圧力ＰＭ）の別に、前記クランク角偏差についての学習値ΔθｎＬが更新登録される構造となっている。
【００９７】
そしてここでは、上述した積算処理（ステップＳ２０８）において気筒間クランク角偏差（公差）積算値メモリ９０８に登録されている気筒別、運転条件別のクランク角偏差積算値ΣΔθｎ(NE,PM) を読み込んでその平均値Δθｎ(NE,PM)_AVを
Δθｎ(NE,PM)_AV ＝ΣΔθｎ(NE,PM) ／（積算カウンタ計数値）…（１５）
として求めるとともに、該求めたクランク角偏差平均値Δθｎ(NE,PM)_AVと上記学習値メモリ９１０内の当該気筒、並びに当該運転条件に対応する同クランク角偏差についての学習値ΔθｎＬ(NE,PM) とから、なまし（徐変）演算
0003758236.tif 000003
を実行して、新たな学習値ΔθｎＬ(NE,PM) を求める。そして、この新たに求めた学習値ΔθｎＬ(NE,PM) を、上記学習値メモリ９１０の該当する欄に更新登録する。
【００９８】
なお、上記（１６）式において、値「８」は、なまし（徐変）係数であり、該値「８」以外にも処理系に応じた任意の値を採用することができることは云うまでもない。
【００９９】
また、上記学習値メモリ９１０において、その学習値ΔθｎＬ(NE,PM) の更新が行われるのは、上記積算値メモリ９０８にも対応するクランク角偏差積算値ΣΔθｎ(NE,PM) が存在している場合に限られる。すなわち、対応するクランク角偏差積算値ΣΔθｎ(NE,PM) が存在していなかった場合、その平均値Δθｎ(NE,PM)_AVも得られないことから、上記（１６）式のなまし（徐変）演算自体、その実行が不可能となる。
【０１００】
公差学習制御ルーチンにおいて、こうして公差学習を実行した電子制御装置９は、次のステップＳ２１５にて、前記積算値メモリ９０８、前記積算カウンタ９０７、及び前記点火数カウンタ９０９をそれぞれリセットする。そして次の学習に備えるべく、上述したステップＳ２１６並びにステップＳ２１７の処理を実行した後、本ルーチンを一旦抜ける。
【０１０１】
電子制御装置９（学習制御部９０６）を通じてこのような機関１の運転条件に応じた学習処理が行われることにより、前記メインルーチン（図３）において同学習値ΔθｎＬ(NE,PM) に基づき公差補正された値として算出されるクランク角速度ωｎの値も自ずとその信頼性が高められることとなる。そしてひいては、その後の失火判定に際しても、その判定精度は自ずと高いものとなる。
【０１０２】
次に、図７及び図８を参照して、上記公差学習制御ルーチンにおけるステップＳ２１０の処理として実行される公差学習実行条件のチェック処理について説明する。
【０１０３】
この図７及び図８に示す公差学習実行条件のチェックルーチンにおいて、電子制御装置９（学習制御部９０６）は、これまで同様、
（１）前回の割り込み時刻と今回の割り込み時刻との偏差から、クランク角が６０°ＣＡ回転するのに要した時間Ｔ６０ｉを算出する（ステップＳ３００）。
（２）今回の割り込みタイミングが上死点後（ＡＴＤＣ）６０°ＣＡであるか否かを前記基準信号ＣＹＬに基づき判断する（ステップＳ３０１）。
（３）この割り込みタイミングが上死点後６０°ＣＡではない旨判断される場合、上記求めた時間Ｔ６０ｉをＴ６０ｉ-1とした後、本ルーチンを一旦終了する（ステップＳ３１９）。
（４）同割り込みタイミングが上死点後６０°ＣＡである旨判断される場合には、前記基準信号ＣＹＬに基づき今回の気筒の気筒番号ｎを識別した後（ステップＳ３０２）、上記求めた時間Ｔ６０ｉについての過去２回分のデータを累積して、クランク軸が１２０°ＣＡ回転するのに要した時間Ｔ１２０ｉを算出する（ステップＳ３０３）。
といった処理を実行した後、次のステップＳ３０４にて、先の（１）’式に基づき気筒毎のクランク角速度ωｎを算出する。そして、更に次のステップＳ３０５にて、それら算出したクランク角速度ωｎに基づき、３６０°ＣＡ差分法、すなわち失火検出対象となる気筒及びその隣接気筒の回転角速度差分を３６０°ＣＡ離れた気筒の同差分から差し引いた２階差分
Δωｎ＝（ωｎ-1 − ωｎ）−（ωｎ-4 −ωｎ-3 ）  …（１７）
を用いてクランク角速度変動量Δωｎを算出する。
【０１０４】
こうしてクランク角速度変動量Δωｎを算出した電子制御装置９は次に、ステップＳ３０６にて、このクランク角速度変動量Δωｎと同変動量Δωｎに対して予め設定されている失火判定値ＲＥＦ２とを比較する。そして、このクランク角速度変動量Δωｎが失火判定値ＲＥＦ２を超えている旨判断される場合には、ステップＳ３０７にて、前記仮失火カウンタ９１２のうちのＣＭＦカウンタをインクリメントして、ステップＳ３０８の処理に移行する。
【０１０５】
他方、ステップＳ３０６において、クランク角速度変動量Δωｎが失火判定値ＲＥＦ２以下である旨判断される場合には、そのままステップＳ３０８の処理に移行する。
【０１０６】
ステップＳ３０８においては、上記クランク角速度変動量Δωｎと同変動量Δωｎに対して予め設定されているラフロード（悪路走行）判定値ＲＥＦ３（＜ＲＥＦ２）とを更に比較する。
【０１０７】
ラフロードにあっては一般に、過渡的な回転変動が起こりやすい状況にあるため、こうした状況が継続される場合にも、公差学習は実行すべきではない。
そこで、電子制御装置９は、同ステップＳ３０８において、クランク角速度変動量Δωｎが該ラフロード判定値ＲＥＦ３を超えていて且つ上記失火判定値ＲＥＦ２以下である旨判断される場合には、現在ラフロードを走行中であるとして、ステップＳ３０９にて前記ラフロード（ＣＲＧ）カウンタ９１１をインクリメントする。
【０１０８】
他方、同ステップＳ３０８において、クランク角速度変動量Δωｎが上記ラフロード判定値ＲＥＦ３以下である旨判断される場合には、そのままステップＳ３１０の処理に移行する。
【０１０９】
この公差学習実行条件チェックルーチンにおいて、ステップＳ３１０（図８）以降の処理は、上記３６０°ＣＡ差分法では失火の判定が不可能である３６０°ＣＡ対向気筒連続失火を検出するための失火判定処理である。引き続き、それら処理の詳細について説明する。
【０１１０】
上記ラフロード判定を終えた電子制御装置９は、次のステップＳ３１０にて、前記酸素（Ｏ2 ）センサ１５の出力に基づく空燃比フィードバック（Ｆ／Ｂ）制御の実行中であるか否かをまず判断する。
【０１１１】
因みに、こうしたフィードバック制御が実行されている状態にあって機関１に失火が発生している場合には、その空燃比フィードバック補正係数ｃｆｂと同補正係数の平均値ｃｆｂＡＶとの和が、上記酸素センサ１５の特性や内燃機関個々の機差などによる初期公差よりも大きい側（空燃比のリーン（Ｌ）側）にずれることが発明者等によって確認されている。
【０１１２】
そこで、電子制御装置９は、上記ステップＳ３１０にて空燃比フィードバック制御中である旨判断される場合、ステップＳ３１１にて、空燃比フィードバック補正係数ｃｆｂ及び同補正係数の平均値ｃｆｂＡＶの和と上記初期公差とを比較し、それら和が上記初期公差以上であるときには、失火が発生しているとして、ステップＳ３１２にて前記仮失火カウンタ９１２のうちのＣＯＦカウンタをインクリメントする。
【０１１３】
ところで、上記ステップＳ３１１の判定処理は、空燃比のフィードバック制御が実行中であることが大前提となるが、例えば高負荷燃料増量中など、こうしたフィードバック制御が行われない場合であっても、当該機関１が正常点火されているか否かについての判断が行われることが望ましい。
【０１１４】
因みに、前記酸素（Ｏ2 ）センサ１５にあっては、その活性時、内燃機関１に失火が発生すると、
（Ａ）その出力周期が極端に短くなる。
或いは
（Ｂ）その出力がリーン（Ｌ）側にへばりつく。
といった何れかの状態を示すようになることが発明者等によって確認されている。これら（Ａ）及び（Ｂ）の状態についての測定結果をそれぞれ図９及び図１０に示す。
【０１１５】
例えば、内燃機関１の失火に伴い、酸素センサ１５の出力周期が短くなる場合には、図９において「ＦＯ2 センサ出力」として示されるように、正常点火時の振幅周期（およそ０．５〜２Ｈｚ）に対して明らかに区別できるような短い周期（同図９に「ｃｓｇｔ」として示される点火周期程度）となる。
【０１１６】
なお、この図９は、空燃比フィードバック制御が実行されている状態における上記空燃比フィードバック補正係数ｃｆｂの推移についても併せ示しており、機関１に失火が発生した場合にこの空燃比フィードバック補正係数ｃｆｂと同補正係数の平均値ｃｆｂＡＶとの和が大きな値をとるようになることは、この図９によっても明らかである。
【０１１７】
一方、内燃機関１の高負荷燃料増量時（ＷＯＴ）には、同機関１の失火に伴い、酸素センサ１５の出力がリーン（Ｌ）側にへばりつくようになる。そしてこの場合には、図１０においてこれも「ＦＯ2 センサ出力」として示されるように、上述した正常点火時の振幅周期よりも十分長い時間に亘って、その出力がリーン（Ｌ）側に固定されるようになる。
【０１１８】
このように、上記酸素センサ１５が活性状態にあれば、その出力（Ｒ／Ｌ）を監視することで、内燃機関１の失火発生の有無を判定することができるようになる。
【０１１９】
図８に示す同公差学習実行条件チェックルーチンにおいて、ステップＳ３１３以降の処理は、こうした原理に基づいて酸素センサ１５の出力から内燃機関１の失火発生の有無を判定するための処理である。
【０１２０】
すなわち、上記ステップＳ３１０にて空燃比フィードバック制御中ではない旨判断した、或いは空燃比フィードバック制御中であったとしても上記ステップＳ３１１にて空燃比フィードバック補正係数ｃｆｂ及び同補正係数の平均値ｃｆｂＡＶの和が上記初期公差未満である旨判断した電子制御装置９は、ステップＳ３１３にて、上記酸素（Ｏ2 ）センサ１５が活性状態にあるか否かをまず判断する。そして、同酸素センサ１５が活性状態にあることを条件に、それぞれ
・その出力周期（振幅周期）が正常点火時の振幅周期Ｆｓよりも短いか否か（ステップＳ３１４）。
・そのリーン（Ｌ）側の出力時間が正常点火時のリーン側出力時間ＴLOW よりも長いか否か（ステップＳ３１６）。
といった比較を行い、同出力周期が正常点火時の振幅周期Ｆｓよりも短い旨判断される場合には、ステップＳ３１５にて前記仮失火カウンタ９１２のうちのＣＦカウンタをインクリメントし、同出力のリーン側出力時間が正常点火時のリーン側出力時間ＴLOW よりも長い旨判断される場合には、ステップＳ３１７にて前記仮失火カウンタ９１２のうちのＣＴカウンタをインクリメントする。
【０１２１】
こうして全ての項目についてのチェックを終えた電子制御装置９は、最後に、ステップＳ３１８にて、上記ステップＳ３０４において算出したクランク角速度ωｎをはじめとするそれら気筒毎のクランク角速度の値に対し、前述のようにω(n-5) →廃棄、ω(n-4) →ω(n-5) 、ω(n-3) →ω(n-4) 、ω(n-2) →ω(n-3) 、ω(n-1) →ω(n-2) 、ωｎ→ω(n-1) といった更新処理を施して、同公差学習実行条件チェックルーチンを抜ける。
【０１２２】
なお、こうした公差学習実行条件のチェックルーチンが、前記点火数カウンタ９０９の計数値に基づき、例えば「１００」点火等を経過するまで繰り返し実行されるようになることは公差学習制御ルーチン（図４）の説明において既述した通りである。
【０１２３】
次に、図１１を更に参照して、上記公差学習制御ルーチンにおけるステップＳ２１２の処理として実行される公差学習実行条件の成否判定処理について説明する。
【０１２４】
この図１１に示す公差学習実行条件の成否判定ルーチンは前述のように、公差学習制御ルーチン（図４）のステップＳ２１１において上記所定の点火数を経過している旨判断される場合に起動される。
【０１２５】
こうして公差学習実行条件の成否判定ルーチンが起動されると、電子制御装置９（学習制御部９０６）はまず、ステップＳ４００にて、前記仮失火カウンタ９１２を構成する各カウンタ（ＣＭＦカウンタ、ＣＯＦカウンタ、ＣＦカウンタ、及びＣＴカウンタ）の計数値が何れか１つでも「１」以上となっているか否か、或いは前記ラフロードカウンタ（ＣＲＧカウンタ）９１１の計数値が同計数値に対する所定のラフロード判定値ＫＲＧ以上となっているか否かを判断する。
【０１２６】
その結果、前記仮失火カウンタ９１２の計数値が何れか１つでも「１」以上となっている場合、或いは前記ラフロードカウンタ９１１の計数値が上記判定値ＫＲＧ以上となっている場合には、ステップＳ４０１にて、前記ＲＡＭ９ｃ内の適宜の領域に「公差学習実行不可」を示すフラグをセットする。
【０１２７】
他方、前記仮失火カウンタ９１２の計数値が何れも「０」であり、且つ前記ラフロードカウンタ９１１の計数値が上記判定値ＫＲＧ未満である場合には、ステップＳ４０２にて、同ＲＡＭ９ｃ内の適宜の領域に「公差学習実行可」を示すフラグをセットする。
【０１２８】
こうしてフラグ処理を終えると、同電子制御装置９は、前記仮失火カウンタ９１２並びにラフロードカウンタ９１１をリセットして、同公差学習実行条件の成否判定ルーチンを抜ける。
【０１２９】
公差学習制御ルーチン（図４）のステップＳ２１３において、電子制御装置９は、こうして処理した「公差学習実行可」を示すフラグ、或いは「公差学習実行不可」を示すフラグに基づいて前述した公差学習実行の「可」若しくは「不可」を判断することとなる。換言すれば、図７及び図８に示した公差学習実行条件のチェックルーチンにおいて、その全てのチェック項目が正常である場合にのみ、前記態様での公差学習、すなわちその学習値ΔθｎＬ(NE,PM) の更新が行われるようになる。そしてこのため、同学習値ΔθｎＬ(NE,PM) の信頼性も自ずと高く維持されるようになる。
【０１３０】
以上説明したように、同実施形態にかかる失火検出装置によれば、
（１）内燃機関１の気筒別、且つ、運転条件の別にクランク角偏差（気筒間角度公差）についての学習を行うようにしたことで、同機関１のその都度の気筒、並びに運転条件に応じた極めて正確なクランク角速度ωｎを算出することができるようになる。そしてこのため、それらクランク角速度ωｎの推移に基づき算出されるクランク角速度変動量Δω(n-α-1)も自ずと正確な値となり、該クランク角速度変動量Δω(n-α-1)と失火判定値ＲＥＦ１との比較のもとに行われる失火の判定精度も極めて高く維持されるようになる。
（２）３６０°ＣＡ差分法に基づき判定される失火はもとより、該３６０°ＣＡ差分法では失火の判定が不可能である３６０°ＣＡ対向気筒連続失火等についてもその発生の有無を判定することができるとともに、それら判定において正常な点火が確認された場合にのみ上記学習を実行するようにしたことから、学習値の信頼性も高く維持されるようになる。
（３）機関１が例えば急加速や急減速等の過渡状態、シフトチェンジ状態、燃料カット時や復帰時、始動時や電気負荷投入時、アイドル状態、パージ制御状態、ＥＧＲ（排気還流制御）実行中、可変吸気実行中等々、クランク軸の大きな回転変動を招く特定の運転状態にあるとき、或いは軽負荷運転域や高回転域等、いわゆる失火判定不能な運転域にあるときにも学習の実行を禁止するようにしているため、これによっても学習値の信頼性は高く維持される。
（４）前記（３）式〜（７）式によるように、気筒間のクランク角偏差時間ΔＴｎの算出に過渡補正項を加味したことで、例えば急加速時や急減速時等、機関１の運転条件による過渡的な回転変動増減の影響も上記学習値から好適に排除されるようになる。
等々、多くの優れた効果が得られるようになる。
【０１３１】
なお、同実施形態の装置にあっては、公差学習制御ルーチン（図４）のステップＳ２０４において第１気筒（＃１）を判別した際、この第１気筒と他の第２〜第６気筒（＃２〜＃６）との間の全てのクランク角偏差を求めるようにした。
【０１３２】
しかし、偶数気筒からなる内燃機関であれば、３６０°ＣＡ離れた気筒同士は同じロータ被検出部を通じてそのクランク角度が検出されるため、それら気筒間のクランク角偏差はそもそも小さい。
【０１３３】
したがって、これら３６０°ＣＡ離れた気筒同士を１組とし（６気筒の場合であれば３組となる）、それら組毎に気筒間の（組間の）公差学習を行う構成とすることもできる。このような構成によれば、電子制御装置９において必要とされる演算量やＲＯＭ、ＲＡＭ等のメモリ容量を大幅に削減することができるようになる。
【０１３４】
また、公差学習制御ルーチンの同ステップＳ２０４において判別する気筒は、第１気筒（＃１）に限らず、他の任意の気筒であってもよい。要は、特定の気筒（若しくは組）に対する他の気筒（若しくは組）のクランク角偏差が算出される構成でありさえすればよい。
【０１３５】
また、同実施形態の装置にあっては、同じく公差学習制御ルーチン（図４）のステップＳ２０８及びステップＳ２１４において、それぞれ図５及び図６に示される態様で、機関１の運転条件（回転速度ＮＥ，機関負荷ＰＭ）の別にクランク角偏差Δθｎを積算し、或いは学習するようにした。
【０１３６】
しかし、内燃機関の上記運転条件に鑑みた場合、図１２（ａ）及び（ｂ）に、第１、第４気筒グループに対するそれぞれ第２、第５気筒グループ、及び第３、第６気筒グループの機関負荷に対する回転変動公差を例示するように、機関負荷が変化しても、それら回転変動公差の傾向はほぼ一定となっている。
【０１３７】
したがって、図５及び図６に例示したメモリ構造においても、その運転条件として機関負荷の欄を削除し、気筒並びに回転速度の別に、上述したクランク角偏差Δθｎの積算、或いは学習が行われる構成とすることもできる。こうした構成によっても、電子制御装置９において必要とされる演算量やＲＯＭ、ＲＡＭ等のメモリ容量は大幅に削減されるようになる。
【０１３８】
また、上述したクランク角偏差Δθｎの積算、或いは学習を機関１の運転条件の別に行うにしろ、同機関１の高回転域ではそれら積算、或いは学習が行われる機会は少ない。そしてこのため、学習値が求まらず、失火が発生してもその旨を検出することができないこともある。
【０１３９】
しかし、先の図１３に例示したように、各気筒間のクランク角偏差（公差）には、回転速度が増加するとそれら公差もほぼ直線的に増加する傾向がある。
すなわち、機関１の例えば低回転域における頻度の高い２運転条件でそれら公差が学習されたときには、いわゆる線形補間を行うことによって、同機関１の高回転域での公差を割り出りだすことが可能となる。こうした原理に基づいて機関１の高回転域での公差を割り出し、該割り出した公差を学習するようにすれば、上記不都合も好適に解消されるようになる。
【０１４０】
また同原理によれば、機関１の回転変動が大きくなることを予想して公差学習実行条件から外した領域についても、上記線形補間によってそれら領域の公差を学習することができるようになる。
【０１４１】
また、内燃機関１において失火が発生した場合、その未燃ガスが排気管１４内で後燃えし、公差学習実行条件のチェックルーチン（図７、図８）においてその酸素（Ｏ2 ）センサ１５の出力に基づく正確な失火判定（ステップＳ３１４及びステップＳ３１６）が不能となることがある。
【０１４２】
しかし、上記実施形態の装置において、
・排気温センサを追加し、同センサを通じて検出される排気温度が所定温度以上となるときには学習の実行を禁止する。
或いは、
・高負荷状態での運転時等、後燃えが発生しやすい運転条件では学習の実行を禁止する。
といった構成を併せ具えるようにすれば、こうした不都合も好適に回避されるようになる。
【０１４３】
また、同実施形態の装置にあっては、上記酸素センサ１５の出力に基づいて空燃比のフィードバック制御を行うシステムを想定した。しかし、機関の燃焼ガスに基づき空燃比をリニアに検出するリニア空燃比センサを用い、該リニア空燃比センサの出力に基づいて同空燃比のフィードバック制御を行うシステムにあっては、このリニア空燃比センサの出力を利用して、公差学習実行条件チェックルーチン（図７、図８）における前記ステップＳ３１４及びステップＳ３１６の処理に相当する失火判定を行うこともできる。
【０１４４】
因みに、リニア空燃比センサの場合、当該機関に失火が発生すると、
（ａ）その出力がリーン側に変化する。
或いは
（ｂ）その出力が全体的にリーン側へのオフセットを持つようになる。
といった何れかの状態を示すようになる。したがってこの場合、前記学習制御部９０６としては、
・該リニア空燃比センサの出力が所定期間以上リーン側にあるとき前記ＣＦカウンタをインクリメントする。
・該リニア空燃比センサの出力の平均値が所定値以上リーン側にあるとき前記ＣＴカウンタをインクリメントする。
といった構成を採ることとなる。
【０１４５】
なお、こうした失火判定に寄与し得るセンサとしては、ＨＣ濃度センサなどもある。
また、同公差学習実行条件チェックルーチン（図７、図８）におけるチェック項目の選択、或いは組み合わせ等は任意であり、対象となるシステムの規模に応じて自由にそれら項目の選択、或いは組み合わせを行うことができる。もっとも、前述した項目の全てが選択されるとき、前記学習値の信頼性が最大となことは云うまでもない。
【０１４６】
また、同実施形態の装置にあって、上記公差学習実行条件のチェックルーチン（図７、図８）におけるステップＳ３０５のクランク角速度変動量Δωｎの算出には、前記（１７）式による３６０°ＣＡ差分法を用いるとした。
【０１４７】
しかし、ある気筒において失火が発生した場合、クランク角速度ωｎは通常、その後徐々に正常な角速度に戻るようになる。このため、上記３６０°ＣＡ差分法においても次式（１７）’式として示すように、
Δωｎ＝（ωｎ-1 − ωｎ）−（ωｎ+2 −ωｎ+3 ）  …（１７）’
といったかたちで、その後のクランク角速度「ωｎ+2」及び「ωｎ+3」を導入することが望ましい。これにより、失火発生の際にはクランク角速度変動量Δωｎとしてより大きな値が得られ、Ｓ／Ｎ（信号／雑音）比の向上が図られるようになる。
【０１４８】
また、同実施形態の装置にあっては、公差学習実行条件の成否判定（図１１）において「公差学習実行可」を示すフラグがセットされることを条件に前記学習値の更新が行われるとしたが、他に例えば、
・更新しようとする値とそれまでの学習値との差が所定以上に大きいときには、その更新しようとする値が複数回連続してほぼ同じ値となるときに限り、その値による学習値の更新を許可する。
といった学習アルゴリズムを採用するようにしてもよい。このようなアルゴリズムによれば、偶然に求まった値によって誤った学習が行われることもなく、それら学習値の信頼性が更に向上されるようになる。
【０１４９】
なお、この公差学習値の算出に際し、同実施形態の装置では上述のように、所定のサンプル数となるまで運転条件別のクランク角偏差を積算し、その平均値（Δθｎ(NE,PM)_AV）に基づき（正確には（１６）式のなまし演算によって）学習値（ΔθｎＬ(NE,PM) ）を求めたが、この平均値に代えて、所定のサンプル数となるまで同運転条件別のクランク角偏差をなまし処理した値なども適宜採用することができる。
【０１５０】
また、同実施形態の装置にあっては、メインルーチン（図３）での失火判定の際、失火判定値ＲＥＦ１と比較されるクランク角速度変動量Δω(n-α-1)を前記学習値に基づき補正することとしたが、失火判定値ＲＥＦ１の側を前記学習値に基づき補正するようにしても勿論よい。
【０１５１】
また、同学習値としても、前記クランク角偏差（気筒間角度公差）に限らず、それに相当する値、例えばクランク角速度、或いはその変動量、等々を採用することもできる。
【０１５２】
ところで、同実施形態では触れなかったが、内燃機関の特性として、機関本体の振動等により、ある特定の回転速度においてクランク角偏差が著しく不均一となることがある。
【０１５３】
一例として、機関本体の振動により、クランク角度を検出するための前述した電磁ピックアップの取り付け腕（ステー）が共振し、同ピックアップとロータ被検出部との位置関係が変化することなどが挙げられる。
【０１５４】
このような場合、電磁ピックアップによるロータ被検出部の検出間隔（検出時間）が変則的になってしまうことから、同検出時間に基づき前記（８）式を通じて算出されるクランク角偏差（角度公差）Δθにも図１４に示されるような特異点ＳＰ、ＳＰ’が生じることとなる。因みに図１４は、排気量１８００ｃｃ直列４気筒エンジンについて測定した回転速度と同角度公差Δθとの関係についての実測データである。
【０１５５】
そして、このような特異点ＳＰ、ＳＰ’が生じる場合、同クランク角偏差Δθについての前記運転条件（回転速度）別の公差学習を行い、それ以外の回転速度領域ではそれら公差学習値からの直線補間によってその角度公差を求めたとしても当該角度公差特性を正確に角速度変動量に反映させることはできず、ひいては前記メインルーチン（図３）を通じて実行される失火判定についての誤判定をも招きかねなくなる。
【０１５６】
なお、このような特異点ＳＰ、ＳＰ’の生じ方は、機関の種類や形状、更にはそのおかれる環境等によって区々であり、機関のどのような運転条件で該特異点ＳＰ、ＳＰ’生じるかを特定することは困難である。
【０１５７】
また、そうかといって、対象となる内燃機関の全運転領域に亘ってそれら角度公差を全て学習するにはメモリ容量等の制限を受けることとなり、やはり現実的ではない。
【０１５８】
そこで以下に、この発明にかかる失火検出装置の他の実施形態として、クランク角偏差（角度公差）Δθに上記特異点が生じる場合であっても、少ないメモリ容量で、しかも好適に該特異点による影響を回避することのできる装置についてその一例を示す。
【０１５９】
ここでは、先の実施形態の装置による前記公差学習に併せて、その公差学習値と上記特異点を含む実公差との偏差についての図１５及び図１６に示されるような偏差学習制御を実行し、その偏差学習値に基づき前記メインルーチン（図３）で用いられる失火判定値ＲＥＦ１を補正して上記特異点の存在に起因する誤った失火判定が行われることを回避する。
【０１６０】
因みにこの場合、前記公差学習を実行した各々特定の回転速度（運転条件）の合間の補間領域で上記公差学習値と実公差との偏差を求める必要があるため、同図１５及び図１６に示す偏差学習制御ルーチンでは、公差学習を実行した回転速度区間をそれら学習域に対応した所定の回転数毎の（例えば５００ｒｐｍ毎の）ゾーンに区分けし、それら区分けしたゾーンの単位で上記公差学習値（補間値）と実公差との偏差による影響を抑制するようにしている。なおこの偏差学習制御ルーチンは、前記内燃機関１の一点火毎（６気筒の場合には１２０゜ＣＡ毎、４気筒の場合には１８０゜ＣＡ毎）に、前記電子制御装置９を通じて起動、実行される。
【０１６１】
以下、この図１５及び図１６に示す偏差学習制御ルーチンについてその詳細を順次説明する。
すなわちいま、内燃機関１の任意気筒の点火に伴って同偏差学習制御ルーチンが起動されると、電子制御装置９はまず、ステップＳ５００にて、同機関の現在の回転速度（運転条件）に対応したゾーンにおいて前記公差学習が完了しているか否かを判断する。公差学習が完了していなければ、その対応する実公差との比較もできないため、本ルーチンを一旦終了する。
【０１６２】
一方、当該ゾーンにおいて公差学習が完了していれば、電子制御装置９は次のステップＳ５０１にて、偏差学習実行中フラグがセットされているか否かを判断する。この偏差学習実行中フラグとは、通常はセット状態におかれ、次に述べる条件によってはリセットされて、不十分な偏差学習の完了を未然に防止するためのフラグである。
【０１６３】
すなわち、上記区分けした各々のゾーンに対応した偏差学習を行う上で、あるゾーンでの公差学習値（補間値）と実公差との偏差測定が部分的に行われただけでは、最も影響の大きい上記特異点が測定されていない可能性がある。そこでここでは、例えば
・先の図４に例示した公差学習制御ルーチンのステップＳ２１０にかかる「公差学習実行条件のチェック処理（図７、図８）」やステップＳ２１２にかかる「公差学習実行条件の成否判定処理（図１１）」において学習を実行してはいけない状態であることが認識されている場合（ステップＳ５０２）。
或いは、
・回転速度が急激に変動するなどして、特定ゾーンの偏差測定を入念に行うことができない場合（ステップＳ５０３）。
等々、当該ゾーンで偏差学習が完了したとするには不十分な状態では、ステップＳ５０４にて上記偏差学習実行中フラグをリセットして、同ゾーンでの少なくとも今回の偏差学習を完了させないようにしている。
【０１６４】
上記ステップＳ５０１にて偏差学習実行中フラグがセットされている旨判断され、且つこれら学習をキャンセルすべき要因が生じていない旨判断される場合、電子制御装置９は、ステップＳ５０５にて、該当する公差学習値ΔθＬと実公差Δθとの偏差Δ（Δθ）を求める。実公差Δθが電磁ピックアップによるロータ被検出部の検出間隔（検出時間）に基づき前記（８）式を通じて算出されることは上述した通りである。
【０１６５】
こうして偏差Δ（Δθ）を求めた電子制御装置９は、次のステップＳ５０６にて、同偏差Δ（Δθ）についての最も大きな値を求めるべく、当該ゾーンにおいて保持している偏差Δ（Δθ）の値と今回求めた偏差Δ（Δθ）の値との大きい方の値を前記ＲＡＭ９ｃ（図１）内の所定の領域に保持していく。これは、上記特異点等、最も影響の大きい偏差を学習値とするための配慮である。
【０１６６】
こうしてより大きな偏差Δ（Δθ）を保持した、若しくはステップＳ５０４にて偏差学習実行中フラグをリセットした、若しくはステップＳ５０１にて同偏差学習実行中フラグがセットされていない旨判断した電子制御装置９は、ステップＳ５０７にて、回転速度がそれまでのゾーンを抜け、新しいゾーンに移行したか否かを判断する。新しいゾーンに移行していない場合には、当該ゾーンでの上記偏差Δ（Δθ）の算出、並びにそのより大きな値による更新と、後述するステップＳ５１６（図１６）以降の処理のみが繰り返し実行される。
【０１６７】
同ステップＳ５０７において、新しいゾーンに移行している旨判断される場合電子制御装置９は更に、次のステップＳ５０８にて、その移行がもといたゾーンへの逆戻りではなく、移行前のゾーンを全て通った次のゾーン（１段階だけ高速側のゾーン）への移行であるか否かを判断する。同移行がもといたゾーンへの逆戻りであった場合、移行前のゾーンの全域に亘って上記偏差Δ（Δθ）の測定を行ったことにはならないため、以下に説明する学習処理は行われずに、後述するステップＳ５１４（図１６）以降の処理が行われる。
【０１６８】
一方、ステップＳ５０８において、新しいゾーンへの移行が上記次のゾーンへの移行である旨判断される場合、電子制御装置９は、ステップＳ５０９にて上記偏差学習実行中フラグがセットされていることを確認した上で、次のステップＳ５１０〜ステップＳ５１３にかかる偏差学習を実行する。偏差学習実行中フラグがセットされていない場合、すなわち移行前のゾーンにおいて一度、ステップＳ５０２〜ステップＳ５０４を通じて学習の実行が不適当である旨判断されている場合にも移行前のゾーンの全域に亘って上記偏差Δ（Δθ）の測定を行ったことにはならないため、以下に説明する学習処理は行われずに、後述するステップＳ５１４以降の処理が行われる。
【０１６９】
偏差学習の実行に際してはまず、ステップＳ５１０（以下、図１６）にて、該学習対象となるゾーン、すなわち移行前のゾーンでの偏差学習実行条件の成立が初回であるか否かが判断される。
【０１７０】
この結果、同条件の成立が初回である旨判断される場合には、ステップＳ５１２にて、上記移行前のゾーンに関して上記ＲＡＭ９ｃ内の所定領域に保持されている最大の偏差Δ（Δθ）を同ゾーンの偏差学習値として偏差学習値メモリに登録し、次のステップＳ５１３にて、同ゾーンについての偏差学習が完了したことを示す偏差学習完了フラグをセットする。この偏差学習値メモリも、先の図６に例示した公差学習値メモリ９１０と同様、前記バックアップＲＡＭ９ｄ（図１）内の所定領域に予め用意されていて、上述した各ゾーン（回転速度範囲）の別にそれら偏差学習値Δ（Δθ）が登録される構造となっている。
【０１７１】
他方、ステップＳ５１０において、上記移行前のゾーンでの偏差学習実行条件の成立が初回ではなく、２回目以降である旨判断される場合には、ステップＳ５１１にて、上記偏差学習値メモリに登録されている同ゾーンについての偏差学習値Δ（Δθ）を同ゾーンに関して上記ＲＡＭ９ｃ内の所定領域に保持されている最大の偏差Δ（Δθ）によって更新する。なお、この更新に際しては、前述したなまし（徐変）処理を併用するようにしてもよい。
【０１７２】
こうして偏差学習の実行を終えると電子制御装置９は次に、該移行した新しいゾーンについての偏差学習を行うため、ステップＳ５１４にて、上記ＲＡＭ９ｃ内の所定領域に保持されている偏差Δ（Δθ）の値を「０」にクリアするとともに、ステップＳ５１５にて、上記偏差学習実行中フラグを標準（デフォルト）の状態であるセット状態とする。
【０１７３】
その後、電子制御装置９は、ステップＳ５１６にてその対象となっているゾーン（移行前のゾーン）に関する上記偏差学習完了フラグがセットされていることを確認した上で、次のステップＳ５１７〜ステップＳ５１８にかかる失火判定値補正処理を実行する。同ゾーンに関する偏差学習完了フラグがセットされていない場合には、このステップＳ５１７〜ステップＳ５１８にかかる失火判定値補正処理を行わずに、本ルーチンを一旦終了する。
【０１７４】
失火判定値補正処理の実行に際してはまず、ステップＳ５１７にて、当該ゾーンの偏差学習値Δ（Δθ）から前記失火判定値ＲＥＦ１に加えるべきオフセット量ＲＥＦｏｆｓを算出する。このオフセット量ＲＥＦｏｆｓの算出は、
ＲＥＦｏｆｓ＝Ｋｏｆｓ×Δ（Δθ）×回転速度    …（１８）
といったように、偏差学習値Δ（Δθ）の角度（ｒａｄ）情報を角速度（ｒａｄ／ｓｅｃ）の変動量に換算するかたちで行われる。ここで係数Ｋｏｆｓは、偏差学習値Δ（Δθ）をこうした失火判定値ＲＥＦ１と同じ次元の値に換算するための換算係数である。
【０１７５】
こうしてオフセット量ＲＥＦｏｆｓを算出した電子制御装置９は最後に、ステップＳ５１８にて同算出したオフセット量ＲＥＦｏｆｓを前記失火判定値ＲＥＦ１に加えて、本ルーチンを終了する。
【０１７６】
このような偏差学習制御が内燃機関１の一点火毎に行われることにより、上記各ゾーン毎に測定された公差学習値補間値と実公差との偏差Δ（Δθ）の最大値（偏差学習値）に応じた角速度変動量が別途求められるとともに、この求められた角速度変動量がオフセット量ＲＥＦｏｆｓとして、その都度、前記失火判定値ＲＥＦ１に加えられるようになる。
【０１７７】
したがって、たとえクランク角偏差（実公差）Δθに上述した特異点が生じる場合であっても、すなわちメインルーチン（図３）において失火判定値ＲＥＦ１と比較されるクランク角速度変動量Δω(n-α-1)に該特異点に基づく増加が生じる場合であっても、その角速度変動量増加分に応じたオフセット量ＲＥＦｏｆｓが失火判定値ＲＥＦ１に加わることで、同特異点に起因する誤った失火判定が行われることも好適に回避されるようになる。
【０１７８】
しかも、同偏差学習制御ルーチンによれば、上記ゾーンを単位として偏差学習を行うようにしたことで、その必要とされるメモリ容量の増加を最小限に抑えることができるようにもなる。
【０１７９】
なお、同実施形態の装置にあっては、失火判定値ＲＥＦ１に上記オフセット量ＲＥＦｏｆｓを加えて上記特異点に対処することとしたが、同メインルーチンにおいて比較対象となるクランク角速度変動量Δω(n-α-1)から上記オフセット量ＲＥＦｏｆｓを引いてその対処とする構成であっても勿論よい。
【０１８０】
また、上記偏差学習値としても、クランク角偏差（気筒間角度公差）との偏差量に限らず、それに相当する値、すなわち公差学習値に応じて、例えばクランク角速度との偏差量、或いはその変動量、等々を採用することができる。
【０１８１】
また、以上の実施形態では何れも、学習の実行条件を適正に判断するための要素として上記空燃比センサ（酸素センサ、リニア空燃比センサ）の出力や空燃比フィードバック制御にかかる空燃比補正係数を参照するようにした。
【０１８２】
しかし、図８に例示したそれら判断内容からも明らかなように、こうした空燃比センサの出力や空燃比フィードバック制御にかかる空燃比補正係数から直接、当該機関の失火発生の有無を検出する構成とすることもできる。
【０１８３】
すなわち、同図８に例示した正常点火を判定するルーチンのみを同実施形態にかかる装置のクランク角速度変動量を用いた失火検出に代えて用いる構成とすることもできる。
【０１８４】
そしてこのときであれ、同図８におけるチェック項目の選択、或いは組み合わせ等は任意であり、対象となるシステムの規模に応じて自由にそれら項目の選択、或いは組み合わせを行うことができる。
【０１８５】
また更には、それら自由に選択、若しくは組み合わせた失火検出方法を、上記実施形態にかかる装置の失火検出方法以外の方法と組み合わせて、それら方法による失火検出精度の更なる向上を図るようにすることもできる。
【０１８６】
また、図８に例示したチェックルーチンでは、３６０゜ＣＡ対向気筒の連続失火を検出する３つの方法が示されているが、この中のステップＳ３１１の処埋を図１７のステップＳ３１１’の処理として示すように変更してもよい。
【０１８７】
すなわち、図８のチェックルーチンでは空燃比補正係数ｃｆｂとその平均値との和を初期公差と比較して失火検出していたが、他に図１７に示すように、空燃比補正係数と同補正係数の学習値との和を初期公差と比較して失火検出するようにしてもよい。
【０１８８】
また更に、図８のチェックルーチンでは、そのステップＳ３１４の処理において、Ｏ2 センサ振幅周期が予め設定されている正常点火時の振幅周期Ｆｓよりも短いとき失火が発生している旨判断しているが、図１７のチェックルーチンにおけるステップＳ３１４’の処理として示すように、下限の判定値（Ｆｓ）だけでなく、所定範囲を設定して、この範囲外のときには失火が発生している旨判断するようにしてもよい。このように所定範囲を設定することにより、図９に示すような失火だけでなく、図１０に示すような失火も検出することができるようになる。
【０１８９】
また、以上の各実施形態では、回転角速度変動量としてクランク角偏差Δθｎを運転条件の別に学習しているが、これに限られることはなく、これに相当する値として、例えばクランク角偏差Δθｎを求めるために用いるクランク角偏差時間ΔＴｎを学習するようにしてもよい。
【図面の簡単な説明】
【図１】この発明にかかる失火検出装置の一実施形態を示すブロック図。
【図２】同実施形態にかかる電子制御装置の機能的構成を示すブロック図。
【図３】同実施形態の失火判定のメインルーチンを示すフローチャート。
【図４】同実施形態の公差学習制御ルーチンを示すフローチャート。
【図５】気筒間クランク角偏差（公差）の積算値メモリ構造例を示す略図。
【図６】気筒間クランク角偏差（公差）の学習値メモリ構造例を示す略図。
【図７】公差学習実行条件のチェックルーチンを示すフローチャート。
【図８】公差学習実行条件のチェックルーチンを示すフローチャート。
【図９】失火時における酸素センサの出力例を示すタイムチャート。
【図１０】失火時における酸素センサの出力例を示すタイムチャート。
【図１１】公差学習実行条件の成否判定ルーチンを示すフローチャート。
【図１２】負荷−気筒間クランク角偏差（公差）特性を示すグラフ。
【図１３】回転速度−気筒間クランク角偏差（公差）特性を示すグラフ。
【図１４】クランク角偏差（公差）に生じる特異点の様子を示すグラフ。
【図１５】特異点対策である偏差学習制御ルーチンを示すフローチャート。
【図１６】特異点対策である偏差学習制御ルーチンを示すフローチャート。
【図１７】公差学習実行条件の他のチェックルーチンを示すフローチャート。
【符号の説明】
１…内燃機関、２…吸気管、３…吸気管圧力センサ、５…回転角センサ、６…基準位置センサ、７…ディストリビュータ、８…水温センサ、９…電子制御装置、１０…インジェクタ、１１…イグナイタ、１２…警告ランプ、１３…ピストン、１４…排気管、１５…酸素（Ｏ2 ）センサ、９ａ…ＣＰＵ、９ｂ…ＲＯＭ、９ｃ…ＲＡＭ、９ｄ…バックアップＲＡＭ、９ｅ…Ｉ／Ｏポート、９０１…角速度変動量演算部、９０２…失火判定部、９０３…点火数カウンタ、９０４…仮失火カウンタ、９０５…角速度記憶部、９０６…学習制御部、９０７…積算カウンタ、９０８…気筒間クランク角偏差（公差）積算値メモリ、９０９…点火数カウンタ、９１０…気筒間クランク角偏差（公差）学習値メモリ、９１１…ラフロードカウンタ（ＣＲＧ）、９１２…仮失火カウンタ。
【図１】
0003758236.tif 000004
【図２】
0003758236.tif 000005
【図３】
0003758236.tif 000006
【図４】
0003758236.tif 000007
【図５】
0003758236.tif 000008
【図６】
0003758236.tif 000009
【図７】
0003758236.tif 000010
【図８】
0003758236.tif 000011
【図９】
0003758236.tif 000012
【図１０】
0003758236.tif 000013
【図１１】
0003758236.tif 000014
【図１２】
0003758236.tif 000015
【図１３】
0003758236.tif 000016
【図１４】
0003758236.tif 000017
【図１５】
0003758236.tif 000018
【図１６】
0003758236.tif 000019
【図１７】
0003758236.tif 000020