(57)【特許請求の範囲】
【請求項１】
所定の運転時に少なくとも一部の気筒の動弁系を停止させる可変動弁機構を備えた内燃機関の故障判定装置であって、
特定の気筒を判別する気筒判別手段と、
前記気筒ごとに燃料を噴射する燃料噴射弁と、
前記内燃機関から排出された排気ガスの酸素濃度を検出する酸素濃度検出手段と、
前記内燃機関の失火状態を気筒ごとに検知する失火検知手段と、
当該失火検知手段により失火が検知された気筒への前記燃料噴射弁からの燃料噴射を停止させる燃料噴射停止手段と、
当該燃料噴射停止手段により燃料噴射が停止された状態において、前記酸素濃度検出手段の検出結果に基づく酸素濃度パラメータが所定の基準値よりもリッチ側の値を示すときに、前記可変動弁機構が故障していると判定する故障判定手段と、
を備えていることを特徴とする内燃機関の故障判定装置。
【請求項２】
前記燃料噴射停止手段は、前記酸素濃度パラメータが前記所定の基準値よりもリーン側の値を示すときに、前記燃料噴射の停止を解除することを特徴とする、請求項１に記載の内燃機関の故障判定装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、内燃機関の故障判定装置に関し、特に所定の運転時に少なくとも一部の気筒の動弁系を停止させる可変動弁機構の故障を判定する故障判定装置に関する。
【０００２】
【従来の技術】
従来の内燃機関の制御装置として、例えば特許第２５０７５５０号公報に記載されたものが知られている。この制御装置は、内燃機関の失火状態に応じて、燃料の供給および停止を制御するものである。具体的には、クランクシャフトの回転変動に基づいて、失火状態を気筒ごとに検知するとともに、失火が発生したと判定された気筒への燃料供給を所定時間、停止する。また、その後は、その気筒への燃料供給を再開するとともに、失火状態を再び検知することによって、実際には失火が解消されたにもかかわらず、失火発生と判定された状態および燃料の供給停止状態が継続されるのを防止するようにしている。
【０００３】
【発明が解決しようとする課題】
しかし、上述した従来の制御装置には、以下のような問題がある。すなわち、内燃機関には、車両の減速時に一部の気筒の運転を休止するための可変動弁機構を備えたタイプのものがある。この可変動弁機構は、その気筒の運転時には、吸・排気弁を開閉動作可能な状態に保持する一方、運転休止時には、吸・排気弁を開閉不能な状態に駆動するように構成されている。このため、このタイプの内燃機関では、可変動弁機構が故障した場合、その気筒の運転時に本来は開閉動作すべき吸・排気弁が閉じっ放しになることで、失火に至ることがある。これに対し、従来の制御装置では、失火状態をクランクシャフトの回転変動のみに基づいて検知するので、失火の発生が、可変動弁機構の故障によるものか、あるいは気筒内での不安定な燃焼などによるもの（通常失火）かを、識別することができず、失火の発生原因に応じた適切な対応をとることができない。
【０００４】
本発明は、このような課題を解決するためになされたものであり、可変動弁機構の故障を、通常失火と識別しながら適切に判定することができる内燃機関の故障判定装置を提供することを目的とする。
【０００５】
【課題を解決するための手段】
この目的を達成するために、本発明は、所定の運転時に少なくとも一部の気筒Ｃの動弁系（吸気弁８ａ、排気弁８ｂ）を停止させる可変動弁機構９を備えた内燃機関の故障判定装置であって、特定の気筒Ｃを判別する気筒判別手段（実施形態における（以下、本項において同じ）気筒判別センサ１４）と、気筒Ｃごとに燃料を噴射する燃料噴射弁７と、内燃機関２から排出された排気ガスの酸素濃度ＶＬＡＦを検出する酸素濃度検出手段（ＬＡＦセンサ１９）と、内燃機関２の失火状態を気筒Ｃごとに検知する失火検知手段（クランク角センサ１６、ＥＣＵ３、図３のステップ４５、図５）と、失火検知手段により失火が検知された気筒Ｃへの燃料噴射弁７からの燃料噴射を停止させる燃料噴射停止手段（ＥＣＵ３、図８のステップ１２２、図９）と、燃料噴射停止手段により燃料噴射が停止された状態において、酸素濃度検出手段の検出結果に基づく酸素濃度パラメータ（空燃比フィードバック補正係数ＫＡＦ、平均値ＫＡＶＣＳＳ）が所定の基準値（判定値ＫＡＶＣＳＳＨ）よりもリッチ側の値を示すときに、可変動弁機構９が故障していると判定する故障判定手段（ＥＣＵ３、図７のステップ９６〜９８）と、を備えていることを特徴とする。
【０００６】
この内燃機関の故障判定装置によれば、失火状態が気筒ごとに検知されるとともに、失火が検知された気筒への燃料噴射弁からの燃料噴射が停止される。そして、燃料噴射の停止状態において、酸素濃度検出手段の検出結果に基づく酸素濃度パラメータが所定の基準値よりもリッチ側の値を示すときに、可変動弁機構が故障していると判定する。可変動弁機構は、それが正常であれば、所定の運転時以外には動弁系を開閉動作可能な状態に保持しており、失火した気筒への燃料供給の停止により、その気筒には空気のみが供給されることで、排気ガスの酸素濃度パラメータはリーン側の値を示すはずである。したがって、逆に、酸素濃度パラメータが所定の基準値よりもリッチ側の値を示す場合には、失火した気筒の動弁系が閉じっ放しになっていて、可変動弁機構が動弁系を開閉動作可能な状態に制御できない故障状態にあると判定することができる。また、この場合の失火の原因を、可変動弁機構の故障によるものと特定でき、通常失火と明確に識別することができる。
【０００７】
また、請求項２に係る発明は、請求項１の内燃機関の故障判定装置において、燃料噴射停止手段は、酸素濃度パラメータが所定の基準値よりもリーン側の値を示すときに、燃料噴射の停止を解除する（図７のステップ９６、１０５）ことを特徴とする。
【０００８】
この構成によれば、酸素濃度パラメータが所定の基準値よりもリーン側の値を示す場合、すなわち失火原因が可変動弁機構の故障でない場合に、燃料噴射の停止を解除することによって通常の運転状態に適切かつ速やかに復帰することができる。
【０００９】
【発明の実施の形態】
以下、本発明の好ましい実施形態を、図面を参照しながら説明する。図１は、本発明の一実施形態による故障判定装置１、およびこれを適用した内燃機関２の概略構成を示している。
【００１０】
この内燃機関（以下「エンジン」という）２は、図示しない車両に搭載された、例えば＃１〜＃４気筒Ｃ（１気筒のみ図示）を備えた４気筒ＤＯＨＣ型エンジンである。エンジン２の吸気管４には、スロットル弁５が設けられている。このスロットル弁５の開度（以下「スロットル弁開度」という）ＴＨは、スロットル弁開度センサ６によって検出され、その検出信号は、後述するＥＣＵ３に出力される。吸気管４のスロットル弁５よりも下流側には、燃料噴射弁（以下「インジェクタ」という）７が気筒Ｃごとに設けられている（１つのみ図示）。各インジェクタ７は、燃料ポンプ（図示せず）に接続され、その燃料噴射時間（開弁時間）ＴＯＵＴは、ＥＣＵ３からの駆動信号によって制御される。
【００１１】
また、エンジン２には、減速時に一部の気筒の運転を休止する気筒休止運転を行うための可変動弁機構９が設けられている。この可変動弁機構９は、油路１０ａ、１０ｂを介して、油圧ポンプ（図示せず）に接続されており、油路１０ａ、１０ｂの途中に、吸気弁８ａおよび排気弁８ｂ（動弁系）用の電磁弁１１ａ、１１ｂが設けられている。これらの電磁弁１１ａ、１１ｂは、いずれも常閉型のものであり、ＥＣＵ３からの駆動信号によってＯＮされたときに、油路１０ａ、１０ｂをそれぞれ開放する。
【００１２】
エンジン２を気筒休止運転するときには、電磁弁１１ａ、１１ｂがいずれもＯＮされ、油路１０ａ、１０ｂを開放することによって、油圧ポンプから可変動弁機構９に油圧が供給される。これにより、＃２〜＃４気筒Ｃにおいて、吸気弁８ａと吸気カム（図示せず）の間、および排気弁８ｂと排気カム（図示せず）の間が遮断されることによって、吸気弁８ａおよび排気弁８ｂが閉弁した停止状態になり、第２〜第４気筒Ｃの運転が休止される一方、＃１気筒Ｃは通常どおり運転される。また、気筒休止運転のときには、＃２〜＃４気筒Ｃへの各インジェクタ８からの燃料噴射は、ＥＣＵ３の制御によって停止される。
【００１３】
一方、全気筒運転のときには、電磁弁１１ａ、１１ｂがともにＯＦＦされ、油路１０ａ、１０ｂを閉鎖することによって、油圧ポンプから可変動弁機構９への油圧の供給が停止される。これにより、＃２〜＃４気筒Ｃにおいて、吸気弁８ａと吸気カムの間、および排気弁８ｂと排気カムの間の遮断状態が解除されることによって、吸気弁８ａおよび排気弁８ｂが開閉動作可能な状態になり、＃２〜＃４気筒Ｃが＃１気筒Ｃと併せて運転される。なお、可変動弁機構９は、図示しないが、ロッカアーム、シンクロナイズドピストンやスプリングなどで構成された周知のものである。
【００１４】
吸気管４のスロットル弁５よりも下流側には、吸気管内絶対圧センサ１２が配置されている。この吸気管内絶対圧センサ１２は、半導体圧力センサなどで構成されており、吸気管４内の絶対圧である吸気管内絶対圧ＰＢＡを検出し、その検出信号をＥＣＵ３に出力する。また、エンジン２の本体には、サーミスタなどで構成されたエンジン水温センサ１３が取り付けられており、エンジン２の本体内を循環する冷却水の温度であるエンジン水温ＴＷを検出し、その検出信号をＥＣＵ３に出力する。
【００１５】
一方、エンジン２のクランクシャフト２ａの周囲には、気筒判別センサ１４（気筒判別手段）、ＴＤＣセンサ１５およびクランク角センサ１６（失火検知手段）が設けられ、それぞれＥＣＵ３に接続されている。これらのセンサ１４〜１６は、マグネットロータやＭＲＥピックアップなど（いずれも図示せず）で構成され、それぞれの所定クランク角度位置でパルス信号を発生する。具体的には、気筒判別センサ１４は、特定の気筒の所定のクランク角度位置で、気筒判別信号ＣＹＬ（以下「ＣＹＬ信号」という）を発生する。ＴＤＣセンサ１５は、各気筒の吸気行程開始時のＴＤＣ（上死点）よりも少し前の所定のクランク角度位置で、ＴＤＣ信号を発生する。エンジン２が４気筒タイプの本例では、ＴＤＣ信号はクランク角１８０゜ごとに出力される。また、クランク角センサ１６は、ＴＤＣ信号よりも短い所定のクランク角度の周期（例えば３０゜ごと）で、クランク角信号ＣＲＫ（以下「ＣＲＫ信号」という）を発生する。
【００１６】
ＥＣＵ３は、これらのＣＹＬ信号、ＴＤＣ信号およびＣＲＫ信号に基づき、気筒Ｃごとのクランク角度位置を判別するとともに、ＣＲＫ信号に基づき、エンジン２の回転数（以下「エンジン回転数」という）ＮＥを算出する。
【００１７】
また、エンジン２の排気管１７には三元触媒１８が配置されており、排気ガス中のＨＣ、ＣＯ、ＮＯx などの成分の浄化を行う。また、排気管１７の三元触媒１８よりも上流側には、ＬＡＦセンサ１９（酸素濃度検出手段）が設けられている。このＬＡＦセンサ１９は、理論空燃比よりもリッチなリッチ領域から極リーン領域までの広範囲な空燃比Ａ／Ｆの領域において、排気ガス中の酸素濃度をリニアに検出し、その酸素濃度ＶＬＡＦを表す検出信号をＥＣＵ３に出力する。ＥＣＵ３にはさらに、車速センサ２０から、車両の速度（車速）ＶＰを表す検出信号が出力される。
【００１８】
ＥＣＵ３は、本実施形態において、失火検知手段、燃料噴射停止手段および故障判定手段を構成するものであり、ＣＰＵ、ＲＡＭ、ＲＯＭおよび入出力インターフェース（いずれも図示せず）などからなるマイクロコンピュータで構成されている。ＣＰＵは、上述した各種のセンサで検出されたエンジンパラメータ信号に基づき、ＲＯＭに記憶された制御プログラムやＲＡＭに記憶されたデータなどに従って、エンジン２の運転状態を判別する。そして、その判別結果に応じて、燃料噴射時間ＴＯＵＴを次式（１）に従って演算し、その演算結果に基づく駆動信号をインジェクタ７に出力する。
【００１９】
ＴＯＵＴ  ＝  ＴＩＭＡＰ×ＫＡＦ×Ｋ１＋Ｋ２          ・・・（１）
ここで、ＴＩＭＡＰは、エンジン回転数ＮＥおよび吸気管内絶対圧ＰＢＡに応じ、マップ（図示せず）を検索することによって決定される基本燃料噴射時間である。ＫＡＦは、ＬＡＦセンサ１９で検出された酸素濃度ＶＬＡＦに応じて設定される空燃比フィードバック補正係数（以下「空燃比Ｆ／Ｂ係数」という）であり、具体的には、エンジン２に供給される混合気を理論空燃比に制御すべく、酸素濃度ＶＬＡＦがリッチ側の値を示すときには１．０よりも小さな値に、リーン側の値を示すときには１．０よりも大きな値に、フィードバック制御される。また、Ｋ１、Ｋ２は、エンジン２の運転状態に応じて設定される他の補正係数および補正項である。
【００２０】
また、ＣＰＵは、車両の減速時に可変動弁機構９を作動させることによりエンジン２の気筒休止運転を行う。さらに、エンジン２の失火状態を検知するとともに、失火が検知されたときに、可変動弁機構９の故障判定を実行する。図２〜図９は、失火検知および故障判定のための一連の処理を示しており、これらの処理は、ＴＤＣ信号の発生に同期して実行される。なお、以下の説明では、ＲＯＭに記憶されている固定のデータについては、その先頭に「＃」の記号を付することで、随時更新される他のデータと区別するものとする。
【００２１】
図２に示す失火モニタ処理は、エンジン２のクランクシャフト２ａの回転変動に基づき、エンジン２の失火の発生の有無を気筒Ｃごとに判定する処理である。
まず、ステップ２１（「Ｓ２１」と図示。以下同じ）では、クランクシャフト２ａの回転変化量△Ｍを算出する。この回転変化量△Ｍは、クランク角センサ１６で検出されたＣＲＫ信号の発生時間間隔の平均値Ｍを求めるとともに、その今回値Ｍｎと前回値Ｍｎ−１との偏差として算出される。
【００２２】
次に、算出した回転変化量ΔＭが、その所定値ＭＳＬＭＴよりも大きいか否かを判別する（ステップ２２）。この所定値ＭＳＬＭＴは、エンジン回転数ＮＥおよび吸気管内絶対圧ＰＢＡに応じ、あらかじめ設定されたマップ（図示せず）から読み出される。このステップ２２の答がＹＥＳで、ΔＭ＞ＭＳＬＭＴのときには、クランクシャフト２ａの回転変動量が大きく、今回点火した気筒Ｃで失火が発生したとして、失火の発生を表す失火発生フラグＦ＿ＭＦＣＳを「１」にセットする（ステップ２３）とともに、失火の発生を気筒別に表す気筒別失火発生第１および第２フラグＦ＿ＭＦＣＳｎ、Ｆ＿ＮＭＦＣＳｎ（ｎ＝１〜４）を、それぞれ「１」にセットし（ステップ２４、２５）、本プログラムを終了する。
【００２３】
一方、ステップ２２の答がＮＯで、ΔＭ≦ＭＳＬＭＴのときには、今回点火した気筒Ｃで失火が発生していないとして、失火発生フラグＦ＿ＭＦＣＳを「０」にセットする（ステップ２６）とともに、気筒別失火発生第１および第２フラグＦ＿ＭＦＣＳｎ、Ｆ＿ＮＭＦＣＳｎを、それぞれ「０」にセットし（ステップ２７、２８）、本プログラムを終了する。
【００２４】
図３の失火検知処理は、上述した失火モニタ処理でＴＤＣ信号ごとに得られる失火の発生状況を、所定期間、監視することによって、失火の有無を気筒ごとに判定する処理である。まず、ステップ３１では、この失火検知の禁止条件が成立しているか否かを判定する。この判定は、図示しないサブルーチンに基づいて行われ、例えばエンジン２が定常的な運転状態にあり、かつエンジン水温ＴＷ、エンジン回転数ＮＥ、吸気管内絶対圧ＰＢＡや車速ＶＰなどがそれぞれの所定範囲内にあるときには、失火検知が許可され、失火検知禁止フラグＦ＿ＭＦＣＳＮＧが「０」にセットされる一方、それ以外の場合には、失火検知が禁止され、失火検知禁止フラグＦ＿ＭＦＣＳＮＧが「１」にセットされる。
【００２５】
次に、失火検知禁止フラグＦ＿ＭＦＣＳＮＧが「１」であるか否かを判別し（ステップ３２）、この答がＹＥＳで、失火検知が禁止されているときには、そのまま本プログラムを終了する。この答がＮＯで、失火検知が許可されているときには、検知処理回数を表す検知処理カウンタＮＴＤＣＣＳＳをインクリメントする（ステップ３３）。次いで、失火発生フラグＦ＿ＭＦＣＳが「１」であるか否かを判別する（ステップ３４）。この答がＹＥＳ、すなわち今回時に失火が発生しているときには、失火無しカウンタＣＮＭＦＣＳＲに所定値＃ＮＮＭＦＣＳＲ（例えば４）をセットする（ステップ３５）とともに、失火発生カウンタＮＭＦＣＳをインクリメントする（ステップ３６）。
【００２６】
次いで、気筒別失火カウント処理を実行する（ステップ３７）。図４は、この処理のサブルーチンを示している。すなわち、まず＃１気筒Ｃの気筒別失火発生第１フラグＦ＿ＭＦＣＳ１が「１」であるか否かを判別し（ステップ５１）、この答がＹＥＳのとき、すなわち＃１気筒Ｃで失火が発生しているときには、その気筒別失火発生カウンタＮＭＦＣＳ１をインクリメントする（ステップ５２）。
以下同様に、＃２〜＃４気筒Ｃの気筒別失火発生第１フラグＦ＿ＭＦＣＳ２〜４が「１」であるか否かをそれぞれ判別し（ステップ５３、５５、５７）、その答がＹＥＳのときに、対応する気筒別失火発生カウンタＮＭＦＣＳ２〜４をインクリメントし（ステップ５４、５６、５８）、本プログラムを終了する。すなわち、気筒別失火発生カウンタＮＭＦＣＳ１〜４の値は、＃１〜＃４気筒Ｃでの失火の発生回数をそれぞれ表す。
【００２７】
図３に戻り、前記ステップ３７に続くステップ３８では、図２の失火モニタ処理でセットされた気筒別失火発生第２フラグＦ＿ＮＭＦＣＳ１〜４を用い、次式（２）によって、失火気筒数ＣＮＭＦＣＳを算出する。
ＣＮＭＦＣＳ  ＝  ΣＦ＿ＮＭＦＣＳ１〜４          ・・・（２）
この式（２）から明らかなように、この失火気筒数ＣＮＭＦＣＳは、＃１〜＃４気筒Ｃのうち、今回時を含む直前において失火した気筒Ｃの数を表す。
【００２８】
次いで、失火発生フラグＦ＿ＭＦＣＳを「０」にリセットする（ステップ３９）とともに、気筒別失火発生第１フラグＦ＿ＭＦＣＳ１〜４をそれぞれ「０」にリセットし（ステップ４０）、後述するステップ４４に進む。
【００２９】
一方、前記ステップ３４の答がＮＯ、すなわち失火発生フラグＦ＿ＭＦＣＳ＝０で、今回時に失火が発生していないときには、前記ステップ３５でセットした失火無しカウンタＣＮＭＦＣＳＲの値が、０であるか否かを判別する（ステップ４１）。そして、この答がＮＯのときには、失火無しカウンタＣＮＭＦＣＳＲをデクリメントした（ステップ４２）後、ステップ４４に進む。一方、ステップ４１の答がＹＥＳで、ＣＮＭＦＣＳＲ＝０のとき、すなわち所定値＃ＮＮＭＦＣＳＲに相当する回数、失火が連続して発生していないときには、失火気筒数ＣＮＭＦＣＳを「０」にリセットした（ステップ４３）後、ステップ４４に進む。
【００３０】
前記ステップ４０、４２または４３に続くステップ４４では、検知処理カウンタＮＴＤＣＣＳＳの値が、その所定値＃ＮＴＤＣＣＳＳＭ（例えば４００）以上であるか否かを判別する。この答がＮＯで、ＮＴＤＣＣＳＳ＜＃ＮＴＤＣＣＳＳＭのとき、すなわち失火の検知処理回数が所定値＃ＮＴＤＣＣＳＳＭに達していないときには、そのまま本プログラムを終了する。
【００３１】
一方、ステップ４４の答がＹＥＳで、失火の検知処理回数が所定回数＃ＮＴＤＣＣＳＳＭに達したときには、ステップ４５において、気筒別失火判定処理を実行する（ステップ４５）。図５は、この処理のサブルーチンを示している。すなわち、まずステップ６１において、前記ステップ３６でカウントした失火発生カウンタＮＭＦＣＳの値が、その所定値＃ＮＦＴＤＣＣＳ（例えば３００）以上であるか否かを判別する。このステップ６１の答がＮＯで、ＮＭＦＣＳ＜＃ＮＦＴＤＣＣＳのときには、エンジン２全体として失火の発生回数が少ないと判定して、失火発生判定フラグＦ＿ＦＳＭＦＣＳを「０」にセットする（ステップ６２）。一方、ステップ６１の答がＹＥＳで、ＮＭＦＣＳ≧＃ＮＦＴＤＣＣＳのときには、エンジン２全体として失火の発生回数が多いと判定して、失火発生判定フラグＦ＿ＦＳＭＦＣＳを「１」にセットする（ステップ６３）。
【００３２】
次いで、図４のステップ５２でカウントした＃１気筒Ｃの気筒別失火発生カウンタＮＭＦＣＳ１の値が、その所定値＃ＮＦＴＤＣＣＳ１（例えば５０）以上であるか否かを判別する（ステップ６４）。この答がＮＯで、ＮＭＦＣＳ１＜＃ＮＦＴＤＣＣＳ１のときには、＃１気筒Ｃでの失火の発生回数が少なく、＃１気筒Ｃでは失火が発生していないと判定して、その気筒別失火発生判定フラグＦ＿ＦＳＭＦＣＳ１を「０」にセットする（ステップ６５）。一方、ステップ６４の答がＹＥＳで、ＮＭＦＣＳ１≧＃ＮＦＴＤＣＣＳ１のときには、＃１気筒Ｃでの失火の発生回数が多く、＃１気筒Ｃで失火が発生していると判定して、気筒別失火発生判定フラグＦ＿ＦＳＭＦＣＳ１を「１」にセットする（ステップ６６）。
【００３３】
以下同様に、＃２〜＃４気筒Ｃの気筒別失火発生カウンタＮＭＦＣＳ２〜４の値が、それぞれの所定値＃ＮＦＴＤＣＣＳ２〜４（それぞれ例えば５０）以上であるか否かを判別し（ステップ６７、７０、７３）、それぞれの答に応じ、対応する気筒別失火発生判定フラグＦ＿ＦＳＭＦＣＳ２〜４を、答がＮＯのときには「０」にセットする（ステップ６８、７１、７４）一方、答がＹＥＳのときには「１」にセットし（ステップ６９、７２、７５）、本プログラムを終了する。
【００３４】
図３に戻り、前記ステップ４５に続くステップ４６では、上記の気筒別失火発生判定フラグＦ＿ＦＳＭＦＣＳ１〜４を用い、次式（３）によって、失火判定気筒数ＣＦＳＭＦＣＳを算出する。
ＣＦＳＭＦＣＳ  ＝  ΣＦ＿ＦＳＭＦＣＳ１〜４      ・・・（３）
この式（３）から明らかなように、この失火判定気筒数ＣＦＳＭＦＣＳは、＃１〜＃４気筒Ｃのうち、失火検知処理において失火したと判定された気筒Ｃの数を表す。
【００３５】
次いで、失火発生カウンタＮＭＦＣＳおよび気筒別失火発生カウンタＮＭＦＣＳ１〜４をそれぞれ「０」にリセットする（ステップ４８）とともに、気筒別失火発生第２フラグＦ＿ＮＭＦＣＳ１〜４をそれぞれ「０」にリセットし（ステップ４９）、本プログラムを終了する。
【００３６】
図６は、可変動弁機構９の故障判定処理のメインフローを示している。この処理ではまず、実行条件判定処理を実行する（ステップ８１）。この実行条件判定処理は、可変動弁機構９の故障判定の実行条件が成立しているか否かを判定するものであり、図８に示すサブルーチンに従って実行される。すなわち、まず図５のステップ６２または６３でセットした失火発生判定フラグＦ＿ＦＳＭＦＣＳが「１」であるか否かを判別する（ステップ１１１）。この答がＮＯ、すなわちエンジン２全体として失火の発生回数が少ないときには、故障判定の実行条件が成立していないとして、後述する各種制御停止要求フラグＦ＿ＣＳＳＭＦＣＳ、Ｆ／Ｃ（フューエルカット）解除要求フラグＦ＿ＣＳＳＭＦＣＲおよびＦ／Ｃ要求フラグＦ＿ＣＳＳＭＦＣを、それぞれ「０」にセットする（ステップ１１２〜１１４）。また、ディレイタイマＴＭＣＤＢに所定時間＃ＴＭＭＣＢ（例えば２秒）をセットする（ステップ１１５）とともに、故障判定許可フラグＦ＿ＭＣＮＤＦＢを「０」にセットし（ステップ１１６）、本プログラムを終了する。
【００３７】
一方、前記ステップ１１１の答がＹＥＳで、失火発生判定フラグＦ＿ＦＳＭＦＣＳ＝１のとき、すなわちエンジン２全体として失火の発生回数が多いときには、各種制御停止要求フラグＦ＿ＣＳＳＭＦＣＳを「１」にセットする（ステップ１１７）。図示しないが、この各種制御停止要求フラグＦ＿ＣＳＳＭＦＣＳが「１」のときには、排気ガスの一部を吸気管４に再還流するＥＧＲ制御、理論空燃比よりもリーンな混合気での燃焼を行うリーンバーン制御や、蒸発燃料を吸気管４にバージするパージ制御などが停止される。次いで、失火警告中フラグＦ＿ＭＩＬＢＬＫが「１」であるか否かを判別する（ステップ１１８）。この失火警告中フラグＦ＿ＭＩＬＢＬＫは、失火の発生を警告灯（図示せず）の点滅などにより警告中であるときに、「１」にセットされるものである。このステップ１１８の答がＮＯで、失火の警告中でないときには、前記ステップ１１３以降に進む。
【００３８】
上記ステップ１１８の答がＹＥＳのときには、前記式（３）で算出した失火判定気筒数ＣＦＳＭＦＣＳが、値１に等しいか否かを判別する（ステップ１１９）。この答がＮＯのとき、すなわち失火が発生していると判定された気筒数が２以上のときには、故障判定の実行条件が成立していないとして、前記ステップ１１３以降に進む。このステップ１１９の答がＹＥＳで、１つの気筒Ｃのみが失火発生と判定されているときには、＃１気筒Ｃの気筒別失火発生判定フラグＦ＿ＦＳＭＦＣＳ１が、「１」であるか否かを判別する（ステップ１２０）。この答がＹＥＳで、失火気筒が＃１気筒Ｃであるときには、前述したように＃１気筒Ｃは可変動弁機構９によっては駆動されず、その失火が可変動弁機構９の故障とは無関係であるので、故障判定は行わないものとして、前記ステップ１１９以降に進む。
【００３９】
上記ステップ１２０の答がＮＯ、すなわち失火気筒が＃２〜＃４気筒Ｃのいずれか１つであるときには、Ｆ／Ｃ解除要求フラグＦ＿ＣＳＳＭＦＣＲが「１」であるか否かを判別する（ステップ１２１）。後述するように、このＦ／Ｃ解除要求フラグＦ＿ＣＳＳＭＦＣＲは、Ｆ／Ｃ状態で故障判定を行い、故障が発生していないと判定されたときに、Ｆ／Ｃを解除するために「１」にセットされるものである。したがって、ステップ１２１の答がＹＥＳで、Ｆ＿ＣＳＳＭＦＣＲ＝１のときには、故障判定は行わないものとして、前記ステップ１１９以降に進む。
【００４０】
一方、上記ステップ１２１の答がＮＯのときには、故障判定の実行条件が成立しているとして、故障判定を実行するために、Ｆ／Ｃ要求フラグＦ＿ＣＳＳＭＦＣを「１」にセットする（ステップ１２２）。
【００４１】
図９は、このＦ／Ｃ要求フラグＦ＿ＣＳＳＭＦＣの設定に応じたＦ／Ｃ実行判定処理を示す。この処理では、Ｆ／Ｃ要求フラグＦ＿ＣＳＳＭＦＣが「１」であるか否かを判別する（ステップ１３１）。この答がＹＥＳで、Ｆ／Ｃ要求があるときには、＃２気筒Ｃの気筒別失火発生判定フラグＦ＿ＦＳＭＦＣＳ２が「１」であるか否かを判別し（ステップ１３２）、その答がＹＥＳ、すなわち失火気筒が＃２気筒Ｃであるときには、＃２気筒ＣのＦ／Ｃ指示フラグＦ＿ＦＣＣＹＬ２を「１」にセットする（ステップ１３３）。これにより、＃２気筒Ｃのインジェクタ７からの燃料噴射が停止されることで、＃２気筒ＣのＦ／Ｃが実行される。
【００４２】
以下同様に、＃３および＃４気筒Ｃの気筒別失火発生判定フラグＦ＿ＦＳＭＦＣＳ３、４が「１」であるか否かをそれぞれ判別し（ステップ１３４、１３６）、その答がＹＥＳのときに、対応するＦ／Ｃ指示フラグＦ＿ＦＣＣＹＬ３、４を「１」にセットする（ステップ１３５、１３７）することで、失火した＃３または＃４気筒ＣについてＦ／Ｃを実行する。また、前記ステップ１３１の答がＮＯで、Ｆ／Ｃ要求がないときには、＃２〜＃４気筒ＣのＦ／Ｃ指示フラグＦ＿ＦＣＣＹＬ２〜４をそれぞれ「０」にセットする（ステップ１３８）ことで、いずれの気筒ＣについてもＦ／Ｃを行わないようにし、本プログラムを終了する。
【００４３】
図８に戻り、前記ステップ１２２に続くステップ１２３では、前記ステップ１１５でセットしたディレイタイマＴＭＣＤＢの値が０であるか否かを判別し（ステップ１２３）、その答がＮＯのときには、前記ステップ１１６に進み、故障判定許可フラグＦ＿ＭＣＮＤＦＢを「０」に保持する。一方、ステップ１２３の答がＹＥＳで、Ｆ／Ｃの実行後、所定時間＃ＴＭＭＣＢが経過したときには、故障判定を許可すべく、故障判定許可フラグＦ＿ＭＣＮＤＦＢを「１」にセットし（ステップ１２４）、実行条件判定処理を終了する。
【００４４】
図６の故障判定処理に戻り、前記ステップ８１に続くステップ８２では、上記実行条件判定処理で設定された故障判定許可フラグＦ＿ＭＣＮＤＦＢが「１」であるか否かを判別する。この答がＮＯで、故障判定の実行条件が成立していないときには、故障判定タイマＴＦＳＣＳＳおよびそのホールドタイマＳＴＯＲＥＣＳＳに、それぞれ所定時間＃ＴＭＦＳＣＳＳ（例えば２０秒）をセットする（ステップ８３）。次いで、始動後タイマＴＡＣＲＳＴの値が所定時間＃ＴＭＫＲＣＳＳ（例えば６０秒）よりも大きいか否かを判別する（ステップ８４）とともに、前記式（２）で算出した失火気筒数ＣＮＭＦＣＳが値０に等しいか否かを判別する（ステップ８５）。
【００４５】
これらの答のいずれかがＮＯ、すなわち始動後に所定時間＃ＴＭＫＲＣＳＳが経過していないか、または今回時を含む直前において＃１〜＃４気筒Ｃの少なくとも１つに失火が発生しているときには、空燃比Ｆ／Ｂ補正係数ＫＡＦの後述する平均値ＫＡＶＣＳＳの初期値を、理論空燃比に相当するそのときの基準値ＫＲＥＦＸＣＳＳに設定し（ステップ８７）、次いで、通常失火判定タイマＴＯＫＣＳＳに所定時間＃ＴＭＯＫＣＳＳ（例えば２０秒）をセットし（ステップ８８）、本プログラムを終了する。一方、前記ステップ８４、８５の答がいずれもＹＥＳのときには、そのときの空燃比Ｆ／Ｂ補正係数ＫＡＦの学習基準値ＫＲＥＦＸを、基準値ＫＲＥＦＸＣＳＳとして更新した（ステップ８６）後、前記ステップ８７に進む。
【００４６】
一方、前記ステップ８２の答がＹＥＳで、故障判定の実行条件が成立しているときには、空燃比Ｆ／Ｂ制御フラグＦ＿ＡＦＦＢが「１」であるか否かを判別する（ステップ８９）。この答がＮＯ、すなわちＬＡＦセンサ１９で検出された酸素濃度ＶＬＡＦに応じた空燃比Ｆ／Ｂ補正係数ＫＡＦのフィードバック制御中でないときには、そのディレイタイマＴＣＳＳＤＬＹに所定時間＃ＴＭＣＳＳＤＬＹ（例えば２秒）をセットする（ステップ９０）とともに、故障判定タイマＴＦＳＣＳＳにそのときのホールドタイマＳＴＯＲＥＣＳＳの値をセットした（ステップ９１）後、前記ステップ８８に進む。
【００４７】
前記ステップ８９の答がＹＥＳで、空燃比Ｆ／Ｂ補正係数ＫＡＦのフィードバック制御中であるときには、ディレイタイマＴＣＳＳＤＬＹの値が０であるか否かを判別し（ステップ９２）、その答がＮＯのときには前記ステップ９１に進む一方、答がＹＥＳで、空燃比フィードバック制御に復帰後、所定時間＃ＴＭＣＳＳＤＬＹが経過したときには、空燃比Ｆ／Ｂ補正係数ＫＡＦの平均値ＫＡＶＣＳＳを、次式（４）によって算出する（ステップ９３）。
0003706335.tif 000002
ここで、右辺のＫＡＶＣＳＳは前回値である。また、ＣＫＡＶＣＳＳは、値１．０未満の平均化係数（例えば０．２）である。なお、この平均化係数ＣＫＡＶＣＳＳは、アイドル運転時とアイドル以外の運転時で互いに異なる値に設定してもよく、その場合、アイドル運転時に、より小さな値（例えば０．１）に設定してもよい。
【００４８】
次いで、エンジン回転数ＮＥに応じ、図１０に示すテーブルを検索することによって、テーブル値＃ＤＫＡＶＣＳＳＮを求め、故障判定用の加算値（かさ上げ値）ＤＫＡＶＣＳＳとして設定する（ステップ９４）。このテーブルでは、後述する理由から、テーブル値＃ＤＫＡＶＣＳＳＮは、エンジン回転数ＮＥが小さいいほど、より大きな値に設定されている。
【００４９】
次に、前記ステップ８６で設定した基準値ＫＲＥＦＸＣＳＳに上記ステップ９４で設定した加算値ＤＫＡＶＣＳＳを加算した値を、故障判定用の判定値ＫＡＶＣＳＳＨとして設定する（ステップ９５）。次いで、前記式（４）で算出した平均値ＫＡＶＣＳＳがこの判定値ＫＡＶＣＳＳＨ以上であるか否かを判別する（ステップ９６）。この答がＮＯで、平均値ＫＡＶＣＳＳ＜判定値ＫＡＶＣＳＳＨが成立するときには、故障判定タイマＴＦＳＣＳＳの値が０であるか否かを判別する（ステップ９７）。
【００５０】
そして、この答がＮＯのときには、後述するステップ１００に進む一方、ＹＥＳのとき、すなわちＫＡＶＣＳＳ＜ＫＡＶＣＳＳＨの状態が所定時間＃ＴＭＦＳＣＳＳ継続したときには、可変動弁機構９が故障しており、この場合の失火が、通常失火ではなく、可変動弁機構９の故障によるものと判定して、そのことを表すために、通常失火判定フラグＦ＿ＯＫＦＢを「０」にセットする（ステップ９８）とともに、故障判定フラグＦ＿ＦＳＤＦＢを「１」にセットする（ステップ９９）。
【００５１】
前記ステップ９７または９９に続くステップ１００では、前記ステップ８８と同様、通常失火判定タイマＴＯＫＣＳＳに所定時間＃ＴＭＯＫＣＳＳをセットし（ステップ１００）、次いで、ホールドタイマＳＴＯＲＥＣＳＳにそのときの故障判定タイマＴＦＳＣＳＳの値をセットし（ステップ１０１）、本プログラムを終了する。
【００５２】
以上のように、本実施形態によれば、まずエンジン２のクランクシャフト２ａの回転変動に基づき、図３の失火検知処理によって＃１〜＃４気筒Ｃのうち失火した気筒Ｃを特定し、その失火気筒に対してＦ／Ｃを行うとともに、このＦ／Ｃ中にフィードバック制御を実行することにより得られた空燃比Ｆ／Ｂ補正係数ＫＡＦの平均値ＫＡＶＣＳＳが、判定値ＫＡＶＣＳＳＨよりも小さいときに、可変動弁機構９が故障していると判定する。可変動弁機構９は、それが正常であれば、全気筒運転時には吸気弁８ａおよび排気弁８ｂを開閉動作可能な状態に保持しており、失火した気筒ＣのＦ／Ｃによりその気筒Ｃには空気のみが供給されることで、酸素濃度ＶＬＡＦがリーン側の値を示すのに応じて、空燃比Ｆ／Ｂ補正係数ＫＡＦはリッチ側（大きな値）に制御されるはずである。したがって、逆に、ＫＡＦ値の平均値ＫＡＶＣＳＳが判定値ＫＡＶＣＳＳＨよりも小さい場合には、失火した気筒Ｃの吸・排気弁８ａ、８ｂが閉じっ放しになっていて、可変動弁機構９が吸・排気弁８ａ、８ｂを開閉動作可能な状態に制御できない故障状態にあると、適切に判定することができる。また、この場合の失火の原因を、可変動弁機構９の故障によるものと特定でき、通常失火と明確に識別することができる。
【００５３】
また、Ｆ／Ｃ中の酸素濃度ＶＬＡＦの変化の度合は、エンジン回転数ＮＥが低いほど大きくなる傾向にあるので、判定値ＫＡＶＣＳＳに適用される加算値ＤＫＡＶＣＳＳを、エンジン回転数ＮＥに応じて前述したように設定することによって、判定値ＫＡＶＣＳＳを適切に設定でき、したがって、可変動弁機構９の故障判定をより適切に行うことができる。
【００５４】
一方、前記ステップ９６の答がＹＥＳで、平均値ＫＡＶＣＳＳ≧判定値ＫＡＶＣＳＳＨのときには、通常失火判定タイマＴＯＫＣＳＳの値が０であるか否かを判別する（ステップ１０２）。この答がＮＯのときには、後述するステップ１０７に進む一方、ＹＥＳのとき、すなわちＫＡＶＣＳＳ≧ＫＡＶＣＳＳＨの状態が所定時間＃ＴＭＯＫＣＳＳ継続したときには、故障判定フラグＦ＿ＦＳＤＦＢが「１」であるか否かを判別する（ステップ１０３）。そして、この答がＮＯで、可変動弁機構９の故障と判定されていないときには、失火の発生原因が可変動弁機構９の故障ではなく、今回の失火が他の原因による通常失火であると判定して、そのことを表すために、通常失火判定フラグＦ＿ＯＫＦＢを「１」にセットした（ステップ１０４）後、後述するステップ１０５に進む。一方、前記ステップ１０３の答がＹＥＳで、故障判定フラグＦ＿ＦＳＤＦＢ＝１のときには、前記ステップ１０４をスキップすることで、今回の失火が通常失火であるとの判定を保留する。以上の制御により、可変動弁機構９の故障による失火と、他の原因による通常失火とを、明確に識別することができる。
【００５５】
前記ステップ１０３または１０４に続くステップ１０５では、Ｆ／Ｃ解除要求フラグＦ＿ＣＳＳＭＦＣＲを「１」にセットする。これにより、可変動弁機構９が故障と判定されていない場合には、故障判定の終了後、そのためのＦ／Ｃが解除され、燃料供給が再開されることで、通常の運転状態に適切かつ速やかに復帰することができる。
【００５６】
次いで、ステップ１０６では、検知処理カウンタＮＴＤＣＣＳＳ、気筒別失火発生カウンタＮＭＦＣＳ１〜４、失火判定気筒数ＣＦＳＭＦＣＳおよび失火発生判定フラグＦ＿ＦＳＭＦＣＳを、それぞれ「０」にリセットする。次に、前記ステップ８３と同様、故障判定タイマＴＦＳＣＳＳおよびホールドタイマＳＴＯＲＥＣＳＳに、所定時間＃ＴＭＦＳＣＳＳをそれぞれセットし（ステップ１０７、１０８）、本プログラムを終了する。
【００５７】
以上のように、本実施形態によれば、エンジン２の失火状態を気筒Ｃごとに検知し、失火気筒に対してＦ／Ｃを行うとともに、このＦ／Ｃ中にフィードバック制御を実行することにより得られた空燃比Ｆ／Ｂ補正係数ＫＡＦの平均値ＫＡＶＣＳＳが、判定値ＫＡＶＣＳＳＨよりも小さいときに、可変動弁機構９が故障していると判定する。したがって、失火した気筒Ｃの吸・排気弁８ａ、８ｂが閉じっ放しになっていて、可変動弁機構９が吸・排気弁８ａ、８ｂを開閉動作可能な状態に制御できない故障状態にあると、適切に判定することができる。また、この場合の失火の原因が可変動弁機構９の故障によるものと特定でき、通常失火と明確に識別することができる。
【００５８】
なお、本発明は、説明した実施形態に限定されることなく、種々の態様で実施することができる。例えば、実施形態では、エンジン２の失火状態の検知を、エンジン２の回転変動に基づいて行っているが、これを他の適当な手段で行ってもよいことはもちろんである。例えば気筒内圧を監視し、その変動状況に基づいて失火状態を検知してもよい。また、実施形態では、酸素濃度パラメータとして、ＬＡＦセンサ１９で検出された酸素濃度ＶＬＡＦに応じてフィードバック制御される空燃比Ｆ／Ｂ補正係数ＫＡＦを用いているが、これに代えて、酸素濃度ＶＬＡＦを直接、用いるようにしてもよい。
【００５９】
【発明の効果】
以上のように、本発明の内燃機関の故障判定装置は、可変動弁機構の故障を、通常失火と識別しながら適切に判定することができるなどの効果を有する。
【図面の簡単な説明】
【図１】本発明の一実施形態による故障判定装置、およびこれを適用した内燃機関の概略構成図である。
【図２】失火モニタ処理を示すフローチャートである。
【図３】失火検知処理を示すフローチャートである。
【図４】図３のステップ３７で実行される気筒別失火カウント処理のサブルーチンである。
【図５】図３のステップ４５で実行される気筒別失火判定処理のサブルーチンである。
【図６】故障判定処理のメインフローを示すフローチャートである。
【図７】図６の故障判定処理の残りの部分を示すフローチャートである。
【図８】図６のステップ８１で実行される故障判定の実行条件判定処理のサブルーチンである。
【図９】Ｆ／Ｃ実行判定処理を示すフローチャートである。
【図１０】故障判定用の加算値ＤＫＡＶＣＳＳを求めるための＃ＤＫＡＶＣＳＳＮテーブルの一例である。
【符号の説明】
１  故障判定装置
２  内燃機関
３  ＥＣＵ（失火検知手段、燃料供給停止手段、故障判定手段）
７  燃料噴射弁
９  可変動弁機構
８ａ  吸気弁（動弁系）
８ｂ  排気弁（動弁系）
１４  気筒判別センサ（気筒判別手段）
１６  クランク角センサ（失火検知手段）
１９  ＬＡＦセンサ（酸素濃度検出手段）
Ｃ  気筒
ＶＬＡＦ  酸素濃度
ＫＡＦ  空燃比フィードバック補正係数（酸素濃度パラメータ）
ＫＡＶＣＳＳ  ＫＡＦの平均値（酸素濃度パラメータ）
ＫＡＶＣＳＳＨ  判定値（基準値）
【図１】
0003706335.tif 000003
【図２】
0003706335.tif 000004
【図３】
0003706335.tif 000005
【図４】
0003706335.tif 000006
【図５】
0003706335.tif 000007
【図６】
0003706335.tif 000008
【図７】
0003706335.tif 000009
【図８】
0003706335.tif 000010
【図９】
0003706335.tif 000011
【図１０】
0003706335.tif 000012