(57)【要約】【課題】内燃機関の排気合流部に設置した１つの空燃比センサの検出値に基づいて各気筒の空燃比を制御するシステムにおいて、気筒別空燃比制御の影響を受ける異常診断の誤診断を防止する。【解決手段】排気合流部３６に設置した空燃比センサ３７の検出値に基づいて各気筒の空燃比を推定し、各気筒の推定空燃比に基づいて気筒別空燃比補正量を算出すると共に、気筒別空燃比補正量をなまし処理等により学習して、気筒別空燃比補正量とその学習値に基づいて各気筒に供給する混合気の空燃比（燃料噴射量）を各気筒毎に補正して気筒間の空燃比ばらつきを少なくするように制御する。この気筒別空燃比制御中に、いずれかの気筒の気筒別空燃比補正量が所定範囲（許容範囲）から外れた状態が暫く続いたときに、気筒別空燃比制御の影響を受ける異常診断を禁止することで、異常診断の誤診断を防止する。【選択図】図１
2008038785.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関の複数の気筒の排出ガスが合流する排気合流部に、該排出ガスの空燃比を検出する空燃比センサを設置し、前記空燃比センサの検出値に基づいて各気筒の空燃比を推定する気筒別空燃比推定手段と、前記複数の気筒について気筒毎に空燃比の気筒間ばらつきを補正するための各気筒の空燃比補正量（以下「気筒別空燃比補正量」という）を算出する気筒別空燃比補正量算出手段と、前記気筒別空燃比補正量に基づいて各気筒の燃料噴射量を補正して気筒間の空燃比ばらつきを小さくする気筒別空燃比制御を実行する気筒別空燃比制御手段とを備えた内燃機関の気筒別空燃比制御装置において、
前記空燃比センサ及び／又はその他の排出ガスセンサの出力、若しくは、空燃比の影響を受けて変化するパラメータに基づいて異常診断を実施する異常診断手段と、
いずれか１つ又は２つ以上の気筒の気筒別空燃比補正量又はその学習値が所定範囲を外れたときに前記異常診断手段による異常診断の少なくとも１つを禁止し又はその診断結果を無効とする診断禁止手段と
を備えていることを特徴とする内燃機関の気筒別空燃比制御装置。
【請求項２】
前記診断禁止手段は、前記いずれか１つ又は２つ以上の気筒の気筒別空燃比補正量又はその学習値が所定範囲を外れた運転領域についてのみ前記異常診断手段による異常診断の少なくとも１つを禁止し又はその診断結果を無効とすることを特徴とする請求項１に記載の内燃機関の気筒別空燃比制御装置。
【請求項３】
内燃機関の複数の気筒の排出ガスが合流する排気合流部に、該排出ガスの空燃比を検出する空燃比センサを設置し、前記空燃比センサの検出値に基づいて各気筒の空燃比を推定する気筒別空燃比推定手段と、前記複数の気筒について気筒毎に空燃比の気筒間ばらつきを補正するための各気筒の空燃比補正量（以下「気筒別空燃比補正量」という）を算出する気筒別空燃比補正量算出手段と、前記気筒別空燃比補正量に基づいて各気筒の燃料噴射量を補正して気筒間の空燃比ばらつきを小さくする気筒別空燃比制御を実行する気筒別空燃比制御手段とを備えた内燃機関の気筒別空燃比制御装置において、
前記空燃比センサ及び／又はその他の排出ガスセンサの出力、若しくは、空燃比の影響を受けて変化するパラメータに基づいて異常診断を実施する異常診断手段と、
いずれか１つ又は２つ以上の気筒別空燃比補正量又はその学習値を所定範囲と比較し、その比較結果に基づいて前記異常診断手段による異常診断の実行可否を判定する診断実行条件判定手段と
を備えていることを特徴とする内燃機関の気筒別空燃比制御装置。
【請求項４】
前記診断実行条件判定手段は、前記いずれか１つ又は２つ以上の気筒の気筒別空燃比補正量又はその学習値が所定範囲を外れた運転領域と異なる運転領域では、前記異常診断手段による異常診断の実行を許可することを特徴とする請求項３に記載の内燃機関の気筒別空燃比制御装置。
【請求項５】
内燃機関の複数の気筒の排出ガスが合流する排気合流部に、該排出ガスの空燃比を検出する空燃比センサを設置し、前記空燃比センサの検出値に基づいて各気筒の空燃比を推定する気筒別空燃比推定手段と、前記複数の気筒について気筒毎に空燃比の気筒間ばらつきを補正するための各気筒の空燃比補正量（以下「気筒別空燃比補正量」という）を算出する気筒別空燃比補正量算出手段と、前記気筒別空燃比補正量に基づいて各気筒の燃料噴射量を補正して気筒間の空燃比ばらつきを小さくする気筒別空燃比制御を実行する気筒別空燃比制御手段とを備えた内燃機関の気筒別空燃比制御装置において、
前記空燃比センサ及び／又はその他の排出ガスセンサの出力、若しくは、空燃比の影響を受けて変化するパラメータに基づいて異常診断を実施する異常診断手段と、
いずれか１つ又は２つ以上の気筒別空燃比補正量又はその学習値を所定範囲と比較し、その比較結果に基づいて前記異常診断手段による異常診断の判定条件を変更する判定条件変更手段と
を備えていることを特徴とする内燃機関の気筒別空燃比制御装置。
【請求項６】
前記判定条件変更手段は、前記いずれか１つ又は２つ以上の気筒の気筒別空燃比補正量又はその学習値が所定範囲を外れた運転領域と異なる運転領域では、前記異常診断手段による異常診断の判定条件を、前記気筒別空燃比補正量が所定範囲内のときの運転領域と同じ判定条件とすることを特徴とする請求項５に記載の内燃機関の気筒別空燃比制御装置。
【請求項７】
前記異常診断手段は、触媒劣化診断、燃料系異常診断、空気系異常診断、前記空燃比センサの異常診断、前記排出ガスセンサの異常診断、燃焼状態診断、燃料性状診断の少なくとも１つを実施することを特徴とする請求項１乃至６のいずれかに記載の内燃機関の気筒別空燃比制御装置。
【請求項８】
内燃機関の複数の気筒の排出ガスが合流する排気合流部に、該排出ガスの空燃比を検出する空燃比センサを設置し、前記空燃比センサの検出値に基づいて各気筒の空燃比を推定する気筒別空燃比推定手段と、前記複数の気筒について気筒毎に空燃比の気筒間ばらつきを補正するための各気筒の空燃比補正量（以下「気筒別空燃比補正量」という）を算出する気筒別空燃比補正量算出手段と、前記気筒別空燃比補正量に基づいて各気筒の燃料噴射量を補正して気筒間の空燃比ばらつきを小さくする気筒別空燃比制御を実行する気筒別空燃比制御手段とを備えた内燃機関の気筒別空燃比制御装置において、
気筒分配で空燃比に影響を及ぼす制御を実行する手段と、
いずれか１つ又は２つ以上の気筒の気筒別空燃比補正量又はその学習値が所定範囲を外れたときに前記気筒分配で空燃比に影響を及ぼす制御の制御割合を小さくし又は当該制御を禁止する制限手段と
を備えていることを特徴とする内燃機関の気筒別空燃比制御装置。
【請求項９】
前記制限手段は、前記いずれか１つ又は２つ以上の気筒の気筒別空燃比補正量又はその学習値が所定範囲を外れた運転領域についてのみ前記気筒分配で空燃比に影響を及ぼす制御の制御割合を小さくし又は当該制御を禁止することを特徴とする請求項８に記載の内燃機関の気筒別空燃比制御装置。
【請求項１０】
前記気筒分配で空燃比に影響を及ぼす制御は、排出ガス還流制御、ブローバイガス還流制御、エバポガスパージ制御の少なくとも１つであることを特徴とする請求項８又は９に記載の内燃機関の気筒別空燃比制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の気筒の排出ガスが合流する排気合流部に設置した空燃比センサの検出値に基づいて各気筒の空燃比（気筒別空燃比）を推定する機能を備えた内燃機関の気筒別空燃比制御装置に関する発明である。
【背景技術】
【０００２】
近年、特許文献１（特開２００５−２０７４０５号公報）に記載されているように、複数の気筒の排出ガスが合流する排気合流部に設置した１つの空燃比センサの出力に基づいて複数の気筒の空燃比を気筒毎に推定すると共に、気筒毎に空燃比の気筒間ばらつきを補正するための各気筒の空燃比補正量（気筒別空燃比補正量）を算出して、この気筒別空燃比補正量に基づいて複数の気筒の空燃比（燃料噴射量）を気筒毎に制御する気筒別空燃比制御を実施するようにしたものがある。更に、この特許文献１の気筒別空燃比制御システムでは、気筒別空燃比の推定が困難（気筒別空燃比補正量の算出が困難）となる運転条件では、気筒別空燃比補正量の学習値を用いて気筒別空燃比制御を実施するようにしている。
【特許文献１】特開２００５−２０７４０５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
近年の電子制御化が進んだエンジン制御システムでは、触媒劣化診断、燃料系異常診断、空燃比センサの異常診断、燃焼状態診断（失火検出）、燃料性状診断等の様々な異常診断を行う自己診断機能が搭載されている。
【０００４】
これらの異常診断は、いずれも、空燃比センサの出力や、空燃比の影響を受けて変化するパラメータ（例えばエンジン回転変動）を用いて行われるため、気筒別空燃比制御の制御状態が安定しないときには、その影響で異常診断を誤診断する可能性がある。
【０００５】
本発明はこのような事情を考慮してなされたものであり、従ってその目的は、排気合流部に設置した１つの空燃比センサの検出値に基づいて気筒別空燃比制御を行うシステムにおいて、気筒別空燃比制御の影響を受ける異常診断の誤診断を防止することができる内燃機関の気筒別空燃比制御装置を提供することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、請求項１に係る発明は、内燃機関の複数の気筒の排出ガスが合流する排気合流部に、該排出ガスの空燃比を検出する空燃比センサを設置し、前記空燃比センサの検出値に基づいて各気筒の空燃比を推定する気筒別空燃比推定手段と、前記複数の気筒について気筒毎に空燃比の気筒間ばらつきを補正するための各気筒の空燃比補正量（以下「気筒別空燃比補正量」という）を算出する気筒別空燃比補正量算出手段と、前記気筒別空燃比補正量に基づいて各気筒の燃料噴射量を補正して気筒間の空燃比ばらつきを小さくする気筒別空燃比制御を実行する気筒別空燃比制御手段とを備えた内燃機関の気筒別空燃比制御装置において、前記空燃比センサ及び／又はその他の排出ガスセンサの出力、若しくは、空燃比の影響を受けて変化するパラメータに基づいて異常診断を実施する異常診断手段と、いずれか１つ又は２つ以上の気筒の気筒別空燃比補正量又はその学習値が所定範囲を外れたときに前記異常診断手段による異常診断の少なくとも１つを禁止し又はその診断結果を無効とする診断禁止手段とを備えた構成としたものである。
【０００７】
このようにすれば、いずれか１つ又は２つ以上の気筒の気筒別空燃比補正量又はその学習値が所定範囲（許容範囲）から外れたときに、気筒別空燃比制御の制御状態が不安定と判断して、異常診断を禁止し又はその診断結果を無効とすることができるので、気筒別空燃比制御の影響を受ける異常診断の誤診断を防止することができ、異常診断の信頼性を向上することができる。
【０００８】
この場合、請求項２のように、いずれか１つ又は２つ以上の気筒の気筒別空燃比補正量又はその学習値が所定範囲を外れた運転領域についてのみ、異常診断手段による異常診断の少なくとも１つを禁止し又はその診断結果を無効とするようにしても良い。このようにすれば、気筒別空燃比補正量又はその学習値が所定範囲を外れた運転領域のみで異常診断を禁止又は無効にして異常診断の誤診断を防止しながら、気筒別空燃比補正量又はその学習値が所定範囲内に収まる他の運転領域では、異常診断を継続することができるので、異常発生時にその異常を早期に検出することができる。
【０００９】
また、請求項３のように、いずれか１つ又は２つ以上の気筒別空燃比補正量又はその学習値を所定範囲と比較し、その比較結果に基づいて異常診断手段による異常診断の実行可否を診断実行条件判定手段により判定するようにしても良い。このようにしても、前記請求項１と同様の効果を得ることができる。
【００１０】
この場合、請求項４のように、いずれか１つ又は２つ以上の気筒の気筒別空燃比補正量又はその学習値が所定範囲を外れた運転領域と異なる運転領域では、異常診断手段による異常診断の実行を許可するようにしても良い。このようにしても、前記請求項２と同様の効果を得ることができる。
【００１１】
また、請求項５のように、いずれか１つ又は２つ以上の気筒別空燃比補正量又はその学習値を所定範囲と比較し、その比較結果に基づいて前記異常診断手段による異常診断の判定条件（例えば判定しきい値又は診断パラメータ等）を判定条件変更手段によって変更するようにしても良い。このようにすれば、いずれか１つ又は２つ以上の気筒の気筒別空燃比補正量が所定範囲から外れたときに、異常診断の判定条件を異常が検出されにくい厳しい判定条件に変更することが可能となり、気筒別空燃比制御の影響を受ける異常診断の誤診断を防止することができる。
【００１２】
この場合、請求項６のように、いずれか１つ又は２つ以上の気筒の気筒別空燃比補正量又はその学習値が所定範囲を外れた運転領域と異なる運転領域では、異常診断の判定条件を、気筒別空燃比補正量が所定範囲内のときの運転領域と同じ判定条件とすると良い。このようにすれば、気筒別空燃比補正量又はその学習値が所定範囲を外れた運転領域のみで異常診断の判定条件を異常が検出されにくい厳しい判定条件に変更して異常診断の誤診断を防止しながら、気筒別空燃比補正量又はその学習値が所定範囲内に収まる他の運転領域では、通常時と同様の異常診断を継続することができ、異常発生時にその異常を早期に検出することができる。
【００１３】
以上説明した請求項１〜６に係る発明においては、請求項７のように、触媒劣化診断、燃料系異常診断、空気系異常診断、前記空燃比センサの異常診断、前記排出ガスセンサの異常診断、燃焼状態診断、燃料性状診断の少なくとも１つを実施するようにすると良い。これらの異常診断は、いずれも、空燃比センサ及び／又はその他の排出ガスセンサの出力、若しくは空燃比の影響を受けて変化するパラメータに基づいて行う異常診断である。
【００１４】
ところで、気筒分配で空燃比に影響を及ぼす制御（排出ガス還流制御、ブローバイガス還流制御、エバポガスパージ制御等）は、各気筒の空燃比に影響を及ぼす度合が気筒毎に異なる可能性があり、気筒間の空燃比ばらつきを大きくする原因となる。従って、気筒別空燃比補正量又はその学習値が所定範囲（許容範囲）から外れたときに、気筒分配で空燃比に影響を及ぼす制御を通常時と同様に行うと、気筒別空燃比補正量又はその学習値が益々異常な値になって気筒別空燃比制御の制御状態が益々悪化する可能性がある。
【００１５】
このような事情を考慮して、請求項８のように、気筒分配で空燃比に影響を及ぼす制御を実行するシステムでは、いずれか１つ又は２つ以上の気筒の気筒別空燃比補正量又はその学習値が所定範囲を外れたときに、気筒分配で空燃比に影響を及ぼす制御の制御割合を小さくし又は当該制御を禁止する制限手段を備えた構成としても良い。このようにすれば、制限手段によって気筒別空燃比制御の制御状態の悪化を抑えることができ、気筒別空燃比制御の影響を受ける異常診断の誤診断を防止することができる。
【００１６】
この場合、請求項９のように、いずれか１つ又は２つ以上の気筒の気筒別空燃比補正量又はその学習値が所定範囲を外れた運転領域についてのみ、気筒分配で空燃比に影響を及ぼす制御の制御割合を小さくし又は当該制御を禁止するようにしても良い。このようにすれば、いずれか１つ又は２つ以上の気筒の気筒別空燃比補正量又はその学習値が所定範囲を外れた場合でも、運転領域によっては、気筒分配で空燃比に影響を及ぼす制御を通常時と同様に実行することができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明を実施するための最良の形態を具体化した幾つかの実施例を説明する。
【実施例１】
【００１８】
本発明の実施例１を図１乃至図９に基づいて説明する。
まず、図１に基づいてエンジン制御システム全体の概略構成を説明する。
内燃機関である例えば直列４気筒のエンジン１１の吸気管１２の最上流部には、エアクリーナ１３が設けられ、このエアクリーナ１３の下流側に、吸入空気量を検出するエアフローメータ１４が設けられている。このエアフローメータ１４の下流側には、モータ等によって開度調節されるスロットルバルブ１５とスロットル開度を検出するスロットル開度センサ１６とが設けられている。
【００１９】
更に、スロットルバルブ１５の下流側には、サージタンク１７が設けられ、このサージタンク１７には、吸気管圧力を検出する吸気管圧力センサ１８が設けられている。また、サージタンク１７には、エンジン１１の各気筒に空気を導入する吸気マニホールド１９が設けられ、各気筒の吸気マニホールド１９の吸気ポート近傍に、それぞれ燃料を噴射する燃料噴射弁２０が取り付けられている。エンジン運転中は、燃料タンク２１内の燃料が燃料ポンプ２２によりデリバリパイプ２３に送られ、各気筒の噴射タイミング毎に各気筒の燃料噴射弁２０から燃料が噴射される。デリバリパイプ２３には、燃料圧力（燃圧）を検出する燃圧センサ２４が取り付けられている。
【００２０】
また、エンジン１１には、吸気バルブ２５と排気バルブ２６の開閉タイミングをそれぞれ可変する可変バルブタイミング機構２７，２８が設けられている。更に、エンジン１１には、吸気カム軸２９と排気カム軸３０の回転に同期してカム角信号を出力する吸気カム角センサ３１と排気カム角センサ３２が設けられ、エンジン１１のクランク軸の回転に同期して所定クランク角毎（例えば３０℃Ａ毎）にクランク角信号のパルスを出力するクランク角センサ３３が設けられている。
【００２１】
一方、エンジン１１の各気筒の排気マニホールド３５が合流する排気合流部３６には、排出ガスの空燃比を検出する空燃比センサ３７が設置され、この空燃比センサ３７の下流側に排出ガス中のＣＯ，ＨＣ，ＮＯｘ等を浄化する三元触媒等の触媒３８が設けられている。更に、この触媒３８の下流側に、触媒３８を通過した排出ガスのリッチ／リーンを検出する酸素センサ４１（排出ガスセンサ）が設置されている。この酸素センサ４１の出力は、触媒３８上流側の目標空燃比を補正するサブフィードバック制御に用いられたり、或は、触媒３８の劣化診断を行うのに使用される。
【００２２】
その他、図示はしないが、エンジン１１には、排出ガスの一部を吸気系に還流させる排出ガス還流装置と、クランクケース内に漏れ出るブローバイガスを吸気系に還流させるブローバイガス還流装置と、燃料タンク２１内で発生したエバポガス（燃料蒸発ガス）をキャニスタ内に吸着して吸気系にパージ（放出）するエバポガスパージ装置等が搭載されている。
【００２３】
上述した空燃比センサ３７等の各種センサの出力は、エンジン制御回路（以下「ＥＣＵ」と表記する）４０に入力される。このＥＣＵ４０は、マイクロコンピュータを主体として構成され、内蔵されたＲＯＭ（記憶媒体）に記憶された各種のエンジン制御プログラムを実行することで、エンジン運転状態に応じて各気筒の燃料噴射弁２０の燃料噴射量や点火時期を制御する。
【００２４】
更に、ＥＣＵ４０は、触媒３８上流側の空燃比センサ３７及び／又は触媒３８下流側の酸素センサ４１の出力、若しくは、空燃比の影響を受けて変化するパラメータ（エンジン回転変動）に基づいて異常診断を実施する異常診断手段として機能し、例えば、触媒３８の劣化診断、燃料系異常診断、空気系異常診断、空燃比センサ３７の応答性異常診断、酸素センサ４１の異常診断、燃焼状態診断（失火検出）、燃料性状診断等の様々な異常診断を行う。
【００２５】
例えば、触媒３８の劣化診断は、空燃比センサ３７の出力変化量と酸素センサ４１の出力変化量との比に基づいて診断する。燃料系異常診断は、後述する気筒別空燃比補正量とその学習値に基づいて診断する。空燃比センサ３７の応答性異常診断は、空燃比センサ３７の出力変化量に基づいて診断する。失火検出は、エンジン回転速度の変動に基づいて診断する。酸素センサ４１の異常診断は、酸素センサ４１の出力の挙動と空燃比センサ３７の出力の挙動との関係に基づいて診断する。例えば、触媒３８上流側の空燃比が連続的にリッチの状態が続くと、その後、触媒３８のリッチ成分吸着量が飽和状態となる時間だけ遅れて触媒３８下流側の空燃比がリッチに変化するため、この時点で、酸素センサ４１の出力がリッチに変化したか否かで、酸素センサ４１の異常の有無を判定すれば良い。
【００２６】
本実施例１では、ＥＣＵ４０は、図２乃至図４の気筒別空燃比制御用の各ルーチンを実行することで、エンジン運転中に後述する気筒別空燃比推定モデルを用いて空燃比センサ３７の検出値（排気合流部３６を流れる排出ガスの実空燃比）に基づいて各気筒の空燃比（気筒別空燃比）を推定し、全気筒の推定空燃比の平均値を算出して、その平均値を基準空燃比（全気筒の目標空燃比）に設定すると共に、各気筒の推定空燃比（気筒別推定空燃比）と基準空燃比との偏差を各気筒毎に算出して、その偏差が小さくなるように各気筒の燃料噴射量に対する燃料補正係数（気筒別空燃比補正量）を算出すると共に、この気筒別空燃比補正量をなまし処理等により学習して、気筒別空燃比補正量とその学習値に基づいて各気筒の燃料噴射量を補正することで、各気筒に供給する混合気の空燃比を各気筒毎に補正して気筒間の空燃比ばらつきを少なくするように制御する（以下、この制御を気筒別空燃比制御という）。この際、気筒別空燃比補正量をなまし処理等により学習して、その学習値をＥＣＵ４０のバックアップＲＡＭ等の書き換え可能な不揮発性メモリ（図示せず）に気筒毎に更新記憶する。尚、気筒別空燃比の推定が困難（気筒別空燃比補正量の算出が困難）となる運転条件では、気筒別空燃比補正量の学習値を用いて気筒別空燃比制御を実施するようにしても良い。
【００２７】
ここで、空燃比センサ３７の検出値（排気合流部３６を流れる排出ガスの実空燃比）に基づいて各気筒の空燃比を推定するモデル（以下「気筒別空燃比推定モデル」という）の具体例を説明する。
【００２８】
排気合流部３６におけるガス交換に着目して、空燃比センサ３７の検出値を、排気合流部３６における各気筒の推定空燃比の履歴と空燃比センサ３７の検出値の履歴とにそれぞれ所定の重みを乗じて加算したものとしてモデル化し、該モデルを用いて各気筒の空燃比を推定するようにしている。この際、オブザーバとしてはカルマンフィルタを用いる。
【００２９】
より具体的には、排気合流部３６におけるガス交換のモデルを次の（１）式にて近似する。
ｙs(t)＝ｋ1 ×ｕ(t-1) ＋ｋ2 ×ｕ(t-2) −ｋ3 ×ｙs(t-1)−ｋ4 ×ｙs(t-2)
……（１）
ここで、ｙS は空燃比センサ３７の検出値、ｕは排気合流部３６に流入するガスの空燃比、ｋ1 〜ｋ4 は定数である。
【００３０】
排気系では、排気合流部３６におけるガス流入及び混合の一次遅れ要素と、空燃比センサ３７の応答遅れによる一次遅れ要素とが存在する。そこで、上記（１）式では、これらの一次遅れ要素を考慮して過去２回分の履歴を参照することとしている。
【００３１】
上記（１）式を状態空間モデルに変換すると、次の（２ａ）、（２ｂ）式が導き出される。
Ｘ(t+1) ＝Ａ・Ｘ(t) ＋Ｂ・ｕ(t) ＋Ｗ(t)       ……（２ａ）
Ｙ(t) ＝Ｃ・Ｘ(t) ＋Ｄ・ｕ(t)                 ……（２ｂ）
ここで、Ａ，Ｂ，Ｃ，Ｄはモデルのパラメータ、Ｙは空燃比センサ３７の検出値、Ｘは状態変数としての各気筒の推定空燃比、Ｗはノイズである。
【００３２】
更に、上記（２ａ）、（２ｂ）式によりカルマンフィルタを設計すると、次の（３）式が得られる。
Ｘ＾(k+1｜k)＝Ａ・Ｘ＾(k｜k-1)＋Ｋ｛Ｙ(k) −Ｃ・Ａ・Ｘ＾(k｜k-1)｝  ……（３）  ここで、Ｘ＾（エックスハット）は各気筒の推定空燃比、Ｋはカルマンゲインである。Ｘ＾(k+1｜k)の意味は、時間(k) の推定値により次の時間(k+1) の推定値を求めることを表す。
【００３３】
以上のようにして、気筒別空燃比推定モデルをカルマンフィルタ型オブザーバにて構成することにより、燃焼サイクルの進行に伴い各気筒の空燃比を順次推定することができる。
【００３４】
ところで、ＥＣＵ４０は、エンジン運転中に、触媒３８の劣化診断、燃料系異常診断、空気系異常診断、空燃比センサ３７の異常診断、酸素センサ４１の異常診断、燃焼状態診断（失火検出）、燃料性状診断等の様々な異常診断を行うが、これらの異常診断は、空燃比センサ３７と酸素センサ４１の出力や、空燃比の影響を受けて変化するパラメータ（エンジン回転変動）を用いて行われるため、気筒別空燃比制御が異常な状態のときには、その影響で異常診断を誤診断する可能性がある。
【００３５】
この対策として、本実施例１では、いずれかの気筒の気筒別空燃比補正量（又はその学習値）が許容される所定範囲から外れた状態が暫く続いたときに、気筒別空燃比制御の影響を受ける異常診断を禁止することで、不安定な気筒別空燃比制御による異常診断の誤診断を防止するようにしている。ここで、気筒別空燃比制御の影響を受ける異常診断は、例えば、触媒３８の劣化診断、燃料系異常診断、空気系異常診断、空燃比センサ３７の異常診断、酸素センサ４１の異常診断、燃焼状態診断（失火検出）、燃料性状診断等であり、これらのうちの少なくとも１つの異常診断を禁止する。
【００３６】
以上説明した気筒別空燃比制御と異常診断の誤診断防止は、ＥＣＵ４０によって図２乃至図６の各ルーチンに従って実行される。以下、各ルーチンの処理内容を説明する。
【００３７】
［気筒別空燃比制御メインルーチン］
図２の気筒別空燃比制御メインルーチンは、クランク角センサ３３の出力パルスに同期して所定クランク角毎（例えば３０℃Ａ毎）に起動され、特許請求の範囲でいう気筒別空燃比制御手段としての役割を果たす。本ルーチンが起動されると、まずステップ１０１で、気筒別空燃比制御の実行条件が成立しているか否かを判定する。この気筒別空燃比制御の実行条件としては、例えば次の条件(1) 〜(4) がある。
【００３８】
(1) 空燃比センサ３７が活性状態であること
(2) 空燃比センサ３７が異常（故障）と判定されていないこと
(3) エンジン１１が暖機状態（例えば冷却水温が所定温度以上）であること
(4) エンジン運転領域（例えばエンジン回転速度と吸気管圧力）が空燃比推定精度を確保できる運転領域であること
【００３９】
これら４つの条件(1) 〜(4) を全て満したときに気筒別空燃比制御の実行条件が成立し、いずれか１つでも満たさない条件があれば、実行条件が不成立となる。この実行条件が不成立であれば、以降の処理を行うことなく、本ルーチンを終了する。
【００４０】
一方、実行条件が成立していれば、ステップ１０２に進み、各気筒の空燃比検出タイミング（空燃比センサ３７の出力のサンプルタイミング）を、その時点のエンジン負荷（例えば吸気管圧力）に応じてマップにより設定する。尚、各気筒の空燃比検出タイミングをエンジン負荷とエンジン回転速度に応じてマップにより設定しても良い。
【００４１】
この後、ステップ１０３に進み、現在のクランク角が上記ステップ１０２で設定した空燃比検出タイミングであるか否かを判定し、空燃比検出タイミングでなければ、以降の処理を行うことなく、本ルーチンを終了する。
【００４２】
これに対して、現在のクランク角が上記ステップ１０２で設定した空燃比検出タイミングであれば、ステップ１０４に進み、図３の気筒別空燃比制御実行ルーチンを実行する。この後、ステップ１０５に進み、後述する図５の異常診断禁止判定ルーチンを実行して、いずれかの気筒の気筒別空燃比補正量（又はその学習値）が許容される所定範囲から外れた状態が暫く続いたときに、異常診断禁止フラグをＯＮ（異常診断禁止）にセットして、気筒別空燃比制御の影響を受ける異常診断を禁止する。
【００４３】
［気筒別空燃比制御実行ルーチン］
図３の気筒別空燃比制御実行ルーチンは、図２の気筒別空燃比制御メインルーチンのステップ１０４で実行されるサブルーチンである。本ルーチンが起動されると、まずステップ２０１で、空燃比センサ３７の出力（空燃比検出値）を読み込む。この後、ステップ２０２に進み、前記気筒別空燃比推定モデルを用いて今回の空燃比推定対象となる気筒の空燃比を空燃比センサ３７の検出値に基づいて推定する。このステップ２０２の処理が特許請求の範囲でいう気筒別空燃比推定手段としての役割を果たす。この後、ステップ２０３に進み、全気筒の推定空燃比の平均値を算出して、その平均値を基準空燃比（全気筒の目標空燃比）に設定する。
【００４４】
この後、ステップ２０４に進み、各気筒の推定空燃比と基準空燃比との偏差を算出して、その偏差が小さくなるように気筒別空燃比補正量（各気筒の燃料補正量）を算出した後、ステップ２０５に進み、後述する図４の気筒別空燃比補正量学習ルーチンを実行して、気筒別空燃比補正量を学習する。
【００４５】
そして、次のステップ２０６で、各気筒の気筒別空燃比補正量とその学習値を用いて、各気筒の燃料噴射量を補正することで、各気筒に供給する混合気の空燃比を各気筒毎に補正して気筒間の空燃比ばらつきを少なくするように制御する。
【００４６】
［気筒別空燃比補正量学習ルーチン］
図４の気筒別空燃比補正量学習ルーチンは、図３の気筒別空燃比制御実行ルーチンのステップ２０５で実行されるサブルーチンであり、気筒別学習手段としての役割を果たす。本ルーチンが起動されると、まずステップ３０１で、学習実行条件が成立しているか否かを判定する。ここで、学習実行条件としては、例えば次の２つの条件(1) ，(2) がある。      
【００４７】
(1) 気筒別空燃比制御の実行中であること
(2) 空燃比変動量が所定値以下の安定した運転状態であること
上記２つの条件(1) ，(2) を両方とも満たせば、学習実行条件が成立し、いずれか１つでも満たさない条件があれば、学習実行条件が不成立となる。この学習実行条件が不成立であれば、以降の処理を行うことなく、本ルーチンを終了する。
【００４８】
一方、学習実行条件が成立していれば、ステップ３０４に進み、ＥＣＵ４０の書き換え可能な不揮発性メモリ（図示せず）に記憶されている図７の気筒別空燃比補正量学習マップにおいて、現在のエンジン運転領域（エンジン回転速度と負荷）に対応する学習領域（気筒別空燃比補正量の学習値を更新する学習領域）を選択する。この後、ステップ３０５に進み、気筒毎に気筒別空燃比補正量のなまし値をなまし係数Ｋを用いて次式により算出する。
気筒別空燃比補正量なまし値＝
｛前回なまし値×（Ｋ−１）＋今回の気筒別空燃比補正量｝／Ｋ
【００４９】
この後、ステップ３０６に進み、気筒別空燃比補正量学習値の更新タイミングであるか否かを判定する。この学習値更新タイミングは、学習値の更新周期が少なくとも気筒別補正量の算出周期よりも長くなるよう設定されている。このステップ３０６で、学習値の更新タイミングでないと判定されれば、そのまま本ルーチンを終了する。
【００５０】
一方、上記ステップ３０６で、学習値の更新タイミングであると判定されれば、ステップ３０７に進み、気筒別空燃比補正量なまし値の絶対値が所定値ＴＨＡ以上であるか否かを判定し、当該なまし値の絶対値が所定値ＴＨＡよりも小さければ、学習値を更新する必要がないと判断して本ルーチンを終了する。
【００５１】
また、上記ステップ３０７で、気筒別空燃比補正量なまし値の絶対値が所定値ＴＨＡ以上であると判定されれば、ステップ３０８に進み、気筒別空燃比補正量なまし値に基づいてマップにより学習値更新量を算出する。この学習値更新量を算出するマップは、気筒別空燃比補正量なまし値が大きくなるほど、学習値更新量が大きくなるように設定されている。
【００５２】
この後、ステップ３０９に進み、前回の気筒別空燃比補正量学習値に今回の学習値更新量を加算して求めた値を、新たな気筒別空燃比補正量学習値としてＥＣＵ４０の書き換え可能な不揮発性メモリ（図示せず）に更新記憶する。この際、図７の気筒別空燃比補正量学習マップのうちの前記ステップ３０４で選択された学習領域の学習値が更新される。尚、図７の気筒別空燃比補正量学習マップは、気筒毎に作成される。
【００５３】
［異常診断禁止判定ルーチン］
図５の異常診断禁止判定ルーチンは、図２の気筒別空燃比制御メインルーチンのステップ１０５で実行されるサブルーチンであり、特許請求の範囲でいう診断実行条件判定手段としての役割を果たす。
【００５４】
本ルーチンが起動されると、まずステップ４０１で、各気筒の気筒別空燃比補正量（又はその学習値）を読み込み、次のステップ４０２で、いずれかの気筒の気筒別空燃比補正量（又はその学習値）が所定範囲外であるか否かを判定し、全ての気筒の気筒別空燃比補正量（又はその学習値）が所定範囲内であれば、異常診断が許可される。この場合は、ステップ４０６に進み、気筒別空燃比補正量（又はその学習値）が所定範囲外になっている状態の継続時間を計測するディレイ時間カウンタＴの値を０にリセットして本ルーチンを終了する。
【００５５】
これに対して、上記ステップ４０２で、いずれかの気筒の気筒別空燃比補正量（又はその学習値）が所定範囲外であると判定されれば、ステップ４０３に進み、ディレイ時間カウンタＴをカウントアップして、気筒別空燃比補正量（又はその学習値）が所定範囲外になっている状態の継続時間を計測する。この後、ステップ４０４に進み、ディレイ時間カウンタＴのカウント時間が所定値を越えたか否かを判定し、ディレイ時間カウンタＴのカウント値が所定値を越えていなければ、そのまま本ルーチンを終了する。その後、ディレイ時間カウンタＴのカウント値が所定値を越えた時点で、ステップ４０５に進み、異常診断禁止フラグをＯＮ（異常診断禁止）にセットして本ルーチンを終了する。
【００５６】
［異常診断実行ルーチン］
図６の異常診断実行ルーチンは、エンジン運転中に所定周期で実行される。本ルーチンが起動されると、まずステップ５０１で、異常診断禁止フラグがＯＮ（異常診断禁止）にセットされているか否かを判定し、異常診断禁止フラグがＯＮ（異常診断禁止）にセットされていなければ、ステップ５０２に進み、各種の異常診断ルーチン（異常診断手段）を実行するが、異常診断禁止フラグがＯＮ（異常診断禁止）にセットされていれば、異常診断ルーチンを実行することなく、本ルーチンを終了する。この機能が特許請求の範囲でいう診断禁止手段に相当する。
【００５７】
異常診断禁止フラグがＯＮの場合は、気筒別空燃比制御の影響を受けて誤診断する可能性のある異常診断のみを禁止すれば良く、それ以外の異常診断は禁止する必要はない。ここで、気筒別空燃比制御の影響を受けて誤診断する可能性のある異常診断は、例えば、触媒３８の劣化診断、燃料系異常診断、空気系異常診断、空燃比センサ３７の異常診断、酸素センサ４１の異常診断、燃焼状態診断（失火検出）、燃料性状診断等である。
【００５８】
以上説明した本実施例１の制御例を図８及び図９のタイムチャートを用いて説明する。  図８は、気筒別空燃比補正量を所定範囲（許容範囲）と比較して異常診断禁止フラグをＯＮ／ＯＦＦする例である。本例では、時刻ｔ1 で、気筒別空燃比制御の実行条件が成立して、気筒別空燃比制御が開始され、各気筒＃１〜＃４の気筒別空燃比補正量が算出される。この気筒別空燃比制御の実行中は、各気筒＃１〜＃４の気筒別空燃比補正量が所定範囲外（許容範囲外）であるか否かが判定され、いずれかの気筒（図８の例では＃１）の気筒別空燃比補正量が所定範囲外になった時点ｔ2 で、ディレイ時間カウンタＴのカウントアップ動作が開始され、気筒別空燃比補正量が所定範囲外になっている状態の継続時間が計測される。
【００５９】
その後、ディレイ時間カウンタＴのカウント値が所定値を越えた時点ｔ3 で、異常診断禁止フラグがＯＮ（異常診断禁止）にセットされる。この後は、気筒別空燃比制御の影響を受ける異常診断が禁止される。
【００６０】
一方、図９は、気筒別空燃比補正量の学習値を所定範囲（許容範囲）と比較して異常診断禁止フラグをＯＮ／ＯＦＦする例である。本例では、時刻ｔ1 で、気筒別空燃比制御の実行条件が成立して、気筒別空燃比制御が開始され、各気筒＃１〜＃４の気筒別空燃比補正量が算出される。
【００６１】
その後、時刻ｔ2 で、学習実行条件が成立して、気筒別空燃比補正量の学習が開始され、各気筒＃１〜＃４の気筒別空燃比補正量学習値が更新される。
【００６２】
その後、各気筒＃１〜＃４の気筒別空燃比補正量学習値が所定範囲外（許容範囲外）であるか否かが判定され、いずれかの気筒の気筒別空燃比補正量学習値が所定範囲外になった時点ｔ3 で、ディレイ時間カウンタＴのカウントアップ動作が開始され、気筒別空燃比補正量学習値が所定範囲外になっている状態の継続時間が計測される。
【００６３】
その後、ディレイ時間カウンタＴのカウント値が所定値を越えた時点ｔ4 で、異常診断禁止フラグがＯＮ（異常診断禁止）にセットされる。この後は、気筒別空燃比制御の影響を受ける異常診断が禁止される。
【００６４】
以上説明した本実施例１によれば、いずれかの気筒の気筒別空燃比補正量（又はその学習値）が所定範囲外になっている状態が暫く続いたときに、気筒別空燃比制御の影響を受ける異常診断を禁止するようにしたので、不安定な気筒別空燃比制御による異常診断の誤診断を防止することができ、異常診断の信頼性を向上することができる。
【００６５】
尚、本発明は、いずれか１つの気筒の気筒別空燃比補正量（又はその学習値）が所定範囲外になっている状態が暫く続いたときに、気筒別空燃比制御の影響を受ける異常診断を禁止する構成に限定されず、いずれか２つ以上の気筒の気筒別空燃比補正量が所定範囲外になっている状態が暫く続いたときに、気筒別空燃比制御の影響を受ける異常診断を禁止するようにしても良い。
【００６６】
また、いずれか１つの気筒の気筒別空燃比補正量（又はその学習値）が所定範囲外になっている状態が暫く続いたときに、異常診断を禁止せず、異常診断の診断結果を無効とするようにしても良い。このようにしても、実質的に同じ効果を得ることができる。
【実施例２】
【００６７】
上記実施例１で説明した図４の気筒別空燃比補正量学習ルーチンでは、エンジン運転領域（エンジン回転速度と負荷）毎に気筒別空燃比補正量学習値を更新するようにしている（図７参照）。
【００６８】
この点を考慮して、図１０及び図１１に示す本発明の実施例２では、いずれかの気筒の気筒別空燃比補正量（又はその学習値）が所定範囲を外れた場合に、気筒別空燃比補正量（又はその学習値）が所定範囲を外れた運転領域についてのみ、気筒別空燃比制御の影響を受ける異常診断を禁止し、それ以外の運転領域では、当該異常診断を許可するようにしている。
【００６９】
以下、本実施例２で実行する図１０及び図１１のルーチンの処理内容を説明する。
図１０の異常診断禁止判定ルーチンは、前記実施例１で説明した図５の異常診断禁止判定ルーチンのステップ４０５の次にステップ４０７の処理を追加しただけであり、その他のステップの処理は同じである。
【００７０】
図１０の異常診断禁止判定ルーチンでは、ステップ４０１〜４０５の処理により、いずれかの気筒の気筒別空燃比補正量（又はその学習値）が所定範囲外になっている状態が所定時間経過すると、異常診断禁止フラグをＯＮ（異常診断禁止）にセットする。この後、ステップ４０７に進み、現在のエンジン運転領域を異常診断禁止運転領域としてＥＣＵ４０の書き換え可能な不揮発性メモリ（図示せず）に記憶して、本ルーチンを終了する。
【００７１】
図１１の異常診断実行ルーチンは、前記実施例１で説明した図６の異常診断実行ルーチンのステップ５０１の次にステップ５０３の処理を追加しただけであり、その他のステップの処理は同じである。
【００７２】
本ルーチンが起動されると、まずステップ５０１で、異常診断禁止フラグがＯＮ（異常診断禁止）にセットされているか否かを判定し、異常診断禁止フラグがＯＮ（異常診断禁止）にセットされていなければ、ステップ５０２に進み、各種の異常診断ルーチンを実行するが、異常診断禁止フラグがＯＮ（異常診断禁止）にセットされていれば、ステップ５０３に進み、現在のエンジン運転領域がＥＣＵ４０の不揮発性メモリ（図示せず）に記憶された異常診断禁止運転領域であるか否かを判定する。
【００７３】
その結果、現在のエンジン運転領域がＥＣＵ４０の不揮発性メモリ（図示せず）に記憶された異常診断禁止運転領域でないと判定されれば、ステップ５０２に進み、各種の異常診断ルーチンを実行する。これに対して、現在のエンジン運転領域が異常診断禁止運転領域であれば、異常診断ルーチンを実行することなく、本ルーチンを終了する。これにより、異常診断禁止運転領域についてのみ、気筒別空燃比制御の影響を受ける異常診断を禁止する。或は、当該異常診断の診断結果を無効としても良い。
【００７４】
以上説明した本実施例２では、いずれかの気筒の気筒別空燃比補正量（又はその学習値）が所定範囲を外れた運転領域のみで、気筒別空燃比制御の影響を受ける異常診断を禁止するようにしたので、気筒別空燃比補正量（又はその学習値）が所定範囲を外れた運転領域のみで異常診断を禁止（又は無効）として異常診断の誤診断を防止しながら、気筒別空燃比補正量（又はその学習値）が所定範囲内に収まる他の運転領域では、異常診断を継続することができ、異常発生時にその異常を早期に検出することができる。
【００７５】
尚、本発明は、いずれか１つの気筒の気筒別空燃比補正量（又はその学習値）が所定範囲を外れた運転領域のみで異常診断を禁止する構成に限定されず、いずれか２つ以上の気筒の気筒別空燃比補正量（又はその学習値）が所定範囲を外れた運転領域のみで異常診断を禁止するようにしても良い。
【実施例３】
【００７６】
図１２に示す本発明の実施例３では、いずれかの気筒の気筒別空燃比補正量（又はその学習値）を所定範囲と比較し、その比較結果に基づいて異常診断の判定条件（判定しきい値）を変更するようにしている。
【００７７】
図１２の判定条件変更ルーチンは、エンジン運転中に所定周期で実行され、特許請求の範囲でいう判定条件変更手段としての役割を果たす。本ルーチンが起動されると、まずステップ６０１で、各気筒の気筒別空燃比補正量（又はその学習値）を読み込み、次のステップ６０２で、いずれかの気筒の気筒別空燃比補正量（又はその学習値）が所定範囲外であるか否かを判定する。その結果、全ての気筒の気筒別空燃比補正量（又はその学習値）が所定範囲内であると判定されれば、ステップ６０６に進み、気筒別空燃比補正量が所定範囲外になっている状態の継続時間を計測するディレイ時間カウンタＴの値を０にリセットし、次のステップ６０７で、異常診断の判定しきい値を通常時の判定しきい値Ｋａにセットして本ルーチンを終了する。
【００７８】
これに対して、上記ステップ６０２で、いずれかの気筒の気筒別空燃比補正量（又はその学習値）が所定範囲外であると判定されれば、ステップ６０３に進み、ディレイ時間カウンタＴをカウントアップして、気筒別空燃比補正量（又はその学習値）が所定範囲外になっている状態の継続時間を計測する。この後、ステップ６０４に進み、ディレイ時間カウンタＴのカウント時間が所定値を越えたか否かを判定し、ディレイ時間カウンタＴのカウント値が所定値を越えていなければ、そのまま本ルーチンを終了する。その後、ディレイ時間カウンタＴのカウント値が所定値を越えた時点で、ステップ６０５に進み、異常診断の判定しきい値を異常が検出されにくい判定しきい値Ｋｂにセットして本ルーチンを終了する。
【００７９】
以上説明した本実施例３では、いずれかの気筒の気筒別空燃比補正量（又はその学習値）を所定範囲と比較し、その比較結果に基づいて異常診断の判定しきい値を変更するようにしたので、いずれか１つ又は２つ以上の気筒の気筒別空燃比補正量（又はその学習値）が所定範囲から外れたときに、異常診断の判定しきい値を、異常が検出されにくい厳しい判定しきい値に変更することが可能となり、気筒別空燃比制御の影響を受ける異常診断の誤診断を防止することができる。
【００８０】
この場合、いずれか１つ又は２つ以上の気筒の気筒別空燃比補正量（又はその学習値）が所定範囲を外れた運転領域と異なる運転領域では、異常診断の判定しきい値を、気筒別空燃比補正量が所定範囲内のときの運転領域と同じ判定しきい値としても良い。このようにすれば、気筒別空燃比補正量（又はその学習値）が所定範囲を外れた運転領域のみで異常診断の判定しきい値を異常が検出されにくい厳しい判定しきい値に変更して異常診断の誤診断を防止しながら、気筒別空燃比補正量（又はその学習値）が所定範囲内に収まる他の運転領域では、通常時と同様の異常診断を継続することができ、異常発生時にその異常を早期に検出することができる。
【００８１】
尚、本発明は、異常診断の判定しきい値を変更するようにしたが、この判定しきい値と比較する診断パラメータを変更（補正）するようにしても良く、要は、異常診断の判定条件を変更するようにすれば良い。
【実施例４】
【００８２】
ところで、気筒分配で空燃比に影響を及ぼすガス還流制御（排出ガス還流制御ＥＧＲ、ブローバイガス還流制御ＰＣＶ、エバポガスパージ制御ＰＧＲ等）は、各気筒の空燃比に影響を及ぼす度合が気筒毎に異なる可能性があり、気筒間の空燃比ばらつきを大きくする原因となる。従って、気筒別空燃比補正量又はその学習値が所定範囲（許容範囲）から外れたときに、ガス還流制御を通常時と同様に行うと、気筒別空燃比補正量又はその学習値が益々異常な値になって気筒別空燃比制御の制御状態が益々悪化する可能性がある。
【００８３】
このような事情を考慮して、図１３及び図１４に示す本発明の実施例４では、気筒分配で空燃比に影響を及ぼすガス還流制御（排出ガス還流制御ＥＧＲ、ブローバイガス還流制御ＰＣＶ、エバポガスパージ制御ＰＧＲ等）を実行する際に、いずれかの気筒の気筒別空燃比補正量（又はその学習値）が所定範囲を外れたときに、ガス還流制御を禁止するようにしている。
【００８４】
図１３のガス還流制御禁止判定ルーチンは、エンジン運転中に所定周期で実行される。本ルーチンが起動されると、まずステップ７０１で、各気筒の気筒別空燃比補正量（又はその学習値）を読み込み、次のステップ７０２で、いずれかの気筒の気筒別空燃比補正量（又はその学習値）が所定範囲外であるか否かを判定し、全ての気筒の気筒別空燃比補正量（又はその学習値）が所定範囲内であれば、ガス還流制御が許可される。この場合は、ステップ７０６に進み、気筒別空燃比補正量（又はその学習値）が所定範囲外になっている状態の継続時間を計測するディレイ時間カウンタＴの値を０にリセットして本ルーチンを終了する。
【００８５】
これに対して、上記ステップ７０２で、いずれかの気筒の気筒別空燃比補正量（又はその学習値）が所定範囲外であると判定されれば、ステップ７０３に進み、ディレイ時間カウンタＴをカウントアップして、気筒別空燃比補正量（又はその学習値）が所定範囲外になっている状態の継続時間を計測する。この後、ステップ７０４に進み、ディレイ時間カウンタＴのカウント時間が所定値を越えたか否かを判定し、ディレイ時間カウンタＴのカウント値が所定値を越えていなければ、そのまま本ルーチンを終了する。
【００８６】
その後、ディレイ時間カウンタＴのカウント値が所定値を越えた時点で、ステップ７０５に進み、ガス還流制御禁止フラグをＯＮ（ガス還流制御禁止）にセットする。この後、ステップ７０７に進み、現在のエンジン運転領域をガス還流制御禁止運転領域としてＥＣＵ４０の書き換え可能な不揮発性メモリ（図示せず）に記憶して、本ルーチンを終了する。
【００８７】
図１４のガス還流制御実行ルーチンは、エンジン運転中に所定周期で実行され、特許請求の範囲でいう制限手段としての役割を果たす。本ルーチンが起動されると、まずステップ８０１で、ガス還流制御禁止フラグがＯＮ（ガス還流制御禁止）にセットされているか否かを判定し、ガス還流制御禁止フラグがＯＮ（ガス還流制御禁止）にセットされていなければ、ステップ８０２に進み、ガス還流制御ルーチンを実行して、排出ガス還流制御ＥＧＲ、ブローバイガス還流制御ＰＣＶ、エバポガスパージ制御ＰＧＲ等の少なくとも１つを実行する。
【００８８】
一方、ガス還流制御禁止フラグがＯＮ（ガス還流制御禁止）にセットされていれば、ステップ８０３に進み、現在のエンジン運転領域がＥＣＵ４０の不揮発性メモリ（図示せず）に記憶されたガス還流制御禁止運転領域であるか否かを判定する。
【００８９】
その結果、現在のエンジン運転領域がＥＣＵ４０の不揮発性メモリ（図示せず）に記憶されたガス還流制御禁止運転領域でなければ、ステップ８０２に進み、ガス還流制御ルーチンを実行する。これに対して、現在のエンジン運転領域がガス還流制御禁止運転領域であれば、ガス還流制御ルーチンを実行することなく、本ルーチンを終了する。これにより、ガス還流制御禁止運転領域についてのみ、気筒別空燃比制御の制御状態を悪化させるガス還流制御を禁止する。或は、当該ガス還流制御の制御割合を小さくするようにしても良い。
【００９０】
以上説明した本実施例４によれば、いずれかの気筒の気筒別空燃比補正量（又はその学習値）が所定範囲を外れたときに、ガス還流制御を禁止（又は制御割合を小さく）するようにしたので、気筒別空燃比制御の制御状態の悪化を抑えることができ、気筒別空燃比制御の影響を受ける異常診断の誤診断を防止することができる。
【００９１】
しかも、本実施例４では、いずれかの気筒の気筒別空燃比補正量（又はその学習値）が所定範囲を外れた運転領域についてのみ、ガス還流制御を禁止（又は制御割合を小さく）するようにしたので、いずれかの気筒の気筒別空燃比補正量（又はその学習値）が所定範囲を外れた場合でも、運転領域によっては、ガス還流制御を通常時と同様に実行することができ、ガス還流制御の実行頻度を確保することができる。
【００９２】
尚、本発明は、いずれか１つの気筒の気筒別空燃比補正量（又はその学習値）が所定範囲を外れた運転領域のみでガス還流制御を禁止（又は制御割合を小さく）する構成に限定されず、いずれか２つ以上の気筒の気筒別空燃比補正量（又はその学習値）が所定範囲を外れた運転領域のみでガス還流制御を禁止（又は制御割合を小さく）するようにしても良い。
【００９３】
或は、図１３のステップ７０７と図１４のステップ８０３の処理を省略して、ガス還流制御禁止フラグがＯＮ（ガス還流制御禁止）にセットされている場合に、全ての運転領域でガス還流制御を禁止（又は制御割合を小さく）するようにしても良い。
【００９４】
また、本発明は、いずれか１つの気筒の気筒別空燃比補正量（又はその学習値）が所定範囲外になっている状態が暫く続いたときに、ガス還流制御を禁止（又は制御割合を小さく）する構成に限定されず、いずれか２つ以上の気筒の気筒別空燃比補正量が所定範囲外になっている状態が暫く続いたときに、ガス還流制御を禁止（又は制御割合を小さく）するようにしても良い。
【００９５】
その他、本発明は、吸気ポート噴射エンジンに限定されず、筒内噴射エンジンにも適用して実施できる等、要旨を逸脱しない範囲で種々変更して実施できる。
【図面の簡単な説明】
【００９６】
【図１】本発明の実施例１におけるエンジン制御システム全体の概略構成図である。
【図２】実施例１の気筒別空燃比制御メインルーチンの処理の流れを示すフローチャートである。
【図３】実施例１の気筒別空燃比制御実行ルーチンの処理の流れを示すフローチャートである。
【図４】実施例１の気筒別空燃比補正量学習ルーチンの処理の流れを示すフローチャートである。
【図５】実施例１の異常診断禁止判定ルーチンの処理の流れを示すフローチャートである。
【図６】実施例１の異常診断実行ルーチンの処理の流れを示すフローチャートである。
【図７】実施例１の気筒別空燃比補正量学習マップを概念的に示す図である。
【図８】実施例１の制御例（その１）を説明するタイムチャートである。
【図９】実施例１の制御例（その２）を説明するタイムチャートである。
【図１０】実施例２の異常診断禁止判定ルーチンの処理の流れを示すフローチャートである。
【図１１】実施例２の異常診断実行ルーチンの処理の流れを示すフローチャートである。
【図１２】実施例３の判定条件変更ルーチンの処理の流れを示すフローチャートである。
【図１３】実施例４のガス還流制御禁止判定ルーチンの処理の流れを示すフローチャートである。
【図１４】実施例４のガス還流制御実行ルーチンの処理の流れを示すフローチャートである。
【符号の説明】
【００９７】
１１…エンジン（内燃機関）、１２…吸気管、１４…エアフローメータ、１５…スロットルバルブ、１９…吸気マニホールド、２０…燃料噴射弁、２２…燃料ポンプ、２４…燃圧センサ、２７，２８…可変バルブタイミング機構、３５…排気マニホールド、３６…排気合流部、３７…空燃比センサ、３８…触媒、４０…ＥＣＵ（気筒別空燃比推定手段，気筒別空燃比補正量算出手段，気筒別空燃比制御手段，異常診断手段，診断禁止手段，診断実行条件判定手段，判定条件変更手段，制限手段）
【図１】
2008038785.tif 000003
【図２】
2008038785.tif 000004
【図３】
2008038785.tif 000005
【図４】
2008038785.tif 000006
【図５】
2008038785.tif 000007
【図６】
2008038785.tif 000008
【図７】
2008038785.tif 000009
【図８】
2008038785.tif 000010
【図９】
2008038785.tif 000011
【図１０】
2008038785.tif 000012
【図１１】
2008038785.tif 000013
【図１２】
2008038785.tif 000014
【図１３】
2008038785.tif 000015
【図１４】
2008038785.tif 000016