(57)【特許請求の範囲】
【請求項１】
内燃機関の排気系に設けられ、前記内燃機関に供給される混合気の空燃比をリーン化するリーン運転時に排気中の窒素酸化物を浄化する窒素酸化物浄化手段を有する排気浄化手段と前記排気浄化手段の下流に酸素濃度センサとを備える内燃機関の排気浄化装置において、
前記排気浄化手段における硫黄酸化物濃度を検出する硫黄酸化物検出手段と、
前記硫黄酸化物検出手段により硫黄酸化物濃度が高いと判定されたとき、前記排気浄化手段の硫黄被毒を再生する硫黄被毒再生手段と、
前記硫黄被毒再生手段による前記排気浄化手段の再生後、前記内燃機関のリーン運転領域を硫黄被毒の影響が少ない領域に制限するリーン運転制限手段と、
前記内燃機関のリーン運転時に前記酸素濃度センサの出力に基づいて前記排気浄化手段の劣化を判定する劣化判定手段と、
を含む内燃機関の排気浄化装置。
【請求項２】
前記排気浄化手段は三元触媒と前記窒素酸化物浄化手段とから構成され、該三元触媒と窒素酸化物浄化手段との間に第２の酸素濃度センサを備え、前記硫黄酸化物検出手段は前記第２の酸素濃度センサにより硫黄酸化物濃度の判定を行う請求項１に記載の内燃機関の排気浄化装置。
【請求項３】
前記劣化判定手段により前記排気浄化手段が正常と判定されたとき前記リーン運転制限手段による運転領域の制限を解除する制限解除手段を含む請求項１または２に記載の内燃機関の排気浄化装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は内燃機関の排気浄化装置に関し、より詳細には窒素酸化物（ＮＯｘ）触媒の劣化を正確に判定できる内燃機関の排気浄化装置に関する。
【０００２】
【従来の技術】
内燃機関の排気系にＮＯｘ吸収剤を内蔵するＮＯｘ浄化装置を設け、排気中のＮＯｘを低減する技術は従来より知られている。また、特開平１０−２９９４６０号公報には、所定時間のリーンバーン運転の後、内燃機関の燃料制御空燃比を理論空燃比に比べてリッチ化させたときに、ＮＯｘ浄化装置の上流及び下流に設けられた酸素濃度センサの出力の遅れ時間によってＮＯｘ浄化装置の劣化を判定する手法が開示されている。具体的には、ＮＯｘ浄化装置のＮＯｘ吸収性能が高い場合は、上流側酸素濃度センサの出力がリッチに変化してから下流側酸素濃度センサの出力がリッチに変化するまでの遅れ時間が長く、ＮＯｘ吸収性能が低くなるにつれて下流側酸素濃度センサの出力遅れ時間が短くなることから、ＮＯｘ浄化装置の劣化を判定する。
【０００３】
【発明が解決しようとする課題】
しかし、酸素濃度センサ近傍において硫黄酸化物（ＳＯｘ）濃度が高くなると、酸素濃度センサの出力特性が変化するため、従来の手法では高濃度硫黄含有燃料による運転時にＮＯｘ浄化装置の劣化判定が正確に行えない場合があった。つまり、ＮＯｘ浄化装置の吸収性能が高いにも関わらず、所定時間のリーンバーン運転の後に内燃機関の燃料制御空燃比をリッチ化させたとき、ＳＯｘの影響によりＮＯｘ浄化装置下流の酸素濃度センサの出力遅れ時間が短くなるため、ＮＯｘ吸収性能が正しく測定できなくなる。
【０００４】
従って本発明は、高濃度硫黄含有燃料による運転時においてもＮＯｘ浄化装置のＮＯｘ吸収性能を正しく計測でき、劣化判定の精度を向上する排気浄化装置を提供することを目的とする。
【０００５】
【課題を解決するための手段】
本発明の内燃機関の故障診断装置は、内燃機関の排気系に設けられ、前記内燃機関に供給される混合気の空燃比をリーン化するリーン運転時に排気中の窒素酸化物を浄化する窒素酸化物浄化手段を有する排気浄化手段と前記排気浄化手段の下流に酸素濃度センサとを備え、前記排気浄化手段における硫黄酸化物濃度を検出する硫黄酸化物検出手段と、前記硫黄酸化物検出手段により硫黄酸化物濃度が高いと判定されたとき、前記排気浄化手段の硫黄被毒を再生する硫黄被毒再生手段と、前記硫黄被毒再生手段による前記排気浄化手段の再生後、前記内燃機関のリーン運転領域を硫黄被毒の影響が少ない領域に制限するリーン運転制限手段と、前記内燃機関のリーン運転時に前記酸素濃度センサの出力に基づいて前記排気浄化手段の劣化を判定する劣化判定手段とを含む構成をとる。
【０００６】
この発明によると、排気浄化手段の硫黄被毒の再生後にリーン運転制限手段により内燃機関の運転領域を制限して硫黄の排出の少ない領域で運転するので、排気浄化手段の劣化判定を硫黄被毒の影響の極力小さい状態で実施することができる。従って、高濃度硫黄含有燃料による運転時においても排気浄化手段の窒素酸化物吸着性能を正確に計測することが可能となる。運転領域は、具体的にはエンジン負荷が低く、エンジン回転数が低回転領域であり、ギアがハイ側であり、かつ車速が中速である領域に制限される。これは排気浄化手段への硫黄酸化物（ＳＯｘ）の吸着（硫黄被毒）は排気温度に関係することから、排気温度の上がらない、内燃機関の低温時にリーン運転を禁止するためである。
【０００７】
本発明の別の形態では、前記内燃機関の排気浄化装置において、前記排気浄化手段は三元触媒と前記窒素酸化物浄化手段とから構成され、該三元触媒と窒素酸化物浄化手段との間に第２の酸素濃度センサを備え、前記硫黄酸化物検出手段は前記第２の酸素濃度センサにより硫黄酸化物濃度の判定を行うように構成される。
【０００８】
本発明のさらに別の形態では、前記内燃機関の排気浄化装置は、前記劣化判定手段により前記排気浄化手段が正常と判定されたとき前記リーン運転制限手段による運転領域の制限を解除する制限解除手段を含む。
【０００９】
この形態によると、排気浄化手段が正常と判定されたときは通常の制御に復帰することができる。
【００１０】
【発明の実施の形態】
以下、本発明の一実施形態を図面を参照して説明する。
【００１１】
図１は本発明の一実施形態に係る排気浄化装置を含む、内燃機関（以下「エンジン」という）及びその制御装置の全体の構成を示す図である。エンジン1へ通ずる吸気管2の途中にはスロットル弁3が配置されている。スロットル弁3にはスロットル弁開度（ＴＨＡ）センサ4が連結されており、スロットル弁3の開度に応じた電気信号を出力して電子制御装置（以下「ＥＣＵ」という）5に供給する。ＥＣＵ5の構成については後述する。
【００１２】
燃料噴射弁6は、エンジン1とスロットル弁3との間でかつ吸気管2の図示しない吸気弁の少し上流側に各気筒に設けられている。燃料噴射弁6は図示しない燃料ポンプに接続されていると共にＥＣＵ5に電気的に接続されており、ＥＣＵ5からの信号により燃料噴射の開弁時間が制御される。噴射された燃料は吸気管2からの空気と混合され混合気となり、エンジン1に供給される。
【００１３】
吸気管2には吸気管内絶対圧（ＰＢＡ）センサ8および吸気温（ＴＡ）センサ9が取り付けられており、それぞれ絶対圧、吸気温を検出してＥＣＵ5に電気信号として供給する。
【００１４】
エンジン1の本体に装着されたエンジン水温（ＴＷ）センサ10はサーミスタ等からなり、エンジン水温（冷却水温）ＴＷを検出して対応する温度信号を出力してＥＣＵ5に供給する。
【００１５】
エンジン1の図示しないカム軸周囲またはクランク軸周囲には、エンジン回転数（ＮＥ）センサ11及び気筒判別（ＣＹＬ）センサ12が取り付けられている。エンジン回転数センサ11は、エンジン1の各気筒の吸入行程開始時の上死点（ＴＤＣ）毎にパルス（以下「ＴＤＣ信号パルス」という）を出力し、気筒判別センサ12は特定の気筒の所定のクランク角度位置で信号パルスを出力する。両パルスはＥＣＵ5に供給される。
【００１６】
排気管13には、三元触媒14と、ＮＯｘ浄化装置15とが上流側からこの順序で設けられている。三元触媒14は、エンジン1に供給される混合気の空燃比が理論空燃比よりリーン側に設定され排気中のＯ２濃度が比較的高い排気リーン状態では、排気ガス中のＯ２を蓄積し、逆にエンジン1に供給される混合気の空燃比が理論空燃比よりリッチ側に設定され、排気ガス中のＯ２濃度が低くＨＣ、ＣＯ成分が多い排気リッチ状態では、蓄積したＯ２により排気ガス中のＨＣ、ＣＯを酸化する機能を有する。
【００１７】
ＮＯｘ浄化装置15は、ＮＯｘを捕捉するＮＯｘ捕捉剤及び酸化、還元を促進するための触媒を内蔵している。ＮＯｘ浄化装置15は、排気リーン状態では、ＮＯｘ捕捉剤によりＮＯｘを捕捉する。また、排気リッチ状態においては、捕捉されたＮＯｘはＨＣ、ＣＯにより還元されて窒素ガスとして排出され、同時にＨＣ、ＣＯは酸化されて水蒸気及び二酸化炭素として排出される構成となっている。
【００１８】
ＮＯｘ捕捉剤のＮＯｘ捕捉能力の限界、すなわち最大ＮＯｘ捕捉量までＮＯｘを捕捉してしまうと、それ以上ＮＯｘを捕捉できなくなるので、適時ＮＯｘを還元して排出するために空燃比のリッチ化を行う必要がある。これを還元リッチ化という。
【００１９】
三元触媒14の上流位置には、比例型酸素濃度センサ17（以下「ＬＡＦセンサ」という）が装着されている。このＬＡＦセンサ17は排気中の酸素濃度（空燃比）にほぼ比例した電気信号を出力し、ＥＣＵ5に供給する。
【００２０】
三元触媒14とＮＯｘ浄化装置15との間及びＮＯｘ浄化装置15の下流には、それぞれ二値型酸素濃度センサ（以下「Ｏ２センサ」という）18、19が装着されており、これらのセンサの検出信号はＥＣＵ5に供給される。Ｏ２センサ18、19は、出力が理論空燃比の前後において急激に変化する特性を有しており、理論空燃比よりリッチ側では出力が高レベルとなり、リーン側では出力が低レベルとなる。以下の説明では、Ｏ２センサ18を「上流側Ｏ２センサ」といい、Ｏ２センサ19を「下流側Ｏ２センサ」という。
【００２１】
エンジン1は、吸気弁及び排気弁のバルブタイミングを、エンジンの高速回転領域に適した高速バルブタイミングと、低速回転領域に適した低速バルブタイミングとの２段階に切換可能なバルブタイミング切換機構20を有する。このバルブタイミングの切換には弁リフト量の切換も含まれ、さらに低速バルブタイミング選択時は２つの吸気弁のうちの一方を休止させて、空燃比を理論空燃比よりリーン化する場合においても安定した燃焼を確保するようにしている。
【００２２】
バルブタイミング切換機構20は、バルブタイミングの切換を油圧を介して行うものであり、この油圧切換を行う電磁弁及び油圧センサがＥＣＵ5に接続されている。油圧センサの検出信号はＥＣＵ5に供給され、ＥＣＵ5は電磁弁を制御してエンジン1の運転状態に応じたバルブタイミングの切換制御を行う。
【００２３】
またＥＣＵ5には、大気圧（ＰＡ）を検出する大気圧センサ21が接続されており、その検出信号はＥＣＵ5に供給される。
【００２４】
ＥＣＵ5はコンピュータで構成されており、プログラムおよびデータを格納するＲＯＭ、実行時に必要なプログラムおよびデータを記憶して演算作業領域を提供するＲＡＭ、プログラムを実行するＣＰＵ、各種のセンサからの入力信号を処理する入力インターフェース、および燃料噴射弁6等に制御信号を送る駆動回路を有する。前述の各センサからの信号は入力インターフェースにより受信され、ＲＯＭに格納されたプログラムに従って処理される。図１では、このようなハードウェア構成を踏まえてＥＣＵ5を機能ブロックで示してある。
【００２５】
ＥＣＵ5は、運転状態検出手段22、硫黄被毒検出手段23、硫黄被毒再生手段24、リーン運転制限手段25、劣化判定手段26、空燃比設定手段27及び燃料噴射制御手段28の各機能ブロックを含む。
【００２６】
運転状態検出手段22は、前述の各種エンジンパラメータ信号に基づいて種々のエンジン運転状態を判別する。硫黄被毒検出手段23は、上流側Ｏ２センサ18の出力に基づいて、三元触媒14の硫黄被毒を検出する。硫黄被毒再生手段24は、三元触媒14の硫黄被毒が検出されたときに、ＳＯｘを除去する空燃比リッチ化を実施して三元触媒14を再生する。
【００２７】
リーン運転制限手段25は、硫黄被毒再生手段24による三元触媒14の再生後、エンジン1のリーン運転領域をＳＯｘ被毒の少ない領域に制限することで、ＳＯｘによるＮＯｘ浄化装置15の劣化判定への影響を低減して、劣化判定の精度を向上させる。劣化判定手段26は、エンジン1に供給する混合気の空燃比をリッチ化したときの下流側Ｏ２センサ19の出力に基づいて、ＮＯｘ浄化装置15の劣化判定を行う。
【００２８】
空燃比設定手段手段27は、運転状態検出手段22で判別された運転状態や、硫黄被毒再生手段24による空燃比リッチ化の設定やリーン運転禁止手段25によるリーン運転の許可や禁止に応じて、目標空燃比を設定する。燃料噴射制御手段28は、ＴＤＣ信号パルスに同期して開弁する燃料噴射弁6の燃料噴射時間ＴＯＵＴを次式により算出し、燃料噴射弁6を制御する。
【００２９】
【数１】
ＴＯＵＴ＝ＴＩＭ×ＫＣＭＤ×ＫＬＡＦ×ＫＰＡ×Ｋ１＋Ｋ２    （１）
【００３０】
ここで、ＴＩＭは基本燃料量、具体的には燃料噴射弁6の基本燃料噴射時間であり、エンジン回転数ＮＥ及び吸気管内絶対圧ＰＢＡに応じて設定されたＴＩマップを検索して決定される。ＴＩマップは、エンジン回転数ＮＥ及び吸気管内絶対圧ＰＢＡに対応する運転状態において、エンジンに供給される混合気の空燃比がほぼ理論空燃比になるように設定されている。すなわち、基本燃料量ＴＩＭは、エンジンの単位時間当たりの吸入空気量（質量流量）にほぼ比例する。
【００３１】
ＫＣＭＤは目標空燃比係数であり、エンジン回転数ＮＥ、スロットル弁開度ＴＨＡ、エンジン水温ＴＷ等のエンジン運転パラメータに応じて設定される。目標空燃比係数ＫＣＭＤは、空燃比Ａ／Ｆの逆数である燃空比Ｆ／Ａに比例し、理論空燃比のとき値１．０をとるので、目標当量比ともいう。また目標空燃比係数ＫＣＭＤは、後述するように還元リッチ化またはＮＯｘ浄化装置15の劣化判定を実行するときは、空燃比をリッチ化するリッチ化所定値ＫＣＭＤＲＲまたはＫＣＭＤＲＭに設定される。
【００３２】
ＫＬＡＦは、フィードバック制御の実行条件が成立するときは、ＬＡＦセンサ17の検出値から算出される検出当量比ＫＡＣＴが目標当量比ＫＣＭＤに一致するようにＳＴＲ制御により算出される空燃比補正係数である。
【００３３】
ＫＰＡは、大気圧ＰＡに応じて設定される大気圧補正係数であり、大気圧ＰＡが１０１．３ｋＰａ近傍にあるときは１．０（無補正値）に設定され、大気圧ＰＡが低下すると１．０より大きな値に設定されて、燃料供給量が増加方向に補正される。大気圧補正係数ＫＰＡは、大気圧ＰＡが低下するほど増加するように設定され、燃料供給量は大気圧ＰＡが低下するほど増加するように補正される。
【００３４】
Ｋ１及びＫ２は、それぞれ各種エンジンパラメータ信号に応じて演算される他の補正係数及び補正変数であり、エンジン運転状態に応じた燃費特性、エンジン加速特性等の諸特性の最適化が図れるような所定値に決定される。
【００３５】
図２は、前記式（１）に適用される目標空燃比係数ＫＣＭＤを算出する処理のフローチャートである。本処理は一定時間毎にＥＣＵ5で実行される。
【００３６】
ステップS31で、後述する図１３のリーンバーン禁止判断処理でセットされるＳＯｘ除去リッチ化フラグＦＳＲＲが１であるか否かを判定する。ＳＯｘ除去リッチ化フラグＦＳＲＲは、１にセットされると三元触媒14に蓄積されたＳＯｘを除去するための空燃比リッチ化を実行することを示す。ＦＳＲＲが１であるときは、目標空燃比係数ＫＣＭＤをＳＯｘ除去リッチ化用の所定値ＫＣＭＤＳＦ(例えば1.03)にセットする（S49）。
【００３７】
ＦＳＲＲ＝０のときは、ステップS32で、リーン運転中か否か、すなわち通常制御時に後述するステップS41で記憶された目標空燃比係数ＫＣＭＤの記憶値ＫＣＭＤＢが１．０より小さいか否かを判定する。その結果、ＫＣＭＤＢ≧１．０であってリーン運転中でないときは、ステップS37に進み、還元リッチ化実行中であることを１で示す還元リッチ化フラグＦＲＳＰＯＫを０にセットし、さらに後述するステップS44、S47で参照されるダウンカウントタイマｔｍＲＲ及びｔｍＲＭにそれぞれ還元リッチ化時間ＴＲＲ（例えば５〜１０秒）をセットしてスタートさせる（S38）。
【００３８】
続いて、後述する図９の劣化判定処理によりセットされ、ＮＯx浄化装置15の劣化判定終了後も空燃比のリッチ化を継続することを１で示すリッチ化継続フラグＦＲＳＰＥＸＴが０であるか否かを判別し（S39）、ＦＲＳＰＥＸＴ＝１であるときは、後述するステップS46に進み、空燃比のリッチ化を継続する。
【００３９】
ＦＲＳＰＥＸＴ＝０であるときは、通常制御になり、エンジン運転状態に応じて目標空燃比係数ＫＣＭＤの設定が行われる（S40）。目標空燃比係数ＫＣＭＤは、基本的にはエンジン回転数ＮＥ及び吸気管内絶対圧ＰＢＡに応じて算出し、エンジン水温ＴＷの低温状態や所定の高負荷運転状態では、それらの運転状態に応じた値に変更される。次いでステップS40で算出した目標空燃比係数ＫＣＭＤを記憶値ＫＣＭＤＢとして記憶して（S41）、本処理を終了する。リーン運転が許可されるエンジン運転状態では、目標空燃比係数ＫＣＭＤは１．０より小さい値に設定される。
【００４０】
ステップS32でＫＣＭＤＢ＜１．０であってリーン運転中であるときは、エンジン回転数ＮＥ及び吸気管内絶対圧ＰＢＡに応じて、増分値ＡＤＤＮＯｘを決定する（S33）。増分値ＡＤＤＮＯｘは、リーン運転中に単位時間あたりに排出されるＮＯｘ量に対応するパラメータであり、エンジン回転数ＮＥが増加するほど、また吸気管内絶対圧ＰＢＡが増加するほど、増加するように設定されている。
【００４１】
ステップS34では、以下の式（２）のように増分値ＡＤＤＮＯｘをＮＯｘ量カウンタＣＲＳＰにインクリメントする。これによりＮＯｘ排出量、すなわちＮＯｘ捕捉剤に捕捉されたＮＯｘ量に相当するカウント値が得られる。
【００４２】
【数２】
ＣＲＳＰ＝ＣＲＳＰ＋ＡＤＤＮＯｘ    （２）
【００４３】
続くステップS35では、図４及び図５に示すＮＯｘ浄化装置15の劣化判定の実施条件が成立すると１にセットされる実施条件フラグＦＭＣＮＤＦ１０５が１であるか否かを判定する。通常はＦＭＣＮＤＦ１０５＝０であるので、ステップS36に進みＮＯｘ量カウンタＣＲＳＰの値が許容値ＣＮＯｘＲＥＦを越えたか否かを判定する。この答えがＮＯであり許容値以下であるときは、前述のステップS37に進み、リッチ化継続フラグＦＲＳＰＥＸＴが１にセットされない限り通常制御を行う。許容値ＣＮＯｘＲＥＦは、例えばＮＯｘ捕捉剤の最大ＮＯｘ捕捉量より若干小さいＮＯｘ量に対応する値に設定される。
【００４４】
ステップS36でＣＲＳＰ＞ＣＮＯｘＲＥＦとなると、還元リッチ化フラグＦＲＳＰＯＫを１にセットし（S42）、次いで目標空燃比係数ＫＣＭＤを空燃比１４．０程度の値に対応するリッチ化所定値ＫＣＭＤＲＲにセットして還元リッチ化を実行する（S43）。そして、タイマｔｍＲＲの値が０であるか否かを判別し（S44）、ｔｍＲＲ＞０である間は本処理を終了する。ステップS44でｔｍＲＲ＝０となると、還元リッチ化フラグＦＲＳＰＯＫを０にセットすると共にＮＯｘ量カウンタＣＲＳＰの値を０にリセットする（S45）。これにより、次回からはステップS36の答がＮＯとなるので、通常制御に移行する。
【００４５】
一方、劣化判定実施条件が成立すると（ステップS35でＦＭＣＮＤＦ１０５＝１となると）、ステップS35からステップS46に進み、目標空燃比係数ＫＣＭＤを空燃比１４．０相当程度の値より若干リーン側の値（例えば空燃比１４．３程度）に対応する劣化判定リッチ化所定値ＫＣＭＤＲＭ（＜ＫＣＭＤＲＲ）に設定して劣化判定リッチ化を実行する（S46）。通常の還元リッチ化実行時よりリッチ化の度合を小さくするのは、リッチ化の度合が大きいとリッチ化実行時間が短くなり、ＮＯｘ浄化装置15の劣化判定時に誤判定が生じ易いからであり、リッチ化の度合を小さくしてリッチ化実行時間を長くすることにより、劣化判定の精度を向上させることができる。さらに、リッチ化の度合を小さくすることにより、Ｏ２センサ18及び19の出力がＳＯｘの影響を受け易くなり、ＳＯｘ濃度が高い状態の判定精度を向上させることができる。
【００４６】
タイマｔｍＲＭの値が０か否かを判別し（S47）、ｔｍＲＭ＞０である間は本処理を終了し、ｔｍＲＭ＝０となるとＮＯｘ量カウンタＣＲＳＰの値を０にリセットする（S48）。
【００４７】
図２の処理によれば、リーン運転可能なエンジン運転状態においては、通常は間欠的に還元リッチ化が実行され（S43、S44）、ＮＯｘ浄化装置15のＮＯｘ捕捉剤に捕捉されたＮＯｘが適宜還元される。また、ＮＯｘ浄化装置15の劣化判定実施条件が成立したときは、還元リッチ化よりリッチ化の度合を小さくして、かつ還元リッチ化より長い時間に渡って劣化判定リッチ化が実行される（S46、S47）。また、ＳＯｘ除去を実行するときは、ＳＯｘ除去リッチ化が実行される（S31、S49）。また後述する図１０のステップS174により、リッチ化継続フラグＦＲＳＰＥＸＴが１にセットされたときは、ＮＯｘ浄化装置15の劣化判定が終了した後も目標空燃比係数ＫＣＭＤがリッチ化所定値ＫＣＭＤＲＭに維持され、空燃比リッチ化が継続される。
【００４８】
図３は、ＮＯｘ浄化装置15の劣化判定処理のメインルーチンのフローチャートである。この処理は、ＴＤＣ信号パルスの発生に同期してＥＣＵ5で実行される。この処理では、ＮＯｘ浄化装置15の劣化を、下流側Ｏ２センサ19の出力によりＮＯｘ捕捉剤のＮＯｘ捕捉能力を測定することで判定する。
【００４９】
ステップS51で、吸気管内絶対圧ＰＢＡを以下の式（３）により補正する。
【００５０】
【数３】
ＰＢＡＶ＝ＰＢＡ×ＫＰＡ    （３）
【００５１】
ここで、ＫＰＡは大気圧センサＰＡの出力に応じて決まる大気圧補正係数であり、ＰＢＡＶは大気圧補正後絶対圧である。
【００５２】
ステップS52で、大気圧補正後絶対圧ＰＢＡＶが最大値（１６進数でＦＦ）を越えているか否かを判定する。最大値以下であるときはステップS54に進む。最大値を越えているときは、大気圧補正後絶対圧ＰＢＡＶに最大値ＦＦをセットして（S53）、ステップS54に進む。ここで求められた大気圧補正後絶対圧ＰＢＡＶは、後述する図８の吸入空気量積算処理などで使用される。
【００５３】
ステップS54で、図４及び図５を参照して後述する実施条件判断処理を実行する。この処理では、ＮＯｘ浄化装置15の劣化判定の実施条件が成立するか否かが判断され、実施条件が成立するときは実施条件フラグＦＭＣＮＤＦ１０５に１がセットされる。ステップS55では、実施条件フラグＦＭＣＮＤＦ１０５が１であるか否かを判定する。ＦＭＣＮＤＦ１０５＝０であって実施条件が成立していないときは、ステップS56に進み、図７の劣化判定前処理で設定される劣化判定前処理終了フラグＦＬＶＬＮＣＥＮＤ及びカウンタＣＧＡＬＮＣＶが０にセットされる。続いてＳＯｘ濃度判定終了フラグＦＳＬＦＥＮＤ、第１基準オーバフラグＦＳＶＯ２ＥＸＰＬ及び第２基準オーバフラグＦＳＶＯ２ＥＸＰＨをすべて０に設定して（S57、S58）、本処理を終了する。
【００５４】
ＳＯｘ濃度判定終了フラグＦＳＬＦＥＮＤは、図６に示すＳＯｘ濃度判定処理が終了したとき１にセットされる。第１基準オーバフラグＦＳＶＯ２ＥＸＰＬは、上流側Ｏ２センサ出力ＳＶＯ２が第１の上流側基準値ＳＶＯ２ＬＮＣＳ（例えば０．３Ｖ）に達したとき１にセットされる（図６、S113）。第２基準オーバフラグＦＳＶＯ２ＥＸＰＨは、上流側Ｏ２センサ出力ＳＶＯ２が第１の上流側基準値ＳＶＯ２ＬＮＣＳより高い第２の上流側基準値ＳＶＯ２ＳＬＦ（例えば０．８Ｖ）を超えたとき１にセットされる（図６、S123）。
【００５５】
ステップS55で実施条件フラグＦＭＣＮＤＦ１０５＝１であってＮＯｘ浄化装置劣化判定の実施条件が成立しているときは、図１０に示す劣化判定処理でセットされる下流側Ｏ２センサ判定結果待ちフラグＦＴＯ２ＷＡＩＴが１であるか否かを判定する（S59）。最初はＦＴＯ２ＷＡＩＴ＝０であるので、ステップS60に進み図６に示すＳＯｘ濃度判定処理を実行し、続いて第１基準オーバフラグＦＳＶＯ２ＥＸＰＬが１であるかを判定する（S61）。ＦＳＶＯ２ＥＸＰＬ＝１であれば、図７に示す劣化判定前処理を実行し（S62）、次いで図９及び図１０に示す劣化判定処理を実行して（S63）、ＮＯｘ浄化装置劣化判定を終了する。
【００５６】
ステップS59でＦＴＯ２ＷＡＩＴ＝１であり、下流側Ｏ２センサ19の故障判定待ちであるときはＳＯｘ濃度判定及び劣化判定前処理を改めて実行する必要はないので、直ちにステップS63に進み劣化判定処理を実行する。
【００５７】
ステップS61でＦＳＶＯ２ＥＸＰＬ＝０であれば、フラグＦＤＯＮＥＦ１０５に１をセットし（S64）、本処理を終了する。
【００５８】
図４及び図５は、図３のステップS54で実行される実施条件成立判断処理のフローチャートである。この処理では、ＮＯｘ浄化装置15の劣化判定を安定して行いかつ各種モニタの頻度を確保するため、各種パラメータによりＮＯｘ浄化装置劣化判定の実施可否の判断を行う。
【００５９】
ステップS71で、劣化判定指令フラグＦＧＯＦ１０５が１であるか否かを判定する。ＮＯｘ浄化装置15の劣化判定は１運転期間（エンジン始動から停止までの期間）に１回程度の割合で実行すればよいので、エンジン始動後、エンジン運転状態が安定した時点で劣化判定指令フラグＦＧＯＦ１０５が１にセットされる。なお、他のモニタを行っているときには、劣化判定の結果に影響を及ぼすので、劣化判定は許可されない。劣化判定指令フラグＦＧＯＦ１０５＝１であれば、劣化判定の終了時に図１６のステップS179で１にセットされる劣化判定終了フラグＦＥＮＤＦ１０５が１であるか否かを判定する（S72）。
【００６０】
ステップS71の答がＮＯであり劣化判定が許可されていないとき、またはステップS72の答がＹＥＳであり劣化判定が終了しているときは、劣化判定終了フラグＦＥＮＤＦ１０５を０にリセットし（S73）、劣化判定の条件が成立していることを１で示す劣化判定前条件成立フラグＦＬＮＣＭＷＴが０にセットされる（S86）。
【００６１】
ステップS72の答がＮＯであるときは、ＳＴＲフィードバック実施フラグＦＳＴＲＦＢが１であるか否かを判定する（S74）。ＦＳＴＲＦＢ＝１であるときは、ＳＴＲフィードバック制御が実行中であることを表す。このＳＴＲフィードバック制御は式（１）の空燃比補正係数ＫＬＡＦを算出するためのものであり、別の実施例ではＰＩＤフィードバック制御で行われる。
【００６２】
ステップS74の答がＹＥＳであれば、リーンバーン禁止フラグＦＫＢＳＭＪが１であるか否かを判定する（S75）。リーンバーン禁止フラグＦＫＢＳＭＪは１であるときにリーンバーン運転が禁止されるフラグであり、図１３に示すリーンバーン禁止判断処理によってセットされる。リーンバーン禁止判断処理は燃料噴射制御の中で実施され、図３に示したＮＯｘ浄化装置判定処理とはパラレルに行われており、リーンバーン禁止フラグＦＫＢＳＭＪは随時参照される。
【００６３】
ステップS75でＦＫＢＳＭＪ＝０であれば、リーンバーン運転が許可されていることを表す。続いて、目標空燃比ＫＢＳＭが所定値ＫＢＳＬＢＬＮＣ（例えば、２０）以下であるか否かが判定される（S76）。ＫＢＳＭ≦ＫＢＳＭＬＮＣであればリーンバーン運転中であり、続いてエンジン回転数ＮＥがマップ検索値ＮＥＬＮＣより大きいか否かを判定する（S77）。これはエンジンが低回転のときは劣化判定を実施しないことに対応する。
【００６４】
ステップS74、S76及びS77で答がＮＯであるとき、またはステップS76で答がＹＥＳであるときは、劣化判定を行う条件が成立していないと判断され、劣化判定前条件成立フラグＦＬＮＣＭＷＴが０にセットされる（S86）。
【００６５】
ステップS77で答がＹＥＳであったときは、劣化判定実施条件フラグＦＭＣＮＤＦ１０５が１であるか否かを判定する（S78）。最初はＦＭＣＮＤＦ１０５＝０であるので、エンジン回転数ＮＥに応じてＰＢＬＮＣＬＮテーブルを検索して得られた値を下側閾値ＰＢＬＮＣＬに設定し（S79）、次いでエンジン回転数ＮＥに応じてＰＢＬＮＣＬＨＮテーブルを検索して得られた値を上側閾値ＰＢＬＮＣＨに設定する（S80）。
【００６６】
ステップS78でＦＭＣＮＤＦ１０５＝１であったときは、ＰＢＬＮＣＬＮテーブルより値の小さいＰＢＬＮＣＳＮテーブルをエンジン回転数ＮＥに応じて検索して得られた値を下側閾値ＰＢＬＮＣＬに設定し（S81）、次いで、ＰＢＬＮＣＬＨＮテーブルより値の小さいＰＢＬＮＣＳＨＮテーブルをエンジン回転数ＮＥに応じて検索して得られた値を上側閾値ＰＢＬＮＣＨに設定する（S82）。ステップS79〜S82は、吸気管内絶対圧ＰＢＡによってエンジン1の負荷を判断するための領域を設定するために行われる。
【００６７】
ステップS83で、吸気管内絶対圧ＰＢＡが下側閾値ＰＢＬＮＣＬより大きいか否かを判定する。ＰＢＡ＞ＰＢＬＮＣＬであれば、続いて吸気管内絶対圧ＰＢＡが上側閾値ＰＢＬＮＣＨより小さいか否かを判定する（S84）。ステップS83または84の答がＮＯであるとき、すなわち吸気管内絶対圧ＰＢＡが下側閾値ＰＢＬＮＣＬより小さいか、上側閾値ＰＢＬＮＣＨより大きい場合は、前条件成立フラグＦＬＮＣＭＷＴが０にセットされる（S86）。
【００６８】
ステップS83及びS84の答が両方ともＹＥＳであるとき、すなわちＰＢＬＮＣＬ＜ＰＢＡ＜ＰＢＬＮＣＨであるときは、還元リッチ化実施中フラグＦＲＳＰＯＫが１であるか否かを判定する（S85）。ＦＲＳＰＯＫ＝１であるときは、還元リッチ化を実施中であるので劣化判定は行わず、ステップS86に進む。ＦＲＳＰＯＫ＝０であるときは、劣化判定前条件成立フラグＦＬＮＣＭＷＴが１にセットされる（S87）。
【００６９】
続くステップS88では、ＮＯｘ量カウンタＣＲＳＰの値が劣化判定許可値ＣＬＮＣＭＡＣＴより大きいか否かを判定する。ステップS88でＣＲＳＰ≦ＣＬＮＣＭＡＣＴであるときは、図５のステップS91に進み、リッチ化継続フラグＦＲＳＰＥＸＴに０をセットし、続いて下流側Ｏ２センサ故障判定条件フラグＦＭＣＤＦ１０３Ｂを０にセットする（S92）。下流側Ｏ２センサ故障判定条件フラグＦＭＣＤＦ１０３Ｂは、１にセットされたとき下流側Ｏ２センサ19の故障判定処理（図示せず）の実施条件が成立していることを示す。
【００７０】
ステップS88でＣＲＳＰ＞ＣＬＮＣＭＡＣＴであると、ＮＯｘ浄化装置15にＮＯｘ浄化装置の劣化判定を行うのに十分な量のＮＯｘが捕捉されたと判断され、下流側Ｏ２センサ故障判定条件フラグＦＭＣＤＦ１０３Ｂに１をセットし（S89）、次いで上流側Ｏ２センサ判定フラグＦＯＫ６３が１であるか否かを判定する（S90）。
【００７１】
ステップS90で答がＹＥＳであれば、実施条件フラグＦＭＣＮＤＦ１０５が既に１にセットされているか否かを判定する（S93）。最初はＦＭＣＮＤＦ１０５＝０であるので、ステップS94に進み、下流側Ｏ２センサ出力ＬＶＯ２が第１の下流側基準値ＬＶＯ２ＬＮＣＭ（例えば０．３Ｖ）以下であるか否かを判定する（S94）。このステップにより、劣化判定リッチ化を実行する前の下流側Ｏ２出力ＬＶＯ２が排気リーン状態を示す値であることを確認している。ステップS93でＦＭＣＮＤＦ１０５＝１であるときは前述の判定を行わず直ちにステップS97に進む。
【００７２】
ステップS94でＬＶＯ２≦ＬＶＯ２ＬＮＣＭであって、下流側Ｏ２センサ出力ＬＶＯ２が排気リーン状態を示しているときは、上流側Ｏ２センサ出力ＳＶＯ２と下流側Ｏ２センサ出力ＬＶＯ２との差の絶対値｜ＳＶＯ２−ＬＶＯ２｜が所定値ＤＳＬＶＯ２ＬＮ以下であるか否かを判定する（S95）。このステップは、上流側Ｏ２センサ出力ＳＶＯ２と下流側Ｏ２センサ出力ＬＶＯ２が共にリーン状態であり、差がわずかであることを確認している。この答がＹＥＳであるときは、ステップS102に進む。
【００７３】
｜ＳＶＯ２−ＬＶＯ２｜＞ＤＳＬＶＯ２ＬＮであるときは、カウンタ値ＣＬＯ２ＡＣＴが所定値ＣＬＯ２ＡＣＴＨ以上であるか否かを判定する（S96）。カウンタＣＬＯ２ＡＣＴは、下流側Ｏ２センサ19に取りつけられたヒータの通電時間をカウントしている。下流側Ｏ２センサ19は活性温度に達していないと十分な性能を発揮しないため、その温度を上げるためにこのヒータは設置されている。ＣＬＯ２ＡＣＴ≧ＣＬＯ２ＡＣＴＨであり通電時間が所定値以上である場合は、下流側Ｏ２センサ19が十分活性していると判断され、ステップS102に進む。
【００７４】
ステップS90またはS94の答がＮＯであるとき、あるいはステップS95とS96の答が両方ともＮＯであるときは、パージカットフラグＦＬＮＣＰＧを０にセットする（S97）と共に、ダウンカウントタイマＴＬＮＣＰＧを所定時間ＴＭＬＮＣＰＧ（例えば２秒）にセットしてスタートさせる（S98）。続いて極大値パラメータＳＶＭＡＸＬＮＣを０にセットし（S99）、フラグＦＳＶＭＡＸＬＮＣを０にセットし（S100）、実施条件フラグＦＭＣＮＤＦ105を０にセットして（S101）、本処理を終了する。
【００７５】
パージカットフラグＦＬＮＣＰＧは、１にセットされると燃料タンクで発生した蒸発燃料を吸気管2に供給する蒸発燃料パージを禁止することを示す。極大値パラメータＳＶＭＡＸＬＮＣは、上流側Ｏ２センサ出力ＳＶＯ２が第２の上流側基準値ＳＶＯ２ＳＬＦ（例えば０．８Ｖ）に達する前の極大値を示すパラメータである。
【００７６】
ステップS95またはS96の答がＹＥＳであるときは、パージカットフラグＦＬＮＣＰＧを１にセットする（S102）。これは、パージの濃度は不確定であり誤検知が起こり易いので、蒸発燃料パージを強制的にカットするものである。続いて、ステップS98でスタートされるタイマＴＬＮＣＰＧの値が０か否かを判定し（S103）、ＴＬＮＣＰＧ＞０である間は前述のステップS99に進む。タイマＴＬＮＣＰＧは、パージカット後にパージの影響がなくなるまで所定時間待機するためのタイマである。
【００７７】
ステップS103でタイマＴＬＮＣＰＧの値が０となると、ステップS104に進み、上流側Ｏ２センサ出力ＳＶＯ２が第３の上流側基準値ＳＶＬＮＣＭＣ（例えば０．７Ｖ）より小さいか否かを判定する。ＳＶＯ２≧ＳＶＬＮＣＭＣであればステップS109に進み、劣化判定実施条件フラグＦＭＣＮＤＦ１０５に１がセットされる。
【００７８】
上流側Ｏ２センサ出力ＳＶＯ２が第３の上流側基準値ＳＶＬＮＣＭＣより小さければ、上流側Ｏ２センサ出力ＳＶＯ２が極大値パラメータＳＶＭＡＸＬＮＣより大きいか否かを判定する（S105）。極大値パラメータＳＶＭＡＸＬＮＣはステップS99で０に初期化されるので、最初はステップS105の答はＹＥＳであり、極大値パラメータＳＶＭＡＸＬＮＣにそのときのＯ２センサ出力ＳＶＯ２の値をセットし（S108）、ステップS109に進み、実施条件フラグＦＭＣＮＤＦ１０５に１がセットされる。
【００７９】
上流側Ｏ２センサ出力ＳＶＯ２が単調に増加するときは、常にステップS105の答はＹＥＳとなるが、一時的に出力が減少することがあるとステップS105の答はＮＯとなり、以下の式（４）により極大値パラメータＳＶＭＡＸＬＮＣとＯ２センサ出力ＳＶＯ２の差ＤＳＶを算出する（S106）。
【００８０】
【数４】
ＤＳＶ＝ＳＶＭＡＸＬＮＣ−ＳＶＯ２    （４）
【００８１】
続いて差ＤＳＶが所定値ＤＳＶＬＮＣＭＣより大きいか否かを判定し(S107)、答がＮＯであり差が余り大きくない場合は前述のステップS109に進み、実施条件フラグＦＭＣＮＤＦ１０５を１に設定する。
【００８２】
差ＤＳＶが所定値ＤＳＶＬＮＣＭＣを越えるような場合は、エンジンの加速などにより一時的に排気リーン状態になったと考えられ、このような場合に劣化判定を継続すると誤判定を招くおそれがあるため、実施条件を不成立として劣化判定を中止する。すなわちフラグＦＳＶＭＡＸＬＮＣに０をセットし（S100）、実施条件フラグＦＭＣＮＤＦ１０５に０をセットして（S101）、本処理を終了する。
【００８３】
図４及び図５に示した劣化判定実施条件判断処理によれば、基本的には前条件フラグＦＬＮＣＭＷＴが１に設定されると、ＮＯｘ浄化装置15の劣化判定実施条件が成立する。但し、蒸発燃料のパージ禁止時点から所定時間ＴＭＬＮＣＰＧ内は、実施条件が不成立となる（S103）。また、上流側Ｏ２センサ出力ＳＶＯ２が第３の上流側基準値ＳＶＬＮＣＭＣより低い状態で一時的な減少量(ＤＳＶ)が所定値ＤＳＶＬＮＣＭＣより大きくなると（すなわちステップS107の答がＹＥＳであるとき）、実施条件は不成立となる。
【００８４】
図６は、図３のステップS60におけるＳＯｘ濃度判定処理のフローチャートである。高濃度硫黄含有燃料を使用している場合、ＳＯｘにより三元触媒14が影響を受け、これにより下流側Ｏ２センサ19がリッチ側へ反転しきらないために、ＮＯｘ浄化装置15のＮＯｘ捕捉量の誤推定を生じ、その結果として劣化判定を誤る可能性がある。そこで、図６に示すフローによりＳＯｘ濃度判定を行い、高濃度硫黄含有燃料を使用しているか否かを判断する。
【００８５】
ステップS111でＳＯｘ濃度判定終了フラグＦＳＬＦＥＮＤが１であるか否かを判定する。答がＹＥＳであれば、ＳＯｘ濃度判定処理を行わない。最初はＦＳＬＦＥＮＤ＝０であり、次いで上流側Ｏ２センサ出力ＳＶＯ２が第１の上流側基準値ＳＶＯ２ＬＮＣＳ以上か否かを判定する（S112）。最初はＳＶＯ２＜ＳＶＯ２ＬＮＣＳであるので、ステップS113をスキップしてステップS114に進み、ステップS113で１に設定される第１基準オーバフラグＦＳＶＯ２ＥＸＰＬが１であるか否かを判定する。最初はこの答はＮＯであるので、第１の排気量パラメータＧＳＬＦＦＩＮを０に設定し（S115）、パラメータＧＳＬＦＴＷＣＨを０に設定して（S116）、ステップS120に進む。
【００８６】
ステップS120では、上流側Ｏ２センサ出力ＳＶＯ２が第４の上流側基準値ＳＶＯ２ＳＬＦＴを越えたか否かを判定する。最初はこの答はＮＯであるので、ステップS121で、パラメータＧＳＬＦＴＷＣＨにステップS119で算出する第１の吸入空気量積算値ＧＳＬＦＦＩＮをセットしてステップS122に進む。
【００８７】
ステップS122では、上流側Ｏ２センサ出力ＳＶＯ２が第２の上流側基準値ＳＶＯ２ＳＬＦ（例えば０．８Ｖ）を越えたか否かを判定する。最初はこの答はＮＯであるので、ステップS123をスキップしてステップS124に進む。
【００８８】
ステップS124で、第１の吸入空気量積算値ＧＳＬＦＦＩＮが判定閾値ＧＳＬＦＦＩＮＴより大きいか否かを判定する。最初は答がＮＯであるので、ステップS123で１に設定されるフラグＦＳＶＯ２ＥＸＰＨが１であるか否かを判定する。最初はこの答はＮＯであるので、本処理を終了する。
【００８９】
上流側Ｏ２センサ出力ＳＶＯ２が第１の上流側基準値ＳＶＯ２ＬＮＣＳに達すると、第１基準オーバフラグＦＳＶＯ２ＥＸＰＬに１がセットされ（S113）、ステップS114からステップS117に進む。続いてステップS123で１にセットされるフラグＦＳＶＯ２ＥＸＰＨが１であるか否かを判定する（S117）。最初はこの答はＮＯであるので、ステップS118に進み、図３のステップS51で算出した大気圧補正吸入空気量絶対圧ＰＢＡＶに応じた値をテーブルＫＧＳＬＦＰＢＮから検索して補正係数ＫＧＳＬＦＰＢにセットする。
【００９０】
続いて以下の式（５）により、第１の吸入空気量積算値ＧＳＬＦＦＩＮを算出する。
【００９１】
【数５】
ＧＳＬＦＦＩＮ＝ＧＳＬＦＦＩＮ×ＴＩＭ×ＫＰＡ×ＫＧＳＬＦＰＰＢ（５）
【００９２】
ここで、右辺のＧＳＬＦＦＩＮは前回算出値、ＴＩＭ及びＫＰＡはそれぞれ式（１）の基本燃料量及び大気圧補正係数である。ＴＩＭは基本燃料量、すなわちエンジン運転状態（エンジン回転数ＮＥ及び吸気管内絶対圧ＰＢＡ）に応じて空燃比が理論空燃比となるように設定される燃料量であるので、エンジン1の単位時間あたりの吸入空気量、すなわち排気量に比例するパラメータである。式（５）により、上流側Ｏ２センサ出力ＳＶＯ２が第１の上流側基準値ＳＶＯ２ＬＮＣＳに到達した時点から、ＮＯｘ浄化装置15に流入する排気量の積算値に対応する第１の吸入空気量積算値ＧＳＬＦＦＩＮが得られる。
【００９３】
劣化判定実行中は、空燃比は理論空燃比よりリッチ側のリッチ化所定値（ＫＣＭＤＲＭ）に維持されるので、この第１の吸入空気量積算値ＧＳＬＦＦＩＮは、排気中に含まれる還元成分（ＨＣ、ＣＯ）の積算量に比例する。また、第１の吸入空気量積算値ＧＳＬＦＦＩＮは、エンジン運転状態がほぼ一定であれば、積算開始時点からの経過時間に比例する。これらの点は、後述する他の吸入空気量積算値についても同様である。
【００９４】
上流側Ｏ２センサ出力ＳＶＯ２が第１の上流側基準値ＳＶＯ２ＬＮＣＳと第４の上流側基準値ＳＶＯ２ＳＬＦＴ（例えば０．７Ｖ）の間にあるときは、ステップS120からステップS121を経由してステップS122に進む。ＳＶＯ２ＳＬＦＴを越えると、ステップS120から直接ステップS122に進む。ＳＶＯ２が第３の上流側基準値ＳＶＯ２ＳＬＦを越えると、ステップS122からステップS123に進み、第２基準オーバフラグＦＳＶＯ２ＥＸＰＨが１にセットされる。
【００９５】
第１の吸入空気量積算値ＧＳＬＦＦＩＮが判定閾値ＧＳＬＦＦＩＮＴより小さいときはステップS124からステップS125に進む。今回はフラグＦＳＶＯ２ＥＸＰＨが１であるので、ステップS126に進みＳＯｘ濃度判定終了フラグＦＳＬＦＥＮＤに１がセットされ本処理を終了する。
【００９６】
前述のＳＯｘ濃度判定処理を説明する。ＳＯｘ濃度が高い場合は、ＳＯｘの影響により時間が経過しても出力がＳＶＯ２ＳＬＦを越えない。このようなとき、ある時間内にＳＯｘの影響によって上流側Ｏ２センサ出力ＳＶＯ２の飽和する値がある基準値に達していない場合は、高濃度硫黄燃料であると判断する。すなわち、第１の吸入空気量積算値ＧＳＬＦＦＩＮが判定閾値ＧＳＬＦＦＩＮＴに達した時点で、上流側Ｏ２センサ出力ＳＶＯ２が第２の上流側基準値ＳＶＯ２ＳＬＦを越えていないときは、上流側Ｏ２センサ18近傍においてＳＯｘ濃度が高いと判定する。ＳＯｘ濃度が高い場合には、上流側Ｏ２センサ出力ＳＶＯ２が第２の上流側基準値ＳＶＯ２ＳＬＦに達するまでの時間が長くなる場合と、第２の上流側基準値ＳＶＯ２ＳＬＦより低い値に停滞する場合とがあるが、図６に示す処理により何れの場合も判定することができるようになる。
【００９７】
高濃度硫黄含有燃料とは、具体的には排気ガス中のＳＯｘ濃度が６００ＰＰＭ程度以上になる燃料であり、このような燃料を使用すると、Ｏ２センサ出力がＳＯｘの影響を受けるようになる。
【００９８】
また、三元触媒14が劣化するとその下流側でＳＯｘ濃度が高くなる傾向があるので、本実施形態のように三元触媒14の下流側にＮＯｘ浄化装置15が配置されている場合には、ＳＯｘによりＯ２センサ出力が変化してＮＯｘ浄化装置15の劣化判定の精度が低下する。従って、後述するようにＳＯｘ濃度が高いときはＮＯｘ浄化装置15の劣化判定を中止することにより、劣化判定の精度を向上させることができる。
【００９９】
なお、Ｏ２センサの飽和出力が低下する傾向は、空燃比リッチ化の度合が小さい方が顕著に表れるので、本実施形態では、劣化判定時においては目標空燃比係数ＫＣＭＤを理論空燃比よりわずかにリッチ側の空燃比、例えば空燃比１４．３程度に対応する劣化判定リッチ化所定値ＫＣＭＤＲＭに設定するようにしている。
【０１００】
図７、図９、及び図１０を参照してＮＯｘ浄化装置15の劣化判定を説明する。この処理では、空燃比をリーンからリッチに移行させたときの下流側Ｏ２センサ19のリーン出力停滞時間（または排気ガス量）により、ＮＯｘ浄化装置15の特性劣化を検知する。
【０１０１】
図７は、図３のステップS62における劣化判定前処理のフローチャートである。ステップS131で、リッチ化継続フラグＦＲＳＰＥＸＴが１であるか否かを判定する。最初はＦＲＳＰＥＸＴ＝０であるのでステップS132に進み、劣化判定前処理終了フラグＦＬＶＬＮＣＥＮＤが１であるか否かを判定する。劣化判定前処理終了フラグＦＬＶＬＮＣＥＮＤは後のステップS139で１に設定されるので、最初は０であるからステップS133に進み、図８に示す吸入空気量積算処理を実行する。ステップS131でＦＲＳＰＥＸＴ＝１であるとき、またはステップS132でＦＬＶＬＮＣＥＮＤ＝１であるときは、直ちに本処理を終了する。
【０１０２】
図８のステップS141で、上流側Ｏ２センサ出力ＳＶＯ２が第５の上流側基準値ＳＶＯ２ＬＮＨ（例えば０．６Ｖ）以下であるか否かを判定し、ＳＶＯ２≦ＳＶＯ２ＬＮＨであるときは、第２の吸入空気量積算値ＧＡＬＮＣＳを０にセットし（S142）、本処理を終了する。
【０１０３】
上流側Ｏ２センサ出力ＳＶＯ２が上流側基準値ＳＶＯ２ＬＮＨを越えると、大気圧補正吸気管内絶対圧ＰＢＡＶに応じてＫＮＡＣＰＢＮテーブルを検索し、吸気圧補正係数ＫＮＡＣＰＢを算出する（S144）。
【０１０４】
ステップS147で、以下の式（６）により第２の吸入空気量積算値ＧＡＬＮＣＳを算出する。
【０１０５】
【数６】
ＧＡＬＮＣＳ＝ＧＡＬＮＣＳ＋ＴＩＭ×ＫＰＡ×ＫＮＡＣＰＢＳ（６）
【０１０６】
ここで、右辺のＧＡＬＮＣＳは前回値、ＴＩＭ及びＫＰＡはそれぞれ燃料噴射量及び大気圧補正値である。すなわちここでは、燃料噴射量を補正した値を積算することによって吸入空気量を求めている。
【０１０７】
式（６）により、上流側Ｏ２センサ出力ＳＶＯ２が上流側基準値ＳＶＯ２ＬＮＨを越えた時点から、ＮＯx浄化装置15に流入する排気量の積算値に対応する第２の吸入空気量積算値ＧＡＬＮＣＳが得られる。
【０１０８】
図７に戻り、ステップS134で、カウンタＣＧＡＬＮＣＶのカウント値に応じてＧＡＬＮＣＶＮテーブルを検索して、閾値ＧＡＬＮＣＶを算出する。このテーブルはカウンタＣＧＡＬＮＣＶが大きくなるほどＧＡＬＮＣＶＮが大きくなるように設定されている。続いて、ステップS133で算出した第２の吸入空気量積算値ＧＡＬＮＣＳが閾値ＧＡＬＮＣＶ以上か否かを判定する（S135）。ＧＡＬＮＣＳ＜ＧＡＬＮＣＶであるときは、本処理を終了する。ＧＡＬＮＣＳ≧ＧＡＬＮＣＶであるときは、下流側Ｏ２センサ出力ＬＶＯ２をカウンタＣＧＡＬＮＣＶのカウント値に対応するバッファＬＶＧＡＬＮＣに格納する（S136）。バッファＬＶＧＡＬＮＣは全部で３０個用意されている。
【０１０９】
ステップS137で、カウンタＣＧＡＬＮＣＶを１だけインクリメントする。続くステップS138では、カウント値が３０以上となったか否かを判定する。３０に達していない場合は、本処理を終了する。これによって、カウンタが３０に達するまで下流側Ｏ２センサ出力ＬＶＯ２がバッファＬＶＧＡＬＮＣに格納される。ステップS138でカウント値が３０以上となると、フラグＦＬＶＬＮＣＥＮＤに１をセットする（S139）。
【０１１０】
劣化判定前処理に続いて、図９及び１０に示す劣化判定処理が実行される。ステップS151で、リッチ化継続フラグＦＲＳＰＥＸＴが1であるか否かを判定する。このフラグはステップS174で１にセットされるので、最初はＦＲＳＰＥＸＴ＝０であり、ステップS152で下流側Ｏ２センサ判定結果待ちフラグＦＴＯ２ＷＡＩＴが１であるか否かを判定する。このフラグはステップS173で１にセットされるので、最初は０でありステップS153に進む。
【０１１１】
ステップS153で前処理終了フラグＦＬＶＬＮＣＥＮＤが１であるか否かを判定する。ＦＬＶＬＮＣＥＮＤ＝０であるときは、ＬＶＧＡＬＮＣバッファに下流側Ｏ２センサ出力ＬＶＯ２の値を格納し終わっていないので、本処理を終了する。ステップS153でＦＬＶＬＮＣＥＮＤ＝１となり前処理が終了すると、ＳＯｘ濃度判定フラグＦＳＬＦＥＮＤが１であるか否かを判定する（S154）。ＦＳＬＦＥＮＤ＝０であれば、ＳＯｘ濃度判定が終了していないので、本処理を終了し劣化判定を行わない。ステップS154でＦＳＬＦＥＮＤ＝１であればステップS155に進む。
【０１１２】
ステップS155では、図６のＳＯｘ濃度判定処理で求めた第１の積算吸入空気量ＧＳＬＦＦＩＮに応じてＮＬＶＧＡＨＮテーブル（図１１）を検索して、上側基準値ＮＬＶＧＡＨを求める。次に第１の積算吸入空気量ＧＳＬＦＦＩＮに応じてＮＬＶＧＡＬＮテーブル（図１１）から下側基準値ＮＬＶＧＡＬを検索する（S156）。検索したＮＬＶＧＡＨに応じてＬＶＧＡＬＮバッファに格納したＬＶＯ２値を取りだし、第１の判定値ＬＶＧＡＬＮＣＨにセットする（S157）。また、検索したＮＬＶＧＡＬに応じてＬＶＧＡＬＮバッファに格納した値を取りだし、第２の判定値ＬＶＧＡＬＮＣＬにセットする（S158）。図１１に示すテーブルから分かるように、第１の判定値ＬＶＧＡＬＮＣＨは第２の判定値ＬＶＧＡＬＮＣＬより遅いタイミングの（ＦＭＣＮＤＦ１０５が１にセットされてからより長い時間が経過している）下流側Ｏ２センサ出力ＬＶＯ２を取り出すようになっている。
【０１１３】
ステップS155からステップS158の処理は、劣化判定前処理であるタイミング毎にバッファに格納された下流側Ｏ２センサ出力ＬＶＯ２のうち、第１の積算吸入空気量ＧＳＬＦＦＩＮに応じてどのタイミングのデータを取り出すかを決めるステップである。
【０１１４】
ＮＬＶＧＡＬ及びＮＬＶＧＡＨの両テーブルが図１１のような形状をしているのは、ＳＯｘの影響による誤検知を防止するために、ＳＯｘによる影響または三元触媒の劣化による影響を試験的に求め、これらの影響を排除できるようなタイミングのデータ（ＬＶＯ２出力）を取り出すためである。これによってＳＯｘによる下流側Ｏ２センサ19への影響を排除し、ひいてはＮＯｘ浄化装置15の劣化判定の精度を向上できる。別の実施例では、このようなバッファを使用する代わりに、上流側Ｏ２センサ出力ＳＶＯ２が反転してから下流側Ｏ２センサ出力ＬＶＯ２が反転するまでの吸入空気量を積算して、その積算吸入空気量を図１１に示すテーブルにより補正をするか、または積算吸入空気量と図１１に示すテーブルから検索した判定閾値とを比較するようにしても良い。
【０１１５】
ステップS159で、第１の判定値ＬＶＧＡＬＮＣＨが基準値ＬＶＯ２ＬＮＨ以下であるか否かを判定する。ＬＶＧＡＬＮＣＨ≦ＬＶＯ２ＬＮＨであるとき、すなわちある時間が経過しているときにリーン状態であるときは、ＮＯｘ浄化装置15が十分にＮＯｘを蓄積していると判断され、仮判定フラグＦＫＯＫＦ１０５に１をセットし、判定保留フラグＦＧＲＡＹＦ１０５に０をセットして（S160）、ステップS171に進む。
【０１１６】
ステップS159でＬＶＧＡＬＮＣＨ＞ＬＶＯ２ＬＮＨであるときは、ステップS161に進み、第２の判定値ＬＶＧＡＬＮＣＬが基準値ＬＶＯ２ＬＮＨ以下であるか否かを判定する。この答がＹＥＳであるときは、ＮＯｘ浄化装置15の劣化判定が困難なのでステップS167に進み、判定保留フラグＦＧＲＡＹＦ１０５に１をセットする。判定保留フラグＦＧＲＡＹＦ１０５は、１にセットされたとき、この時点ではＮＯｘ除去装置の劣化を判定することができないことを表す。
【０１１７】
ＬＶＧＡＬＮＣＬ＞ＬＶＯ２ＬＮＨであるときは、比較的短時間しか経過していないにも関わらず下流側Ｏ２センサ19がリッチとなっていると判断される。この場合は、ステップS162で図１２を参照して後述するＳＯｘ除去処理でセットされるＳＯｘ除去終了フラグＦＳＲＭＯＶＥＮＤが１であるか否かを判定する。
【０１１８】
ＦＳＲＭＯＶＥＮＤ＝１であって、ＳＯｘ除去が終了しているときは、図８のステップS121でセットされる排気量パラメータＧＳＬＦＴＷＣＨが基準値ＧＳＬＦＪＵＤ以上であるか否かを判定する（S163）。この答がＮＯ、すなわちＧＳＬＦＴＷＣＨ＜ＧＳＬＦＴＪＵＤであれば、ＮＯｘ浄化装置15は劣化しているおそれがあるので、仮判定フラグＦＫＯＫＦ１０５に０をセットし、判定保留フラグＦＧＲＡＹＦ１０５に０をセットして（S164）、ステップS171に進む。
【０１１９】
ステップS162でＦＳＲＭＯＶＥＮＤ＝０であって、ＳＯｘ除去が終了していないときは、図６のステップS119で算出される第１の積算吸入空気量ＧＳＬＦＦＩＮが基準値ＧＳＬＦＪＵＤ以上であるか否かを判定する（S165）。この答がＮＯであれば、前述のステップS163に進む。ＧＳＬＦＦＩＮ≧ＧＳＬＦＪＵＤであるときは、ＳＯｘの影響があると判断されるので高濃度フラグＦＳＬＦに１をセットし（S166）、判定保留フラグＦＧＲＡＹＦ１０５に１をセットして、ステップS179に進む。
【０１２０】
ステップS163で答がＹＥＳ、つまりＧＳＬＦＴＷＣＨ≧ＧＳＬＦＪＵＤであるときも、ステップS167に進む。これは、ＳＯｘ除去処理が行われていても、高濃度硫黄含有燃料が使用されている場合には、正常な劣化判定ができないことがあるためである。
【０１２１】
図１０のステップS171では、下流側Ｏ２センサ故障フラグＦＦＳＤＦ１０３が１であるか否かを判定する。フラグＦＦＳＤＦ１０３は、下流側Ｏ２センサ19が故障していると判定されると１にセットされる。ＦＦＳＤＦ１０３＝１であり、下流側Ｏ２センサ19が故障していると判定されたときは、ステップS179に進み、劣化判定終了フラグＦＥＮＤＦ１０５を１にセットすると共に、下流側Ｏ２センサ判定結果待ちフラグＦＴＯ２ＷＡＩＴを０にセットし、劣化判定処理を中止する。
【０１２２】
ステップS171でＦＦＳＤＦ１０３＝０であって下流側Ｏ２センサ19が故障と判定されていないときは、Ｏ２センサＯＫフラグＦＫＯＫＦ１０３が１であるか否かを判定する（S172）。Ｏ２センサＯＫフラグＦＫＯＫＦ１０３は、下流側Ｏ２センサが正常と判定されたときに１にセットされる。ＦＫＯＫＦ１０３＝０であり正常と判定されていないときは、下流側Ｏ２センサ19の故障判定を実行するために空燃比リッチ化を継続するべく、判定結果待ちフラグＦＴＯ２ＷＡＩＴに１をセットし（S173）、リッチ化継続フラグＦＲＳＰＥＸＴに１をセットして（S174）、本処理を終了する。
【０１２３】
次回のルーチンにおいてステップS151またはS152で答がＹＥＳであるときは、直ちにステップS171に進む。
【０１２４】
ステップS172でＦＫＯＫＦ１０３＝１であり下流側Ｏ２センサ19の正常判定がなされているときは、ＳＯｘ除去終了フラグＦＳＲＭＯＶＥＮＤに０をセットし（S175）、続いて仮判定フラグＦＫＯＫＦ１０５が１であるか否かを判定する（S176）。仮判定フラグＦＫＯＫＦ１０５が１であるときは、ＮＯｘ浄化装置15が正常であると判定し、正常フラグＦＯＫＦ１０５に１をセットし、故障フラグＦＦＳＤＦ１０５に０をセットし、さらに劣化判定実施フラグＦＤＯＮＥＦ１０５に１をセットして（S177）、ステップS179に進む。劣化判定実施フラグＦＤＯＮＥＦ１０５は、ＮＯｘ浄化装置15の劣化判定は１運転期間に１回行えば十分であるので、これを判定するために立てられるフラグである。
【０１２５】
ステップS176で仮判定フラグＦＫＯＫＦ１０５が０であるときは、ＮＯｘ浄化装置15が故障していると判定し、正常フラグＦＯＫＦ１０５に０をセットし、故障フラグＦＦＳＤＦ１０５に１をセットし、さらに劣化判定実施フラグＦＤＯＮＥＦ１０５に１をセットして（S178）、ステップS179に進む。
【０１２６】
ステップS179では、劣化判定終了フラグＦＥＮＤＦ１０５に１をセットし、また判定結果待ちフラグＦＴＯ２ＷＡＩＴを０にリセットして、本処理を終了する。
【０１２７】
図９及び図１０の処理によれば、リッチ化判定時の下流側Ｏ２センサ19のリーン出力停滞時間（排気ガス量）によりＮＯｘ浄化装置15の特性劣化を判定する。
【０１２８】
図７の劣化判定前処理でバッファされた下流側Ｏ２センサ19の出力ＬＶＯ２を、積算吸入空気量（すなわち排気ガス量）に応じて取り出した（S157、S158）値ＬＶＧＡＬＮＣＨ及びＬＶＧＡＬＮＣＬを、劣化判定用の下流側センサ出力とする。図１１に示す予め実験等により決定されたテーブルを参照してＬＶＧＡＬＮバッファに格納されたＬＶＯ２値を取り出すことによって、上流側Ｏ２センサがリッチに反転してから適当な時間経過後の（すなわちＳＯｘの影響が少ない）下流側Ｏ２センサ出力を取り出すことができる。
【０１２９】
まず、第１の判定値ＬＶＧＡＬＮＣＨが、基準値ＬＶＯ２ＬＮＨ以下であるとき（すなわち、ステップS159で答がＹＥＳであるとき）は、上流側Ｏ２センサ18がリッチに反転してから十分な時間が経過しても下流側Ｏ２センサ19の出力がリーンであることから、ＮＯｘ浄化装置15にＮＯｘが十分蓄積されていると判断されるので、ステップS160でＮＯｘ浄化装置15が正常であると仮判定する仮判定フラグＦＫＯＫＦ１０５に１がセットされる。
【０１３０】
次に、ＬＶＧＡＬＮＣＨ＞ＬＶＯ２ＬＮＨであり、かつ第２の判定値ＬＶＧＡＬＮＣＬが基準値ＬＶＯ２ＬＮＨを上回っているとき（すなわち、ステップS161で答がＮＯであるとき）は、上流側Ｏ２センサ18がリッチに反転してから短時間のうちに下流側Ｏ２センサ19がリッチに反転したことから、ＮＯｘ浄化装置15にＮＯｘが十分蓄積されていないと判断される。しかしこの場合でも、まだＳＯｘ除去処理を実施しておらず（ステップS162でＦＳＲＭＯＶＥＮＤ＝１）、かつ積算吸入空気量ＧＳＬＦＦＩＮが所定値ＧＳＬＦＪＵＤ以上である場合は、ステップS166で高濃度判定フラグＦＳＬＦに１がセットされ、さらに判定保留フラグＦＧＲＡＹＦ１０５に１がセットされて（S167）、今回の劣化判定は保留される。ＳＯｘの除去が行われていないときに下流側Ｏ２センサ出力19に基づく劣化判定を行うと、劣化判定の精度が低下するので、この場合は後述するようにＳＯｘ除去処理を一度だけ実施する。
【０１３１】
しかし、ＳＯｘ除去処理を既に実施しているとき、または積算吸入空気量ＧＳＬＦＦＩＮが所定値ＧＳＬＦＪＵＤより小さいときで、かつＧＳＬＦＴＷＣＨ＜ＧＳＬＦＴＪＵＤであるときは、ＮＯｘ浄化装置15が劣化しているおそれがあるので、仮判定フラグＦＫＯＫＦ１０５に０がセットされる。
【０１３２】
ＬＶＧＡＬＮＣＨ＞ＬＶＯ２ＬＮＨであり、かつＬＶＧＡＬＮＣＬ＞ＬＶＯ２ＬＮＨであるとき、すなわち、短時間経過時は下流側Ｏ２センサ出力ＬＶＯ２がリーンであるが、長時間経過時はリッチであるときは、ＮＯｘ浄化装置15の劣化の誤判定の可能性が高くなるので、判定保留フラグＦＧＲＡＹ１０５に１をセットして（S167）、劣化判定を保留する。
【０１３３】
このように、ＮＯｘ浄化装置15に流入する排気中の硫黄成分の影響及び三元触媒の劣化状態に対し、ＬＶＧＡＬＮバッファと図１１のテーブルを利用して適切な時期の下流側センサ出力を参照できるため、ＮＯｘ浄化装置15の劣化判定を正確に行うことが可能となる。
【０１３４】
ＦＫＯＫＦ１０５の値がセットされた後に、下流側Ｏ２センサ19が故障と判定されたとき（ステップS171でＦＦＳＤＦ１０３＝１）は、劣化判定は中止される。下流側Ｏ２センサ19が故障している状態では正しく劣化判定ができないからである。また、下流側Ｏ２センサ19のＯＫ判定がなされていないとき（ステップS172でＦＫＯＫＦ１０３＝０）は、リッチ化継続フラグＦＲＳＰＥＸＴが１にセットされ、下流側Ｏ２センサ19の故障判定のために空燃比リッチ化が延長される。この処理は、以下の理由により行われる。つまり、下流側Ｏ２センサ19は三元触媒14及びＮＯｘ浄化装置15の後に配置されているため、出力の動きが鈍いことがある。従って、ＮＯｘ浄化装置15の劣化判定時に空燃比をリッチにしたとき、短時間で出力がリッチにならないことを理由として下流側Ｏ２センサ19が故障していると判断することはできない。そこで、故障判定に必要な時間だけ空燃比リッチ化を延長し、延長しても反転しないときにのみ下流側Ｏ２センサ19が故障していると判断される。
【０１３５】
図１２はＳＯｘ除去処理のフローチャートである。この処理は所定時間（例えば１００ｍｓｅｃ）毎にＥＣＵ5で実行される。ＮＯｘ浄化装置の劣化判定にてＳＯｘの影響大と判定された場合（ステップS166で高濃度フラグＦＳＬＦに１がセットされた場合）、劣化判定保留後に１回のみＳＯｘ除去処理を行うことによって、劣化判定の精度を向上する。なお、後述するように、ＳＯｘ除去処理の実行中（すなわち、ＦＳＬＦ＝１かつＦＳＲＭＯＶＥＮＤ＝０であるとき）は、リーン運転は禁止される（図１３参照）。
【０１３６】
ステップS181で、高濃度フラグＦＳＬＦが１であるか否かを判定する。ＦＳＬＦ＝０であるときは、第１のダウンカウンタＣＳＡＤＩＮＴに第１の所定値ＣＴＳＡＤＤＳをセットし（S183）、第２のダウンカウンタＣＳＤＥＩＮＴに第２の所定値ＣＴＳＤＥＣＳをセットし（S184）、ＳＯｘ吸着量カウンタＣＳＲＭＯＶに第３の所定値ＣＴＳＭＯＶＳ（例えば６０００）をセットして（S185）、本処理を終了する。第３の所定値ＣＴＳＲＭＯＶＳは、ＮＯｘ浄化装置15のＳＯｘ吸着量が最大（飽和状態）の場合でも、全てのＳＯｘを除去することができる時間に対応する値に設定される。
【０１３７】
ステップS181でＦＳＬＦ＝１であってＳＯｘ濃度が高いと判定されているときは、ＳＯｘ除去終了フラグＦＳＲＭＯＶＥＮＤが１であるか否かを判定する。既にＳＯｘ除去処理が完了した場合には、この答はＹＥＳとなり、ステップS183に進む。答がＮＯであれば、ＮＯｘ浄化装置15の推定温度ＴＣＴＬＮＣＨが所定温度ＴＣＴＳＲＭＶ以上か否かを判定する（S186）。推定温度ＴＣＴＬＮＣＨは、図示しない処理により、例えばエンジンの運転状態、具体的にはエンジン回転数ＮＥ及びエンジン負荷（吸気管内絶対圧ＰＢＡ）に応じて設定された温度マップを検索することにより算出される。なお、ＮＯｘ浄化装置15の温度を検出する温度センサを設け、その検出温度を推定温度ＴＣＴＬＮＣＨの代わりに用いても良い。
【０１３８】
ステップS186でＴＣＴＬＮＣＨ＜ＴＣＴＳＲＭＶであるときは、第１のダウンカウンタＣＳＡＤＩＮＴの値が０以下か否かを判定する（S188）。最初はＣＳＡＤＩＮＴ＞０であるので、第１のダウンカウンタＣＳＡＤＩＮＴを１だけデクリメントし（S189）、第２のダウンカウンタＣＳＤＥＩＮＴに第２の所定値ＣＴＳＤＥＣＳをセットして（S193）、ステップS200に進む。その後、第１のダウンカウンタＣＳＡＤＩＮＴの値が０となると、ステップS188からステップS190に進み、推定温度ＴＣＴＬＮＣＨに応じて硫黄被毒量テーブルＤＣＴＳＲＭＰＮを検索し、硫黄被毒量ＤＣＴＳＲＭＰを求める。硫黄被毒量テーブルＤＣＴＳＲＭＰＮは、推定温度が高いほど小さくなるように設定されている。続いて硫黄被毒量カウンタＣＳＲＭＯＶに以下の式（７）で求められる値をセットする（S191）。
【０１３９】
【数７】
ＣＳＲＭＯＶ＝ＣＳＲＭＯＶ＋ＤＣＴＳＲＭＰ    （７）
【０１４０】
ここで、右辺のＣＳＲＭＯＶは前回値である。続いて、第１のダウンカウンタＣＳＡＤＩＮＴに第１の所定値ＣＴＳＡＤＤＳをセットし（S192）、前述のステップS193に進む。
【０１４１】
ステップS186でＴＣＴＬＮＣＨ≧ＴＣＴＳＲＭＶであるときは、検出当量比ＫＡＣＴが所定当量比ＫＡＣＴＳＲＭ（例えば１．０３）以上であるか否かを判定する（S187）。検出当量比ＫＡＣＴは、ＬＡＦセンサ17の出力を係数に変換したものである。ＫＡＣＴ＜ＫＡＣＴＳＲＭであれば、前述のステップS188に進む。ＫＡＣＴ≧ＫＡＣＴＳＲＭであるときは、ステップS194に進み、第２のダウンカウンタＣＳＤＥＩＮＴが０以下か否かを判定する。最初はＣＳＤＥＩＮＴ＞０であるので、ステップS195に進み、第２のダウンカウンタＣＳＤＥＩＮＴを１だけデクリメントし、第１のダウンカウンタＣＳＡＤＩＮＴに第１の所定値ＣＴＳＡＤＤＳをセットして（S199）、ステップS200に進む。その後、第２のダウンカウンタＣＳＤＥＩＮＴの値が０となると、ステップS194からステップS196に進み、推定温度ＴＣＴＬＮＣＨに応じて硫黄除去量テーブルＤＣＴＳＲＭＭＮを検索して、硫黄除去量ＤＣＴＳＲＭＭを求める。硫黄除去量テーブルＤＣＴＳＲＭＭＮは、推定温度が高いほど大きくなるように設定されている。続いて硫黄被毒量カウンタＣＳＲＭＯＶに以下の式で求められる値をセットする（S197）。
【０１４２】
【数８】
ＣＳＲＭＯＶ＝ＣＳＲＭＯＶ−ＤＣＴＳＲＭＭ    （８）
【０１４３】
ここで、右辺のＣＳＲＭＯＶは前回値である。続いて、第２のダウンカウンタＣＳＤＥＩＮＴに第２の所定値ＣＴＳＤＥＣＳをセットし（S198）、前述のステップS199に進む。
【０１４４】
ステップS200で、硫黄被毒量カウンタＣＲＳＭＯＶの値が所定値ＣＴＳＲＭＯＶＳ以下であるか否かを判定し、ＣＲＳＭＯＶ≦ＣＴＳＲＭＯＶＳであるときはステップS202に進む。ＣＲＳＭＯＶ＞ＣＴＳＲＭＯＶＳであるときは、硫黄被毒量カウンタＣＲＳＭＯＶを所定値ＣＴＳＲＭＯＶＳにセットして、ステップS202に進む。これは、硫黄吸着量が予め設定した値以上となることを防止する上限リミット処理である。
【０１４５】
ステップS202で、硫黄吸着量カウンタＣＳＲＭＯＶの値が０以下か否かを判定する。ＣＲＳＭＯＶ＞０である間は本処理を終了する。ＣＲＳＭＯＶの値が０になると、ＳＯｘ除去処理が完了したと判定され、硫黄吸着量カウンタＣＲＳＭＯＶを０にセットし（S203）、ＳＯｘ除去終了フラグＦＳＲＭＯＶＥＮＤを１にセットし（S204）、高濃度フラグＦＳＬＦを０に戻し（S205）、ＳＯｘ除去リッチ化フラグＦＳＲＲを０にセットして（S206）、本処理を終了する。
【０１４６】
図１２の処理によれば、推定温度ＴＣＴＬＮＣＨが所定温度ＴＣＴＳＲＭＶ以上であり、かつ検出当量比ＫＡＣＴが所定当量ＫＡＣＴＳＲＭ以上である（空燃比リッチである）ときは、三元触媒14のＳＯｘ除去処理が行われる。硫黄被毒量カウンタＣＳＲＭＯＶにより、三元触媒14に蓄積されたＳＯｘ量が推定される。ＣＳＲＭＯＶの値が０となったとき、蓄積されたＳＯｘが除去されたと判定され、ＳＯｘ除去フラグＦＳＲＭＯＶＥＮＤが１にセットされる。
【０１４７】
推定温度ＴＣＴＬＮＣＨが所定温度ＴＣＴＳＲＭ以下であるとき、または検出当量比ＫＡＣＴが所定当量ＫＡＣＴＳＲＭより小さいときは、ＳＯｘが除去されず、逆に三元触媒14に蓄積されるので、第２のダウンカウンタＣＳＡＤＩＮＴの値が０となる毎に硫黄被毒量カウンタＣＳＲＭＯＶがインクリメントされる。ＳＯｘの蓄積速度及び除去速度は、三元触媒14の温度に応じて異なる（すなわち、温度が高いほどＳＯｘは蓄積しにくく、逆に除去され易い）ので、テーブルを参照して得られる量を硫黄吸着量カウンタＣＳＲＭＯＶに加算あるいは減算している。第１のダウンカウンタＣＳＡＤＩＮＴと第２のダウンカウンタＣＳＤＥＩＮＴは、ＳＯｘの蓄積速度と除去速度が同じでないことを補正するために設けられた間引きカウンタである。
【０１４８】
ＳＯｘ濃度が高いと判定されたとき、三元触媒14のＳＯｘ除去処理を実行することにより、ＳＯｘの蓄積に起因する上流側Ｏ２センサ18の出力と下流側Ｏ２センサ19の出力の遅延時間の変化を、ＮＯｘ浄化装置15の経時劣化と誤判定することを防止できる。
【０１４９】
図１３は、ＳＯｘ除去処理実行中は空燃比を理論空燃比よりリーン側に設定するリーン運転を禁止する処理のフローチャートである。この処理はＴＤＣ信号パルスの発生に同期してＥＣＵ5で実行される。この処理によって、排気温度が高くかつリッチで運転している状態が作られ、ＳＯｘの除去が容易となる。
【０１５０】
ステップS211で、高濃度フラグＦＳＬＦが１であるか否かを判定し、ＦＳＬＦ＝１であってＳＯｘ濃度が高いときは、ＳＯｘ除去リッチ化フラグＦＳＲＲを１にセットし（S212）、リーンバーン運転禁止フラグＦＫＢＳＭＪを１にセットし（S222）、リーン運転を禁止する。
【０１５１】
高濃度フラグＦＳＬＦが０であるときは、以下のステップでリーンバーン運転を許可するか否かを判定していく。まずステップS213でエンジン負荷ＰＢＧＡが図示しない処理においてエンジン回転数等に応じて決まる値ＰＢＫＢＳを越えているか否かを判定する。ＰＢＧＡ＞ＰＢＫＢＳであるときは、前述のステップS222に進み、リーンバーン運転が禁止される。ＰＢＧＡ≦ＰＢＫＢＳであるときは、エンジン回転数ＮＥが所定値ＮＫＢＳＬ（例えば１０００ｒｐｍ）を越えているか否かを判定する（S214）。答がＹＥＳであれば、続いてステップS215でＳＯｘ除去終了フラグＦＳＲＭＯＶＥＮＤが１であるか否かを判定する。ＦＳＲＭＯＶＥＮＤ＝０であれば、ステップS217に進む。ＦＳＲＭＯＶＥＮＤ＝１であり、ＳＯｘ除去処理が完了しているときは、エンジン回転数ＮＥが、ＮＫＢＳＬより若干大きい値ＮＫＢＳＳＲＬ（例えば２０００ｒｐｍ）を越えているか否かを判定する（S216）。この答がＹＥＳであれば、さらにエンジン回転数ＮＥが所定値ＮＫＢＳＨ（例えば３０００ｒｐｍ）より小さいか否かを判定する（S217）。ＮＥ＜ＮＫＢＳＨであるときは、ステップS218に進む。
【０１５２】
エンジン回転数ＮＥがＮＫＢＳＬまたはＮＫＢＳＳＲＬより低回転領域である場合（S214、S216）、またはＮＫＢＳＨより高回転領域である場合（S217）は、ステップS222に進みリーンバーン運転が禁止される。
【０１５３】
ステップS218で、ギア位置（ＣＶＴ車のギア位置換算値）が３速以上であるか否かを判定する。２速以下のときは、リーンバーン運転が禁止される。
【０１５４】
ステップS218で答がＹＥＳのとき、つまりギアがハイ側にあるときは、車速ＶＰが所定値値ＶＮＧＲＬ（例えば３０ｋｍ/ｈ）以上であるか否かを判定する（S219）。この答えがＹＥＳであれば、ＳＯｘ除去終了フラグＦＳＲＭＯＶＥＮＤが１であるか否かを判定する（S220）。ＦＳＲＭＯＶＥＮＤ＝０であるときは、ステップS223に進む。ＦＳＲＭＯＶＥＮＤ＝１でありＳＯｘ除去処理が完了しているときは、車速ＶＰがＶＮＧＲＬより若干大きい値ＶＮＧＲＳＲ（例えば４０ｋｍ/ｈ）以上であるか否かを判定する（S221）。この答がＹＥＳであれば、リーンバーン禁止フラグＦＫＢＳＭＪに０がセットされ、リーン運転が許可される。
【０１５５】
ステップS219またはS221において、答がＮＯであるときは、ステップS222に進みリーンバーン運転が禁止される。
【０１５６】
高濃度硫黄含有燃料を使用している場合（ＦＳＬＦ＝１）は、ＳＯｘ除去処理を実行するためにリーン運転を許可しない（S222）。高濃度フラグＦＳＬＦが０のときには、エンジン1の運転状態に応じてリーン運転が許可される。具体的には、エンジン負荷ＰＢＧＡが低く、エンジン回転数ＮＥが低回転領域であり、ギアが３速以上であり、かつ車速ＶＰが中速領域であるときにのみリーン運転が許可される（S223）。また、ＳＯｘ除去処理が既に行われている場合は、エンジン回転数ＮＥと車速ＶＰの基準値を高い側に持ちかえて、リーン運転許可の判断を行う。これは三元触媒14への硫黄の吸着は排気温度に関係することから、排気温度が上がらないエンジンの低温時、すなわちエンジン回転数が低いときにリーンバーン運転を禁止することによって、三元触媒14への硫黄吸着を避け、硫黄の影響を防止し劣化判定の精度を向上させるためである。
【０１５７】
以上本発明を特定の実施形態について説明したが、本発明はこれらに限られるものではなく、種々の変形及び代替も本発明の範囲に含まれる。
【０１５８】
【発明の効果】
この発明によれば、排気浄化手段の硫黄被毒の再生後にリーン運転制限手段により内燃機関の運転領域が制限されるので、排気浄化手段の劣化判定を硫黄被毒の影響の極力小さい状態で実施することができる。従って、高濃度硫黄含有燃料による運転時においても排気浄化手段の窒素酸化物吸収性能を正確に計測することが可能となる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る内燃機関及びその制御装置の構成を示す図である。
【図２】目標空燃比係数（ＫＣＭＤ）の設定を行う処理のフローチャートである。
【図３】ＮＯｘ浄化装置劣化判定処理のメインルーチンのフローチャートである。
【図４】劣化判定処理の実施条件判断を行う処理のフローチャートである。
【図５】劣化判定処理の実施条件判断を行う処理のフローチャートである。
【図６】ＳＯｘ濃度判定処理のフローチャートである。
【図７】劣化判定前処理のフローチャートである。
【図８】吸入空気量積算処理のフローチャートである。
【図９】劣化判定処理のフローチャートである。
【図１０】劣化判定処理のフローチャートである。
【図１１】劣化判定処理で使用するテーブルである。
【図１２】ＳＯｘ除去処理のフローチャートである。
【図１３】リーンバーン運転禁止を判断する処理のフローチャートである。
【符号の説明】
1      内燃機関
5      電子制御装置
14      三元触媒
15      ＮＯｘ浄化装置
17      比例型酸素濃度センサ
18,19      二値型酸素濃度センサ
【図１】
0003645841.tif 000002
【図２】
0003645841.tif 000003
【図３】
0003645841.tif 000004
【図４】
0003645841.tif 000005
【図５】
0003645841.tif 000006
【図６】
0003645841.tif 000007
【図７】
0003645841.tif 000008
【図８】
0003645841.tif 000009
【図９】
0003645841.tif 000010
【図１０】
0003645841.tif 000011
【図１１】
0003645841.tif 000012
【図１２】
0003645841.tif 000013
【図１３】
0003645841.tif 000014