(57)【要約】    【課題】  内燃機関の排気系に設けられる排気浄化用触媒などが急激に劣化した場合に、迅速に劣化判定を行うことができる排気浄化装置を提供する。    【解決手段】  ＮＯｘ浄化装置１５の下流側に設けられる酸素濃度センサ１９の出力ＬＶＯ２を平均化することにより、なまし値ＬＶＧＡＡＶを算出し、なまし値ＬＶＧＡＡＶを用いて、ＮＯｘ浄化装置１５の劣化判定を行う。ＮＯｘ浄化装置が劣化した可能性があると判定されたときは（Ｓ１６３）、平均化演算（なまし値ＬＶＧＡＡＶ）を初期化して、初期化前の検出データの影響を排除し、初期化後のなまし値ＬＶＧＡＡＶを用いて劣化判定を行う。【選択図】  図１８
2005220826.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関の排気系に設けられ、排気の浄化を行う排気浄化手段と、該排気浄化手段の下流側に設けられ、排気中の酸素濃度を検出する下流側酸素濃度検出手段と、該下流側酸素濃度検出手段の出力に基づいて、前記排気浄化手段の劣化を判定する劣化判定手段とを備える内燃機関の排気浄化装置において、
前記劣化判定手段は、前記機関の所定運転状態において、前記下流側酸素濃度検出手段の出力変化の応答性を代表する応答性パラメータを計測する計測手段と、
異なる計測時期において、該計測手段により計測された応答性パラメータを平均化することにより、判定パラメータを算出する判定パラメータ算出手段と、
前記排気浄化手段が劣化した可能性があるか否かを判定する可能性判定手段とを有し、
該可能性判定手段により、前記排気浄化手段が劣化した可能性があると判定されたときには、前記判定パラメータ算出手段は、前記判定パラメータを最新の前記応答性パラメータの値に設定することにより初期化し、前記劣化判定手段は、該初期化後の判定パラメータを用いて前記排気浄化手段の劣化を判定することを特徴とする内燃機関の排気浄化装置。
【請求項２】
前記劣化判定手段は、前記初期化後において、前記排気浄化手段が劣化している可能性が高い場合には直ちに劣化判定を確定することを特徴とする請求項１に記載の内燃機関の排気浄化装置。
【請求項３】
前記劣化判定手段は、前記排気浄化手段が正常である可能性が高い場合には、所定数の応答性パラメータの平均化演算により得られた判定パラメータを用いて正常判定を確定することを特徴とする請求項１または２に記載の内燃機関の排気浄化装置。
【請求項４】
前記劣化判定手段は、前記初期化直後においては、前記初期化後に平均化演算の対象となった前記応答性パラメータの数に応じて判定基準を変更することを特徴とする請求項１から３の何れか１項に記載の内燃機関の排気浄化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関の排気浄化装置に関し、特に排気浄化用の触媒（酸素蓄積能力やＮＯｘ吸収能力が付加されたものを含む）の劣化を判定する機能を有する排気浄化装置に関する。
【背景技術】
【０００２】
内燃機関の排気系に設けられる排気浄化用の触媒の劣化を判定する手法は、種々提案されている。例えば、特許文献１には、触媒の下流側に設けられた酸素濃度センサの出力に応じて、触媒の酸素蓄積能力を示す判定パラメータを算出し、その判定パラメータにより触媒の劣化を判定する手法が示されている。より具体的には、前記判定パラメータは、下流側酸素濃度センサの出力の変化周期を平均化することにより算出され、その判定パラメータが所定基準値より小さいとき、て触媒が劣化していると判定される。
【０００３】
【特許文献１】特開平１０−６１４２８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記従来の手法では、酸素濃度センサ出力の変化周期の平均値に基づいて、劣化判定が行われるため、触媒が急激に劣化した場合には、劣化した判定するまでに要する時間が長くなるという課題があった。
【０００５】
本発明はこの点に着目してなされたものであり、内燃機関の排気系に設けられる排気浄化用触媒が急激に劣化した場合に、迅速に劣化判定を行うことができる排気浄化装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため請求項１に記載の発明は、内燃機関（１）の排気系（１３）に設けられ、排気の浄化を行う排気浄化手段（１５）と、該排気浄化手段（１５）の下流側に設けられ、排気中の酸素濃度を検出する下流側酸素濃度検出手段（１９）と、該下流側酸素濃度検出手段（１９）の出力に基づいて、前記排気浄化手段（１５）の劣化を判定する劣化判定手段とを備える内燃機関の排気浄化装置において、前記劣化判定手段は、前記機関の所定運転状態において、前記下流側酸素濃度検出手段（１９）の出力変化の応答性を代表する応答性パラメータ（ＬＶＧＡＬＮ）を計測する計測手段と、異なる計測時期において、該計測手段により計測された応答性パラメータ（ＬＶＧＡＬＮ）を平均化することにより、判定パラメータ（ＬＶＧＡＡＶ）を算出する判定パラメータ算出手段と、前記排気浄化手段が劣化した可能性があるか否かを判定する可能性判定手段とを有し、該可能性判定手段により、前記排気浄化手段が劣化した可能性があると判定されたとき（ＦＬＮＣＳＴＰ＝１）には、前記判定パラメータ算出手段は、前記判定パラメータ（ＬＶＧＡＡＶ）を最新の前記応答性パラメータ（ＬＶＧＡＬＮ）の値に設定することにより初期化し、前記劣化判定手段は、該初期化後の判定パラメータ（ＬＶＧＡＡＶ）を用いて前記排気浄化手段の劣化を判定することを特徴とする。
【０００７】
請求項２に記載の発明は、請求項１に記載の内燃機関の排気浄化装置において、前記劣化判定手段は、前記初期化後において、前記排気浄化手段が劣化している可能性が高い場合（ＦＫＯＫＦ１０５＝０）には直ちに劣化判定を確定する（Ｓ２２０，Ｓ２３６）ことを特徴とする。
【０００８】
請求項３に記載の発明は、請求項１または２に記載の内燃機関の排気浄化装置において、前記劣化判定手段は、前記排気浄化手段が正常である可能性が高い場合（ＦＫＯＫＦ１０５＝１）には、所定数（ＮＬＮＣＡＶＥ）の応答性パラメータ（ＬＶＧＡＬＮ）の平均化演算により得られた判定パラメータ（ＬＶＧＡＡＶ）を用いて正常判定を確定する（Ｓ２２１，Ｓ２２２，Ｓ２３７，Ｓ２３８）ことを特徴とする。
【０００９】
請求項４に記載の発明は、請求項１から３の何れか１項に記載の内燃機関の排気浄化装置において、前記劣化判定手段は、前記初期化直後においては、初期化後に平均化演算の対象となった前記応答性パラメータ（ＬＶＧＡＬＮ）の数（ＮＤＣＴ１０５）に応じて判定基準を変更する（Ｓ１６５，Ｓ１６７，Ｓ１７０）ことを特徴とする。
【発明の効果】
【００１０】
請求項１に記載の発明によれば、異なる計測時期において、計測された応答性パラメータを平均化することにより、判定パラメータが算出され、この判定パラメータを用いて排気浄化手段の劣化判定が行われる。その際、排気浄化手段が劣化した可能性が判定され、劣化した可能性があると判定されたときには、判定パラメータが初期化される、すなわち最新の応答性パラメータの値に設定される。そして、初期化後の判定パラメータを用いて排気浄化手段の劣化が判定される。判定パラメータの初期化により、応答性パラメータの過去値の影響がなくなるため、排気浄化手段が急激に劣化した場合に迅速な判定が可能となる。
【００１１】
請求項２に記載の発明によれば、判定パラメータの初期化後において、排気浄化手段が劣化している可能性が高い場合には直ちに劣化判定が確定されるので、排気浄化手段の劣化を迅速に検知することができる。
【００１２】
請求項３に記載の発明によれば、排気浄化手段が正常である可能性が高い場合には、所定数の応答性パラメータの平均化演算により得られた判定パラメータを用いて正常判定が確定されるので、正常判定の精度を高めることができる。
【００１３】
請求項４に記載の発明によれば、判定パラメータの初期化直後においては、初期化後に平均化演算の対象となった応答性パラメータの数に応じて判定基準が変更されるので、平均化演算の対象となった応答性パラメータの数が少ない段階での誤判定を防止することができる。
【発明を実施するための最良の形態】
【００１４】
以下本発明の実施の形態を図面を参照して説明する。
図１は、本発明の一実施形態にかかる排気浄化装置を含む、内燃機関（以下「エンジン」という）及びその制御装置の全体構成図であり、例えば４気筒のエンジン１の吸気管２の途中にはスロットル弁３が配されている。スロットル弁３にはスロットル弁開度（ＴＨ）センサ４が連結されており、当該スロットル弁３の開度に応じた電気信号を出力して電子制御ユニット（以下「ＥＣＵ」という）５に供給する。
【００１５】
燃料噴射弁６はエンジン１とスロットル弁３との間かつ吸気管２の図示しない吸気弁の少し上流側に各気筒毎に設けられており、各噴射弁は図示しない燃料ポンプに接続されていると共にＥＣＵ５に電気的に接続されて当該ＥＣＵ５からの信号により燃料噴射弁６の開弁時間が制御される。
【００１６】
一方、スロットル弁３の直ぐ下流には吸気管内絶対圧（ＰＢＡ）センサ８が設けられており、この絶対圧センサ８により電気信号に変換された絶対圧信号は前記ＥＣＵ５に供給される。また、その下流には吸気温（ＴＡ)センサ９が取付けられており、吸気温ＴＡを検出して対応する電気信号を出力してＥＣＵ５に供給する。
【００１７】
エンジン１の本体に装着されたエンジン水温（ＴＷ）センサ１０はサーミスタ等から成り、エンジン水温（冷却水温）ＴＷを検出して対応する温度信号を出力してＥＣＵ５に供給する。
エンジン１の図示しないカム軸周囲又はクランク軸周囲には、エンジン回転数（ＮＥ）センサ１１及び気筒判別（ＣＹＬ）センサ１２が取り付けられている。エンジン回転数センサ１１は、エンジン１の各気筒の吸入行程開始時の上死点（ＴＤＣ）より所定クランク角度前のクランク角度位置で（４気筒エンジンではクランク角１８０゜毎に）ＴＤＣ信号パルスを出力し、気筒判別センサ１２は、特定の気筒の所定クランク角度位置で気筒判別信号パルスを出力するものであり、これらの各信号パルスはＥＣＵ５に供給される。
【００１８】
排気管１３には三元触媒１４と、ＮＯｘ浄化手段としてのＮＯｘ浄化装置１５とが上流側からこの順序で設けられている。
三元触媒は、酸素蓄積能力を有し、エンジン１に供給される混合気の空燃比が理論空燃比よりリーン側に設定され、排気中の酸素濃度が比較的高い排気リーン状態では、排気中の酸素を蓄積し、逆にエンジン１に供給される混合気の空燃比が理論空燃比よりリッチ側に設定され、排気中の酸素濃度が低く、ＨＣ、ＣＯ成分が多い排気リッチ状態では、蓄積した酸素により排気中のＨＣ，ＣＯを酸化する機能を有する。
【００１９】
ＮＯｘ浄化装置１５は、ＮＯｘを吸収するＮＯｘ吸収剤及び酸化、還元を促進するための触媒を内蔵する。ＮＯｘ浄化装置１５は、エンジン１に供給される混合気の空燃比が理論空燃比よりリーン側に設定された場合の排気リーン状態においては、ＮＯｘを吸収し、エンジン１に供給される混合気の空燃比が理論空燃比近傍または理論空燃比よりリッチ側に設定された場合の排気リッチ状態においては、吸収されたＮＯｘがＨＣ、ＣＯにより還元されて、窒素ガスとして排出され、またＨＣ、ＣＯは酸化されて水蒸気及び二酸化炭素として排出されるように構成されている。
【００２０】
ＮＯｘ吸収剤のＮＯｘ吸収能力の限界、すなわち最大ＮＯｘ吸収量まで、ＮＯｘを吸収すると、それ以上ＮＯｘを吸収できなくなるので、適時ＮＯｘを放出させて還元するために空燃比のリッチ化、すなわち還元リッチ化を実行する。
三元触媒１４の上流位置には、比例型酸素濃度センサ１７（以下「ＬＡＦセンサ１７」という）が装着されており、このＬＡＦセンサ１７は排気中の酸素濃度（空燃比）にほぼ比例した電気信号を出力し、ＥＣＵ５に供給する。
【００２１】
三元触媒１４とＮＯｘ浄化装置１５との間及びＮＯｘ浄化装置１５の下流位置には、それぞれ二値型酸素濃度センサ（以下「Ｏ２センサ」という）１８，１９が装着されており、これらのセンサの検出信号はＥＣＵ５に供給される。このＯ２センサ１８，１９は、その出力が理論空燃比の前後において急激に変化する特性を有し、その出力は理論空燃比よりリッチ側で高レベルとなり、リーン側で低レベルとなる。以下の説明では、Ｏ２センサ１８を上流側Ｏ２センサといい、Ｏ２センサ１９を下流側Ｏ２センサという。
【００２２】
エンジン１は、吸気弁及び排気弁のバルブタイミングを、エンジンの高速回転領域に適した高速バルブタイミングと、低速回転領域に適した低速バルブタイミングとの２段階に切換可能なバルブタイミング切換機構３０を有する。このバルブタイミングの切換は、弁リフト量の切換も含み、さらに低速バルブタイミング選択時は２つに吸気弁のうちの一方を休止させて、空燃比を理論空燃比よりリーン化する場合においても安定した燃焼を確保するようにしている。
【００２３】
バルブタイミング切換機構３０は、バルブタイミングの切換を油圧を介して行うものであり、この油圧切換を行う電磁弁及び油圧センサがＥＣＵ５に接続されている。油圧センサの検出信号はＥＣＵ５に供給され、ＥＣＵ５は電磁弁を制御してエンジン１の運転状態に応じたバルブタイミングの切換制御を行う。
【００２４】
ＥＣＵ５には、大気圧ＰＡを検出する大気圧センサ２０が接続されており、その検出信号がＥＣＵ５に供給される。
ＥＣＵ５は、各種センサからの入力信号波形を整形し、電圧レベルを所定レベルに修正し、アナログ信号値をデジタル信号値に変換する等の機能を有する入力回路、中央演算処理ユニット（以下「ＣＰＵ」という）、該ＣＰＵで実行される各種演算プログラム及び演算結果等を記憶する記憶回路、前記燃料噴射弁６に駆動信号を供給する出力回路等から構成される。
【００２５】
ＥＣＵ５のＣＰＵは、上述の各種エンジンパラメータ信号に基づいて、種々のエンジン運転状態を判別するとともに、該判別されたエンジン運転状態に応じて、次式（１）に基づき、前記ＴＤＣ信号パルスに同期して開弁作動する燃料噴射弁６の燃料噴射時間ＴＯＵＴを演算する。
ＴＯＵＴ＝ＴＩＭ×ＫＣＭＤ×ＫＬＡＦ×ＫＰＡ×Ｋ１＋Ｋ２  （１）
【００２６】
ここに、ＴＩＭは基本燃料量、具体的には燃料噴射弁６の基本燃料噴射時間であり、エンジン回転数ＮＥ及び吸気管内絶対圧ＰＢＡに応じて設定されたＴＩマップを検索して決定される。ＴＩマップは、エンジン回転数ＮＥ及び吸気管内絶対圧ＰＢＡに対応する運転状態において、エンジンに供給する混合気の空燃比がほぼ理論空燃比になるように設定されている。すなわち、基本燃料量ＴＩＭは、エンジンの単位時間当たりの吸入空気量（質量流量）にほぼ比例する値を有する。
【００２７】
ＫＣＭＤは目標空燃比係数であり、エンジン回転数ＮＥ、スロットル弁開度ＴＨ、エンジン水温ＴＷ等のエンジン運転パラメータに応じて設定される。目標空燃比係数ＫＣＭＤは、空燃比Ａ／Ｆの逆数、すなわち燃空比Ｆ／Ａに比例し、理論空燃比のとき値１．０をとるので、目標当量比ともいう。また目標空燃比係数ＫＣＭＤは、後述するように還元リッチ化あるいはＮＯｘ浄化装置１５の劣化判定を実行するときは、空燃比をリッチ化するリッチ化所定値ＫＣＭＤＲＲまたはＫＣＭＤＲＭに設定される。
【００２８】
ＫＬＡＦは、フィードバック制御の実行条件が成立するときは、ＬＡＦセンサ１７の検出値から算出される検出当量比ＫＡＣＴが目標当量比ＫＣＭＤに一致するようにＰＩＤ制御により算出される空燃比補正係数である。
ＫＰＡは、大気圧ＰＡに応じて設定される大気圧補正係数であり、大気圧ＰＡが、１０１．３ｋＰａ近傍にあるときは、１．０（無補正値）に設定され、大気圧ＰＡが低下すると、１．０より大きな値に設定され、燃料供給量が増加方向に補正される。大気圧補正係数ＫＰＡは、大気圧ＰＡが低下するほど増加するように設定され、燃料供給量は、大気圧ＰＡが低下するほど増加するように補正される。
【００２９】
Ｋ１及びＫ２は夫々各種エンジンパラメータ信号に応じて演算される他の補正係数および補正変数であり、エンジン運転状態に応じた燃費特性、エンジン加速特性等の諸特性の最適化が図れるような所定値に決定される。
ＥＣＵ５のＣＰＵは上述のようにして求めた燃料噴射時間ＴＯＵＴに基づいて燃料噴射弁６を開弁させる駆動信号を出力回路を介して燃料噴射弁６に供給する。また、ＥＣＵ５のＣＰＵは、ＮＯｘ浄化装置１５及び下流側Ｏ２センサ１９の劣化判定を行う。
【００３０】
図２は、前記式（１）に適用される目標空燃比係数ＫＣＭＤを算出する処理のフローチャートである。本処理は一定時間毎にＥＣＵ５のＣＰＵで実行される。
ステップＳ１０では、後述する図２９の処理（ＳＯｘ除去処理）で設定されるＳＯｘ除去リッチ化フラグＦＳＲＲが「１」であるか否かを判別する。ＳＯｘ除去リッチ化フラグＦＳＲＲは、「１」に設定されると、ＮＯｘ浄化装置１５に蓄積したＳＯｘを除去するための空燃比リッチ化を実行することを示す。ＦＳＲＲ＝０であるときは、ステップＳ１１に進み、ＦＳＲＲ＝１であるときは、目標空燃比係数ＫＣＭＤをＳＯｘ除去リッチ化用の所定値ＫＣＭＤＳＦ（例えば１．０３）に設定する（ステップＳ２９）。
【００３１】
ステップＳ１１では、リーンバーン運転中か否か、すなわち通常制御時に後述するステップＳ２０で記憶された目標空燃比係数ＫＣＭＤの記憶値ＫＣＭＤＢが「１．０」より小さいか否かを判別する。その結果、ＫＣＭＤＢ≧１．０であってリーンバーン運転中でないときは、直ちにステップＳ１６に進み、還元リッチ化実行中であることを「１」で示す還元リッチ化フラグＦＲＳＰＯＫを「０」に設定し、さらに後述するステップＳ２３、Ｓ２７で参照されるダウンカウントタイマｔｍＲＲ及びｔｍＲＭに、それぞれ還元リッチ化時間ＴＲＲ（例えば５〜１０秒）及び還元リッチ化時間ＴＲＲより長い劣化判定リッチ化時間ＴＲＭ（＞ＴＲＲ）をセットしてスタートさせる（ステップＳ１７）。
【００３２】
次いで、後述する図２３の処理により設定され、ＮＯｘ浄化装置１５の劣化判定終了後も空燃比のリッチ化を継続することを「１」で示すリッチ化継続フラグＦＲＳＰＥＸＴが「０」であるか否かを判別し（ステップＳ１８）、ＦＲＳＰＥＸＴ＝１であるときは、後述するステップＳ２６に進んで、空燃比のリッチ化を継続する。
【００３３】
一方ＦＲＳＰＥＸＴ＝０であるときは、通常制御、すなわちエンジン運転状態に応じて目標空燃比係数ＫＣＭＤの設定を行う（ステップＳ１９）。目標空燃比係数ＫＣＭＤは、基本的には、エンジン回転数ＮＥ及び吸気管内絶対圧ＰＢＡに応じて算出し、エンジン水温ＴＷの低温状態や所定の高負荷運転状態では、それらの運転状態に応じた値に変更される。次いでステップＳ１９で算出した目標空燃比係数ＫＣＭＤを記憶値ＫＣＭＤＢとして記憶して（ステップＳ２０）、本処理を終了する。リーンバーン運転が許可されるエンジン運転状態では、目標空燃比係数ＫＣＭＤは「１．０」より小さい値に設定される。
【００３４】
ステップＳ１１でＫＣＭＤＢ＜１．０であってリーンバーン運転中であるときは、エンジン回転数ＮＥ及び吸気管内絶対圧ＰＢＡに応じて、次のステップＳ１３で使用する増分値ＡＤＤＮＯｘを決定する（ステップＳ１２）。増分値ＡＤＤＮＯｘは、リーンバーン運転中に単位時間当たりに排出されるＮＯｘ量に対応するパラメータであり、エンジン回転数ＮＥが増加するほど、また吸気管内絶対圧ＰＢＡが増加するほど、増加するように設定されている。
【００３５】
ステップＳ１３では、下記式（２）にステップＳ１２で決定した増分値ＡＤＤＮＯｘを適用し、ＮＯｘ量カウンタＣＲＳＰをインクリメントする。これによりＮＯｘ排出量、すなわちＮＯｘ吸収剤に吸収されたＮＯｘ量に相当するカウント値が得られる。
ＣＲＳＰ＝ＣＲＳＰ＋ＡＤＤＮＯｘ                              （２）
【００３６】
続くステップＳ１４では、ＮＯｘ浄化装置１５の劣化判定の実施条件が成立すると「１」に設定される実施条件フラグＦＭＣＮＤＦ１０５が「１」であるか否かを判別する。通常はＦＭＣＮＤＦ１０５＝０であるので、ステップＳ１５に進み、ＮＯｘ量カウンタＣＲＳＰの値が、許容値ＣＮＯｘＲＥＦを越えたか否かを判別する。この答が否定（ＮＯ）であるときは、前記ステップＳ１６に進み、リッチ化継続フラグＦＲＳＰＥＸＴが「１」に設定されない限り、通常制御、すなわちエンジン運転状態に応じた目標空燃比係数ＫＣＭＤの設定を行う。許容値ＣＮＯｘＲＥＦは、例えばＮＯｘ吸収剤の最大ＮＯｘ吸収量より若干小さいＮＯｘ量に対応する値に設定される。
【００３７】
ステップＳ１５で、ＣＲＳＰ＞ＣＮＯｘＲＥＦとなると、還元リッチ化フラグＦＲＳＰＯＫを「１」に設定し（ステップＳ２１）、次いで目標空燃比係数ＫＣＭＤを空燃比１４．０相当程度の値に対応するリッチ化所定値ＫＣＭＤＲＲに設定して還元リッチ化を実行する（ステップＳ２２）。そして、タイマｔｍＲＲの値が「０」か否かを判別し（ステップＳ２３）、ｔｍＲＲ＞０である間は直ちに本処理を終了し、ｔｍＲＲ＝０となると還元リッチ化フラグＦＲＳＰＯＫを「０」に設定するとともにＮＯｘ量カウンタＣＲＳＰの値を「０」にリセットする（ステップＳ２４）。これにより、次回からはステップＳ１５の答が否定（ＮＯ）となるので、通常制御に移行する。
【００３８】
一方劣化判定実施条件が成立すると（ＦＭＣＮＤＦ１０５＝１となると）、ステップＳ１４からステップＳ２６に進み、目標空燃比係数ＫＣＭＤを空燃比１４．０相当程度の値より若干リッチ側の値（例えば空燃比１３．７程度）に対応する劣化判定リッチ化所定値ＫＣＭＤＲＭ（＜ＫＣＭＤＲＲ）に設定して劣化判定リッチ化を実行する（ステップＳ２６）。通常の還元リッチ化実行時よりリッチ化の度合を小さくするのは、リッチ化の度合が大きいと、リッチ化実行時間が短くなり、ＮＯｘ浄化装置１５の劣化判定時に誤判定が発生し易いからであり、リッチ化の度合を小さくしてリッチ化実行時間（＝ＴＲＭ）を長くすることにより、劣化判定の精度を向上させることができる。
【００３９】
そして、タイマｔｍＲＭの値が「０」か否かを判別し（ステップＳ２７）、ｔｍＲＭ＞０である間は直ちに本処理を終了し、ｔｍＲＭ＝０となるとＮＯｘ量カウンタＣＲＳＰの値を「０」にリセットする（ステップＳ２８）。
【００４０】
図２の処理によれば、リーンバーン運転可能なエンジン運転状態においては、通常は間欠的に還元リッチ化が実行され（ステップＳ２２，Ｓ２３）、ＮＯｘ浄化装置１５のＮＯｘ吸収剤に吸収されたＮＯｘが適宜還元される。また、ＮＯｘ浄化装置１５の劣化判定実施条件が成立したときは、還元リッチ化よりリッチ化の度合を小さくして、かつ還元リッチ化より長い時間ＴＲＭに亘って劣化判定リッチ化が実行される（ステップＳ２６，Ｓ２７）。また、ＳＯｘ除去（図２９参照）を実行するときは、ＳＯｘ除去リッチ化が実行される（ステップＳ１０，Ｓ２９）。また後述する図２３の処理（ステップＳ２１７）により、リッチ化継続フラグＦＲＳＰＥＸＴが「１」に設定されたとき、すなわち下流側Ｏ２センサ出力ＬＶＯ２の、リッチ空燃比を示す値への変化が遅いときは、目標空燃比係数ＫＣＭＤがリッチ化所定値ＫＣＭＤＲＭに維持され、空燃比リッチ化が継続される。
【００４１】
図３は、ＮＯｘ浄化装置１５の劣化判定処理のメインルーチンのフローチャートである。この処理は、ＴＤＣ信号パルスの発生に同期してＥＣＵ５のＣＰＵで実行される。
ステップＳ３１では、図４及び図５に示す実施条件判定処理を実行する。実施条件判定処理では、ＮＯｘ浄化装置１５の劣化判定の実施条件が成立するか否かが判定され、実施条件が成立するときは、実施条件フラグＦＭＣＮＤＦ１０５が「１」に設定される。ステップＳ３２では、図７に示すＧＡＬＯ２Ｍ算出処理を実行し、第１排気量パラメータＧＡＬＯ２Ｍを算出する。第１排気量パラメータＧＡＬＯ２Ｍは、基本燃料噴射量ＴＩＭを積算することにより算出される、排気量の積算値に比例するパラメータである。
【００４２】
ステップＳ３３では、実施条件フラグＦＭＣＮＤＦ１０５が「１」であるか否かを判別し、ＦＭＣＮＤＦ１０５＝０であって実施条件が成立していないときは、ステップＳ３４に進み、仮判定フラグＦＰＲＥＪＵＤ１、第１高濃度フラグＦＳＬＦＧ、濃度判定終了フラグＦＳＬＦＥＮＤ、第１基準オーバフラグＦＳＶＯ２ＥＸＰＬ、及び第２基準オーバフラグＦＳＶＯ２ＥＸＰＨをすべて「０」に設定する。これらのフラグは、図９及び図１０に示すＳＯｘ濃度判定処理で「１」に設定される。
【００４３】
ステップＳ３６では、前演算完了フラグＦＬＶＬＮＣＥＮＤを「０」に設定し、カウンタＣＧＡＬＮＣＶを「０」に設定する。前演算完了フラグＦＬＶＬＮＣＥＮＤは、図１３の前演算処理が完了したとき「１」に設定され、カウンタＣＧＡＬＮＣＶは、図１３の処理で使用される。
ステップＳ３７では、図２４に示す第２最終判定処理を実行し、その後本処理を終了する。
【００４４】
ステップＳ３３で実施条件フラグＦＭＣＮＤＦ１０５が「１」であって、実施条件が成立しているときは、待機フラグＦＴＯ２ＷＡＩＴが「１」であるか否かを判別する（ステップＳ４１）。待機フラグＦＴＯ２ＷＡＩＴは、図１８及び図１９に示す仮判定処理が終了し、下流側Ｏ２センサ１９の故障判定の終了を待っているとき、「１」に設定される（図２３、ステップＳ２１７参照）。
【００４５】
ステップＳ４１で待機フラグＦＴＯ２ＷＡＩＴが「１」であって、下流側Ｏ２センサ１９の故障判定の終了を待っているときは、直ちにステップＳ４５に進む。ＦＴＯ２ＷＡＩＴ＝０であるときは、図９及び図１０に示すＳＯｘ濃度判定処理を実行し（ステップＳ４２）、次いで図１３に示す前演算処理を実行する（ステップＳ４３）。ステップＳ４４では、図１８及び図１９に示す仮判定処理を実行し、ステップＳ４５では、図２３に示す第１最終判定処理を実行する。
【００４６】
図４及び図５は、図３のステップＳ３１で実行される実施条件判定処理のフローチャートである。
ステップＳ５１では、劣化判定指令フラグＦＧＯＦ１０５が「１」であるか否かを判別し、ＦＧＯＦ１０５＝０であるときは、故障判定指令フラグＦＧＯＦ１０３が「１」である否かを判別する（ステップＳ５２）。劣化判定指令フラグＦＧＯＦ１０５は、ＮＯｘ浄化装置１５の劣化判定を指令するフラグであり、故障判定指令フラグＦＧＯＦ１０３は、下流側Ｏ２センサ１９の故障判定を指令するフラグである。劣化判定指令フラグＦＧＯＦ１０５及び故障判定指令フラグＦＧＯＦ１０３は、エンジン始動後に「１」に設定される。
【００４７】
劣化判定指令フラグＦＧＯＦ１０５及び故障判定指令フラグＦＧＯＦ１０３がともに「０」であるときは、ＮＯｘ浄化装置１５の劣化判定の実施条件が不成立であると判定し、ステップＳ５５及びそれに続くステップを実行する。
劣化判定指令フラグＦＧＯＦ１０５または故障判定指令フラグＦＧＯＦ１０３が「１」であるときは、故障判定完了フラグＦＤＯＮＥＦ１０３が「１」であるか否かを判別する。ＦＤＯＮＥＦ１０３＝０であるときは、故障判定終了フラグＦＥＮＤＦ１０３が「１」であるか否かを判別する（ステップＳ５４）。故障判定完了フラグＦＤＯＮＥＦ１０３は、図２６のステップＳ２８８で、Ｏ２センサ１９について正常または故障の判定を行ったとき、「１」に設定される。故障判定終了フラグＦＥＮＤＦ１０３は、図２６のステップＳ２７５で、正常または故障の判定を行うことなく故障判定を終了するとき、「１」に設定される。
【００４８】
ステップＳ５３またはＳ５４の答が肯定（ＹＥＳ）であるときは、ステップＳ５５に進み、故障判定終了フラグＦＥＮＤＦ１０３及び劣化判定終了フラグＦＥＮＤＦ１０５をともに「０」に設定する。劣化判定終了フラグＦＥＮＤＦ１０５は、ＮＯｘ浄化装置１５の劣化判定を終了するとき、図２３のステップＳ２２４で「１」に設定される。
【００４９】
以下ステップＳ５５に続いて実行される処理を説明する。ステップＳ６７では、前条件フラグＦＬＮＣＭＷＴを「０」に設定し、ステップＳ６９では、リッチ化継続フラグＦＲＳＰＥＸＴ及び故障判定実施条件フラグＦＭＣＤＦ１０３Ｂを「０」に設定する。前条件フラグＦＬＮＣＭＷＴは、以下に説明するステップＳ５６〜Ｓ５９，Ｓ６２，Ｓ６４，及びＳ６５の条件が満たされたとき、「１」に設定される（ステップＳ６６参照）。故障判定実施条件フラグＦＭＣＤＦ１０３Ｂは、Ｏ２センサ１９の故障判定の実行条件が成立するとき「１」に設定される（ステップＳ７０参照）。
【００５０】
ステップＳ７５では、パージカットフラグＦＬＮＣＰＧを「０」に設定する。パージカットフラグＦＬＮＣＰＧは、「１」に設定されると、燃料タンクで発生した蒸発燃料を吸気管２に供給する蒸発燃料パージを禁止することを示す（ステップＳ７４参照）。ステップＳ７６では、ステップＳ７７で参照されるダウンカウントタイマＴＬＮＣＰＧに所定時間ＴＭＬＮＣＰＧ（例えば、３秒）をセットしてスタートさせる。
【００５１】
ステップＳ７８では、最大出力ＳＶＭＡＸＬＮＣを「０」に設定する。最大出力ＳＶＭＡＸＬＮＣは、劣化判定実行中の上流側Ｏ２センサ出力ＳＶＯ２の最大値を示す（ステップＳ８０、Ｓ８１参照）。ステップＳ７９では、大幅低下フラグＦＳＶＭＡＸＬＮＣを「０」に設定する。大幅低下フラグＦＳＶＭＡＸＬＮＣは、上流側Ｏ２センサ出力ＳＶＯ２の最大出力ＳＶＭＡＸＬＮＣからの低下量が大きいとき「１」に設定される（ステップＳ８５参照）。ステップＳ８６では、実施条件フラグＦＭＣＮＤＦ１０５を「０」に設定し、その後本処理を終了する。
【００５２】
ステップＳ５４でＦＥＮＤＦ１０３＝０であるときは、ステップＳ５６に進み、フィードバック制御フラグＦＳＴＲＦＢが「１」であるか否かを判別する。フィードバック制御フラグＦＳＴＲＦＢは、ＬＡＦセンサ１７の出力に応じた空燃比フィードバック制御を実行するとき、「１」に設定される。ステップＳ５６の答が肯定（ＹＥＳ）であるときは、下流側Ｏ２センサ活性フラグＦＮＬＯ２が「１」であるか否かを判別する（ステップＳ５７）。下流側Ｏ２センサ活性フラグＦＮＬＯ２は、下流側Ｏ２センサ１９が活性化しているとき「１」に設定される。ステップＳ５７の答が肯定（ＹＥＳ）であるときは、リーンバーン運転フラグＦＬＢが「１」であるか否かを判別する（ステップＳ５８）。リーンバーン運転フラグＦＬＢは「１」に設定されると、空燃比を理論空燃比よりリーン側に設定するリーンバーン運転が許可されている（リーンバーン運転が可能なエンジン運転状態にある）ことを示す。ステップＳ５６〜Ｓ５８のいずれか答が否定（ＮＯ）であるときは、前記ステップＳ６７に進む。
【００５３】
ステップＳ５８の答が肯定（ＹＥＳ）であるときは、エンジン回転数ＮＥが所定回転数ＮＥＬＮＣ（例えば１７５０ｒｐｍ）より高いか否かを判別する（ステップＳ５９）。この答が否定（ＮＯ）であるときは、実施条件不成立と判定して前記ステップＳ６７に進み、ＮＥ＞ＮＥＬＮＣであるときは、ステップＳ６０〜Ｓ６４により吸気管内絶対圧ＰＢＡについての条件が満たされるか否かを判別する。
【００５４】
ステップＳ６０では実施条件フラグＦＭＣＮＤＦ１０５が既に「１」に設定されているか否かを判別し、ＦＭＣＮＤＦ１０５＝０であるときは、ステップＳ６１で第１閾値ＰＢＬＮＣＬＮを算出する。すなわち、エンジン回転数ＮＥに応じて図６（ａ）に示すＰＢＬＮＣＬＨテーブル及びＰＢＬＮＣＬＬテーブルを検索して、上側閾値ＰＢＬＮＣＬＨ及び下側閾値ＰＢＬＮＣＬＬを算出する。次に大気圧ＰＡに応じて第１閾値ＰＢＬＮＣＬＮを算出する。すなわち、大気圧ＰＡが第１所定圧ＰＡＬＮＣＨ（例えば、６０ｋＰａ（４５０ｍｍＨｇ））以上であるときは、第１閾値ＰＢＬＮＣＬＮを上側閾値ＰＢＬＮＣＬＨに設定し、大気圧ＰＡが第２所定圧ＰＡＬＮＣＬ（例えば、１０１ｋＰａ（７６０ｍｍＨｇ））以下であるときは、第１閾値ＰＢＬＮＣＬＮを下側閾値ＰＢＬＮＣＬＬに設定し、大気圧ＰＡが第１所定圧ＰＡＬＮＣＨと第２所定圧ＰＡＬＮＣＬとの間にあるときは、大気圧ＰＡに応じた線形補間演算により、第１閾値ＰＢＬＮＣＬＮを算出する。
【００５５】
ステップＳ６２では、吸気管内絶対圧ＰＢＡが第１閾値ＰＢＬＮＣＬＮより高いか否かを判別し、ＰＢＡ≦ＰＢＬＮＣＬＮであるときは、実施条件不成立と判定して前記ステップＳ６７に進む。ＰＢＡ＞ＰＢＬＮＣＬＮであるときは、ステップＳ６５に進む。
【００５６】
ステップＳ６０でＦＭＣＮＤＦ１０５＝１であるときは、ステップＳ６３で第２閾値ＰＢＬＮＣＳＴを算出する。すなわち、エンジン回転数ＮＥに応じて図６（ｂ）に示すＰＢＬＮＣＳＨテーブル及びＰＢＬＮＣＳＬテーブルを検索して、上側閾値ＰＢＬＮＣＳＨ及び下側閾値ＰＢＬＮＣＳＬを算出する。次に大気圧ＰＡに応じて第２閾値ＰＢＬＮＣＳＴを算出する。すなわち、大気圧ＰＡが第１所定圧ＰＡＬＮＣＨ以上であるときは、第２閾値ＰＢＬＮＣＳＴを上側閾値ＰＢＬＮＣＳＨに設定し、大気圧ＰＡが第２所定圧ＰＡＬＮＣＬ以下であるときは、第２閾値ＰＢＬＮＣＳＴを下側閾値ＰＢＬＮＣＳＬに設定し、大気圧ＰＡが第１所定圧ＰＡＬＮＣＨと第２所定圧ＰＡＬＮＣＬとの間にあるときは、大気圧ＰＡに応じた線形補間演算により、第２閾値ＰＢＬＮＣＳＴを算出する。
【００５７】
ステップＳ６４では、吸気管内絶対圧ＰＢＡが第２閾値ＰＢＬＮＣＳＴより高いか否かを判別し、ＰＢＡ≦ＰＢＬＮＣＳＴであるときは、実施条件不成立と判定して前記ステップＳ６７に進む。ＰＢＡ＞ＰＢＬＮＣＳＴであるときは、ステップＳ６５に進む。
【００５８】
ステップＳ６５では、還元リッチ化フラグＦＲＳＰＯＫが「１」であるか否かを判別し、ＦＲＳＰＯＫ＝１であって還元リッチ化を実行しているときは、前記ステップＳ６７に進む。ＦＲＳＰＯＫ＝０であって還元リッチ化を実行していないときは、前条件フラグＦＬＮＣＭＷＴを「１」に設定する（ステップＳ６６）。
【００５９】
図５のステップＳ６８では、ＮＯｘ量カウンタＣＲＳＰの値が、飽和判定閾値ＣＬＮＣＭＡＣＴより大きいか否かを判別し、ＣＲＳＰ＞ＣＬＮＣＭＡＣＴであるときは、下流側Ｏ２センサ１９の故障判定実行条件成立と判定し、故障判定実施条件フラグＦＭＣＤＦ１０３Ｂを「１」に設定する（ステップＳ７０）。一方、ＣＲＳＰ≦ＣＬＮＣＭＡＣＴであるときは、実施条件不成立と判定して、前記ステップＳ６９に進む。
【００６０】
ステップＳ７１では、上流側Ｏ２センサ正常フラグＦＯＫ６３が「１」であるか否かを判別する。上流側Ｏ２センサ正常フラグＦＯＫ６３は、図示しない処理において、上流側Ｏ２センサ１８が正常であると判定されたとき、「１」に設定される。ＦＯＫ６３＝０であるときは、実施条件不成立と判定して前記ステップＳ７５に進む。ＦＯＫ６３＝１であるときは、実施条件フラグＦＭＣＮＤＦ１０５が「１」であるか否かを判別し（ステップＳ７２）、ＦＭＣＮＤＦ１０５＝１であって実施条件が既に成立しているときは、直ちにステップＳ７４に進む。ＦＭＣＮＤＦ１０５＝０であって実施条件が成立していないときは、上流側Ｏ２センサ出力ＳＶＯ２が、第１上流側基準値ＳＶＯ２ＬＮＣＭ（例えば０．１Ｖ）以下か否かを判別する（ステップＳ７３）。この答が否定（ＮＯ）であるときは、実施条件不成立と判定して前記ステップＳ７５に進む。ＳＶＯ２≦ＳＶＯ２ＬＮＣＭであるときは、ステップＳ７４に進み、パージカットフラグＦＬＮＣＰＧを「１」に設定する。
【００６１】
ステップＳ７７では、ステップＳ７６でスタートしたタイマＴＬＮＣＰＧの値が「０」であるか否かを判別する。最初は、ＴＬＮＣＰＧ＞０であるので、前記ステップＳ７８に進み、ＴＬＮＣＰＧ＝０となると、ステップＳ８０に進み、上流側Ｏ２センサ出力ＳＶＯ２が最大出力ＳＶＭＡＸＬＮＣより大きいか否かを判別する。この答が肯定（ＹＥＳ）であるときは、最大出力ＳＶＭＡＸＬＮＣをその上流側Ｏ２センサ出力ＳＶＯ２に設定する（ステップＳ８１）。このときには、直ちに実施条件成立と判定し、実施条件フラグＦＭＣＮＤＦ１０５を「１」に設定する（ステップＳ８４）。
【００６２】
ステップＳ８０でＳＶＯ２≦ＳＶＯ２ＭＡＸＬＮＣであるときは，下記式（３）により，最大出力ＳＶＭＡＸＬＮＣと、上流側Ｏ２センサ出力ＳＶＯ２の差ＤＳＶを算出する（ステップＳ８２）。
ＤＳＶ＝ＳＶＭＡＸＬＮＣ−ＳＶＯ２                            （３）
そして差ＤＳＶが所定差ＤＳＶＬＮＣＭＣより大きいか否かを判別し（ステップＳ８３）、差ＤＳＶが所定差ＤＳＶＬＮＣＭＣを越えたとき、すなわち上流側Ｏ２センサ出力ＳＶＯ２の最大出力ＳＶＭＡＸＬＮＣからの低下量が大きいときは、実施条件不成立と判定し、大幅低下フラグＦＳＶＭＡＸＬＮＣを「１」に設定する（ステップＳ８５）とともに、実施条件フラグＦＭＣＮＤＦ１０５を「０」に設定する（ステップＳ８６）。
【００６３】
差ＤＳＶが所定差ＤＳＶＬＮＣＭＣを越えるような場合は、エンジンの加速などにより一時的に排気リーン状態となったと考えられるので、そのような場合に劣化判定を継続すると、誤判定を招くおそれがあるため、実施条件不成立として、劣化判定を中止する。
【００６４】
ステップＳ８３でＤＳＶ≦ＤＳＶＬＮＣＭＣであるときは、実施条件成立と判定して、前記ステップＳ８４に進む。実施条件フラグＦＭＣＮＤＦ１０５が「１」に設定されると、劣化判定のための空燃比リッチ化が実行される（図２，ステップＳ１４，Ｓ２６参照）。
【００６５】
図７は、図３のステップＳ３２で実行されるＧＡＬＯ２Ｍ算出処理のフローチャートである。
ステップＳ９１では、故障判定実施条件フラグＦＭＣＤＦ１０３Ｂが「１」であるか否かを判別し、ＦＭＣＤＦ１０３Ｂ＝０であって下流側Ｏ２センサ１９の故障判定実施条件が成立していないときは、第１排気量パラメータ算出フラグＦＧＡＬＯ２を「０」に設定し（ステップＳ９２）、さらに第１排気量パラメータＧＡＬＯ２Ｍを「０」に設定する（ステップＳ９６）。
【００６６】
ステップＳ９１でＦＭＣＤＦ１０３Ｂ＝１であって、下流側Ｏ２センサ１９の故障判定実施条件が成立しているときは、上流側Ｏ２センサ出力ＳＶＯ２が第２上流側基準値ＳＶＯ２ＬＯ２Ｍ（例えば、０．７Ｖ）以下であるか否かを判別し（ステップＳ９３）、ＳＶＯ２＞ＳＶＯ２ＬＯ２Ｍであるときは、フラグＦＧＡＬＯ２を「１」に設定して（ステップＳ９４）、ステップＳ９５に進む。ＳＶＯ２≦ＳＶＯ２ＬＯ２Ｍであるときは、ステップＳ９３から直ちにステップＳ９５に進む。
【００６７】
ステップＳ９５では、フラグＦＧＡＬＯ２が「１」であるか否かを判別し、ＦＧＡＬＯ２＝０であるときは、前記ステップＳ９６に進む。ＦＧＡＬＯ２＝１であるときは、吸気管内絶対圧ＰＢＡに応じて図８に示すＫＧＡＬＯ２Ｍテーブルを検索し、補正係数ＫＧＡＬＯ２Ｍを算出する（ステップＳ９７）。ＫＧＡＬＯ２Ｍテーブルは、吸気管内絶対圧ＰＢＡが高くなるほど、補正係数ＫＧＡＬＯ２Ｍが減少するように設定されている。
【００６８】
ステップＳ９８では、下記式（４）に基本燃料噴射量ＴＩＭ、大気圧補正係数ＫＰＡ及びステップＳ９７で算出された補正係数ＫＧＡＬＯ２Ｍを適用し、第１排気量パラメータＧＡＬＯ２Ｍを算出する。
ＧＡＬＯ２Ｍ＝ＧＡＬＯ２Ｍ＋ＴＩＭ×ＫＰＡ×ＫＧＡＬＯ２Ｍ    （４）
ここで右辺のＧＡＬＯ２Ｍは、前回算出値である。
【００６９】
基本燃料噴射量ＴＩＭは、エンジン運転状態（エンジン回転数ＮＥ及び吸気管内絶対圧ＰＢＡ）に応じて空燃比が理論空燃比となるように設定されるので、エンジン１の単位時間当たりの吸入空気量、したがって排気量に比例するパラメータである。したがって図７の処理により、下流側Ｏ２センサ１９の故障判定実行条件が成立し、かつ上流側Ｏ２センサ出力ＳＶＯ２が第２上流側基準値ＳＶＯ２ＬＯ２Ｍを超えた時点からの積算排気量に対応する第１排気量パラメータＧＡＬＯ２Ｍが算出される。
【００７０】
劣化判定実行中は空燃比は理論空燃比よりリッチ側の一定リッチ空燃比（ＫＣＭＤＲＭに対応する値）に維持されるので、この排気量パラメータＧＡＬＯ２Ｍは、排気中に含まれる還元成分（ＨＣ、ＣＯ）の積算量に比例する値を有する。また、排気量パラメータＧＡＬＯ２Ｍは、エンジン運転状態がほぼ一定であれば、積算開始時点からの経過時間に比例する。これらの点は、後述する他の排気量パラメータについても同様である。
【００７１】
図９は、図３のステップＳ４２で実行されるＳＯｘ濃度判定処理のフローチャートである。
ステップＳ１０１では、濃度判定終了フラグＦＳＬＦＥＮＤが「１」であるか否かを判別する。最初は、ＦＳＬＦＥＮＤ＝０であるので、ステップＳ１０２に進み、上流側Ｏ２センサ出力ＳＶＯ２が第３上流側基準値ＳＶＯ２ＬＮＣＳ（例えば、０．３Ｖ）以上であるか否かを判別する。この答が否定（ＮＯ）であるときは直ちにステップＳ１０４に進む。ＳＶＯ２≧ＳＶＯ２ＬＮＣＳであるときは、第１基準オーバフラグＦＳＶＯ２ＥＸＰＬを「１」に設定し（ステップＳ１０３）、ステップＳ１０４に進む。
【００７２】
ステップＳ１０４では、第１基準オーバフラグＦＳＶＯ２ＥＸＰＬが「１」であるか否かを判別し、その答が否定（ＮＯ）であるときは、第２排気量パラメータＧＳＬＦＦＩＮの記憶値ＧＳＬＦＴＷＣＨ及び第２排気量パラメータＧＳＬＦＦＩＮを「０」に設定する（ステップＳ１０５）。その後ステップＳ１１０に進む。記憶値ＧＳＬＦＴＷＣＨは、後述するステップＳ１１１で、その時点の第２排気量パラメータＧＳＬＦＦＩＮに設定される。
【００７３】
ステップＳ１０４でＦＶＯ２ＥＸＰＬ＝１であるときは、第２基準オーバフラグＦＳＶＯ２ＥＸＰＨが「１」であるか否かを判別する（ステップＳ１０６）。最初はこの答が否定（ＮＯ）であるので、ステップＳ１０７に進み、吸気管内絶対圧ＰＢＡに応じて図１１に示すＫＧＳＬＦＰＢテーブルを検索し、補正係数ＫＧＳＬＦＰＢを算出する。ＫＧＳＬＦＰＢテーブルは、吸気管内絶対圧ＰＢＡが高くなるほど、補正係数ＫＧＳＬＦＰＢが減少するように設定されている。
【００７４】
ステップＳ１０８では、下記式（５）に基本燃料噴射量ＴＩＭ、大気圧補正係数ＫＰＡ及びステップＳ１０７で算出された補正係数ＫＧＳＬＦＰＢを適用し、第２排気量パラメータＧＳＬＦＦＩＮを算出する。その後ステップＳ１１０に進む。第２排気量パラメータＧＳＬＦＦＩＮは、上流側Ｏ２センサ出力ＳＶＯ２が第３上流側基準値ＳＶＯ２ＬＮＣＳを越えた時点からの排気量積算値に対応する（図１２参照）。
ＧＳＬＦＦＩＮ＝ＧＳＬＦＦＩＮ＋ＴＩＭ×ＫＰＡ×ＫＧＳＬＦＰＢ  （５）
ここで右辺のＧＳＬＦＦＩＮは、前回算出値である。
【００７５】
ステップＳ１１０では、上流側Ｏ２センサ出力ＳＶＯ２が第４上流側基準値ＳＶＯ２ＳＬＦＴ（例えば、０．７Ｖ）より高いか否かを判別し、その答が否定（ＮＯ）であるときは、記憶値ＧＳＬＦＴＷＣＨをその時点の第２排気量パラメータＧＳＬＦＦＩＮに設定し（ステップＳ１１１）、ステップＳ１１２に進む。ＳＶＯ２＞ＳＶＯ２ＳＬＦＴであるときは、直ちにステップＳ１１２に進む。すなわち、記憶値ＧＳＬＦＴＷＣＨは、上流側Ｏ２センサ出力ＳＶＯ２が第３上流側基準値ＳＶＯ２ＬＮＣＳから第４上流側基準値ＳＶＯ２ＳＬＦＴに達するまでの排気量積算値に相当する。
【００７６】
ステップＳ１１２では、上流側Ｏ２センサ出力ＳＶＯ２が第５上流側基準値ＳＶＯ２ＳＬＦ（例えば０．７８Ｖ）より高いか否かを判別し、その答が否定（ＮＯ）であるときは、直ちにステップＳ１１４に進む。ＳＶＯ２＞ＳＶＯ２ＳＬＦであるときは、第２基準オーバフラグＦＳＶＯ２ＥＸＰＨを「１」に設定する（ステップＳ１１３）。そのステップＳ１１４に進む。第２基準オーバフラグＦＳＶＯ２ＥＸＰＨが「１」に設定されると、以後の処理では、ステップＳ１０６から直ちにステップＳ１１４に進む。
【００７７】
ステップＳ１１４では、第２排気量パラメータＧＳＬＦＦＩＮが所定閾値ＧＳＬＦＦＩＮ０以上であるか否かを判別し、この答が否定（ＮＯ）であるときは、第２基準オーバフラグＦＳＶＯ２ＥＸＰＨが「１」であるか否かを判別する（ステップＳ１１６）。ＦＳＶＯ２ＥＸＰＨ＝０であるときは直ちに本処理を終了し、ＦＳＶＯ２ＥＸＰＨ＝１であるときは、ステップＳ１１７に進む。
【００７８】
ステップＳ１１４でＧＳＬＦＦＩＮ≧ＧＳＬＦＦＩＮ０であるときは、第１高濃度フラグＦＳＬＦＧを「１」に設定し（ステップＳ１１５）、ステップＳ１１７に進む。ステップＳ１４の答が肯定（ＹＥＳ）となるのは、図１２に実線で示すように、上流側Ｏ２センサ出力ＳＶＯ２が第３上流側基準値ＳＶＯ２ＬＮＣＳを超えた時点から積算される第２排気パラメータＧＳＬＦＦＩＮが所定閾値ＧＳＬＦＦＩＮ０に達するまでに、上流側Ｏ２センサ出力ＳＶＯ２が第５上流側基準値ＳＶＯ２ＳＬＦに達しなかった場合であり、これは上流側Ｏ２センサ１８の検出値に影響を与える程度にＳＯｘ濃度が高いことを示す。したがって、第１高濃度フラグＦＳＬＦＧが「１」に設定される。なお、図１２の破線は、第２排気パラメータＧＳＬＦＦＩＮが所定閾値ＧＳＬＦＦＩＮ０に達するまでに、上流側Ｏ２センサ出力ＳＶＯ２が第５上流側基準値ＳＶＯ２ＳＬＦを超えた例を示す。この場合には、本処理は、ステップＳ１１４からステップＳ１１６を経由してステップＳ１１７に至る。
【００７９】
ステップＳ１１７では、なまし演算フラグＦＧＳＬＦＡＶＥが「１」であるか否かを判別する。最初はＦＧＳＬＦＡＶＥ＝０であるので、ステップＳ１１９に進み、なまし値ＧＳＬＦＡＶＥをその時点の第２排気量パラメータＧＳＬＦＦＩＮに設定し、なまし演算フラグＦＧＳＬＦＡＶＥを「１」に設定する（ステップＳ１２０）。その後ステップＳ１２１に進む。
【００８０】
なまし演算フラグＦＧＳＬＦＡＶＥが「１」に設定されると、以後の処理ではステップＳ１１７からステップＳ１１８に進み、下記式（６）により第２排気量パラメータＧＳＬＦＦＩＮのなまし値ＧＳＬＦＡＶＥを算出する。その後ステップＳ１２１に進む。なまし値ＧＳＬＦＡＶＥは、イグニッションスイッチがオフされてもその値が保持される。
ＧＳＬＦＡＶＥ＝ＣＧＳＬＦＡＶＥ×ＧＳＬＦＦＩＮ
＋（１−ＣＧＳＬＦＡＶＥ）×ＧＳＬＦＡＶＥ    （６）
ここでＣＧＳＬＦＡＶＥは、０から１の間の値に設定されるなまし係数、右辺のＧＳＬＦＡＶＥは、前回算出値である。
【００８１】
ステップＳ１２１では、第２排気量パラメータＧＳＬＦＦＩＮがなまし値ＧＳＬＦＡＶＥ以上か否かを判別し、その答が肯定（ＹＥＳ）であるときは、第３排気量パラメータＧＳＬＦを、第２排気量パラメータＧＳＬＦＦＩＮに設定し（ステップＳ１２２）、濃度判定終了フラグＦＳＬＦＥＮＤを「１」に設定する（ステップＳ１２４）。ＧＳＬＦＦＩＮ＜ＧＳＬＦＡＶＥであるときは、第３排気量パラメータＧＳＬＦをなまし値ＧＳＬＦＡＶＥに設定し（ステップＳ１２３）、前記ステップＳ１２４に進む。
濃度判定終了フラグＦＳＬＦＥＮＤが「１」に設定されると、以後処理ではステップＳ１０１から直ちに本処理を終了する。
【００８２】
図１３は、図３のステップＳ４３で実行される前演算処理のフローチャートである。
ステップＳ１３１では、リッチ化継続フラグＦＲＳＰＥＸＴが「１」であるか否かを判別し、ＦＲＳＰＥＸＴ＝１であるときは直ちに本処理を終了する。ＦＲＳＰＥＸＴ＝０であるときは、前演算完了フラグＦＬＶＬＮＣＥＮＤが「１」であるか否かを判別する（ステップＳ１３２）。最初はこの答は否定（ＮＯ）であるので、ステップＳ１３３に進み、図１５に示すＧＡＬＮＣＳＨ算出処理を実行し、第４排気量パラメータＧＡＬＮＣＳＨを算出する。
【００８３】
図１５のステップＳ１４１では、上流側Ｏ２センサ出力ＳＶＯ２が第６上流側基準値ＳＶＯ２ＬＮＣＨ（例えば０．７Ｖ）以下か否かを判別し、ＳＶＯ２≦ＳＶＯ２ＬＮＣＨであるときは、第４排気量パラメータＧＡＬＮＣＳＨを「０」に設定して（ステップＳ１４２）、本処理を終了する。
【００８４】
Ｏ２センサ出力ＳＶＯ２が第６上流側基準値ＳＶＯ２ＬＮＣＨ（図１７、実線Ｌ１参照）を越えると、吸気管内絶対圧ＰＢＡに応じて図１６に示すＫＮＡＣＰＢＳテーブルを検索し、吸気圧補正係数ＫＮＡＣＰＢＳを算出する（ステップＳ１４４）。ＫＮＡＣＰＢＳテーブルは、吸気管内絶対圧ＰＢＡが高くなるほど、吸気圧補正係数ＫＮＡＣＰＢＳが減少するように設定されている。
【００８５】
続くステップＳ１４５では、下記式（７）に吸気圧補正係数ＫＮＡＣＰＢＳを適用し、第４排気量パラメータＧＡＬＮＣＳＨを算出する。
ＧＡＬＮＣＳＨ＝ＧＡＬＮＣＳＨ
＋ＴＩＭ×ＫＰＡ×ＫＮＡＣＰＢＳ              （７）
右辺のＧＡＬＮＣＳＨは、前回算出値である。
【００８６】
第４排気量パラメータＧＡＬＮＣＳＨは、上流側Ｏ２センサ出力ＳＶＯ２が第６上流側基準値ＳＶＯ２ＬＮＣＨを越えた時点（図１７，時刻ｔ１）から、ＮＯｘ浄化装置１５に流入する排気量の積算値に対応する。
【００８７】
図１３に戻り、ステップＳ１３４では、カウンタＣＧＡＬＮＣＶの値に応じて図１４に示すＧＡＬＮＣＶテーブルを検索し、排気量閾値ＧＡＬＮＣＶを算出する。ＧＡＬＮＣＶテーブルは、カウンタＣＧＡＬＮＣＶの値が増加するほど、排気量閾値ＧＡＬＮＣＶが増加するように設定されている。
【００８８】
ステップＳ１３５では、ステップＳ１３３で算出した第４排気量パラメータＧＡＬＮＣＳＨが排気量閾値ＧＡＬＮＣＶ以上であるか否かを判別し、この答が否定（ＮＯ）であるときは直ちに本処理を終了する。ＧＡＬＮＣＳＨ≧ＧＡＬＮＣＶであるときは、ステップＳ１３６〜Ｓ１３８により、下流側Ｏ２センサ出力ＬＶＯ２を順次記憶する。すなわち、記憶値をカウンタＣＧＡＬＮＣＶの値を用いて、ＬＶＧＡＬＮ（ＣＧＡＬＮＣＶ）と表すと、記憶値ＬＶＧＡＬＮ（ＣＧＡＬＮＣＶ）をその時点の下流側Ｏ２センサ出力ＬＶＯ２に設定し（ステップＳ１３６）、カウンタＣＧＡＬＮＣＶの値を「１」だけインクリメントする（ステップＳ１３７）。ステップＳ１３８では、カウンタＣＧＡＬＮＣＶの値が「３０」以上であるか否かを判別し、その答が否定（ＮＯ）であるときは直ちに本処理を終了する。カウンタＣＧＡＬＮＣＶの値が「３０」に達すると、ステップＳ１３９に進み、前演算完了フラグＦＬＶＬＮＣＥＮＤを「１」に設定する。
【００８９】
前演算完了フラグＦＬＶＬＮＣＥＮＤが「１」に設定されると、以後の処理では、ステップＳ１３２から直ちに本処理を終了する。すなわち、第４排気量パラメータＧＡＬＮＣＳＨが、徐々に増加する排気量閾値ＧＡＬＮＣＶに達した時点において、３０個（ＣＧＡＬＮＣＶ＝０〜２９）の下流側Ｏ２センサ出力ＬＶＯ２を記憶すると前演算処理が完了する。
【００９０】
図１８は、図３のステップＳ４４で実行される仮判定処理のフローチャートである。
ステップＳ１５１では、リッチ化継続フラグＦＲＳＰＥＸＴが「１」であるか否かを判別し、ＦＲＳＰＥＸＴ＝０であるときは、仮判定フラグＦＰＲＥＪＵＤ１が「１」であるか否かを判別する（ステップＳ１５２）。ＦＰＲＥＪＵＤ１＝０であるときは、濃度判定終了フラグＦＳＬＦＥＮＤが「１」であるか否かを判別する（ステップＳ１５３）。ＦＳＬＦＥＮＤ＝１であるときは、前演算完了フラグＦＬＶＬＮＣＥＮＤが「１」であるか否かを判別する（ステップＳ１５４）。
【００９１】
ステップＳ１５１またはＳ１５３の答が肯定（ＹＥＳ）、あるいはステップＳ１５３またはＳ１５４の答が否定（ＮＯ）であるときは、直ちに本処理を終了する。すなわち、本処理は、ＳＯｘ濃度判定処理（図９及び図１０）、及び前演算処理（図１３）の終了後に、実質的に実行される。ステップＳ１５４の答が肯定（ＹＥＳ）であるときは、第２排気量パラメータＧＳＬＦＦＩＮに応じて図２０（ａ）に示すＮＬＶＧＡＬテーブルを検索し、記憶値選択パラメータＮＬＶＳＬＦを、検索により得られたＮＬＶＧＡＬ値に設定する（ステップＳ１５５）。
【００９２】
ステップＳ１５６では、下流側Ｏ２センサ出力ＬＶＯ２の記憶値ＬＶＧＡＬＮ（ＮＬＶＳＬＦ）が第１下流側基準値ＬＶＯ２ＬＮＬ（例えば０．６４５Ｖ）以下か否かを判別し、この答が肯定（ＹＥＳ）であるときは、記憶値ＬＶＧＡＬＮ（ＮＬＶＳＬＦ）が第２下流側基準値ＬＶＯ２ＳＴＰ（例えば０．５Ｖ）以下か否かを判別する（ステップＳ１６１）。ＬＶＧＡＬＮ（ＮＬＶＳＬＦ）≦ＬＶＯ２ＳＴＰであるときは、ステップＳ１６４（図１９）に進む。
【００９３】
ステップＳ１５６でＬＶＧＡＬＮ（ＮＬＶＳＬＦ）＞ＬＶＯ２ＬＮＬであるときは、ＳＯｘの影響で誤判定をする可能性があるため、先ずＳＯｘ除去終了フラグＦＳＲＭＯＶＥＮＤが「１」であるか否かを判別する（ステップＳ１５７）。ＦＳＲＭＯＶＥＮＤ＝０であってＳＯｘ除去処理が終了していないときは、第３排気量パラメータＧＳＬＦが、ＳＯｘ濃度判定閾値ＳＬＦＪＵＤ以上か否かを判別する（ステップＳ１５８）。ＧＳＬＦ≧ＳＬＦＪＵＤであるときは、第２高濃度フラグＦＳＬＦを「１」に設定して（ステップＳ１５９）、ステップＳ１７６に進む。第２高濃度フラグＦＳＬＦが「１」に設定されると、下流側Ｏ２センサ近傍において、ＳＯｘ濃度がＯ２センサ出力に影響を与える程度に高いことを示す。この場合には、劣化判定は中止される（図２３，ステップＳ２１４，Ｓ２１５）。
【００９４】
ステップＳ１５７でＦＳＲＭＯＶＥＮＤ＝１であるとき、またはステップＳ１５８でＧＳＬＦ＜ＳＬＦＪＵＤであるときは、ステップＳ１６０に進み、記憶値ＧＳＬＦＴＷＣＨ（図９，ステップＳ１１１参照）が、所定閾値ＧＳＬＦＴＪＵＤ以上か否かを判別する。この答が肯定（ＹＥＳ）であるときは、ステップＳ１７６に進み、ＧＳＬＦＴＷＣＨ＜ＧＳＬＦＴＪＵＤであるときは、ステップＳ１６２に進む。この場合は、ＳＯｘの影響はほとんど無いと考えられるのに、下流側Ｏ２センサ出力が高めになっていることを示すので、ＮＯｘ浄化装置１５が劣化している可能性があると判定される。
またステップＳ１６１の答が否定（ＮＯ）、すなわちＬＶＧＡＬＮ（ＮＬＶＳＬＦ）＞ＬＶＯ２ＳＴＰであるときも、下流側Ｏ２センサ出力が少し高くなっているので、ＮＯｘ浄化装置１５が劣化している可能性があると判定し、ステップＳ１６２に進む。
ステップＳ１６２では、カウンタＮＤＣＴ１０５の値が所定値ＮＬＮＣＡＶＥ（例えば、６）以上であるか否かを判別する。ウンタＮＤＣＴ１０５は、図２１の処理で初期化及びカウントアップが行われる。
【００９５】
ＮＤＣＴ１０５＜ＮＬＮＣＡＶＥであるときは、以下に説明するステップ変化フラグＦＬＮＣＳＴＰが前回「１」に設定された直後であるため、ステップＳ１６４に進む。一方、ＮＤＣＴ１０５≧ＮＬＮＣＡＶＥであるときは、ステップ変化フラグＦＬＮＣＳＴＰを「１」に設定する（ステップＳ１６３）。これは、ＮＯｘ浄化装置１５が劣化した可能性がある判定されたことを示す。
【００９６】
ステップＳ１６４では、図２１に示す平均化演算処理を実行する。図２１のステップＳ１８１では、カウンタＮＤＣＴ１０５の前回値ＮＤＣＴ１０５Ｚを、そのときのカウンタＮＤＣＴ１０５の値に設定する。ステップＳ１８２では、ステップ変化フラグＦＬＮＣＳＴＰが「１」であるか否かを判別する。ＦＬＮＣＳＴＰ＝０であるときは、カウンタＮＤＣＴ１０５の値が所定値ＮＬＮＣＡＶＥ以上であるか否かを判別する（ステップＳ１８５）。ＮＤＣＴ１０５＜ＮＬＮＣＡＶＥであるときは、カウンタＮＤＣＴ１０５を「１」だけインクリメントし（ステップＳ１８６）、ステップＳ１８７に進む。カウンタＮＤＣＴ１０５の値が所定値ＮＬＮＣＡＶＥに達すると、ステップＳ１８６をスキップして直ちにステップＳ１８７に進む。
【００９７】
ステップＳ１８７では、カウンタＮＤＣＴ１０５の値が２以上であるか否かを判別し、ＮＤＣＴ１０５＜２であるときは、ステップＳ１９５に進み、平均化排気量パラメータＧＳＬＦＦＡＶの前回値ＧＳＬＦＦＡＶＺを、今回値ＧＳＬＦＦＡＶに設定する。ステップＳ１９６では、平均化排気量パラメータＧＳＬＦＦＡＶを、第２排気量パラメータＧＳＬＦＦＩＮに設定し、平均化排気量パラメータＧＳＬＦＦＡＶの初期化を行う。
【００９８】
ステップＳ１９７〜Ｓ２０１では、下流側Ｏ２センサ出力ＬＶＯ２のなまし値ＬＶＧＡＡＶの初期化を行う。なまし値ＬＶＧＡＡＶは、下流側Ｏ２センサ出力ＬＶＯ２の３０個の記憶値ＬＶＧＡＬＮに対応して、３０個演算され、メモリに記憶される。ステップＳ１９７では、パラメータｉを「０」に初期化し、ステップＳ１９８では、なまし値の前回値ＬＶＧＡＡＶＺ（ｉ）を、今回値ＬＶＧＡＡＶ（ｉ）に設定する。ステップＳ１９９では、今回値ＬＶＧＡＡＶ（ｉ）を、記憶値ＬＶＧＡＬＮ（ｉ）に設定し、ステップＳ２００では、パラメータｉを「１」だけインクリメントする。次いでパラメータｉが３０以上か否かを判別する（ステップＳ２０１）。パラメータｉが３０に達するまでステップＳ１９８に戻り、３０に達すると、ステップＳ２０２に進む。正常判定受領フラグＦＴＯ２ＯＫＲＶを「０」に設定する。正常判定受領フラグＦＴＯ２ＯＫＲＶは、下流側Ｏ２センサ１９の仮正常判定がなされると、「１」に設定される（図２３：ステップＳ２２４，図２４：ステップＳ２４０参照）。正常判定受領フラグＦＴＯ２ＯＫＲＶの値、なまし値ＬＶＧＡＡＶ（ｉ）、及びなまし値の前回値ＬＶＧＡＡＶＺ（ｉ）は、イグニッションスイッチがオフされたときもメモリに保持される。
【００９９】
ステップＳ１８７でＮＤＣＴ１０５の値が「２」以上であるときは、平均化排気量パラメータの前回値ＧＳＬＦＦＡＶＺを、今回値ＧＳＬＦＦＡＶに設定する（ステップＳ１８８）。ステップＳ１８９では、下記式（８）に第２排気量パラメータＧＳＬＦＦＩＮを適用し、平均化排気量パラメータＧＳＬＦＦＡＶを算出する。平均化排気量パラメータＧＳＬＦＦＡＶ及びその前回値ＧＳＬＦＦＡＶＺの値は、イグニッションスイッチがオフされた後も保持される。
ＧＳＬＦＦＡＶ＝（１−ＣＬＮＣＡＶＥ）×ＧＳＬＦＦＡＶＺ
＋ＣＬＮＣＡＶＥ×ＧＳＬＦＦＩＮ      （８）
ここで、ＣＬＮＣＡＶＥは、０から１の間の値に設定されるなまし係数である。
【０１００】
ステップＳ１９０〜Ｓ１９４では、下流側Ｏ２センサ出力ＬＶＯ２のなまし値ＬＶＧＡＡＶ（ｉ）の算出を行う。ステップＳ１９０では、パラメータｉを「０」に設定し、ステップＳ１９１では、なまし値の前回値ＬＶＧＡＡＶＺ（ｉ）を、今回値ＬＶＧＡＡＶ（ｉ）に設定する。ステップＳ１９２では、下記式（９）に下流側Ｏ２センサ出力ＬＶＯ２の記憶値ＬＶＧＡＬＮ（ｉ）を適用し、なまし値ＬＶＧＡＡＶ（ｉ）を算出する。
ＬＶＧＡＡＶ（ｉ）＝（１−ＣＬＮＣＡＶＥ）×ＬＶＧＡＡＶＺ（ｉ）
＋ＣＬＮＣＡＶＥ×ＬＶＧＡＬＮ（ｉ）  （９）
【０１０１】
ステップＳ１９３では、パラメータｉを「１」だけインクリメントし、ステップＳ１９４では、パラメータｉが３０以上であるか否かを判別する。パラメータｉが３０に達するまでステップＳ１９１に戻り、３０に達すると、前記ステップＳ２０２に進む。
【０１０２】
ステップＳ１８２でステップ変化フラグＦＬＮＣＳＴＰが「１」であるときは、カウンタＮＤＣＴ１０５の値を「１」に戻すとともに（ステップＳ１８３）、ステップ変化フラグＦＬＮＣＳＴＰを「０」に戻す（ステップＳ１８４）。その後ステップＳ１９５に進む。したがって、ステップ変化フラグＦＬＮＣＳＴＰが「１」に設定されると、平均化排気量パラメータＧＳＬＦＦＡＶは、第２排気量パラメータＧＳＬＦＦＩＮそのもの（平均化していない値）に設定することにより、初期化される。また、下流側Ｏ２センサ出力ＬＶＯ２のなまし値ＬＶＧＡＡＶ（ｉ）は、記憶値ＬＶＧＡＬＮ（ｉ）（平均化していない下流側Ｏ２センサ出力値）に設定することにより、初期化される。すなわち、ステップ変化フラグＦＬＮＣＳＴＰが「１」に設定され、ＮＯｘ浄化装置１５が劣化している可能性があるときには、平均化排気量パラメータＧＳＬＦＦＡＶ及びなまし値ＬＶＧＡＡＶ（ｉ）に代えて第２排気量パラメータＧＳＬＦＦＩＮ及び記憶値ＬＶＧＡＬＮ（ｉ）を用いて、劣化判定が実行される。ステップ変化フラグＦＬＮＣＳＴＰは、ステップＳ１８４で直ちに「０」に戻されるので、初期化後は、初期化前の過去値の影響が排除された平均化排気量パラメータＧＳＬＦＦＡＶ及びなまし値ＬＶＧＡＡＶ（ｉ）が算出され、劣化判定に用いられる。すなわち、第２排気量パラメータＧＳＬＦＦＩＮ及び下流側Ｏ２センサ出力ＬＶＯ２の過去値の影響を排除して、劣化判定が行われるので、劣化しているとの判定結果を得るまでの期間を、従来に比べて短縮することができる。
【０１０３】
図１９に戻り、ステップＳ１６５では、カウンタＮＤＣＴ１０５の値及び平均化排気量パラメータＧＳＬＦＦＡＶに応じて、図２０（ｂ）に示すＤＮＬＶＧＨｊ（ｊ＝１〜６）テーブルを検索し、第１補正項ＤＮＬＶＧＨを算出する。ＤＮＬＶＧＨｊテーブルは、ＤＮＬＶＧＨ１〜ＤＮＬＶＧＨ６の６個のテーブルからなり、カウンタＮＤＣＴ１０５の値に応じて、ＤＮＬＶＧＨ１〜ＤＮＬＶＧＨ６テーブルのいずれかが選択され、平均化排気量パラメータＧＳＬＦＦＡＶに応じて、第１補正項ＤＮＬＶＧＨが算出される。カウンタＮＤＣＴ１０５の値（＝ｊ）が「１」のときには、ＤＮＬＶＧＨ１テーブルが選択され、カウンタＮＤＣＴ１０５の値が「２」のときには、ＤＮＬＶＧＨ２テーブルが選択され、カウンタＮＤＣＴ１０５の値が「６」のときには、ＤＮＬＶＧＨ６テーブルが選択される。図２０（ｂ）には、ＤＮＬＶＧＨ３テーブル〜ＤＮＬＶＧＨ５テーブルは示されていないが、カウンタＮＤＣＴ１０５の値が「３」〜「５」である場合に対応して、同様にＤＮＬＶＧＨ３テーブル〜ＤＮＬＶＧＨ５テーブルが選択される。第１補正項ＤＮＬＶＧＨは、カウンタＮＤＣＴ１０５の値が大きくなるほど、減少するように設定される。
【０１０４】
ステップＳ１６７では、カウンタＮＤＣＴ１０５の値及び平均化排気量パラメータＧＳＬＦＦＡＶに応じて、図２０（ｃ）に示すＤＮＬＶＧＬｊ（ｊ＝１〜６）テーブルを検索し、第２補正項ＤＮＬＶＧＬを算出する。ＤＮＬＶＧＬｊテーブルは、実際にはＤＮＬＶＧＬ１〜ＤＮＬＶＧＬ６の６個のテーブルからなり、カウンタＮＤＣＴ１０５の値に応じて、ＤＮＬＶＧＬ１〜ＤＮＬＶＧＬ６テーブルのいずれかが選択され、平均化排気量パラメータＧＳＬＦＦＡＶに応じて、第２補正項ＤＮＬＶＧＬが算出される。カウンタＮＤＣＴ１０５の値（＝ｊ）が「１」のときには、ＤＮＬＶＧＬ１テーブルが選択され、カウンタＮＤＣＴ１０５の値が「２」のときには、ＤＮＬＶＧＬ２テーブルが選択され、カウンタＮＤＣＴ１０５の値が「６」のときには、ＤＮＬＶＧＬ６テーブルが選択される。図２０（ｃ）には、ＤＮＬＶＧＬ３テーブル〜ＤＮＬＶＧＬ５テーブルは示されていないが、カウンタＮＤＣＴ１０５の値が「３」〜「５」である場合に対応して、同様にＤＮＬＶＧＬ３テーブル〜ＤＮＬＶＧＬ５テーブルが選択される。第１補正項ＤＮＬＶＧＬは、カウンタＮＤＣＴ１０５の値が大きくなるほど、減少するように設定される。
【０１０５】
ステップＳ１６８では、平均化排気量パラメータＧＳＬＦＦＡＶに応じて図２０（ａ）に示すＮＬＶＧＡＨテーブルを検索し、第１選択インデックスＮＬＶＧＡ１を算出する。ステップＳ１６９では、平均化排気量パラメータＧＳＬＦＦＡＶに応じて図２０（ａ）に示すＮＬＶＧＡＬテーブルを検索し、第２選択インデックスＮＬＶＧＡ２を算出する。図２０（ａ）から明らかなように、ＮＬＶＧＡＨテーブル及びＮＬＶＧＡＬテーブルは、ＮＬＶＧＡＨ＞ＮＬＶＧＡＬという関係を満たすように設定されている。すなわち、第１選択インデックスＮＬＶＧＡＨの方が、第２選択インデックスＮＬＶＧＡＬより、遅い検出タイミングのなまし値ＬＶＧＡＡＶ（ｉ）を指示する。
【０１０６】
図２０（ａ）に示すＮＬＶＧＡＨテーブル及びＮＬＶＧＡＬテーブルは、ＳＯｘによる影響あるいは三元触媒の劣化による影響を排除できようなタイミングのデータ（ＬＶＯ２）を取り出すように設定されている。これらのテーブルに基づいて選択されるなまし値ＬＶＧＡＡＶ（ｉ）を用いることにより、下流側Ｏ２センサ１９へのＳＯｘの影響を排除し、ＮＯｘ浄化装置１５の劣化判定の精度を向上させることができる。
【０１０７】
ステップＳ１７０では、下記式（１０）及び式（１１）に第１選択インデックスＮＬＶＧＡＨ、第２選択インデックスＮＬＶＧＡＬ、第１補正項ＤＮＬＶＧＨ、及び第２補正項ＤＮＬＶＧＬを適用し、第１補正選択インデックスＮＬＶＧＡＨ及び第２補正選択インデックスＮＬＶＧＡＬを算出する。
ＮＬＶＧＡＨ＝ＮＬＶＧＡ１−ＤＮＬＶＧＨ                    （１０）
ＮＬＶＧＡＬ＝ＮＬＶＧＡ２−ＤＮＬＶＧＬ                    （１１）
【０１０８】
ステップＳ１７１では、第１補正選択インデックスＮＬＶＧＡＨ及び第２補正選択インデックスＮＬＶＧＡＬを用いて、記憶されている下流側Ｏ２センサ出力のなまし値の中から、劣化判定用のなまし値ＬＶＧＡＬＮＣＬ及び正常判定用のなまし値ＬＶＧＡＬＮＣＨを選択する。すなわち、劣化判定用のなまし値ＬＶＧＡＬＮＣＬを、記憶されているなまし値ＬＶＧＡＡＶ（ＮＬＶＧＡＬ）に設定するとともに、正常判定用のなまし値ＬＶＧＡＬＮＣＨを、記憶されているなまし値ＬＶＧＡＡＶ（ＮＬＶＧＡＨ）に設定する。
【０１０９】
以上のように、平均化排気量パラメータＧＳＬＦＦＡＶに応じて補正選択インデクスＮＬＶＧＡＨ及びＮＬＶＧＡＬを算出し、これらを用いてなまし値ＬＶＧＡＡＶ（ｉ）を選択することにより、適切な検出タイミングのなまし値ＬＶＧＡＡＶ（ｉ）を選択し、正確な劣化判定を行うことができる。
【０１１０】
さらに本実施形態では、ステップ変化フラグＦＬＮＣＳＴＰが「１」に設定され、平均化演算（なまし値ＬＶＧＡＡＶ）の初期化を行ったときは、その後の平均化演算の実行回数を示すカウンタＮＤＣＴ１０５の値に応じて、補正項ＤＮＬＶＧＨ及びＤＮＬＶＧＬを算出し、選択インデックスを補正するようにしたので、平均化演算の初期化直後においても、正確な劣化判定を行うことできる。
【０１１１】
ステップＳ１７２では、正常判定用のなまし値ＬＶＧＡＬＮＣＨが第４下流側基準値ＬＶＯ２ＬＮＣＨ（例えば０．６Ｖ）以下であるか否かを判別し、その答が肯定（ＹＥＳ）であるときは、ＮＯｘ浄化装置１５が正常である可能性が高いと判定し、仮正常フラグＦＫＯＫＦ１０５を「１」に設定するとともに、判定保留フラグＦＧＲＡＹＦ１０５を「０」に設定する（ステップＳ１７３）。
【０１１２】
ステップＳ１７２でＬＶＧＡＬＮＣＨ＞ＬＶＯ２ＬＮＣＨであるときは、劣化判定用のなまし値ＬＶＧＡＬＮＣＬが第１下流側基準値ＬＶＯ２ＬＮＬ（例えば０．６４５Ｖ）以下であるか否かを判別する（ステップＳ１７４）。その答が否定（ＮＯ）であるときは、下流側Ｏ２センサ出力ＬＶＯ２のリッチ側への移行が早いので、ＮＯｘ浄化装置１５が劣化している可能性が高いと判定し、仮正常フラグＦＫＯＫＦ１０５を「０」に設定するとともに、判定保留フラグＦＧＲＡＹＦ１０５を「０」に設定する（ステップＳ１７５）。
【０１１３】
ステップＳ１７４でＬＶＧＡＬＮＣＬ≦ＬＶＯ２ＬＮＬであるときは、正常あるいは劣化のいずれとも判定できないので、ステップＳ１７６に進み、判定保留フラグＦＧＲＡＹＦ１０５を「１」に設定するとともに、仮正常フラグＦＫＯＫＦ１０５を「０」に設定する。
ステップＳ１７７では、仮判定フラグＦＰＲＥＪＵＤ１を「１」に設定する。
【０１１４】
図２２は、ＮＯｘ浄化装置１５が劣化した可能性があると判定したときに、ステップ変化フラグＦＬＮＣＳＴＰを「１」に設定して、平均化演算（なまし値ＬＶＧＡＡＶ）の初期化を行うことによる効果を説明するためのタイムチャートである。この図において、ｎ−４，ｎ−３，ｎ−２，ｎ−１，ｎ，ｎ＋１，…，ｎ＋５は、図３に示す劣化判定処理の実行周期に対応した離散化時刻を示す。図２２には、時刻ｎにおいて、図１８のステップＳ１６１の答が否定（ＮＯ）となり、ステップ変化フラグＦＬＮＣＳＴＰが「１」に設定された例が示されている。また、実線Ｌ１が平均化していない下流側Ｏ２センサ出力ＬＶＯ２（フローチャート上では記憶値ＬＶＧＡＬＮ）の推移を示し、一点鎖線Ｌ２が、なまし値ＬＶＧＡＡＶの推移を示し、実線Ｌ３は、ステップ変化フラグＦＬＮＣＳＴＰを用いない従来の判定手法を適用した場合の、なまし値ＬＶＧＡＡＶに相当するパラメータＬＶＧＡＡＶＰＸの推移を示す。
【０１１５】
時刻ｎにおいて、ステップ変化フラグＦＬＮＣＳＴＰが「１」に設定されると、なまし値ＬＶＧＡＡＶは、記憶値ＬＶＧＡＬＮに設定されて初期化される（図２１，ステップＳ１９９参照）。その後は、初期化前の下流側Ｏ２センサ出力を除いて、記憶値ＬＶＧＡＬＮのなまし値ＬＶＧＡＡＶの演算が行われるので、記憶値ＬＶＧＡＬＮと、なまし値ＬＶＧＡＡＶとは、近い値となり、時刻（ｎ＋５）において、なまし値ＬＶＧＡＡＶが判定閾値ＬＶＯ２ＬＮＬＭＯＤを越え、ＮＯｘ浄化装置１５が劣化していると判定される。
【０１１６】
これに対し、従来の判定手法では、なまし値ＬＶＧＡＡＶＰＸの初期化は行われないので、実線Ｌ３で示すように、なまし値ＬＶＧＡＡＶＰＸは徐々に増加する。したがって、なまし値ＬＶＧＡＡＶＰＸが判定閾値ＬＶＯ２ＬＮＬＭＯＤを超えて劣化判定がなされるのは、時刻（ｎ＋５）よりかなり遅れることになる。
【０１１７】
なお、図１９のステップＳ１７４では、劣化判定閾値は、第１下流側基準値ＬＶＯ２ＬＮＬであるが、比較の対象となるなまし値ＬＶＧＡＬＮＣＬが、カウンタＮＤＣＴ１０５の値及び平均化排気量パラメータＧＳＬＦＦＡＶに応じて補正されているため、等価的には、判定閾値が変更されていることに相当する。そのため、図２２では、等価的に変化する判定閾値をＬＶＯ２ＬＮＬＭＯＤとして示している。すなわち、本実施形態では、なまし値ＬＶＧＡＡＶを初期化したときは、判定閾値ＬＶＯ２ＬＮＬＭＯＤが、劣化しているとの判定がなされ難い値（より大きな値）に先ず変更され、徐々に劣化しているとの判定がなされ易い方向に（徐々に減少するように）変更される。これにより、平均化演算の対象となった記憶値ＬＶＧＡＬＮの数が少ない段階での誤判定を防止し、正確な判定を行うことができる。
【０１１８】
図２３は、図３のステップＳ４５で実行される第１最終判定処理のフローチャートである。
ステップＳ２１１では、待機フラグＦＴＯ２ＷＡＩＴが「１」であるか否かを判別する。ＦＴＯ２ＷＡＩＴ＝１であって下流側Ｏ２センサ１９の故障判定の終了待ちのときは、直ちにステップＳ２１６に進む。ＦＴＯ２ＷＡＩＴ＝０であるときは、仮判定フラグＦＰＲＥＪＵＤ１が「１」であるか否かを判別する（ステップＳ２１２）。この答が否定（ＮＯ）であって仮判定処理（図１８，図１９）が終了していないときは、直ちに本処理を終了する。
【０１１９】
ＦＲＥＪＵＤ１＝１であるときは、ステップＳ２１３に進み、判定保留フラグＦＧＲＡＹＦ１０５が「１」であるか否かを判別する。ＦＧＲＡＹＦ１０５＝０であるときは、第２高濃度フラグＦＳＬＦが「１」であるか否かを判別する（ステップＳ２１４）。ステップＳ２１３またはＳ２１４の答が肯定（ＹＥＳ）であるときは、ステップＳ２１５に進み、実施条件フラグＦＭＣＮＤＦ１０５及び故障判定実施条件フラグＦＭＣＤＦ１０３Ｂをともに「０」に設定し、ＮＯｘ浄化装置１５の劣化判定及び下流側Ｏ２センサ１９の故障判定を中止する。
【０１２０】
ステップＳ２１４でＦＳＬＦ＝０であって、下流側Ｏ２センサ１９の近傍におけるＳＯｘ濃度が低いときは、ステップＳ２１６に進み、下流側Ｏ２センサ１９の仮正常フラグＦＫＯＫＦ１０３が「１」であるか否かを判別する。この答が否定（ＮＯ）であるときは、待機フラグＦＴＯ２ＷＡＩＴ及びリッチ化継続フラグＦＲＳＰＥＸＴをともに「１」に設定する（ステップＳ２１７）。
【０１２１】
ステップＳ２１６でＦＫＯＫＦ１０３＝１であって、下流側Ｏ２センサ１９の仮の正常判定がなされているときは、ＳＯｘ除去終了フラグＦＳＲＭＯＶＥＮＤ及び第２高濃度フラグＦＳＬＦをともに「０」に設定し（ステップＳ２１８）、ＮＯｘ浄化装置１５の仮正常フラグＦＫＯＫＦ１０５が「１」であるか否かを判別する（ステップＳ２１９）。ＦＫＯＫＦ１０５＝０であるときは、直ちにＮＯｘ浄化装置１５は劣化していると判定し、劣化フラグＦＦＳＤＦ１０５を「１」に設定するとともに、正常フラグＦＯＫＦ１０５を「０」に設定する（ステップＳ２２０）。その後ステップＳ２２３に進み、判定完了フラグＦＤＯＮＥＦ１０５を「１」に設定する。次いで劣化判定終了フラグＦＥＮＤＦ１０５を「１」に設定するとともに、正常判定受領フラグＦＴＯ２ＯＫＲＶを「１」に設定する（ステップＳ２２４）。
【０１２２】
ステップＳ２１９でＦＫＯＫＦ１０５＝１であって仮の正常判定がなされているときは、カウンタＮＤＣＴ１０５の値が、所定値ＮＬＮＣＡＶＥ以上であるか否かを判別する（ステップＳ２２１）。その答が否定（ＮＯ）であるときは、直ちにステップＳ２２４に進み、正常または劣化との判定を行うことなく、劣化判定を終了する。
【０１２３】
ステップＳ２２１でＮＤＣＴ１０５≧ＮＬＮＣＡＶＥであるときは、ＮＯｘ浄化装置１５は正常と判定し、正常フラグＦＯＫＦ１０５を「１」に設定するとともに、劣化フラグＦＦＳＤＦ１０５を「０」に設定する（ステップＳ２２２）。その後前記ステップＳ２２３に進む。
【０１２４】
図２３の処理によれば、仮正常フラグＦＫＯＫＦ１０５が「０」であるときは、直ちに劣化判定が行われる（確定される）（ステップＳ２１９，Ｓ２２０）。したがって、ステップ変化フラグＦＬＮＣＳＴＰが「１」に設定され、平均化演算が初期化された直後において、劣化したとの判定を迅速に行うことができる。また仮正常フラグＦＫＯＫＦ１０５が「１」であるときは、カウンタＮＤＣＴ１０５の値が所定値ＮＬＮＣＡＶＥに達した後に、正常判定が行われる（確定される）（ステップＳ２１９，Ｓ２２１，Ｓ２２２）。したがって、ステップ変化フラグＦＬＮＣＳＴＰが「１」に設定され、平均化演算が初期化された直後においては、正常判定は直ちに確定せず、所定値ＮＬＮＣＡＶＥに相当する検出データの平均化演算が行われた後に確定する。これにより、正常判定の精度を高めることができる。
【０１２５】
図２４は、図３のステップＳ３７で実行される第２最終判定処理のフローチャートである。
ステップＳ２３１では、劣化判定終了フラグＦＥＮＤＦ１０５が「１」であるか否かを判別し、ＦＥＮＤＦ１０５＝０であるときは、待機フラグＦＴＯ２ＷＡＩＴが「１」であるか否かを判別する（ステップＳ２３２）。ＦＴＯ２ＷＡＩＴ＝１であるときは、下流側Ｏ２センサ１９の仮正常フラグＦＫＯＫＦ１０３が「１」であるか否かを判別する（ステップＳ２３３）。
【０１２６】
ステップＳ２３１の答が肯定（ＹＥＳ）、あるいはステップＳ２３２またはＳ２３３の答が否定（ＮＯ）であるときは、直ちに本処理を終了する。
ステップＳ２３３でＦＫＯＫＦ１０３が「１」であるときは、ＳＯｘ除去終了フラグＦＳＲＭＯＶＥＮＤ及び第２高濃度フラグＦＳＦＬをともに「０」に設定する（ステップＳ２３４）。ステップＳ２３５では、仮正常フラグＦＫＯＫＦ１０５が「１」であるか否かを判別し、ＦＫＯＫＦ１０５＝０であるときは、直ちにＮＯｘ浄化装置１５は劣化していると判定し、劣化フラグＦＦＳＤＦ１０５を「１」に設定するとともに、正常フラグＦＯＫＦ１０５を「０」に設定する（ステップＳ２３６）。その後ステップＳ２３９に進み、判定完了フラグＦＤＯＮＥＦ１０５を「１」に設定する。次いで劣化判定終了フラグＦＥＮＤＦ１０５を「１」に設定するとともに、正常判定受領フラグＦＴＯ２ＯＫＲＶを「１」に設定する（ステップＳ２４０）。
【０１２７】
ステップＳ２３５でＦＫＯＫＦ１０５＝１であって仮の正常判定がなされているときは、カウンタＮＤＣＴ１０５の値が、所定値ＮＬＮＣＡＶＥ以上であるか否かを判別する（ステップＳ２３７）。その答が否定（ＮＯ）であるときは、直ちにステップＳ２４０に進み、正常または劣化との判定を行うことなく、劣化判定を終了する。
【０１２８】
ステップＳ２３７でＮＤＣＴ１０５≧ＮＬＮＣＡＶＥであるときは、ＮＯｘ浄化装置１５は正常と判定し、正常フラグＦＯＫＦ１０５を「１」に設定するとともに、劣化フラグＦＦＳＤＦ１０５を「０」に設定する（ステップＳ２３８）。その後前記ステップＳ２３９に進む。
【０１２９】
図２４のステップＳ２３３〜Ｓ２４０は、図２３のステップＳ２１６，Ｓ２１９〜Ｓ２２４に対応し、図２３の処理と同様に、劣化したとの判定を迅速に行うとともに正常判定の精度を高めることができる。
【０１３０】
図２５及び図２６は、下流側Ｏ２センサ１９の故障判定を行う処理のフローチャートである。この処理は、所定時間（例えば１０ミリ秒）毎にＥＣＵ５のＣＰＵで実行される。
ステップＳ２５１では、故障判定指令フラグＦＧＯＦ１０３が「１」であるか否かを判別する。ＦＧＯＦ１０３＝１であるときは、待機フラグＦＴＯ２ＷＡＩＴが「１」であるか否かを判別する（ステップＳ２５２）。ＦＴＯ２ＷＡＩＴ＝１であるときは、ステップＳ２５６に進み、ＦＴＯ２ＷＡＩＴ＝０であるときは、故障判定実施条件フラグＦＭＣＤＦ１０３Ｂが「１」であるか否かを判別する（ステップＳ２５３）。ＦＧＯＦ１０３＝０であるとき、またはＦＭＣＤＦ１０３Ｂ＝０であって、故障判定実施条件が成立していないときは、ゾーンパラメータＬＺＯＮＥを「０」に設定する（ステップＳ２５４）。ゾーンパラメータＬＺＯＮＥは、後述するステップＳ２５６〜Ｓ２６４において、下流側Ｏ２センサ出力ＬＶＯ２に応じた値に設定される。
【０１３１】
ステップＳ２５５では、第１ゾーンフラグＦＬＺＯＮＥ１、第２ゾーンフラグＦＬＺＯＮＥ３、及び仮正常フラグＦＫＯＫＦ１０３をいずれも「０」に設定する。第１ゾーンフラグＦＬＺＯＮＥ１は、ゾーンパラメータＬＺＯＮＥが「１」に設定されるとき「１」に設定され（ステップＳ２５８）、第２ゾーンフラグＦＬＺＯＮＥ３は、ゾーンパラメータＬＺＯＮＥが「３」に設定されるとき「１」に設定される（ステップＳ２６３）。さらにステップＳ２７７（図２６）では、リッチ化継続フラグＦＲＳＰＥＸＴを「０」に設定し、本処理を終了する。
【０１３２】
故障判定実施条件が成立しているときは、ステップＳ２５３からＳ２５６に進み、下流側Ｏ２センサ出力ＬＶＯ２が第３下流側基準値ＬＶＯ２ＬＮＣＬ（例えば０．３Ｖ）以下か否かを判別する。ＬＶＯ２≦ＬＶＯ２ＬＮＣＬであるときは、ゾーンパラメータＬＺＯＮＥを「１」に設定し（ステップＳ２５７）、第１ゾーンフラグＦＬＺＯＮＥ１を「１」に設定する（ステップＳ２５８）。その後ステップＳ２６５に進む。
【０１３３】
ステップＳ２５６でＬＶＯ２＞ＬＶＯ２ＬＮＣＬであるときは、下流側Ｏ２センサ出力ＬＶＯ２が第４下流側基準値ＬＶＯ２ＬＮＣＨ（例えば０．７Ｖ）以下か否かを判別する（ステップＳ２５９）。ＬＶＯ２≦ＬＶＯ２ＬＮＣＨであるときは、ゾーンパラメータＬＺＯＮＥを「２」に設定し（ステップＳ２６０）、ステップＳ２６５に進む。
【０１３４】
ステップＳ２５９でＬＶＯ２＞ＬＶＯ２ＬＮＣＨであるときは、下流側Ｏ２センサ出力ＬＶＯ２が第５下流側基準値ＬＶＯ２ＯＰＥＮ（例えば１．５Ｖ）以下か否かを判別する。ＬＶＯ２≦ＬＶＯ２ＯＰＥＮであるときは、ゾーンパラメータＬＺＯＮＥを「３」に設定し（ステップＳ２６２）、第２ゾーンフラグＦＬＺＯＮＥ３を「１」に設定する（ステップＳ２６３）。その後ステップＳ２６５に進む。
【０１３５】
ステップＳ２６１でＬＶＯ２＞ＬＶＯ２ＯＰＥＮであるときは、ゾーンパラメータＬＺＯＮＥを「４」に設定し（ステップＳ２６４）、ステップＳ２６５に進む。
ステップＳ２６５では、第１ゾーンフラグＦＬＺＯＮＥ１が「１」であるか否かを判別し、ＦＬＺＯＮＥ１＝１であるときは、第２ゾーンフラグＦＬＺＯＮＥ３が「１」であるか否かを判別する（ステップＳ２６６）。第１ゾーンフラグＦＬＺＯＮＥ１及び第２ゾーンフラグＦＬＺＯＮＥ３がともに「１」であるときは、下流側Ｏ２センサ１９は正常である可能性が高いと判定し、ステップＳ２６７に進み、仮正常フラグＦＫＯＫＦ１０３が「１」であるか否かを判別する。その答が肯定（ＹＥＳ）であるときは直ちにステップＳ２７１に進む。
【０１３６】
ＦＫＯＫＦ１０３＝０であるときは、出力記憶値ＬＶＯ２ＲＴを、その時点の下流側Ｏ２センサ出力ＬＶＯ２に設定するとともに、ゾーン記憶値ＬＺＯＮＥＲＴを、その時点のゾーンパラメータＬＺＯＮＥに設定する（ステップＳ２６８）。次いで、仮正常フラグＦＫＯＫＦ１０３を「１」に設定し（ステップＳ２７０）、ステップＳ２７１に進む。
【０１３７】
ステップＳ２７１では、判定完了フラグＦＤＯＮＥＦ１０５が「１」であるか否かを判別し、ＦＤＯＮＥＦ１０５＝０であってＮＯｘ浄化装置１５が正常であるとの判定または劣化しているとの判定がなされていないときは、ステップＳ２７４に進み、劣化判定終了フラグＦＥＮＤＦ１０５が「１」であるか否かを判別する。その答が否定（ＮＯ）であるときは直ちに本処理を終了する。ＦＥＮＤＦ１０５＝１であって劣化判定が終了しているときは、故障判定終了フラグＦＥＮＤＦ１０３を「１」に設定し（ステップＳ２７５）、待機フラグＦＴＯ２ＷＡＩＴを「０」に設定して（ステップＳ２８９）、本処理を終了する。
【０１３８】
ステップＳ２７１で、ＦＤＯＮＥＦ１０５＝１であってＮＯｘ浄化装置１５の劣化判定が完了しているときは、下流側Ｏ２センサ１９は正常と判定し、Ｏ２センサ正常フラグＦＯＫＦ１０３を「１」に設定する（ステップＳ２７３）。その後ステップＳ２８８に進み、故障判定完了フラグＦＤＯＮＥＦ１０３を「１」に設定し、前記ステップＳ２８９に進む。
【０１３９】
ステップＳ２６５またはステップＳ２６６の答が否定（ＮＯ）であるときは、ステップＳ２７６に進み、故障判定実施条件フラグＦＭＣＤＦ１０３Ｂが「１」であるか否かを判別する。この答が否定（ＮＯ）であるときは、前記ステップＳ２７７に進み、ＦＭＣＤＦ１０３Ｂ＝１であって故障判定実施条件が成立しているときは、リッチ化継続フラグＦＲＳＰＥＸＴが「１」であるか否かを判別する（ステップＳ２７８）。ＦＲＳＰＥＸＴ＝０であるときは、実施条件フラグＦＭＣＮＤＦ１０５が「１」であるか否かを判別する（ステップＳ２７９）。ＦＭＣＮＤＦ１０５＝０であってＮＯｘ浄化装置１５の劣化判定実施条件が不成立であるときは、大幅低下フラグＦＳＶＭＡＸＬＮＣが「１」であるか否かを判別する（ステップＳ２８０）。ＦＳＶＭＡＸＬＮＣ＝０であるときは、さらにゾーンパラメータＬＺＯＮＥが「１」であるか否かを判別する（ステップＳ２８１）。この答が否定（ＮＯ）であるとき、すなわち、下流側Ｏ２センサ１９の故障判定実施条件が成立している（ＮＯｘ浄化装置１５に蓄積されたＮＯｘ量がほぼ飽和状態にある）が、ＮＯｘ浄化装置１５の劣化判定実施条件が不成立であって、かつ上流側Ｏ２センサ出力ＳＶＯ２が、最大値ＳＶＭＡＸＬＮＣから大きく低下していない場合において（ＦＳＶＭＡＸＬＮＣ＝０）、ゾーンパラメータＬＺＯＮＥが「１」でない（下流側Ｏ２センサ出力ＬＶＯ２が第３下流側基準値ＬＶＯ２ＬＮＣＬより高い）ときは、下流側Ｏ２センサ１９は、出力レベルが高い状態に固定された故障または断線故障と判定する。
【０１４０】
ステップＳ２８５では、出力記憶値ＬＶＯ２ＲＴをその時点の下流側Ｏ２センサ出力ＬＶＯ２に設定するとともに、ゾーン記憶値ＬＺＯＮＥＲＴを、その時点のゾーンパラメータＬＺＯＮＥに設定する。そしてステップＳ２８７で、Ｏ２センサ故障フラグＦＦＳＤＦ１０３を「１」に設定するとともに、Ｏ２センサ正常フラグＦＯＫＦ１０３を「０」に設定する。その後前記ステップＳ２８８に進む。
ステップＳ２７９〜Ｓ２８１の何れかの答が肯定（ＹＥＳ）であるときは、直ちに本処理を終了する。
【０１４１】
ステップＳ２７６でＦＲＳＰＥＸＴ＝１であるときは、ステップＳ２８３に進み、第１排気量パラメータＧＡＬＯ２Ｍが、所定閾値ＧＡＬＯ２ＲＳＰ以上であるか否かを判別する。この答が否定（ＮＯ）であるときは、直ちに本処理を終了する。ＧＡＬＯ２Ｍ≧ＧＡＬＯ２ＲＳＰであるときは、空燃比をリッチ化し、かつ十分な量の排気がなされたにもかかわらず、ゾーンパラメータＬＺＯＮＥが「３」とならない（下流側Ｏ２センサ出力ＬＶＯ２が第４下流側基準値ＬＶＯ２ＬＮＣＨを超えない）ので、下流側Ｏ２センサ１９は故障していると判定し、前記ステップＳ２８５に進む。
【０１４２】
図２７は、上述したＮＯｘ浄化装置１５の劣化判定処理及び下流側Ｏ２センサ１９の故障判定処理を説明するためのタイムチャートである。この図において実線は、下流側Ｏ２センサ１９が正常である場合に対応し、破線は下流側Ｏ２センサ１９が短絡故障（センサ出力ＬＶＯ２が「０」のままとなる故障）を起こしている場合に対応する。
【０１４３】
時刻ｔ１１に劣化判定の実施条件が成立し、実施条件フラグＦＭＣＮＤＦ１０５が「１」に設定される（図５，ステップＳ８４）。時刻ｔ１２において上流側Ｏ２センサ出力ＳＶＯ２が第２上流側基準値ＳＶＯ２ＬＯ２Ｍを越え、第１排気量パラメータＧＡＬＯ２Ｍの積算が開始される（図７，ステップＳ９４）。
【０１４４】
時刻ｔ１４において仮正常フラグＦＫＯＫＦ１０５が「１」に設定されると（図１９，ステップＳ１７３）、このとき、下流側Ｏ２センサ１９の正常判定がなされていないため（ＦＯＫＦ１０３＝０）、リッチ化継続フラグＦＲＳＰＥＸＴが「１」に設定される（図２３，ステップＳ２１７）。
【０１４５】
時刻ｔ１５において、下流側Ｏ２センサ出力ＬＶＯ２が、第４下流側基準値ＬＶＯ２ＬＮＣＨを越えて、ゾーンパラメータＬＺＯＮＥが「３」になると（図２６，ステップＳ２６２）、下流側Ｏ２センサ１９の正常判定がなされる。したがって、Ｏ２センサ正常フラグＦＯＫＦ１０３が「１」に設定される（図２６，ステップＳ２７３）とともに、正常フラグＦＯＫＦ１０５が「１」に設定される（図２３，ステップＳ２２２；図２４，ステップＳ２３８）。
【０１４６】
下流側Ｏ２センサ１９が故障している場合には、破線で示すようにさらに空燃比のリッチ化が継続され、第１排気量パラメータＧＡＬＯ２Ｍが所定閾値ＧＡＬＯ２ＲＳＰに達する時刻ｔ１６において、下流側Ｏ２センサ１９の故障判定がなされる（Ｏ２センサ故障フラグＦＦＳＤＦ１０３が「１」に設定される（図２６，ステップＳ２８７））。この場合は、正常フラグＦＯＫＦ１０５は「０」に維持され、ＮＯｘ浄化装置１５の正常判定はなされない。
【０１４７】
図２８は、パラメータ初期化処理のフローチャートである。この処理は、イグニッションスイッチがオンされたとき実行される。
ステップＳ３０１では、正常判定受領フラグＦＴＯ２ＯＫＲＶが「１」であるか否かを判別し、ＦＴＯ２ＯＫＲＶ＝１であるときは直ちに本処理を終了する。ＦＴＯ２ＯＫＲＶ＝０であるときは、カウンタＮＤＣＴ１０５を、その前回値ＮＤＣＴ１０５Ｚに設定し（ステップＳ３０２）、さらに平均化排気量パラメータＧＳＬＦＦＡＶを、その前回値ＧＳＬＦＦＡＶＺに設定する（ステップＳ３０３）。
【０１４８】
ステップＳ３０４〜Ｓ３０７では、下流側Ｏ２センサ出力ＬＶＯ２のなまし値ＬＶＧＡＡＶ（ｉ）（ｉ＝０〜２９）の初期化を行う。すなわちパラメータｉを「０」に設定し（ステップＳ３０４）、なまし値ＬＶＧＡＡＶ（ｉ）を、その前回値ＬＶＧＡＡＶＺ（ｉ）に設定し（ステップＳ３０５）、パラメータｉを「１」だけインクリメントし（ステップＳ３０６）、パラメータｉが３０以上か否かを判別し（ステップＳ３０７）、パラメータｉが３０より小さいときは、ステップＳ３０５に戻り、３０に達すると初期化を終了する。この初期化により、ＮＯｘ浄化装置１５の劣化判定については仮判定まで終了したが、下流側Ｏ２センサ１９の故障判定結果が出る前に、イグニッションスイッチがオフされた場合でも、故障している可能性のある下流側Ｏ２センサの出力を平均化したなまし値ＬＶＧＡＡＶ（ｉ）が使用されなくなるので、次のＮＯｘ浄化装置１５の劣化判定を行うときに、信頼性が低い可能性のあるなまし値ＬＧＡＡＶ（ｉ）の影響を除くことができる。
【０１４９】
図２９は、ＳＯｘ除去処理のフローチャートであり、この処理は所定時間（例えば１００ミリ秒）毎にＥＣＵ５のＣＰＵで実行される。なお、ＳＯｘ除去処理の実行中（ＦＳＬＦ＝１かつＦＳＲＭＯＶＥＮＤ＝０であるとき）は、リーンバーン運転は禁止される（後述する図３０参照）。
【０１５０】
ステップＳ３１１では、第２高濃度フラグＦＳＬＦが「１」であるか否かを判別し、ＦＳＬＦ＝０であるときは、第１のダウンカウンタＣＳＲＭＯＶに第１の所定値ＣＴＳＲＭＯＶＳ（例えば６０００）を設定し（ステップＳ３１３）、第２のダウンカウンタＣＳＡＤＩＮＴに第２の所定値ＣＴＳＡＤＤＳ（例えば４８）を設定して（ステップＳ３１４）、本処理を終了する。第１の所定値ＣＴＳＲＭＯＳは、ＮＯｘ浄化装置１５のＳＯｘ吸着量が最大（飽和状態）の場合でも、全てのＳＯｘを除去することができる時間に対応する値に設定される。
【０１５１】
ステップＳ３１１でＦＳＬＦ＝１であってＳＯｘ濃度が高いと判定されているときは、ＳＯｘ除去終了フラグＦＳＲＭＯＶＥＮＤが「１」であるか否かを判別する（ステップＳ３１２）。既にＳＯｘ除去処理が完了した場合には、この答は肯定（ＹＥＳ）となり、前記ステップＳ３１３に進む。ＦＳＲＭＯＶＥＮＤ＝０であるときは、ＮＯｘ浄化装置１５の推定温度ＴＣＴが、所定温度ＴＣＴＳＦ（例えば６００℃）より高いか否かを判別する（ステップＳ３１５）。推定温度ＴＣＴは、図示しない処理により、例えばエンジンの運転状態、具体的にはエンジン回転数ＮＥ及びエンジン負荷（吸気管内絶対圧ＰＢＡ）に応じて設定された温度マップを検索することにより、算出される。なおＮＯｘ浄化装置１５の温度を検出する温度センサを設け、推定温度ＴＣＴをその検出温度に代えてもよい。
【０１５２】
ステップＳ３１５においてＴＣＴ≦ＴＣＴＳＦであるときは、第２のダウンカウンタＣＳＡＤＩＮＴの値が「０」以下か否かを判別する（ステップＳ３１８）。最初は、ＣＳＡＤＩＮＴ＞０であるので、第２のダウンカウンタＣＳＡＤＩＮＴを「１」だけデクリメントし（ステップＳ３１９）、ステップＳ３２４に進む。その後、第２のダウンカウンタＣＳＡＤＩＮＴの値が「０」となると、ステップＳ３１８からステップＳ３２０に進み、第１のダウンカウンタＣＳＲＭＯＶを「１」だけインクリメントする。次いで第２のダウンカウンタＣＳＡＤＩＮＴに第２の所定値ＣＴＳＡＤＤＳを設定し（ステップＳ３２１）、ステップＳ３２４に進む。
【０１５３】
ステップＳ３１５でＴＣＴ＞ＴＣＴＳＦであるときは、ＳＯｘ除去リッチ化フラグＦＳＲＲを「１」に設定し、空燃比を理論空燃比よりリッチ側の値に設定する（ステップＳ３１６）（図２、ステップＳ１０、Ｓ２９参照）。次いで、検出当量比ＫＡＣＴが所定当量比ＫＡＣＴＳＲＭ（例えば１．０３）以上か否かを判別し（ステップＳ３１７）、ＫＡＣＴ＜ＫＡＣＴＳＲＭであるときは前記ステップＳ３１８に進む。ＫＡＣＴ≧ＫＡＣＴＳＲＭであるときは、第１のダウンカウンタＣＳＲＭＯＶを「１」だけデクリメントし（ステップＳ３２２）、第２のダウンカウンタＣＳＡＤＩＮＴに第２の所定値ＣＴＳＡＤＤＳを設定して（ステップＳ３２３）、ステップＳ３２４に進む。
【０１５４】
ステップＳ３２４では、第１のダウンカウンタＣＳＲＭＯＶの値が第１の所定値ＣＴＳＲＭＯＶＳ以下であるか否かを判別し、ＣＳＲＭＯＶ≦ＣＴＳＲＭＯＶＳであるときは直ちにステップＳ３２６に進む。ＣＳＲＭＯＶ＞ＣＴＳＲＭＯＶＳであるときは、第１のダウンカウンタＣＳＲＭＯＶを第１の所定値ＣＴＳＲＭＯＶＳに設定して（ステップＳ３２５）、ステップＳ３２６に進む。
【０１５５】
ステップＳ３２６では、第１のダウンカウンタＣＳＲＭＯＶの値が「０」以下か否かを判別し、ＣＳＲＭＯＶ＞０である間は直ちに本処理を終了する。第１のダウンカウンタＣＳＲＭＯＶの値が「０」となると、ＳＯｘ除去処理が完了したと判定して、ステップＳ３２７及びＳ３２８を実行する。すなわち、第１のダウンカウンタＣＳＲＭＯＶを「０」に設定し（ステップＳ３２７）、ＳＯｘ除去終了フラグＦＳＲＭＯＶＥＮＤを「１」に設定するとともに、第２高濃度フラグＦＳＬＦ及びＳＯｘ除去リッチ化フラグＦＳＲＲを「０」に戻して（ステップＳ３２８）、本処理を終了する。
【０１５６】
図２９の処理によれば、第１のダウンカウンタＣＳＲＭＯＶにより、ＮＯｘ浄化装置１５に蓄積したＳＯｘ量が推定され、第１のダウンカウンタＣＳＲＭＯＶの値が「０」となったとき、蓄積されたＳＯｘが除去されたと判定し、ＳＯｘ除去終了フラグＦＳＲＭＯＶＥＮＤが「１」に設定される。ただし、推定温度ＴＣＴが所定温度ＴＣＴＳＦ以下であるとき、または検出当量比ＫＡＣＴが所定当量比ＫＡＣＴＳＲＭより小さいときは、ＳＯｘが除去されず、逆にＮＯｘ浄化装置１５に蓄積されるので、第２のダウンカウンタＣＳＡＤＩＮＴの値が「０」となる毎に、第１のダウンカウンタＣＳＲＭＯＶがインクリメントされる。ＳＯｘの蓄積速度は、除去速度に比べて低いので、第１のダウンカウンタＣＳＲＭＯＶのインクリメントは、デクリメントより小さい頻度で実行される。
【０１５７】
ＳＯｘ濃度が高いと判定されたとき、ＳＯｘ除去処理を実行することにより、ＳＯｘの蓄積に起因する浄化性能の低下を、ＮＯｘ浄化装置１５の経時劣化と誤判定することを防止できる。
【０１５８】
図３０は、ＳＯｘ除去処理実行中は空燃比を理論空燃比よりリーン側に設定するリーンバーン運転を禁止する処理のフローチャートである。この処理はＴＤＣ信号パルスの発生に同期してＥＣＵ５のＣＰＵで実行される。ただし、エンジン運転状態に応じてリーンバーン運転フラグＦＬＢの設定を行うリーンバーン運転許可判断処理（図示せず）の直後に実行される。すなわち、リーンバーン運転許可判断処理でリーンバーン運転フラグＦＬＢが「１」に設定されても、ＳＯｘ除去処理実行中は本処理で「０」に戻される。リーンバーン運転を禁止することにより、ＳＯｘ除去が可能となる。
【０１５９】
ステップＳ３３１では、第２高濃度フラグＦＳＬＦが「１」であるか否かを判別し、ＦＳＬＦ＝１であってＳＯｘ濃度が高いと判定されたときは、ＳＯｘ除去終了フラグＦＳＲＭＯＶＥＮＤが「１」であるか否かを判別する（ステップＳ３３２）。そして、ＦＳＬＦ＝１かつＦＳＲＭＯＶＥＮＤ＝０であって、ＳＯｘ除去処理実行中は、リーンバーン運転フラグＦＬＢを「０」に設定する（ステップＳ３３３）。第２高濃度フラグＦＳＬＦが「０」であるとき、またはＳＯｘ除去終了フラグＦＳＲＭＯＶＥＮＤが「１」であるときは、直ちに本処理を終了する。
【０１６０】
本実施形態では、ＮＯｘ浄化装置１５が排気浄化手段に相当し、下流側Ｏ２センサ１９が下流側酸素濃度検出手段に相当し、ＥＣＵ５が、劣化判定手段、計測手段、判定パラメータ算出手段、及びステップ変化判定手段を構成する。より具体的には、図３の処理が劣化判定手段に相当し、図１３の処理が計測手段に相当し、図２１の処理が判定パラメータ算出手段に相当し、図１８のステップＳ１５５〜Ｓ１５８，Ｓ１６０〜Ｓ１６３がステップ変化判定手段に相当する。
【０１６１】
なお本発明は上述した実施形態に限るものではなく、種々の変形が可能である。例えば、上述した実施形態では、本発明をＮＯｘ浄化装置１５の劣化判定に適用したが、三元触媒１４の劣化判定に適用することも可能である。すなわち、前述した特許文献１に示されるように、三元触媒触媒下流側の酸素濃度センサ出力に応じた空燃比フィードバック制御中における酸素濃度センサ出力の変化周期（ＴＬ＋ＴＲ）を応答性パラメータとし、その平均値ＴＣＨＫを判定パラメータとして使用する場合にも適用可能である。
【０１６２】
また上述した実施形態では、ＮＯｘ浄化装置１５が急激に劣化した可能性があると判定され、平均化演算が初期化された直後（ステップ変化フラグＦＬＮＣＳＴＰが「１」に設定された直後）においては、その後に平均化演算の対象となった応答性パラメータ（下流側Ｏ２センサ出力の記憶値ＬＶＧＡＮＬ）の数を示すカウンタＮＤＣＴ１０５の値に応じて、選択インデクスの補正項ＤＮＬＶＧＨ及びＤＮＬＶＧＬを算出し、これらを用いてなまし値ＬＶＧＡＡＶを選択する補正選択インデックスＮＬＶＧＡＨ及びＮＬＶＧＡＬを算出している（図１９、ステップＳ１６５，Ｓ１６７，Ｓ１７０）。すなわち、図１９のステップＳ１７２及びＳ１７４において、劣化判定の基準となる下流側基準値ＬＶＯ２ＬＮＣＨ及びＬＶＯ２ＬＮＣＬを固定し、カウンタＮＤＣＴ１０５の値に応じてなまし値ＬＶＧＡＬＮＣＨ及びＬＶＧＡＬＮＣＬの方を補正している。本実施形態においては、この点が、請求項４に記載した「判定基準の変更」に相当するが、これに限るものではなく、下流側基準値ＬＶＯ２ＬＮＣＨ及びＬＶＯ２ＬＮＣＬをカウンタＮＤＣＴ１０５の値に応じて補正し、選択インデクスとしては、補正前のＮＬＶＧＡ１及びＮＬＶＧＡ２をそのまま使用するようにしてもよい。
【０１６３】
また上述した実施形態では、式（９）によるなまし演算により下流側Ｏ２センサ出力の記憶値ＬＶＧＡＬＮの平均化を行うようにしたが、通常の平均化演算（平均化の対象となる検出データを積算し、その積算値をデータ数で除算する演算）により平均化を行うようにしてもよい。
【０１６４】
また本発明は、クランク軸を鉛直方向とした船外機などのような船舶推進機用エンジンに装着される排気浄化装置の劣化判定にも適用が可能である。
【図面の簡単な説明】
【０１６５】
【図１】本発明の一実施形態にかかる排気浄化装置を含む、内燃機関及びその制御装置の構成を示す図である。
【図２】目標空燃比係数（ＫＣＭＤ）の設定を行う処理のフローチャートである。
【図３】ＮＯｘ浄化装置の劣化判定を行う処理のフローチャートである。
【図４】劣化判定の実施条件判断処理のフローチャートである。
【図５】劣化判定の実施条件判断処理のフローチャートである。
【図６】図４の処理で参照されるテーブルを示す図である。
【図７】排気量パラメータ（ＧＡＬＯ２Ｍ）を算出する処理のフローチャートである。
【図８】図７の処理で参照されるテーブルを示す図である。
【図９】ＳＯｘ濃度を判定する処理のフローチャートである。
【図１０】ＳＯｘ濃度を判定する処理のフローチャートである。
【図１１】図９の処理で参照されるテーブルを示す図である。
【図１２】図９及び図１０に示す処理を説明するためのタイムチャートである。
【図１３】下流側酸素濃度センサ出力をサンプリングする処理のフローチャートである。
【図１４】図１３の処理で参照されるテーブルを示す図である。
【図１５】排気量パラメータ（ＧＡＬＮＣＳＨ）を算出する処理のフローチャートである。
【図１６】図１５の処理で参照されるテーブルを示す図である。
【図１７】図１５の処理を説明するためのタイムチャートである。
【図１８】ＮＯｘ浄化装置が劣化しているか否かの仮判定を行う処理のフローチャートである。
【図１９】ＮＯｘ浄化装置が劣化しているか否かの仮判定を行う処理のフローチャートである。
【図２０】図１８または図１９の処理で参照されるテーブルを示す図である。
【図２１】劣化判定に用いるパラメータの平均化演算を行う処理のフローチャートである。
【図２２】劣化判定に用いるパラメータの平均化演算を初期化することの効果を説明するためのタイムチャートである。
【図２３】ＮＯｘ浄化装置が劣化しているか否かの最終判定を行う処理のフローチャートである。
【図２４】ＮＯｘ浄化装置が劣化しているか否かの最終判定を行う処理のフローチャートである。
【図２５】下流側酸素濃度センサの故障判定を行う処理のフローチャートである。
【図２６】下流側酸素濃度センサの故障判定を行う処理のフローチャートである。
【図２７】ＮＯｘ浄化装置の劣化判定及び下流側酸素濃度センサの故障判定を説明するためのタイムチャートである。
【図２８】劣化判定に用いるパラメータの初期化を行う処理のフローチャートである。
【図２９】ＳＯｘ除去処理のフローチャートである。
【図３０】リーン運転を禁止するための処理のフローチャートである。
【符号の説明】
【０１６６】
１  内燃機関
５  電子制御ユニット（劣化判定手段、計測手段、判定パラメータ算出手段、ステップ変化判定手段）
１４  三元触媒
１５  ＮＯｘ浄化装置（排気浄化手段）
１９  二値型酸素濃度センサ（酸素濃度検出手段）
【図１】
2005220826.tif 000003
【図２】
2005220826.tif 000004
【図３】
2005220826.tif 000005
【図４】
2005220826.tif 000006
【図５】
2005220826.tif 000007
【図６】
2005220826.tif 000008
【図７】
2005220826.tif 000009
【図８】
2005220826.tif 000010
【図９】
2005220826.tif 000011
【図１０】
2005220826.tif 000012
【図１１】
2005220826.tif 000013
【図１２】
2005220826.tif 000014
【図１３】
2005220826.tif 000015
【図１４】
2005220826.tif 000016
【図１５】
2005220826.tif 000017
【図１６】
2005220826.tif 000018
【図１７】
2005220826.tif 000019
【図１８】
2005220826.tif 000020
【図１９】
2005220826.tif 000021
【図２０】
2005220826.tif 000022
【図２１】
2005220826.tif 000023
【図２２】
2005220826.tif 000024
【図２３】
2005220826.tif 000025
【図２４】
2005220826.tif 000026
【図２５】
2005220826.tif 000027
【図２６】
2005220826.tif 000028
【図２７】
2005220826.tif 000029
【図２８】
2005220826.tif 000030
【図２９】
2005220826.tif 000031
【図３０】
2005220826.tif 000032