以下本発明の実施の形態を図面を参照して説明する。
図1は、本発明の一実施形態にかかる排気浄化装置を含む、内燃機関(以下「エンジン」という)及びその制御装置の全体構成図であり、例えば4気筒のエンジン1の吸気管2の途中にはスロットル弁3が配されている。スロットル弁3にはスロットル弁開度(TH)センサ4が連結されており、当該スロットル弁3の開度に応じた電気信号を出力して電子制御ユニット(以下「ECU」という)5に供給する。
燃料噴射弁6はエンジン1とスロットル弁3との間かつ吸気管2の図示しない吸気弁の少し上流側に各気筒毎に設けられており、各噴射弁は図示しない燃料ポンプに接続されていると共にECU5に電気的に接続されて当該ECU5からの信号により燃料噴射弁6の開弁時間が制御される。
一方、スロットル弁3の直ぐ下流には吸気管内絶対圧(PBA)センサ8が設けられており、この絶対圧センサ8により電気信号に変換された絶対圧信号は前記ECU5に供給される。また、その下流には吸気温(TA)センサ9が取付けられており、吸気温TAを検出して対応する電気信号を出力してECU5に供給する。
エンジン1の本体に装着されたエンジン水温(TW)センサ10はサーミスタ等から成り、エンジン水温(冷却水温)TWを検出して対応する温度信号を出力してECU5に供給する。
エンジン1の図示しないカム軸周囲又はクランク軸周囲には、エンジン回転数(NE)センサ11及び気筒判別(CYL)センサ12が取り付けられている。エンジン回転数センサ11は、エンジン1の各気筒の吸入行程開始時の上死点(TDC)より所定クランク角度前のクランク角度位置で(4気筒エンジンではクランク角180゜毎に)TDC信号パルスを出力し、気筒判別センサ12は、特定の気筒の所定クランク角度位置で気筒判別信号パルスを出力するものであり、これらの各信号パルスはECU5に供給される。
排気管13には三元触媒14と、NOx浄化手段としてのNOx浄化装置15とが上流側からこの順序で設けられている。
三元触媒は、酸素蓄積能力を有し、エンジン1に供給される混合気の空燃比が理論空燃比よりリーン側に設定され、排気中の酸素濃度が比較的高い排気リーン状態では、排気中の酸素を蓄積し、逆にエンジン1に供給される混合気の空燃比が理論空燃比よりリッチ側に設定され、排気中の酸素濃度が低く、HC、CO成分が多い排気リッチ状態では、蓄積した酸素により排気中のHC,COを酸化する機能を有する。
NOx浄化装置15は、NOxを吸収するNOx吸収剤及び酸化、還元を促進するための触媒を内蔵する。NOx浄化装置15は、エンジン1に供給される混合気の空燃比が理論空燃比よりリーン側に設定された場合の排気リーン状態においては、NOxを吸収し、エンジン1に供給される混合気の空燃比が理論空燃比近傍または理論空燃比よりリッチ側に設定された場合の排気リッチ状態においては、吸収されたNOxがHC、COにより還元されて、窒素ガスとして排出され、またHC、COは酸化されて水蒸気及び二酸化炭素として排出されるように構成されている。
NOx吸収剤のNOx吸収能力の限界、すなわち最大NOx吸収量まで、NOxを吸収すると、それ以上NOxを吸収できなくなるので、適時NOxを放出させて還元するために空燃比のリッチ化、すなわち還元リッチ化を実行する。
三元触媒14の上流位置には、比例型酸素濃度センサ17(以下「LAFセンサ17」という)が装着されており、このLAFセンサ17は排気中の酸素濃度(空燃比)にほぼ比例した電気信号を出力し、ECU5に供給する。
三元触媒14とNOx浄化装置15との間及びNOx浄化装置15の下流位置には、それぞれ二値型酸素濃度センサ(以下「O2センサ」という)18,19が装着されており、これらのセンサの検出信号はECU5に供給される。このO2センサ18,19は、その出力が理論空燃比の前後において急激に変化する特性を有し、その出力は理論空燃比よりリッチ側で高レベルとなり、リーン側で低レベルとなる。以下の説明では、O2センサ18を上流側O2センサといい、O2センサ19を下流側O2センサという。
エンジン1は、吸気弁及び排気弁のバルブタイミングを、エンジンの高速回転領域に適した高速バルブタイミングと、低速回転領域に適した低速バルブタイミングとの2段階に切換可能なバルブタイミング切換機構30を有する。このバルブタイミングの切換は、弁リフト量の切換も含み、さらに低速バルブタイミング選択時は2つに吸気弁のうちの一方を休止させて、空燃比を理論空燃比よりリーン化する場合においても安定した燃焼を確保するようにしている。
バルブタイミング切換機構30は、バルブタイミングの切換を油圧を介して行うものであり、この油圧切換を行う電磁弁及び油圧センサがECU5に接続されている。油圧センサの検出信号はECU5に供給され、ECU5は電磁弁を制御してエンジン1の運転状態に応じたバルブタイミングの切換制御を行う。
ECU5には、大気圧PAを検出する大気圧センサ20が接続されており、その検出信号がECU5に供給される。
ECU5は、各種センサからの入力信号波形を整形し、電圧レベルを所定レベルに修正し、アナログ信号値をデジタル信号値に変換する等の機能を有する入力回路、中央演算処理ユニット(以下「CPU」という)、該CPUで実行される各種演算プログラム及び演算結果等を記憶する記憶回路、前記燃料噴射弁6に駆動信号を供給する出力回路等から構成される。
ECU5のCPUは、上述の各種エンジンパラメータ信号に基づいて、種々のエンジン運転状態を判別するとともに、該判別されたエンジン運転状態に応じて、次式(1)に基づき、前記TDC信号パルスに同期して開弁作動する燃料噴射弁6の燃料噴射時間TOUTを演算する。
TOUT=TIM×KCMD×KLAF×KPA×K1+K2 (1)
ここに、TIMは基本燃料量、具体的には燃料噴射弁6の基本燃料噴射時間であり、エンジン回転数NE及び吸気管内絶対圧PBAに応じて設定されたTIマップを検索して決定される。TIマップは、エンジン回転数NE及び吸気管内絶対圧PBAに対応する運転状態において、エンジンに供給する混合気の空燃比がほぼ理論空燃比になるように設定されている。すなわち、基本燃料量TIMは、エンジンの単位時間当たりの吸入空気量(質量流量)にほぼ比例する値を有する。
KCMDは目標空燃比係数であり、エンジン回転数NE、スロットル弁開度TH、エンジン水温TW等のエンジン運転パラメータに応じて設定される。目標空燃比係数KCMDは、空燃比A/Fの逆数、すなわち燃空比F/Aに比例し、理論空燃比のとき値1.0をとるので、目標当量比ともいう。また目標空燃比係数KCMDは、後述するように還元リッチ化あるいはNOx浄化装置15の劣化判定を実行するときは、空燃比をリッチ化するリッチ化所定値KCMDRRまたはKCMDRMに設定される。
KLAFは、フィードバック制御の実行条件が成立するときは、LAFセンサ17の検出値から算出される検出当量比KACTが目標当量比KCMDに一致するようにPID制御により算出される空燃比補正係数である。
KPAは、大気圧PAに応じて設定される大気圧補正係数であり、大気圧PAが、101.3kPa近傍にあるときは、1.0(無補正値)に設定され、大気圧PAが低下すると、1.0より大きな値に設定され、燃料供給量が増加方向に補正される。大気圧補正係数KPAは、大気圧PAが低下するほど増加するように設定され、燃料供給量は、大気圧PAが低下するほど増加するように補正される。
K1及びK2は夫々各種エンジンパラメータ信号に応じて演算される他の補正係数および補正変数であり、エンジン運転状態に応じた燃費特性、エンジン加速特性等の諸特性の最適化が図れるような所定値に決定される。
ECU5のCPUは上述のようにして求めた燃料噴射時間TOUTに基づいて燃料噴射弁6を開弁させる駆動信号を出力回路を介して燃料噴射弁6に供給する。また、ECU5のCPUは、NOx浄化装置15及び下流側O2センサ19の劣化判定を行う。
図2は、前記式(1)に適用される目標空燃比係数KCMDを算出する処理のフローチャートである。本処理は一定時間毎にECU5のCPUで実行される。
ステップS10では、後述する図29の処理(SOx除去処理)で設定されるSOx除去リッチ化フラグFSRRが「1」であるか否かを判別する。SOx除去リッチ化フラグFSRRは、「1」に設定されると、NOx浄化装置15に蓄積したSOxを除去するための空燃比リッチ化を実行することを示す。FSRR=0であるときは、ステップS11に進み、FSRR=1であるときは、目標空燃比係数KCMDをSOx除去リッチ化用の所定値KCMDSF(例えば1.03)に設定する(ステップS29)。
ステップS11では、リーンバーン運転中か否か、すなわち通常制御時に後述するステップS20で記憶された目標空燃比係数KCMDの記憶値KCMDBが「1.0」より小さいか否かを判別する。その結果、KCMDB≧1.0であってリーンバーン運転中でないときは、直ちにステップS16に進み、還元リッチ化実行中であることを「1」で示す還元リッチ化フラグFRSPOKを「0」に設定し、さらに後述するステップS23、S27で参照されるダウンカウントタイマtmRR及びtmRMに、それぞれ還元リッチ化時間TRR(例えば5〜10秒)及び還元リッチ化時間TRRより長い劣化判定リッチ化時間TRM(>TRR)をセットしてスタートさせる(ステップS17)。
次いで、後述する図23の処理により設定され、NOx浄化装置15の劣化判定終了後も空燃比のリッチ化を継続することを「1」で示すリッチ化継続フラグFRSPEXTが「0」であるか否かを判別し(ステップS18)、FRSPEXT=1であるときは、後述するステップS26に進んで、空燃比のリッチ化を継続する。
一方FRSPEXT=0であるときは、通常制御、すなわちエンジン運転状態に応じて目標空燃比係数KCMDの設定を行う(ステップS19)。目標空燃比係数KCMDは、基本的には、エンジン回転数NE及び吸気管内絶対圧PBAに応じて算出し、エンジン水温TWの低温状態や所定の高負荷運転状態では、それらの運転状態に応じた値に変更される。次いでステップS19で算出した目標空燃比係数KCMDを記憶値KCMDBとして記憶して(ステップS20)、本処理を終了する。リーンバーン運転が許可されるエンジン運転状態では、目標空燃比係数KCMDは「1.0」より小さい値に設定される。
ステップS11でKCMDB<1.0であってリーンバーン運転中であるときは、エンジン回転数NE及び吸気管内絶対圧PBAに応じて、次のステップS13で使用する増分値ADDNOxを決定する(ステップS12)。増分値ADDNOxは、リーンバーン運転中に単位時間当たりに排出されるNOx量に対応するパラメータであり、エンジン回転数NEが増加するほど、また吸気管内絶対圧PBAが増加するほど、増加するように設定されている。
ステップS13では、下記式(2)にステップS12で決定した増分値ADDNOxを適用し、NOx量カウンタCRSPをインクリメントする。これによりNOx排出量、すなわちNOx吸収剤に吸収されたNOx量に相当するカウント値が得られる。
CRSP=CRSP+ADDNOx (2)
続くステップS14では、NOx浄化装置15の劣化判定の実施条件が成立すると「1」に設定される実施条件フラグFMCNDF105が「1」であるか否かを判別する。通常はFMCNDF105=0であるので、ステップS15に進み、NOx量カウンタCRSPの値が、許容値CNOxREFを越えたか否かを判別する。この答が否定(NO)であるときは、前記ステップS16に進み、リッチ化継続フラグFRSPEXTが「1」に設定されない限り、通常制御、すなわちエンジン運転状態に応じた目標空燃比係数KCMDの設定を行う。許容値CNOxREFは、例えばNOx吸収剤の最大NOx吸収量より若干小さいNOx量に対応する値に設定される。
ステップS15で、CRSP>CNOxREFとなると、還元リッチ化フラグFRSPOKを「1」に設定し(ステップS21)、次いで目標空燃比係数KCMDを空燃比14.0相当程度の値に対応するリッチ化所定値KCMDRRに設定して還元リッチ化を実行する(ステップS22)。そして、タイマtmRRの値が「0」か否かを判別し(ステップS23)、tmRR>0である間は直ちに本処理を終了し、tmRR=0となると還元リッチ化フラグFRSPOKを「0」に設定するとともにNOx量カウンタCRSPの値を「0」にリセットする(ステップS24)。これにより、次回からはステップS15の答が否定(NO)となるので、通常制御に移行する。
一方劣化判定実施条件が成立すると(FMCNDF105=1となると)、ステップS14からステップS26に進み、目標空燃比係数KCMDを空燃比14.0相当程度の値より若干リッチ側の値(例えば空燃比13.7程度)に対応する劣化判定リッチ化所定値KCMDRM(<KCMDRR)に設定して劣化判定リッチ化を実行する(ステップS26)。通常の還元リッチ化実行時よりリッチ化の度合を小さくするのは、リッチ化の度合が大きいと、リッチ化実行時間が短くなり、NOx浄化装置15の劣化判定時に誤判定が発生し易いからであり、リッチ化の度合を小さくしてリッチ化実行時間(=TRM)を長くすることにより、劣化判定の精度を向上させることができる。
そして、タイマtmRMの値が「0」か否かを判別し(ステップS27)、tmRM>0である間は直ちに本処理を終了し、tmRM=0となるとNOx量カウンタCRSPの値を「0」にリセットする(ステップS28)。
図2の処理によれば、リーンバーン運転可能なエンジン運転状態においては、通常は間欠的に還元リッチ化が実行され(ステップS22,S23)、NOx浄化装置15のNOx吸収剤に吸収されたNOxが適宜還元される。また、NOx浄化装置15の劣化判定実施条件が成立したときは、還元リッチ化よりリッチ化の度合を小さくして、かつ還元リッチ化より長い時間TRMに亘って劣化判定リッチ化が実行される(ステップS26,S27)。また、SOx除去(図29参照)を実行するときは、SOx除去リッチ化が実行される(ステップS10,S29)。また後述する図23の処理(ステップS217)により、リッチ化継続フラグFRSPEXTが「1」に設定されたとき、すなわち下流側O2センサ出力LVO2の、リッチ空燃比を示す値への変化が遅いときは、目標空燃比係数KCMDがリッチ化所定値KCMDRMに維持され、空燃比リッチ化が継続される。
図3は、NOx浄化装置15の劣化判定処理のメインルーチンのフローチャートである。この処理は、TDC信号パルスの発生に同期してECU5のCPUで実行される。
ステップS31では、図4及び図5に示す実施条件判定処理を実行する。実施条件判定処理では、NOx浄化装置15の劣化判定の実施条件が成立するか否かが判定され、実施条件が成立するときは、実施条件フラグFMCNDF105が「1」に設定される。ステップS32では、図7に示すGALO2M算出処理を実行し、第1排気量パラメータGALO2Mを算出する。第1排気量パラメータGALO2Mは、基本燃料噴射量TIMを積算することにより算出される、排気量の積算値に比例するパラメータである。
ステップS33では、実施条件フラグFMCNDF105が「1」であるか否かを判別し、FMCNDF105=0であって実施条件が成立していないときは、ステップS34に進み、仮判定フラグFPREJUD1、第1高濃度フラグFSLFG、濃度判定終了フラグFSLFEND、第1基準オーバフラグFSVO2EXPL、及び第2基準オーバフラグFSVO2EXPHをすべて「0」に設定する。これらのフラグは、図9及び図10に示すSOx濃度判定処理で「1」に設定される。
ステップS36では、前演算完了フラグFLVLNCENDを「0」に設定し、カウンタCGALNCVを「0」に設定する。前演算完了フラグFLVLNCENDは、図13の前演算処理が完了したとき「1」に設定され、カウンタCGALNCVは、図13の処理で使用される。
ステップS37では、図24に示す第2最終判定処理を実行し、その後本処理を終了する。
ステップS33で実施条件フラグFMCNDF105が「1」であって、実施条件が成立しているときは、待機フラグFTO2WAITが「1」であるか否かを判別する(ステップS41)。待機フラグFTO2WAITは、図18及び図19に示す仮判定処理が終了し、下流側O2センサ19の故障判定の終了を待っているとき、「1」に設定される(図23、ステップS217参照)。
ステップS41で待機フラグFTO2WAITが「1」であって、下流側O2センサ19の故障判定の終了を待っているときは、直ちにステップS45に進む。FTO2WAIT=0であるときは、図9及び図10に示すSOx濃度判定処理を実行し(ステップS42)、次いで図13に示す前演算処理を実行する(ステップS43)。ステップS44では、図18及び図19に示す仮判定処理を実行し、ステップS45では、図23に示す第1最終判定処理を実行する。
図4及び図5は、図3のステップS31で実行される実施条件判定処理のフローチャートである。
ステップS51では、劣化判定指令フラグFGOF105が「1」であるか否かを判別し、FGOF105=0であるときは、故障判定指令フラグFGOF103が「1」である否かを判別する(ステップS52)。劣化判定指令フラグFGOF105は、NOx浄化装置15の劣化判定を指令するフラグであり、故障判定指令フラグFGOF103は、下流側O2センサ19の故障判定を指令するフラグである。劣化判定指令フラグFGOF105及び故障判定指令フラグFGOF103は、エンジン始動後に「1」に設定される。
劣化判定指令フラグFGOF105及び故障判定指令フラグFGOF103がともに「0」であるときは、NOx浄化装置15の劣化判定の実施条件が不成立であると判定し、ステップS55及びそれに続くステップを実行する。
劣化判定指令フラグFGOF105または故障判定指令フラグFGOF103が「1」であるときは、故障判定完了フラグFDONEF103が「1」であるか否かを判別する。FDONEF103=0であるときは、故障判定終了フラグFENDF103が「1」であるか否かを判別する(ステップS54)。故障判定完了フラグFDONEF103は、図26のステップS288で、O2センサ19について正常または故障の判定を行ったとき、「1」に設定される。故障判定終了フラグFENDF103は、図26のステップS275で、正常または故障の判定を行うことなく故障判定を終了するとき、「1」に設定される。
ステップS53またはS54の答が肯定(YES)であるときは、ステップS55に進み、故障判定終了フラグFENDF103及び劣化判定終了フラグFENDF105をともに「0」に設定する。劣化判定終了フラグFENDF105は、NOx浄化装置15の劣化判定を終了するとき、図23のステップS224で「1」に設定される。
以下ステップS55に続いて実行される処理を説明する。ステップS67では、前条件フラグFLNCMWTを「0」に設定し、ステップS69では、リッチ化継続フラグFRSPEXT及び故障判定実施条件フラグFMCDF103Bを「0」に設定する。前条件フラグFLNCMWTは、以下に説明するステップS56〜S59,S62,S64,及びS65の条件が満たされたとき、「1」に設定される(ステップS66参照)。故障判定実施条件フラグFMCDF103Bは、O2センサ19の故障判定の実行条件が成立するとき「1」に設定される(ステップS70参照)。
ステップS75では、パージカットフラグFLNCPGを「0」に設定する。パージカットフラグFLNCPGは、「1」に設定されると、燃料タンクで発生した蒸発燃料を吸気管2に供給する蒸発燃料パージを禁止することを示す(ステップS74参照)。ステップS76では、ステップS77で参照されるダウンカウントタイマTLNCPGに所定時間TMLNCPG(例えば、3秒)をセットしてスタートさせる。
ステップS78では、最大出力SVMAXLNCを「0」に設定する。最大出力SVMAXLNCは、劣化判定実行中の上流側O2センサ出力SVO2の最大値を示す(ステップS80、S81参照)。ステップS79では、大幅低下フラグFSVMAXLNCを「0」に設定する。大幅低下フラグFSVMAXLNCは、上流側O2センサ出力SVO2の最大出力SVMAXLNCからの低下量が大きいとき「1」に設定される(ステップS85参照)。ステップS86では、実施条件フラグFMCNDF105を「0」に設定し、その後本処理を終了する。
ステップS54でFENDF103=0であるときは、ステップS56に進み、フィードバック制御フラグFSTRFBが「1」であるか否かを判別する。フィードバック制御フラグFSTRFBは、LAFセンサ17の出力に応じた空燃比フィードバック制御を実行するとき、「1」に設定される。ステップS56の答が肯定(YES)であるときは、下流側O2センサ活性フラグFNLO2が「1」であるか否かを判別する(ステップS57)。下流側O2センサ活性フラグFNLO2は、下流側O2センサ19が活性化しているとき「1」に設定される。ステップS57の答が肯定(YES)であるときは、リーンバーン運転フラグFLBが「1」であるか否かを判別する(ステップS58)。リーンバーン運転フラグFLBは「1」に設定されると、空燃比を理論空燃比よりリーン側に設定するリーンバーン運転が許可されている(リーンバーン運転が可能なエンジン運転状態にある)ことを示す。ステップS56〜S58のいずれか答が否定(NO)であるときは、前記ステップS67に進む。
ステップS58の答が肯定(YES)であるときは、エンジン回転数NEが所定回転数NELNC(例えば1750rpm)より高いか否かを判別する(ステップS59)。この答が否定(NO)であるときは、実施条件不成立と判定して前記ステップS67に進み、NE>NELNCであるときは、ステップS60〜S64により吸気管内絶対圧PBAについての条件が満たされるか否かを判別する。
ステップS60では実施条件フラグFMCNDF105が既に「1」に設定されているか否かを判別し、FMCNDF105=0であるときは、ステップS61で第1閾値PBLNCLNを算出する。すなわち、エンジン回転数NEに応じて図6(a)に示すPBLNCLHテーブル及びPBLNCLLテーブルを検索して、上側閾値PBLNCLH及び下側閾値PBLNCLLを算出する。次に大気圧PAに応じて第1閾値PBLNCLNを算出する。すなわち、大気圧PAが第1所定圧PALNCH(例えば、60kPa(450mmHg))以上であるときは、第1閾値PBLNCLNを上側閾値PBLNCLHに設定し、大気圧PAが第2所定圧PALNCL(例えば、101kPa(760mmHg))以下であるときは、第1閾値PBLNCLNを下側閾値PBLNCLLに設定し、大気圧PAが第1所定圧PALNCHと第2所定圧PALNCLとの間にあるときは、大気圧PAに応じた線形補間演算により、第1閾値PBLNCLNを算出する。
ステップS62では、吸気管内絶対圧PBAが第1閾値PBLNCLNより高いか否かを判別し、PBA≦PBLNCLNであるときは、実施条件不成立と判定して前記ステップS67に進む。PBA>PBLNCLNであるときは、ステップS65に進む。
ステップS60でFMCNDF105=1であるときは、ステップS63で第2閾値PBLNCSTを算出する。すなわち、エンジン回転数NEに応じて図6(b)に示すPBLNCSHテーブル及びPBLNCSLテーブルを検索して、上側閾値PBLNCSH及び下側閾値PBLNCSLを算出する。次に大気圧PAに応じて第2閾値PBLNCSTを算出する。すなわち、大気圧PAが第1所定圧PALNCH以上であるときは、第2閾値PBLNCSTを上側閾値PBLNCSHに設定し、大気圧PAが第2所定圧PALNCL以下であるときは、第2閾値PBLNCSTを下側閾値PBLNCSLに設定し、大気圧PAが第1所定圧PALNCHと第2所定圧PALNCLとの間にあるときは、大気圧PAに応じた線形補間演算により、第2閾値PBLNCSTを算出する。
ステップS64では、吸気管内絶対圧PBAが第2閾値PBLNCSTより高いか否かを判別し、PBA≦PBLNCSTであるときは、実施条件不成立と判定して前記ステップS67に進む。PBA>PBLNCSTであるときは、ステップS65に進む。
ステップS65では、還元リッチ化フラグFRSPOKが「1」であるか否かを判別し、FRSPOK=1であって還元リッチ化を実行しているときは、前記ステップS67に進む。FRSPOK=0であって還元リッチ化を実行していないときは、前条件フラグFLNCMWTを「1」に設定する(ステップS66)。
図5のステップS68では、NOx量カウンタCRSPの値が、飽和判定閾値CLNCMACTより大きいか否かを判別し、CRSP>CLNCMACTであるときは、下流側O2センサ19の故障判定実行条件成立と判定し、故障判定実施条件フラグFMCDF103Bを「1」に設定する(ステップS70)。一方、CRSP≦CLNCMACTであるときは、実施条件不成立と判定して、前記ステップS69に進む。
ステップS71では、上流側O2センサ正常フラグFOK63が「1」であるか否かを判別する。上流側O2センサ正常フラグFOK63は、図示しない処理において、上流側O2センサ18が正常であると判定されたとき、「1」に設定される。FOK63=0であるときは、実施条件不成立と判定して前記ステップS75に進む。FOK63=1であるときは、実施条件フラグFMCNDF105が「1」であるか否かを判別し(ステップS72)、FMCNDF105=1であって実施条件が既に成立しているときは、直ちにステップS74に進む。FMCNDF105=0であって実施条件が成立していないときは、上流側O2センサ出力SVO2が、第1上流側基準値SVO2LNCM(例えば0.1V)以下か否かを判別する(ステップS73)。この答が否定(NO)であるときは、実施条件不成立と判定して前記ステップS75に進む。SVO2≦SVO2LNCMであるときは、ステップS74に進み、パージカットフラグFLNCPGを「1」に設定する。
ステップS77では、ステップS76でスタートしたタイマTLNCPGの値が「0」であるか否かを判別する。最初は、TLNCPG>0であるので、前記ステップS78に進み、TLNCPG=0となると、ステップS80に進み、上流側O2センサ出力SVO2が最大出力SVMAXLNCより大きいか否かを判別する。この答が肯定(YES)であるときは、最大出力SVMAXLNCをその上流側O2センサ出力SVO2に設定する(ステップS81)。このときには、直ちに実施条件成立と判定し、実施条件フラグFMCNDF105を「1」に設定する(ステップS84)。
ステップS80でSVO2≦SVO2MAXLNCであるときは,下記式(3)により,最大出力SVMAXLNCと、上流側O2センサ出力SVO2の差DSVを算出する(ステップS82)。
DSV=SVMAXLNC−SVO2 (3)
そして差DSVが所定差DSVLNCMCより大きいか否かを判別し(ステップS83)、差DSVが所定差DSVLNCMCを越えたとき、すなわち上流側O2センサ出力SVO2の最大出力SVMAXLNCからの低下量が大きいときは、実施条件不成立と判定し、大幅低下フラグFSVMAXLNCを「1」に設定する(ステップS85)とともに、実施条件フラグFMCNDF105を「0」に設定する(ステップS86)。
差DSVが所定差DSVLNCMCを越えるような場合は、エンジンの加速などにより一時的に排気リーン状態となったと考えられるので、そのような場合に劣化判定を継続すると、誤判定を招くおそれがあるため、実施条件不成立として、劣化判定を中止する。
ステップS83でDSV≦DSVLNCMCであるときは、実施条件成立と判定して、前記ステップS84に進む。実施条件フラグFMCNDF105が「1」に設定されると、劣化判定のための空燃比リッチ化が実行される(図2,ステップS14,S26参照)。
図7は、図3のステップS32で実行されるGALO2M算出処理のフローチャートである。
ステップS91では、故障判定実施条件フラグFMCDF103Bが「1」であるか否かを判別し、FMCDF103B=0であって下流側O2センサ19の故障判定実施条件が成立していないときは、第1排気量パラメータ算出フラグFGALO2を「0」に設定し(ステップS92)、さらに第1排気量パラメータGALO2Mを「0」に設定する(ステップS96)。
ステップS91でFMCDF103B=1であって、下流側O2センサ19の故障判定実施条件が成立しているときは、上流側O2センサ出力SVO2が第2上流側基準値SVO2LO2M(例えば、0.7V)以下であるか否かを判別し(ステップS93)、SVO2>SVO2LO2Mであるときは、フラグFGALO2を「1」に設定して(ステップS94)、ステップS95に進む。SVO2≦SVO2LO2Mであるときは、ステップS93から直ちにステップS95に進む。
ステップS95では、フラグFGALO2が「1」であるか否かを判別し、FGALO2=0であるときは、前記ステップS96に進む。FGALO2=1であるときは、吸気管内絶対圧PBAに応じて図8に示すKGALO2Mテーブルを検索し、補正係数KGALO2Mを算出する(ステップS97)。KGALO2Mテーブルは、吸気管内絶対圧PBAが高くなるほど、補正係数KGALO2Mが減少するように設定されている。
ステップS98では、下記式(4)に基本燃料噴射量TIM、大気圧補正係数KPA及びステップS97で算出された補正係数KGALO2Mを適用し、第1排気量パラメータGALO2Mを算出する。
GALO2M=GALO2M+TIM×KPA×KGALO2M (4)
ここで右辺のGALO2Mは、前回算出値である。
基本燃料噴射量TIMは、エンジン運転状態(エンジン回転数NE及び吸気管内絶対圧PBA)に応じて空燃比が理論空燃比となるように設定されるので、エンジン1の単位時間当たりの吸入空気量、したがって排気量に比例するパラメータである。したがって図7の処理により、下流側O2センサ19の故障判定実行条件が成立し、かつ上流側O2センサ出力SVO2が第2上流側基準値SVO2LO2Mを超えた時点からの積算排気量に対応する第1排気量パラメータGALO2Mが算出される。
劣化判定実行中は空燃比は理論空燃比よりリッチ側の一定リッチ空燃比(KCMDRMに対応する値)に維持されるので、この排気量パラメータGALO2Mは、排気中に含まれる還元成分(HC、CO)の積算量に比例する値を有する。また、排気量パラメータGALO2Mは、エンジン運転状態がほぼ一定であれば、積算開始時点からの経過時間に比例する。これらの点は、後述する他の排気量パラメータについても同様である。
図9は、図3のステップS42で実行されるSOx濃度判定処理のフローチャートである。
ステップS101では、濃度判定終了フラグFSLFENDが「1」であるか否かを判別する。最初は、FSLFEND=0であるので、ステップS102に進み、上流側O2センサ出力SVO2が第3上流側基準値SVO2LNCS(例えば、0.3V)以上であるか否かを判別する。この答が否定(NO)であるときは直ちにステップS104に進む。SVO2≧SVO2LNCSであるときは、第1基準オーバフラグFSVO2EXPLを「1」に設定し(ステップS103)、ステップS104に進む。
ステップS104では、第1基準オーバフラグFSVO2EXPLが「1」であるか否かを判別し、その答が否定(NO)であるときは、第2排気量パラメータGSLFFINの記憶値GSLFTWCH及び第2排気量パラメータGSLFFINを「0」に設定する(ステップS105)。その後ステップS110に進む。記憶値GSLFTWCHは、後述するステップS111で、その時点の第2排気量パラメータGSLFFINに設定される。
ステップS104でFVO2EXPL=1であるときは、第2基準オーバフラグFSVO2EXPHが「1」であるか否かを判別する(ステップS106)。最初はこの答が否定(NO)であるので、ステップS107に進み、吸気管内絶対圧PBAに応じて図11に示すKGSLFPBテーブルを検索し、補正係数KGSLFPBを算出する。KGSLFPBテーブルは、吸気管内絶対圧PBAが高くなるほど、補正係数KGSLFPBが減少するように設定されている。
ステップS108では、下記式(5)に基本燃料噴射量TIM、大気圧補正係数KPA及びステップS107で算出された補正係数KGSLFPBを適用し、第2排気量パラメータGSLFFINを算出する。その後ステップS110に進む。第2排気量パラメータGSLFFINは、上流側O2センサ出力SVO2が第3上流側基準値SVO2LNCSを越えた時点からの排気量積算値に対応する(図12参照)。
GSLFFIN=GSLFFIN+TIM×KPA×KGSLFPB (5)
ここで右辺のGSLFFINは、前回算出値である。
ステップS110では、上流側O2センサ出力SVO2が第4上流側基準値SVO2SLFT(例えば、0.7V)より高いか否かを判別し、その答が否定(NO)であるときは、記憶値GSLFTWCHをその時点の第2排気量パラメータGSLFFINに設定し(ステップS111)、ステップS112に進む。SVO2>SVO2SLFTであるときは、直ちにステップS112に進む。すなわち、記憶値GSLFTWCHは、上流側O2センサ出力SVO2が第3上流側基準値SVO2LNCSから第4上流側基準値SVO2SLFTに達するまでの排気量積算値に相当する。
ステップS112では、上流側O2センサ出力SVO2が第5上流側基準値SVO2SLF(例えば0.78V)より高いか否かを判別し、その答が否定(NO)であるときは、直ちにステップS114に進む。SVO2>SVO2SLFであるときは、第2基準オーバフラグFSVO2EXPHを「1」に設定する(ステップS113)。そのステップS114に進む。第2基準オーバフラグFSVO2EXPHが「1」に設定されると、以後の処理では、ステップS106から直ちにステップS114に進む。
ステップS114では、第2排気量パラメータGSLFFINが所定閾値GSLFFIN0以上であるか否かを判別し、この答が否定(NO)であるときは、第2基準オーバフラグFSVO2EXPHが「1」であるか否かを判別する(ステップS116)。FSVO2EXPH=0であるときは直ちに本処理を終了し、FSVO2EXPH=1であるときは、ステップS117に進む。
ステップS114でGSLFFIN≧GSLFFIN0であるときは、第1高濃度フラグFSLFGを「1」に設定し(ステップS115)、ステップS117に進む。ステップS14の答が肯定(YES)となるのは、図12に実線で示すように、上流側O2センサ出力SVO2が第3上流側基準値SVO2LNCSを超えた時点から積算される第2排気パラメータGSLFFINが所定閾値GSLFFIN0に達するまでに、上流側O2センサ出力SVO2が第5上流側基準値SVO2SLFに達しなかった場合であり、これは上流側O2センサ18の検出値に影響を与える程度にSOx濃度が高いことを示す。したがって、第1高濃度フラグFSLFGが「1」に設定される。なお、図12の破線は、第2排気パラメータGSLFFINが所定閾値GSLFFIN0に達するまでに、上流側O2センサ出力SVO2が第5上流側基準値SVO2SLFを超えた例を示す。この場合には、本処理は、ステップS114からステップS116を経由してステップS117に至る。
ステップS117では、なまし演算フラグFGSLFAVEが「1」であるか否かを判別する。最初はFGSLFAVE=0であるので、ステップS119に進み、なまし値GSLFAVEをその時点の第2排気量パラメータGSLFFINに設定し、なまし演算フラグFGSLFAVEを「1」に設定する(ステップS120)。その後ステップS121に進む。
なまし演算フラグFGSLFAVEが「1」に設定されると、以後の処理ではステップS117からステップS118に進み、下記式(6)により第2排気量パラメータGSLFFINのなまし値GSLFAVEを算出する。その後ステップS121に進む。なまし値GSLFAVEは、イグニッションスイッチがオフされてもその値が保持される。
GSLFAVE=CGSLFAVE×GSLFFIN
+(1−CGSLFAVE)×GSLFAVE (6)
ここでCGSLFAVEは、0から1の間の値に設定されるなまし係数、右辺のGSLFAVEは、前回算出値である。
ステップS121では、第2排気量パラメータGSLFFINがなまし値GSLFAVE以上か否かを判別し、その答が肯定(YES)であるときは、第3排気量パラメータGSLFを、第2排気量パラメータGSLFFINに設定し(ステップS122)、濃度判定終了フラグFSLFENDを「1」に設定する(ステップS124)。GSLFFIN<GSLFAVEであるときは、第3排気量パラメータGSLFをなまし値GSLFAVEに設定し(ステップS123)、前記ステップS124に進む。
濃度判定終了フラグFSLFENDが「1」に設定されると、以後処理ではステップS101から直ちに本処理を終了する。
図13は、図3のステップS43で実行される前演算処理のフローチャートである。
ステップS131では、リッチ化継続フラグFRSPEXTが「1」であるか否かを判別し、FRSPEXT=1であるときは直ちに本処理を終了する。FRSPEXT=0であるときは、前演算完了フラグFLVLNCENDが「1」であるか否かを判別する(ステップS132)。最初はこの答は否定(NO)であるので、ステップS133に進み、図15に示すGALNCSH算出処理を実行し、第4排気量パラメータGALNCSHを算出する。
図15のステップS141では、上流側O2センサ出力SVO2が第6上流側基準値SVO2LNCH(例えば0.7V)以下か否かを判別し、SVO2≦SVO2LNCHであるときは、第4排気量パラメータGALNCSHを「0」に設定して(ステップS142)、本処理を終了する。
O2センサ出力SVO2が第6上流側基準値SVO2LNCH(図17、実線L1参照)を越えると、吸気管内絶対圧PBAに応じて図16に示すKNACPBSテーブルを検索し、吸気圧補正係数KNACPBSを算出する(ステップS144)。KNACPBSテーブルは、吸気管内絶対圧PBAが高くなるほど、吸気圧補正係数KNACPBSが減少するように設定されている。
続くステップS145では、下記式(7)に吸気圧補正係数KNACPBSを適用し、第4排気量パラメータGALNCSHを算出する。
GALNCSH=GALNCSH
+TIM×KPA×KNACPBS (7)
右辺のGALNCSHは、前回算出値である。
第4排気量パラメータGALNCSHは、上流側O2センサ出力SVO2が第6上流側基準値SVO2LNCHを越えた時点(図17,時刻t1)から、NOx浄化装置15に流入する排気量の積算値に対応する。
図13に戻り、ステップS134では、カウンタCGALNCVの値に応じて図14に示すGALNCVテーブルを検索し、排気量閾値GALNCVを算出する。GALNCVテーブルは、カウンタCGALNCVの値が増加するほど、排気量閾値GALNCVが増加するように設定されている。
ステップS135では、ステップS133で算出した第4排気量パラメータGALNCSHが排気量閾値GALNCV以上であるか否かを判別し、この答が否定(NO)であるときは直ちに本処理を終了する。GALNCSH≧GALNCVであるときは、ステップS136〜S138により、下流側O2センサ出力LVO2を順次記憶する。すなわち、記憶値をカウンタCGALNCVの値を用いて、LVGALN(CGALNCV)と表すと、記憶値LVGALN(CGALNCV)をその時点の下流側O2センサ出力LVO2に設定し(ステップS136)、カウンタCGALNCVの値を「1」だけインクリメントする(ステップS137)。ステップS138では、カウンタCGALNCVの値が「30」以上であるか否かを判別し、その答が否定(NO)であるときは直ちに本処理を終了する。カウンタCGALNCVの値が「30」に達すると、ステップS139に進み、前演算完了フラグFLVLNCENDを「1」に設定する。
前演算完了フラグFLVLNCENDが「1」に設定されると、以後の処理では、ステップS132から直ちに本処理を終了する。すなわち、第4排気量パラメータGALNCSHが、徐々に増加する排気量閾値GALNCVに達した時点において、30個(CGALNCV=0〜29)の下流側O2センサ出力LVO2を記憶すると前演算処理が完了する。
図18は、図3のステップS44で実行される仮判定処理のフローチャートである。
ステップS151では、リッチ化継続フラグFRSPEXTが「1」であるか否かを判別し、FRSPEXT=0であるときは、仮判定フラグFPREJUD1が「1」であるか否かを判別する(ステップS152)。FPREJUD1=0であるときは、濃度判定終了フラグFSLFENDが「1」であるか否かを判別する(ステップS153)。FSLFEND=1であるときは、前演算完了フラグFLVLNCENDが「1」であるか否かを判別する(ステップS154)。
ステップS151またはS153の答が肯定(YES)、あるいはステップS153またはS154の答が否定(NO)であるときは、直ちに本処理を終了する。すなわち、本処理は、SOx濃度判定処理(図9及び図10)、及び前演算処理(図13)の終了後に、実質的に実行される。ステップS154の答が肯定(YES)であるときは、第2排気量パラメータGSLFFINに応じて図20(a)に示すNLVGALテーブルを検索し、記憶値選択パラメータNLVSLFを、検索により得られたNLVGAL値に設定する(ステップS155)。
ステップS156では、下流側O2センサ出力LVO2の記憶値LVGALN(NLVSLF)が第1下流側基準値LVO2LNL(例えば0.645V)以下か否かを判別し、この答が肯定(YES)であるときは、記憶値LVGALN(NLVSLF)が第2下流側基準値LVO2STP(例えば0.5V)以下か否かを判別する(ステップS161)。LVGALN(NLVSLF)≦LVO2STPであるときは、ステップS164(図19)に進む。
ステップS156でLVGALN(NLVSLF)>LVO2LNLであるときは、SOxの影響で誤判定をする可能性があるため、先ずSOx除去終了フラグFSRMOVENDが「1」であるか否かを判別する(ステップS157)。FSRMOVEND=0であってSOx除去処理が終了していないときは、第3排気量パラメータGSLFが、SOx濃度判定閾値SLFJUD以上か否かを判別する(ステップS158)。GSLF≧SLFJUDであるときは、第2高濃度フラグFSLFを「1」に設定して(ステップS159)、ステップS176に進む。第2高濃度フラグFSLFが「1」に設定されると、下流側O2センサ近傍において、SOx濃度がO2センサ出力に影響を与える程度に高いことを示す。この場合には、劣化判定は中止される(図23,ステップS214,S215)。
ステップS157でFSRMOVEND=1であるとき、またはステップS158でGSLF<SLFJUDであるときは、ステップS160に進み、記憶値GSLFTWCH(図9,ステップS111参照)が、所定閾値GSLFTJUD以上か否かを判別する。この答が肯定(YES)であるときは、ステップS176に進み、GSLFTWCH<GSLFTJUDであるときは、ステップS162に進む。この場合は、SOxの影響はほとんど無いと考えられるのに、下流側O2センサ出力が高めになっていることを示すので、NOx浄化装置15が劣化している可能性があると判定される。
またステップS161の答が否定(NO)、すなわちLVGALN(NLVSLF)>LVO2STPであるときも、下流側O2センサ出力が少し高くなっているので、NOx浄化装置15が劣化している可能性があると判定し、ステップS162に進む。
ステップS162では、カウンタNDCT105の値が所定値NLNCAVE(例えば、6)以上であるか否かを判別する。ウンタNDCT105は、図21の処理で初期化及びカウントアップが行われる。
NDCT105<NLNCAVEであるときは、以下に説明するステップ変化フラグFLNCSTPが前回「1」に設定された直後であるため、ステップS164に進む。一方、NDCT105≧NLNCAVEであるときは、ステップ変化フラグFLNCSTPを「1」に設定する(ステップS163)。これは、NOx浄化装置15が劣化した可能性がある判定されたことを示す。
ステップS164では、図21に示す平均化演算処理を実行する。図21のステップS181では、カウンタNDCT105の前回値NDCT105Zを、そのときのカウンタNDCT105の値に設定する。ステップS182では、ステップ変化フラグFLNCSTPが「1」であるか否かを判別する。FLNCSTP=0であるときは、カウンタNDCT105の値が所定値NLNCAVE以上であるか否かを判別する(ステップS185)。NDCT105<NLNCAVEであるときは、カウンタNDCT105を「1」だけインクリメントし(ステップS186)、ステップS187に進む。カウンタNDCT105の値が所定値NLNCAVEに達すると、ステップS186をスキップして直ちにステップS187に進む。
ステップS187では、カウンタNDCT105の値が2以上であるか否かを判別し、NDCT105<2であるときは、ステップS195に進み、平均化排気量パラメータGSLFFAVの前回値GSLFFAVZを、今回値GSLFFAVに設定する。ステップS196では、平均化排気量パラメータGSLFFAVを、第2排気量パラメータGSLFFINに設定し、平均化排気量パラメータGSLFFAVの初期化を行う。
ステップS197〜S201では、下流側O2センサ出力LVO2のなまし値LVGAAVの初期化を行う。なまし値LVGAAVは、下流側O2センサ出力LVO2の30個の記憶値LVGALNに対応して、30個演算され、メモリに記憶される。ステップS197では、パラメータiを「0」に初期化し、ステップS198では、なまし値の前回値LVGAAVZ(i)を、今回値LVGAAV(i)に設定する。ステップS199では、今回値LVGAAV(i)を、記憶値LVGALN(i)に設定し、ステップS200では、パラメータiを「1」だけインクリメントする。次いでパラメータiが30以上か否かを判別する(ステップS201)。パラメータiが30に達するまでステップS198に戻り、30に達すると、ステップS202に進む。正常判定受領フラグFTO2OKRVを「0」に設定する。正常判定受領フラグFTO2OKRVは、下流側O2センサ19の仮正常判定がなされると、「1」に設定される(図23:ステップS224,図24:ステップS240参照)。正常判定受領フラグFTO2OKRVの値、なまし値LVGAAV(i)、及びなまし値の前回値LVGAAVZ(i)は、イグニッションスイッチがオフされたときもメモリに保持される。
ステップS187でNDCT105の値が「2」以上であるときは、平均化排気量パラメータの前回値GSLFFAVZを、今回値GSLFFAVに設定する(ステップS188)。ステップS189では、下記式(8)に第2排気量パラメータGSLFFINを適用し、平均化排気量パラメータGSLFFAVを算出する。平均化排気量パラメータGSLFFAV及びその前回値GSLFFAVZの値は、イグニッションスイッチがオフされた後も保持される。
GSLFFAV=(1−CLNCAVE)×GSLFFAVZ
+CLNCAVE×GSLFFIN (8)
ここで、CLNCAVEは、0から1の間の値に設定されるなまし係数である。
ステップS190〜S194では、下流側O2センサ出力LVO2のなまし値LVGAAV(i)の算出を行う。ステップS190では、パラメータiを「0」に設定し、ステップS191では、なまし値の前回値LVGAAVZ(i)を、今回値LVGAAV(i)に設定する。ステップS192では、下記式(9)に下流側O2センサ出力LVO2の記憶値LVGALN(i)を適用し、なまし値LVGAAV(i)を算出する。
LVGAAV(i)=(1−CLNCAVE)×LVGAAVZ(i)
+CLNCAVE×LVGALN(i) (9)
ステップS193では、パラメータiを「1」だけインクリメントし、ステップS194では、パラメータiが30以上であるか否かを判別する。パラメータiが30に達するまでステップS191に戻り、30に達すると、前記ステップS202に進む。
ステップS182でステップ変化フラグFLNCSTPが「1」であるときは、カウンタNDCT105の値を「1」に戻すとともに(ステップS183)、ステップ変化フラグFLNCSTPを「0」に戻す(ステップS184)。その後ステップS195に進む。したがって、ステップ変化フラグFLNCSTPが「1」に設定されると、平均化排気量パラメータGSLFFAVは、第2排気量パラメータGSLFFINそのもの(平均化していない値)に設定することにより、初期化される。また、下流側O2センサ出力LVO2のなまし値LVGAAV(i)は、記憶値LVGALN(i)(平均化していない下流側O2センサ出力値)に設定することにより、初期化される。すなわち、ステップ変化フラグFLNCSTPが「1」に設定され、NOx浄化装置15が劣化している可能性があるときには、平均化排気量パラメータGSLFFAV及びなまし値LVGAAV(i)に代えて第2排気量パラメータGSLFFIN及び記憶値LVGALN(i)を用いて、劣化判定が実行される。ステップ変化フラグFLNCSTPは、ステップS184で直ちに「0」に戻されるので、初期化後は、初期化前の過去値の影響が排除された平均化排気量パラメータGSLFFAV及びなまし値LVGAAV(i)が算出され、劣化判定に用いられる。すなわち、第2排気量パラメータGSLFFIN及び下流側O2センサ出力LVO2の過去値の影響を排除して、劣化判定が行われるので、劣化しているとの判定結果を得るまでの期間を、従来に比べて短縮することができる。
図19に戻り、ステップS165では、カウンタNDCT105の値及び平均化排気量パラメータGSLFFAVに応じて、図20(b)に示すDNLVGHj(j=1〜6)テーブルを検索し、第1補正項DNLVGHを算出する。DNLVGHjテーブルは、DNLVGH1〜DNLVGH6の6個のテーブルからなり、カウンタNDCT105の値に応じて、DNLVGH1〜DNLVGH6テーブルのいずれかが選択され、平均化排気量パラメータGSLFFAVに応じて、第1補正項DNLVGHが算出される。カウンタNDCT105の値(=j)が「1」のときには、DNLVGH1テーブルが選択され、カウンタNDCT105の値が「2」のときには、DNLVGH2テーブルが選択され、カウンタNDCT105の値が「6」のときには、DNLVGH6テーブルが選択される。図20(b)には、DNLVGH3テーブル〜DNLVGH5テーブルは示されていないが、カウンタNDCT105の値が「3」〜「5」である場合に対応して、同様にDNLVGH3テーブル〜DNLVGH5テーブルが選択される。第1補正項DNLVGHは、カウンタNDCT105の値が大きくなるほど、減少するように設定される。
ステップS167では、カウンタNDCT105の値及び平均化排気量パラメータGSLFFAVに応じて、図20(c)に示すDNLVGLj(j=1〜6)テーブルを検索し、第2補正項DNLVGLを算出する。DNLVGLjテーブルは、実際にはDNLVGL1〜DNLVGL6の6個のテーブルからなり、カウンタNDCT105の値に応じて、DNLVGL1〜DNLVGL6テーブルのいずれかが選択され、平均化排気量パラメータGSLFFAVに応じて、第2補正項DNLVGLが算出される。カウンタNDCT105の値(=j)が「1」のときには、DNLVGL1テーブルが選択され、カウンタNDCT105の値が「2」のときには、DNLVGL2テーブルが選択され、カウンタNDCT105の値が「6」のときには、DNLVGL6テーブルが選択される。図20(c)には、DNLVGL3テーブル〜DNLVGL5テーブルは示されていないが、カウンタNDCT105の値が「3」〜「5」である場合に対応して、同様にDNLVGL3テーブル〜DNLVGL5テーブルが選択される。第1補正項DNLVGLは、カウンタNDCT105の値が大きくなるほど、減少するように設定される。
ステップS168では、平均化排気量パラメータGSLFFAVに応じて図20(a)に示すNLVGAHテーブルを検索し、第1選択インデックスNLVGA1を算出する。ステップS169では、平均化排気量パラメータGSLFFAVに応じて図20(a)に示すNLVGALテーブルを検索し、第2選択インデックスNLVGA2を算出する。図20(a)から明らかなように、NLVGAHテーブル及びNLVGALテーブルは、NLVGAH>NLVGALという関係を満たすように設定されている。すなわち、第1選択インデックスNLVGAHの方が、第2選択インデックスNLVGALより、遅い検出タイミングのなまし値LVGAAV(i)を指示する。
図20(a)に示すNLVGAHテーブル及びNLVGALテーブルは、SOxによる影響あるいは三元触媒の劣化による影響を排除できようなタイミングのデータ(LVO2)を取り出すように設定されている。これらのテーブルに基づいて選択されるなまし値LVGAAV(i)を用いることにより、下流側O2センサ19へのSOxの影響を排除し、NOx浄化装置15の劣化判定の精度を向上させることができる。
ステップS170では、下記式(10)及び式(11)に第1選択インデックスNLVGAH、第2選択インデックスNLVGAL、第1補正項DNLVGH、及び第2補正項DNLVGLを適用し、第1補正選択インデックスNLVGAH及び第2補正選択インデックスNLVGALを算出する。
NLVGAH=NLVGA1−DNLVGH (10)
NLVGAL=NLVGA2−DNLVGL (11)
ステップS171では、第1補正選択インデックスNLVGAH及び第2補正選択インデックスNLVGALを用いて、記憶されている下流側O2センサ出力のなまし値の中から、劣化判定用のなまし値LVGALNCL及び正常判定用のなまし値LVGALNCHを選択する。すなわち、劣化判定用のなまし値LVGALNCLを、記憶されているなまし値LVGAAV(NLVGAL)に設定するとともに、正常判定用のなまし値LVGALNCHを、記憶されているなまし値LVGAAV(NLVGAH)に設定する。
以上のように、平均化排気量パラメータGSLFFAVに応じて補正選択インデクスNLVGAH及びNLVGALを算出し、これらを用いてなまし値LVGAAV(i)を選択することにより、適切な検出タイミングのなまし値LVGAAV(i)を選択し、正確な劣化判定を行うことができる。
さらに本実施形態では、ステップ変化フラグFLNCSTPが「1」に設定され、平均化演算(なまし値LVGAAV)の初期化を行ったときは、その後の平均化演算の実行回数を示すカウンタNDCT105の値に応じて、補正項DNLVGH及びDNLVGLを算出し、選択インデックスを補正するようにしたので、平均化演算の初期化直後においても、正確な劣化判定を行うことできる。
ステップS172では、正常判定用のなまし値LVGALNCHが第4下流側基準値LVO2LNCH(例えば0.6V)以下であるか否かを判別し、その答が肯定(YES)であるときは、NOx浄化装置15が正常である可能性が高いと判定し、仮正常フラグFKOKF105を「1」に設定するとともに、判定保留フラグFGRAYF105を「0」に設定する(ステップS173)。
ステップS172でLVGALNCH>LVO2LNCHであるときは、劣化判定用のなまし値LVGALNCLが第1下流側基準値LVO2LNL(例えば0.645V)以下であるか否かを判別する(ステップS174)。その答が否定(NO)であるときは、下流側O2センサ出力LVO2のリッチ側への移行が早いので、NOx浄化装置15が劣化している可能性が高いと判定し、仮正常フラグFKOKF105を「0」に設定するとともに、判定保留フラグFGRAYF105を「0」に設定する(ステップS175)。
ステップS174でLVGALNCL≦LVO2LNLであるときは、正常あるいは劣化のいずれとも判定できないので、ステップS176に進み、判定保留フラグFGRAYF105を「1」に設定するとともに、仮正常フラグFKOKF105を「0」に設定する。
ステップS177では、仮判定フラグFPREJUD1を「1」に設定する。
図22は、NOx浄化装置15が劣化した可能性があると判定したときに、ステップ変化フラグFLNCSTPを「1」に設定して、平均化演算(なまし値LVGAAV)の初期化を行うことによる効果を説明するためのタイムチャートである。この図において、n−4,n−3,n−2,n−1,n,n+1,…,n+5は、図3に示す劣化判定処理の実行周期に対応した離散化時刻を示す。図22には、時刻nにおいて、図18のステップS161の答が否定(NO)となり、ステップ変化フラグFLNCSTPが「1」に設定された例が示されている。また、実線L1が平均化していない下流側O2センサ出力LVO2(フローチャート上では記憶値LVGALN)の推移を示し、一点鎖線L2が、なまし値LVGAAVの推移を示し、実線L3は、ステップ変化フラグFLNCSTPを用いない従来の判定手法を適用した場合の、なまし値LVGAAVに相当するパラメータLVGAAVPXの推移を示す。
時刻nにおいて、ステップ変化フラグFLNCSTPが「1」に設定されると、なまし値LVGAAVは、記憶値LVGALNに設定されて初期化される(図21,ステップS199参照)。その後は、初期化前の下流側O2センサ出力を除いて、記憶値LVGALNのなまし値LVGAAVの演算が行われるので、記憶値LVGALNと、なまし値LVGAAVとは、近い値となり、時刻(n+5)において、なまし値LVGAAVが判定閾値LVO2LNLMODを越え、NOx浄化装置15が劣化していると判定される。
これに対し、従来の判定手法では、なまし値LVGAAVPXの初期化は行われないので、実線L3で示すように、なまし値LVGAAVPXは徐々に増加する。したがって、なまし値LVGAAVPXが判定閾値LVO2LNLMODを超えて劣化判定がなされるのは、時刻(n+5)よりかなり遅れることになる。
なお、図19のステップS174では、劣化判定閾値は、第1下流側基準値LVO2LNLであるが、比較の対象となるなまし値LVGALNCLが、カウンタNDCT105の値及び平均化排気量パラメータGSLFFAVに応じて補正されているため、等価的には、判定閾値が変更されていることに相当する。そのため、図22では、等価的に変化する判定閾値をLVO2LNLMODとして示している。すなわち、本実施形態では、なまし値LVGAAVを初期化したときは、判定閾値LVO2LNLMODが、劣化しているとの判定がなされ難い値(より大きな値)に先ず変更され、徐々に劣化しているとの判定がなされ易い方向に(徐々に減少するように)変更される。これにより、平均化演算の対象となった記憶値LVGALNの数が少ない段階での誤判定を防止し、正確な判定を行うことができる。
図23は、図3のステップS45で実行される第1最終判定処理のフローチャートである。
ステップS211では、待機フラグFTO2WAITが「1」であるか否かを判別する。FTO2WAIT=1であって下流側O2センサ19の故障判定の終了待ちのときは、直ちにステップS216に進む。FTO2WAIT=0であるときは、仮判定フラグFPREJUD1が「1」であるか否かを判別する(ステップS212)。この答が否定(NO)であって仮判定処理(図18,図19)が終了していないときは、直ちに本処理を終了する。
FREJUD1=1であるときは、ステップS213に進み、判定保留フラグFGRAYF105が「1」であるか否かを判別する。FGRAYF105=0であるときは、第2高濃度フラグFSLFが「1」であるか否かを判別する(ステップS214)。ステップS213またはS214の答が肯定(YES)であるときは、ステップS215に進み、実施条件フラグFMCNDF105及び故障判定実施条件フラグFMCDF103Bをともに「0」に設定し、NOx浄化装置15の劣化判定及び下流側O2センサ19の故障判定を中止する。
ステップS214でFSLF=0であって、下流側O2センサ19の近傍におけるSOx濃度が低いときは、ステップS216に進み、下流側O2センサ19の仮正常フラグFKOKF103が「1」であるか否かを判別する。この答が否定(NO)であるときは、待機フラグFTO2WAIT及びリッチ化継続フラグFRSPEXTをともに「1」に設定する(ステップS217)。
ステップS216でFKOKF103=1であって、下流側O2センサ19の仮の正常判定がなされているときは、SOx除去終了フラグFSRMOVEND及び第2高濃度フラグFSLFをともに「0」に設定し(ステップS218)、NOx浄化装置15の仮正常フラグFKOKF105が「1」であるか否かを判別する(ステップS219)。FKOKF105=0であるときは、直ちにNOx浄化装置15は劣化していると判定し、劣化フラグFFSDF105を「1」に設定するとともに、正常フラグFOKF105を「0」に設定する(ステップS220)。その後ステップS223に進み、判定完了フラグFDONEF105を「1」に設定する。次いで劣化判定終了フラグFENDF105を「1」に設定するとともに、正常判定受領フラグFTO2OKRVを「1」に設定する(ステップS224)。
ステップS219でFKOKF105=1であって仮の正常判定がなされているときは、カウンタNDCT105の値が、所定値NLNCAVE以上であるか否かを判別する(ステップS221)。その答が否定(NO)であるときは、直ちにステップS224に進み、正常または劣化との判定を行うことなく、劣化判定を終了する。
ステップS221でNDCT105≧NLNCAVEであるときは、NOx浄化装置15は正常と判定し、正常フラグFOKF105を「1」に設定するとともに、劣化フラグFFSDF105を「0」に設定する(ステップS222)。その後前記ステップS223に進む。
図23の処理によれば、仮正常フラグFKOKF105が「0」であるときは、直ちに劣化判定が行われる(確定される)(ステップS219,S220)。したがって、ステップ変化フラグFLNCSTPが「1」に設定され、平均化演算が初期化された直後において、劣化したとの判定を迅速に行うことができる。また仮正常フラグFKOKF105が「1」であるときは、カウンタNDCT105の値が所定値NLNCAVEに達した後に、正常判定が行われる(確定される)(ステップS219,S221,S222)。したがって、ステップ変化フラグFLNCSTPが「1」に設定され、平均化演算が初期化された直後においては、正常判定は直ちに確定せず、所定値NLNCAVEに相当する検出データの平均化演算が行われた後に確定する。これにより、正常判定の精度を高めることができる。
図24は、図3のステップS37で実行される第2最終判定処理のフローチャートである。
ステップS231では、劣化判定終了フラグFENDF105が「1」であるか否かを判別し、FENDF105=0であるときは、待機フラグFTO2WAITが「1」であるか否かを判別する(ステップS232)。FTO2WAIT=1であるときは、下流側O2センサ19の仮正常フラグFKOKF103が「1」であるか否かを判別する(ステップS233)。
ステップS231の答が肯定(YES)、あるいはステップS232またはS233の答が否定(NO)であるときは、直ちに本処理を終了する。
ステップS233でFKOKF103が「1」であるときは、SOx除去終了フラグFSRMOVEND及び第2高濃度フラグFSFLをともに「0」に設定する(ステップS234)。ステップS235では、仮正常フラグFKOKF105が「1」であるか否かを判別し、FKOKF105=0であるときは、直ちにNOx浄化装置15は劣化していると判定し、劣化フラグFFSDF105を「1」に設定するとともに、正常フラグFOKF105を「0」に設定する(ステップS236)。その後ステップS239に進み、判定完了フラグFDONEF105を「1」に設定する。次いで劣化判定終了フラグFENDF105を「1」に設定するとともに、正常判定受領フラグFTO2OKRVを「1」に設定する(ステップS240)。
ステップS235でFKOKF105=1であって仮の正常判定がなされているときは、カウンタNDCT105の値が、所定値NLNCAVE以上であるか否かを判別する(ステップS237)。その答が否定(NO)であるときは、直ちにステップS240に進み、正常または劣化との判定を行うことなく、劣化判定を終了する。
ステップS237でNDCT105≧NLNCAVEであるときは、NOx浄化装置15は正常と判定し、正常フラグFOKF105を「1」に設定するとともに、劣化フラグFFSDF105を「0」に設定する(ステップS238)。その後前記ステップS239に進む。
図24のステップS233〜S240は、図23のステップS216,S219〜S224に対応し、図23の処理と同様に、劣化したとの判定を迅速に行うとともに正常判定の精度を高めることができる。
図25及び図26は、下流側O2センサ19の故障判定を行う処理のフローチャートである。この処理は、所定時間(例えば10ミリ秒)毎にECU5のCPUで実行される。
ステップS251では、故障判定指令フラグFGOF103が「1」であるか否かを判別する。FGOF103=1であるときは、待機フラグFTO2WAITが「1」であるか否かを判別する(ステップS252)。FTO2WAIT=1であるときは、ステップS256に進み、FTO2WAIT=0であるときは、故障判定実施条件フラグFMCDF103Bが「1」であるか否かを判別する(ステップS253)。FGOF103=0であるとき、またはFMCDF103B=0であって、故障判定実施条件が成立していないときは、ゾーンパラメータLZONEを「0」に設定する(ステップS254)。ゾーンパラメータLZONEは、後述するステップS256〜S264において、下流側O2センサ出力LVO2に応じた値に設定される。
ステップS255では、第1ゾーンフラグFLZONE1、第2ゾーンフラグFLZONE3、及び仮正常フラグFKOKF103をいずれも「0」に設定する。第1ゾーンフラグFLZONE1は、ゾーンパラメータLZONEが「1」に設定されるとき「1」に設定され(ステップS258)、第2ゾーンフラグFLZONE3は、ゾーンパラメータLZONEが「3」に設定されるとき「1」に設定される(ステップS263)。さらにステップS277(図26)では、リッチ化継続フラグFRSPEXTを「0」に設定し、本処理を終了する。
故障判定実施条件が成立しているときは、ステップS253からS256に進み、下流側O2センサ出力LVO2が第3下流側基準値LVO2LNCL(例えば0.3V)以下か否かを判別する。LVO2≦LVO2LNCLであるときは、ゾーンパラメータLZONEを「1」に設定し(ステップS257)、第1ゾーンフラグFLZONE1を「1」に設定する(ステップS258)。その後ステップS265に進む。
ステップS256でLVO2>LVO2LNCLであるときは、下流側O2センサ出力LVO2が第4下流側基準値LVO2LNCH(例えば0.7V)以下か否かを判別する(ステップS259)。LVO2≦LVO2LNCHであるときは、ゾーンパラメータLZONEを「2」に設定し(ステップS260)、ステップS265に進む。
ステップS259でLVO2>LVO2LNCHであるときは、下流側O2センサ出力LVO2が第5下流側基準値LVO2OPEN(例えば1.5V)以下か否かを判別する。LVO2≦LVO2OPENであるときは、ゾーンパラメータLZONEを「3」に設定し(ステップS262)、第2ゾーンフラグFLZONE3を「1」に設定する(ステップS263)。その後ステップS265に進む。
ステップS261でLVO2>LVO2OPENであるときは、ゾーンパラメータLZONEを「4」に設定し(ステップS264)、ステップS265に進む。
ステップS265では、第1ゾーンフラグFLZONE1が「1」であるか否かを判別し、FLZONE1=1であるときは、第2ゾーンフラグFLZONE3が「1」であるか否かを判別する(ステップS266)。第1ゾーンフラグFLZONE1及び第2ゾーンフラグFLZONE3がともに「1」であるときは、下流側O2センサ19は正常である可能性が高いと判定し、ステップS267に進み、仮正常フラグFKOKF103が「1」であるか否かを判別する。その答が肯定(YES)であるときは直ちにステップS271に進む。
FKOKF103=0であるときは、出力記憶値LVO2RTを、その時点の下流側O2センサ出力LVO2に設定するとともに、ゾーン記憶値LZONERTを、その時点のゾーンパラメータLZONEに設定する(ステップS268)。次いで、仮正常フラグFKOKF103を「1」に設定し(ステップS270)、ステップS271に進む。
ステップS271では、判定完了フラグFDONEF105が「1」であるか否かを判別し、FDONEF105=0であってNOx浄化装置15が正常であるとの判定または劣化しているとの判定がなされていないときは、ステップS274に進み、劣化判定終了フラグFENDF105が「1」であるか否かを判別する。その答が否定(NO)であるときは直ちに本処理を終了する。FENDF105=1であって劣化判定が終了しているときは、故障判定終了フラグFENDF103を「1」に設定し(ステップS275)、待機フラグFTO2WAITを「0」に設定して(ステップS289)、本処理を終了する。
ステップS271で、FDONEF105=1であってNOx浄化装置15の劣化判定が完了しているときは、下流側O2センサ19は正常と判定し、O2センサ正常フラグFOKF103を「1」に設定する(ステップS273)。その後ステップS288に進み、故障判定完了フラグFDONEF103を「1」に設定し、前記ステップS289に進む。
ステップS265またはステップS266の答が否定(NO)であるときは、ステップS276に進み、故障判定実施条件フラグFMCDF103Bが「1」であるか否かを判別する。この答が否定(NO)であるときは、前記ステップS277に進み、FMCDF103B=1であって故障判定実施条件が成立しているときは、リッチ化継続フラグFRSPEXTが「1」であるか否かを判別する(ステップS278)。FRSPEXT=0であるときは、実施条件フラグFMCNDF105が「1」であるか否かを判別する(ステップS279)。FMCNDF105=0であってNOx浄化装置15の劣化判定実施条件が不成立であるときは、大幅低下フラグFSVMAXLNCが「1」であるか否かを判別する(ステップS280)。FSVMAXLNC=0であるときは、さらにゾーンパラメータLZONEが「1」であるか否かを判別する(ステップS281)。この答が否定(NO)であるとき、すなわち、下流側O2センサ19の故障判定実施条件が成立している(NOx浄化装置15に蓄積されたNOx量がほぼ飽和状態にある)が、NOx浄化装置15の劣化判定実施条件が不成立であって、かつ上流側O2センサ出力SVO2が、最大値SVMAXLNCから大きく低下していない場合において(FSVMAXLNC=0)、ゾーンパラメータLZONEが「1」でない(下流側O2センサ出力LVO2が第3下流側基準値LVO2LNCLより高い)ときは、下流側O2センサ19は、出力レベルが高い状態に固定された故障または断線故障と判定する。
ステップS285では、出力記憶値LVO2RTをその時点の下流側O2センサ出力LVO2に設定するとともに、ゾーン記憶値LZONERTを、その時点のゾーンパラメータLZONEに設定する。そしてステップS287で、O2センサ故障フラグFFSDF103を「1」に設定するとともに、O2センサ正常フラグFOKF103を「0」に設定する。その後前記ステップS288に進む。
ステップS279〜S281の何れかの答が肯定(YES)であるときは、直ちに本処理を終了する。
ステップS276でFRSPEXT=1であるときは、ステップS283に進み、第1排気量パラメータGALO2Mが、所定閾値GALO2RSP以上であるか否かを判別する。この答が否定(NO)であるときは、直ちに本処理を終了する。GALO2M≧GALO2RSPであるときは、空燃比をリッチ化し、かつ十分な量の排気がなされたにもかかわらず、ゾーンパラメータLZONEが「3」とならない(下流側O2センサ出力LVO2が第4下流側基準値LVO2LNCHを超えない)ので、下流側O2センサ19は故障していると判定し、前記ステップS285に進む。
図27は、上述したNOx浄化装置15の劣化判定処理及び下流側O2センサ19の故障判定処理を説明するためのタイムチャートである。この図において実線は、下流側O2センサ19が正常である場合に対応し、破線は下流側O2センサ19が短絡故障(センサ出力LVO2が「0」のままとなる故障)を起こしている場合に対応する。
時刻t11に劣化判定の実施条件が成立し、実施条件フラグFMCNDF105が「1」に設定される(図5,ステップS84)。時刻t12において上流側O2センサ出力SVO2が第2上流側基準値SVO2LO2Mを越え、第1排気量パラメータGALO2Mの積算が開始される(図7,ステップS94)。
時刻t14において仮正常フラグFKOKF105が「1」に設定されると(図19,ステップS173)、このとき、下流側O2センサ19の正常判定がなされていないため(FOKF103=0)、リッチ化継続フラグFRSPEXTが「1」に設定される(図23,ステップS217)。
時刻t15において、下流側O2センサ出力LVO2が、第4下流側基準値LVO2LNCHを越えて、ゾーンパラメータLZONEが「3」になると(図26,ステップS262)、下流側O2センサ19の正常判定がなされる。したがって、O2センサ正常フラグFOKF103が「1」に設定される(図26,ステップS273)とともに、正常フラグFOKF105が「1」に設定される(図23,ステップS222;図24,ステップS238)。
下流側O2センサ19が故障している場合には、破線で示すようにさらに空燃比のリッチ化が継続され、第1排気量パラメータGALO2Mが所定閾値GALO2RSPに達する時刻t16において、下流側O2センサ19の故障判定がなされる(O2センサ故障フラグFFSDF103が「1」に設定される(図26,ステップS287))。この場合は、正常フラグFOKF105は「0」に維持され、NOx浄化装置15の正常判定はなされない。
図28は、パラメータ初期化処理のフローチャートである。この処理は、イグニッションスイッチがオンされたとき実行される。
ステップS301では、正常判定受領フラグFTO2OKRVが「1」であるか否かを判別し、FTO2OKRV=1であるときは直ちに本処理を終了する。FTO2OKRV=0であるときは、カウンタNDCT105を、その前回値NDCT105Zに設定し(ステップS302)、さらに平均化排気量パラメータGSLFFAVを、その前回値GSLFFAVZに設定する(ステップS303)。
ステップS304〜S307では、下流側O2センサ出力LVO2のなまし値LVGAAV(i)(i=0〜29)の初期化を行う。すなわちパラメータiを「0」に設定し(ステップS304)、なまし値LVGAAV(i)を、その前回値LVGAAVZ(i)に設定し(ステップS305)、パラメータiを「1」だけインクリメントし(ステップS306)、パラメータiが30以上か否かを判別し(ステップS307)、パラメータiが30より小さいときは、ステップS305に戻り、30に達すると初期化を終了する。この初期化により、NOx浄化装置15の劣化判定については仮判定まで終了したが、下流側O2センサ19の故障判定結果が出る前に、イグニッションスイッチがオフされた場合でも、故障している可能性のある下流側O2センサの出力を平均化したなまし値LVGAAV(i)が使用されなくなるので、次のNOx浄化装置15の劣化判定を行うときに、信頼性が低い可能性のあるなまし値LGAAV(i)の影響を除くことができる。
図29は、SOx除去処理のフローチャートであり、この処理は所定時間(例えば100ミリ秒)毎にECU5のCPUで実行される。なお、SOx除去処理の実行中(FSLF=1かつFSRMOVEND=0であるとき)は、リーンバーン運転は禁止される(後述する図30参照)。
ステップS311では、第2高濃度フラグFSLFが「1」であるか否かを判別し、FSLF=0であるときは、第1のダウンカウンタCSRMOVに第1の所定値CTSRMOVS(例えば6000)を設定し(ステップS313)、第2のダウンカウンタCSADINTに第2の所定値CTSADDS(例えば48)を設定して(ステップS314)、本処理を終了する。第1の所定値CTSRMOSは、NOx浄化装置15のSOx吸着量が最大(飽和状態)の場合でも、全てのSOxを除去することができる時間に対応する値に設定される。
ステップS311でFSLF=1であってSOx濃度が高いと判定されているときは、SOx除去終了フラグFSRMOVENDが「1」であるか否かを判別する(ステップS312)。既にSOx除去処理が完了した場合には、この答は肯定(YES)となり、前記ステップS313に進む。FSRMOVEND=0であるときは、NOx浄化装置15の推定温度TCTが、所定温度TCTSF(例えば600℃)より高いか否かを判別する(ステップS315)。推定温度TCTは、図示しない処理により、例えばエンジンの運転状態、具体的にはエンジン回転数NE及びエンジン負荷(吸気管内絶対圧PBA)に応じて設定された温度マップを検索することにより、算出される。なおNOx浄化装置15の温度を検出する温度センサを設け、推定温度TCTをその検出温度に代えてもよい。
ステップS315においてTCT≦TCTSFであるときは、第2のダウンカウンタCSADINTの値が「0」以下か否かを判別する(ステップS318)。最初は、CSADINT>0であるので、第2のダウンカウンタCSADINTを「1」だけデクリメントし(ステップS319)、ステップS324に進む。その後、第2のダウンカウンタCSADINTの値が「0」となると、ステップS318からステップS320に進み、第1のダウンカウンタCSRMOVを「1」だけインクリメントする。次いで第2のダウンカウンタCSADINTに第2の所定値CTSADDSを設定し(ステップS321)、ステップS324に進む。
ステップS315でTCT>TCTSFであるときは、SOx除去リッチ化フラグFSRRを「1」に設定し、空燃比を理論空燃比よりリッチ側の値に設定する(ステップS316)(図2、ステップS10、S29参照)。次いで、検出当量比KACTが所定当量比KACTSRM(例えば1.03)以上か否かを判別し(ステップS317)、KACT<KACTSRMであるときは前記ステップS318に進む。KACT≧KACTSRMであるときは、第1のダウンカウンタCSRMOVを「1」だけデクリメントし(ステップS322)、第2のダウンカウンタCSADINTに第2の所定値CTSADDSを設定して(ステップS323)、ステップS324に進む。
ステップS324では、第1のダウンカウンタCSRMOVの値が第1の所定値CTSRMOVS以下であるか否かを判別し、CSRMOV≦CTSRMOVSであるときは直ちにステップS326に進む。CSRMOV>CTSRMOVSであるときは、第1のダウンカウンタCSRMOVを第1の所定値CTSRMOVSに設定して(ステップS325)、ステップS326に進む。
ステップS326では、第1のダウンカウンタCSRMOVの値が「0」以下か否かを判別し、CSRMOV>0である間は直ちに本処理を終了する。第1のダウンカウンタCSRMOVの値が「0」となると、SOx除去処理が完了したと判定して、ステップS327及びS328を実行する。すなわち、第1のダウンカウンタCSRMOVを「0」に設定し(ステップS327)、SOx除去終了フラグFSRMOVENDを「1」に設定するとともに、第2高濃度フラグFSLF及びSOx除去リッチ化フラグFSRRを「0」に戻して(ステップS328)、本処理を終了する。
図29の処理によれば、第1のダウンカウンタCSRMOVにより、NOx浄化装置15に蓄積したSOx量が推定され、第1のダウンカウンタCSRMOVの値が「0」となったとき、蓄積されたSOxが除去されたと判定し、SOx除去終了フラグFSRMOVENDが「1」に設定される。ただし、推定温度TCTが所定温度TCTSF以下であるとき、または検出当量比KACTが所定当量比KACTSRMより小さいときは、SOxが除去されず、逆にNOx浄化装置15に蓄積されるので、第2のダウンカウンタCSADINTの値が「0」となる毎に、第1のダウンカウンタCSRMOVがインクリメントされる。SOxの蓄積速度は、除去速度に比べて低いので、第1のダウンカウンタCSRMOVのインクリメントは、デクリメントより小さい頻度で実行される。
SOx濃度が高いと判定されたとき、SOx除去処理を実行することにより、SOxの蓄積に起因する浄化性能の低下を、NOx浄化装置15の経時劣化と誤判定することを防止できる。
図30は、SOx除去処理実行中は空燃比を理論空燃比よりリーン側に設定するリーンバーン運転を禁止する処理のフローチャートである。この処理はTDC信号パルスの発生に同期してECU5のCPUで実行される。ただし、エンジン運転状態に応じてリーンバーン運転フラグFLBの設定を行うリーンバーン運転許可判断処理(図示せず)の直後に実行される。すなわち、リーンバーン運転許可判断処理でリーンバーン運転フラグFLBが「1」に設定されても、SOx除去処理実行中は本処理で「0」に戻される。リーンバーン運転を禁止することにより、SOx除去が可能となる。
ステップS331では、第2高濃度フラグFSLFが「1」であるか否かを判別し、FSLF=1であってSOx濃度が高いと判定されたときは、SOx除去終了フラグFSRMOVENDが「1」であるか否かを判別する(ステップS332)。そして、FSLF=1かつFSRMOVEND=0であって、SOx除去処理実行中は、リーンバーン運転フラグFLBを「0」に設定する(ステップS333)。第2高濃度フラグFSLFが「0」であるとき、またはSOx除去終了フラグFSRMOVENDが「1」であるときは、直ちに本処理を終了する。
本実施形態では、NOx浄化装置15が排気浄化手段に相当し、下流側O2センサ19が下流側酸素濃度検出手段に相当し、ECU5が、劣化判定手段、計測手段、判定パラメータ算出手段、及びステップ変化判定手段を構成する。より具体的には、図3の処理が劣化判定手段に相当し、図13の処理が計測手段に相当し、図21の処理が判定パラメータ算出手段に相当し、図18のステップS155〜S158,S160〜S163がステップ変化判定手段に相当する。
なお本発明は上述した実施形態に限るものではなく、種々の変形が可能である。例えば、上述した実施形態では、本発明をNOx浄化装置15の劣化判定に適用したが、三元触媒14の劣化判定に適用することも可能である。すなわち、前述した特許文献1に示されるように、三元触媒触媒下流側の酸素濃度センサ出力に応じた空燃比フィードバック制御中における酸素濃度センサ出力の変化周期(TL+TR)を応答性パラメータとし、その平均値TCHKを判定パラメータとして使用する場合にも適用可能である。
また上述した実施形態では、NOx浄化装置15が急激に劣化した可能性があると判定され、平均化演算が初期化された直後(ステップ変化フラグFLNCSTPが「1」に設定された直後)においては、その後に平均化演算の対象となった応答性パラメータ(下流側O2センサ出力の記憶値LVGANL)の数を示すカウンタNDCT105の値に応じて、選択インデクスの補正項DNLVGH及びDNLVGLを算出し、これらを用いてなまし値LVGAAVを選択する補正選択インデックスNLVGAH及びNLVGALを算出している(図19、ステップS165,S167,S170)。すなわち、図19のステップS172及びS174において、劣化判定の基準となる下流側基準値LVO2LNCH及びLVO2LNCLを固定し、カウンタNDCT105の値に応じてなまし値LVGALNCH及びLVGALNCLの方を補正している。本実施形態においては、この点が、請求項4に記載した「判定閾値の変更」に相当するが、これに限るものではなく、下流側基準値LVO2LNCH及びLVO2LNCLをカウンタNDCT105の値に応じて補正し、選択インデクスとしては、補正前のNLVGA1及びNLVGA2をそのまま使用するようにしてもよい。
また上述した実施形態では、式(9)によるなまし演算により下流側O2センサ出力の記憶値LVGALNの平均化を行うようにしたが、通常の平均化演算(平均化の対象となる検出データを積算し、その積算値をデータ数で除算する演算)により平均化を行うようにしてもよい。
また本発明は、クランク軸を鉛直方向とした船外機などのような船舶推進機用エンジンに装着される排気浄化装置の劣化判定にも適用が可能である。