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