以下、図面を参照しながら、本発明の好ましい実施形態を詳細に説明する。図1に示す内燃機関(以下「エンジン」という)3は、4つの気筒(図示せず)を有する4サイクルタイプのガソリンエンジンであり、車両(図示せず)に動力源として搭載されている。エンジン3のクランク軸(図示せず)には、クランク角センサ21が設けられている。クランク角センサ21は、クランク軸の回転に伴い、パルス信号であるCRK信号およびTDC信号を、制御装置1の後述するECU2に出力する。
CRK信号は、所定のクランク角(例えば30゜)ごとに出力される。ECU2は、このCRK信号に基づき、エンジン3の回転数(以下「エンジン回転数」という)NEを算出する。TDC信号は、4つの気筒のいずれかのピストンが吸気行程開始時のTDC(上死点)付近にあることを表す信号であり、4気筒タイプの本例では、クランク角180゜ごとに出力される。また、エンジン3には、気筒判別センサ(図示せず)が設けられており、気筒判別センサは、気筒を判別するためのパルス信号である気筒判別信号をECU2に出力する。ECU2は、これらの気筒判別信号、CRK信号およびTDC信号に基づいて、クランク角度位置を気筒ごとに算出する。
エンジン3の吸気通路4には、上流側から順に、エアフローセンサ22および燃料噴射弁5が設けられている。エアフローセンサ22は、吸気通路4を介して各気筒に吸入される吸入空気量QAを検出するとともに、その検出信号をECU2に出力する。燃料噴射弁5は、気筒ごとに、吸気ポートに臨むように設けられている(1つのみ図示)。燃料噴射弁5の開弁時間および開弁タイミングは、ECU2によって制御され、それにより、燃料噴射弁5による燃料の噴射動作が制御される。
エンジン3にはさらに、燃焼室内の混合気に点火するための点火プラグ(図示せず)が、気筒ごとに設けられている。この点火プラグの点火動作は、ECU2によって制御される。
また、エンジン3の排ガスを排出するための排気通路6には、上流側から順に、LAFセンサ23、三元触媒7およびO2センサ24が設けられている。LAFセンサ23は、ジルコニアや白金電極で構成されており、燃焼室で燃焼した混合気の空燃比の領域が理論空燃比よりもリッチな領域からリーンな領域までの広範囲な領域において、排ガスの空燃比(以下「排ガス空燃比」という)をリニアに検出するとともに、その検出信号をECU2に出力する。
上記の三元触媒7は、排ガス中の酸素を吸蔵する酸素吸蔵能力を有しており、排ガス中のHCおよびCOを酸化するとともに、NOxを還元することによって、排ガスを浄化する。O2センサ24は、ジルコニアや白金電極で構成されており、三元触媒7のすぐ下流側の排ガス空燃比に基づく出力(以下「O2センサ出力」という)SVO2を、ECU2に出力する。このO2センサ出力SVO2は、排ガス空燃比が混合気の理論空燃比に相当する理論排ガス空燃比よりもリッチ側のときにはHiレベルになるとともに、リーン側のときにはLoレベルになり、理論排ガス空燃比の前後において急激に変化する。このように、排ガス空燃比に対するO2センサ出力SVO2の変化量は、排ガス空燃比が理論排ガス空燃比の付近にあるときに最大になる。
ECU2にはさらに、アクセル開度センサ25から、車両のアクセルペダル(図示せず)の操作量であるアクセル開度APを表す検出信号が出力される。
ECU2は、CPU、RAM、ROMおよびI/Oインターフェース(いずれも図示せず)などからなるマイクロコンピュータで構成されている。ECU2は、前述した各種のセンサ21〜25からの検出信号に基づき、ROMに記憶された制御プログラムに従い、エンジン3を制御するとともに、O2センサ24の異常を判定する。
具体的には、ECU2は、算出されたエンジン回転数NEや要求トルクに応じ、リーン化運転やリッチ化運転を実行する。このリッチ化運転の実行中、燃料噴射弁5を介して、混合気の空燃比(以下「混合気空燃比」という)を理論空燃比よりもリッチ側の所定のリッチ空燃比に制御する。また、エンジン3の減速運転中に、エンジン3への燃料供給を停止するフューエルカット運転を実行する。さらに、フューエルカット運転の終了に伴ってCAT還元モードを実行する。このCAT還元モードは、フューエルカット運転の実行により三元触媒7に吸蔵された酸素を放出させ、還元するために、混合気空燃比をリッチ空燃比に制御する運転モードであり、フューエルカット運転が終了してから比較的長い所定時間(例えば10sec)が経過するまで実行される。
また、ECU2は、図2に示す第1異常判定処理を実行する。この第1異常判定処理では、混合気空燃比が上記のリッチ空燃比から理論空燃比よりもリーン側の所定のリーン空燃比に切り換えられたときにおけるO2センサ24の応答特性の異常が判定される。この場合におけるリッチ空燃比からリーン空燃比への混合気空燃比の切換として、リッチ化運転からフューエルカット運転へのエンジン3の運転モードの切換が利用される。また、本処理は、エンジン3の始動後、所定周期(例えば10msec〜50msecの範囲内の所定の周期)で繰り返し実行される。
まず、図2のステップ1(「S1」と図示。以下同じ)では、第1異常判定完了フラグF_DONERLが「1」であるか否かを判別する。この第1異常判定完了フラグF_DONERLは、本処理(第1異常判処理)による異常判定が完了したときに「1」にセットされるものであり、エンジン3の始動時に「0」にリセットされる。
このステップ1の答がNOで、本処理による異常判定が完了していないときには、第1実行条件判定処理を実行する(ステップ2)。この第1実行条件判定処理は、第1異常判定処理による異常判定を実行するための条件である第1実行条件が成立しているか否かを判定するものであり、図3に示すフローチャートに従って実行される。
まず、図3のステップ31では、指定故障が発生しているか否かを判定する。この判定では、例えば次の条件(a)〜(c)がいずれも成立しているときに、指定故障が発生していると判定される。
(a)燃料系故障判定処理(図示せず)により燃料噴射弁5などの燃料供給系が故障していると判定されていること。
(b)点火系故障判定処理(図示せず)により点火プラグが故障していると判定されていること。
(c)O2センサ24以外の各種のセンサがセンサ故障判定処理により故障していると判定されていること。
このステップ31の答がYESで、燃料噴射弁5などが故障しているときには、後述する第1排ガス流量積算値SUMSVRLを値0にリセットする(ステップ32)。次いで、燃料噴射弁5などの故障によってO2センサ24の異常を精度良く判定できないため、第1実行条件が成立していないとみなし、そのことを表すために、第1実行条件成立フラグF_JUDRLを「0」に設定し(ステップ33)、本処理を終了する。
一方、ステップ31の答がNOのときには、エンジン3の暖機が完了しているか否かを判別する(ステップ34)。この判別は、センサなどで検出されたエンジン3の冷却水の温度に基づいて行われる。このステップ34の答がNOで、エンジン3の暖機が完了していないときには、上記ステップ32を実行するとともに、エンジン3の運転状態が安定していないことによってO2センサ24の異常を精度良く判定できないおそれがあるため、第1実行条件が成立していないとして、上記ステップ33を実行し、本処理を終了する。
一方、ステップ34の答がYESのときには、O2センサ24が活性済みであるか否かを判別する(ステップ35)。この判別では、O2センサ出力SVO2が所定値よりも大きいときに、O2センサ24が活性済みであると判別される。このステップ35の答がNOで、O2センサ24が活性済みでないときには、それによりO2センサ24の異常を精度良く判定できないおそれがあるため、第1実行条件が成立していないとして、上記ステップ33を実行し、本処理を終了する。
一方、ステップ35の答がYESのときには、フューエルカットフラグF_F/Cが「1」であるか否かを判別する(ステップ36)。このフューエルカットフラグF_F/Cは、エンジン3の運転モードが前述したリッチ化運転からフューエルカット運転に切り換えられたときに、「1」にセットされ、その後、当該フューエルカット運転の実行中に、「1」に保持される。このステップ36の答がNOのときには、第1実行条件が成立していないとみなし、前記ステップ32および33を実行し、本処理を終了する。
このように、リッチ化運転後のフューエルカット運転の実行中でないときに第1実行条件が成立していないとみなすのは、前述したように、第1異常判定処理では、リッチ空燃比からリーン空燃比への混合気空燃比の切換時におけるO2センサ24の応答特性の異常が判定され、この場合における混合気空燃比の切換として、リッチ化運転からフューエルカット運転への運転モードの切換を利用するためである。
一方、ステップ36の答がYESのときには、そのときに得られている第1排ガス流量積算値SUMSVRLすなわちその前回値に、第1排ガス流量SVRLを加算することによって、第1排ガス流量積算値の今回値SUMSVRLを算出する(ステップ37)。この第1排ガス流量SVRLは、今回の処理サイクルでエンジン3から排出された排ガスの流量に相当し、検出された吸入空気量QAに応じて算出される。また、第1排ガス流量積算値SUMSVRLは、フューエルカット運転の開始時から今回までに排出された排ガスの流量の積算値に相当する。その理由は次のとおりである。
すなわち、ステップ31、34およびステップ35の判別結果は、エンジン3の始動後、最初のフューエルカット運転が実行される前に、得られる。それに加え、ステップ36の答がYESにならない限り、すなわちフューエルカット運転が実行されない限り、前記ステップ32の実行によって第1排ガス流量積算値SUMSVRLが値0に保持されるとともに、第1排ガス流量積算値SUMSVRLが、その前回値に今回の処理サイクルでエンジン3から排出された排ガスの流量(第1排ガス流量SVRL)を加算することによって算出されるためである。
上記ステップ37に続くステップ38では、第1実行条件成立フラグF_JUDRLが「1」であるか否かを判別する。この答がNO(F_JUDRL=0)のときには、前記ステップ37で算出された第1排ガス流量積算値SUMSVRLが第1所定値SUMRL1以上であるか否かを判別する(ステップ39)。
このステップ39の答がNO(SUMSVRL<SUMRL1)で、フューエルカット運転の開始時からの排ガス流量の積算値が、第1所定値SUMRL1よりも小さいときには、フューエルカット運転の開始によりリッチ空燃比からリーン空燃比に切り換えられた混合気空燃比に対応する排ガスが、O2センサ24にまだ到達していないとみなす。また、それによりO2センサ24の異常を精度良く判定できないため、第1実行条件が成立していないとして、前記ステップ33を実行し、本処理を終了する。
一方、ステップ39の答がYES(SUMSVRL≧SUMRL1)で、フューエルカット運転の開始時からの排ガス流量の積算値が第1所定値SUMRL1に達したときには、O2センサ出力SVO2が第1所定出力VREFRL以上であるか否かを判別する(ステップ40)。
このステップ40の答がNO(SVO2<VREFRL)のときには、O2センサ出力SVO2で表される排ガス空燃比がリーン側にあることから、リッチ空燃比からリーン空燃比への混合気空燃比の切換時におけるO2センサ24の異常を精度良く判定できないおそれがあるため、第1実行条件が成立していないとして、前記ステップ33を実行し、本処理を終了する。
一方、ステップ40の答がYESで、O2センサ出力SVO2が第1所定出力VREFRL以上であるときには、第1実行条件が成立したとして、第1実行条件成立フラグF_JUDRLを「1」に設定し(ステップ41)、本処理を終了する。また、このステップ41の実行によって、前記ステップ38の答がYES(F_JUDRL=1)になり、その場合には、そのまま本処理を終了する。
図2に戻り、前記ステップ2に続くステップ3では、第1実行条件成立フラグF_JUDRLが「1」であるか否かを判別する。この答がNO(F_JUDRL=0)で、第1実行条件が成立していないときには、ステップ4〜7においてそれぞれ、後述する第1開始時排ガス流量積算値算出済みフラグF_WDSVO2STRL、第1出力変化量極値算出済みフラグF_HDSVO2RL、第1出力変化期間パラメータ算出済みフラグF_WDSVO2RL、および第1仮判定済みフラグF_TMPJUDRLを「0」にリセットし、本処理を終了する。
一方、上記ステップ3の答がYES(F_JUDRL=1)で、第1実行条件が成立しているときには、ステップ8において、そのときに得られている出力変化量DSVO2をその前回値DSVO2Zとしてシフトするとともに、出力変化量の今回値DSVO2を算出する。この出力変化量DSVO2は、O2センサ出力SVO2の変化量であり、今回の処理サイクルで検出されたO2センサ出力SVO2(今回値)から、前回の処理サイクルで検出されたO2センサ出力SVO2(前回値)を減算することによって算出する。
ステップ8に続くステップ9では、図4に示すHDSVO2RL算出処理を実行する。前述したように、本処理を含む第1異常判定処理では、リッチ空燃比からリーン空燃比への混合気空燃比の切換時におけるO2センサ24の応答特性の異常が判定される。この場合、図5に示すように、O2センサ出力SVO2は、この混合気空燃比の切換によってHiレベルからLoレベルに変化し、それに伴い、O2センサ出力SVO2の変化量である出力変化量DSVO2は、値0から負値になり、その絶対値が増大し、極値となった後、その絶対値が減少し、再び値0に戻る。本処理では、出力変化量DSVO2が後述する第1所定変化量DVREFRLになってから再び第1所定変化量DVREFRLに戻るまでの期間内における出力変化量DSVO2の極値として、第1出力変化量極値HDSVO2RLが算出される。
まず、図4のステップ51では、そのときに得られている第1出力変化量増大中フラグF_RNWHDSVO2RLを、その前回値F_RNWHDSVO2RLZとしてシフトする。この第1出力変化量増大中フラグF_RNWHDSVO2RLの詳細については、後述する。
次いで、図2のステップ8で算出された出力変化量DSVO2が第1所定変化量DVREFRL以下であるか否かを判別する(ステップ52)。この第1所定変化量DVREFRLは、出力変化量DSVO2が確実に変化しているか否かを判定できるような負の所定値に設定されている(図5参照)。このステップ52の答がNOのときには、そのまま本処理を終了する一方、YESで、出力変化量DSVO2が第1所定変化量DVREFRL以下であるときには、出力変化量の今回値DSVO2がその前回値DSVO2Z以下であるか否かを判別する(ステップ53)。
このステップ53の答がYESで、DSVO2≦DSVO2Zのとき、すなわち、負値である出力変化量DSVO2(絶対値)が増大しているときには、出力変化量DSVO2を第1出力変化量極値HDSVO2RLとして設定する(ステップ54)とともに、出力変化量DSVO2(絶対値)の増大中であることを表すために、第1出力変化量増大中フラグF_RNWHDSVO2RLを「1」に設定し(ステップ55)、本処理を終了する。なお、第1出力変化量増大中フラグF_RNWHDSVO2RLは、エンジン3の始動時に「0」にリセットされる。
一方、ステップ53の答がNOで、出力変化量の今回値DSVO2がその前回値DSVO2Zよりも大きいときには、出力変化量DSVO2(絶対値)が減少側に変化しているとして、第1出力変化量増大中フラグF_RNWHDSVO2RLを「0」に設定する(ステップ56)。次いで、前記ステップ51で設定された第1出力変化量増大中フラグの前回値F_RNWHDSVO2RLZが「1」であるか否かを判別する(ステップ57)。
このステップ57の答がYES(F_RNWHDSVO2RLZ=1)のときには、前回の処理サイクルにおける前記ステップ54の実行により第1出力変化量極値HDSVO2RLの算出(設定)が完了したとして、そのことを表すために、第1出力変化量極値算出済みフラグF_HDSVO2RLを「1」に設定し(ステップ58)、本処理を終了する。一方、ステップ57の答がNOのとき、すなわち、出力変化量DSVO2が減少中のときには、そのまま本処理を終了する。
上述したようにして第1出力変化量極値HDSVO2RLを算出するのは、次の理由による。すなわち、第1出力変化量極値HDSVO2RLは、出力変化量DSVO2がその前回値DSVO2Z以下である限り(ステップ53:YES)、すなわち出力変化量DSVO2が増大している限り、ステップ54の実行によって、今回の出力変化量DSVO2に更新される。また、図5に示すように、それまで増大側に変化していた出力変化量DSVO2(絶対値)が減少側に変化し始めると(図5の時点t1)、それに伴い、第1出力変化量増大中フラグF_RNWHDSVO2RLが「0」にリセットされる(ステップ56)。
この時点t1では、第1出力変化量増大中フラグの前回値F_RNWHDSVO2RLZは「1」であり、その結果、ステップ57の答がYESになる。このことから明らかなように、ステップ57の答がYESになる直前の処理サイクルで得られた出力変化量DSVO2は、その極値に相当し、ステップ57の答がYESになった時点で、ステップ54による第1出力変化量極値HDSVO2RLの算出(設定)が完了するためである。なお、図5に示すように、出力変化量DSVO2は、その極値になった後、再び第1所定変化量DVREFRLに戻り、第1所定変化量DVREFRLよりも大きくなる(ステップ52:NO)。以上のように、第1出力変化量極値HDSVO2RLは、出力変化量DSVO2が第1所定変化量DVREFRLになってから再び第1所定変化量DVREFRLに戻るまでの期間内に得られた出力変化量DSVO2の極値である。
図2に戻り、前記ステップ9に続くステップ10では、図6に示すWDSVO2RL算出処理を実行する。本処理では、出力変化量DSVO2が第1所定変化量DVREFRLになってから再び第1所定変化量DVREFRLに戻るまでの期間(図7参照)を表す第1出力変化期間パラメータWDSVO2RLが算出される。
まず、図6のステップ61では、第1開始時排ガス流量積算値算出済みフラグF_WDSVO2STRLが「1」であるか否かを判別する。この第1開始時排ガス流量積算値算出済みフラグF_WDSVO2STRLは、後述する第1開始時排ガス流量積算値SUMSVSTRLの算出が完了したときに、「1」に設定されるものであり、エンジン3の始動時に「0」にリセットされる。
このステップ61の答がNO(F_WDSVO2STRL=0)で、第1開始時排ガス流量積算値SUMSVSTRLの算出が完了していないときには、出力変化量DSVO2が第1所定変化量DVREFRL以下であるか否かを判別する(ステップ62)。この答がNOのときには、そのまま本処理を終了する。
一方、上記ステップ62の答がYESで、出力変化量DSVO2が第1所定変化量DVREFRL以下になったときには、図3のステップ37で算出された第1排ガス流量積算値SUMSVRLを第1開始時排ガス流量積算値SUMSVSTRLとして設定する(ステップ63)。次いで、第1開始時排ガス流量積算値SUMSVSTRLの算出(設定)が完了したとして、そのことを表すために、第1開始時排ガス流量積算値算出済みフラグF_WDSVO2STRLを「1」に設定し(ステップ64)、本処理を終了する。
第1開始時排ガス流量積算値SUMSVSTRLは、その算出手法から明らかなように、フューエルカット運転を開始してから、出力変化量DSVO2が第1所定変化量DVREFRLになるまでの排ガス流量の積算値に相当する(図7参照)。
また、上記ステップ64の実行によって、前記ステップ61の答がYES(F_WDSVO2STRL=1)になり、その場合には、第1出力変化期間パラメータ算出済みフラグF_WDSVO2RLが「1」であるか否かを判別する(ステップ65)。この第1出力変化期間パラメータ算出済みフラグF_WDSVO2RLは、第1出力変化期間パラメータWDSVO2RLの算出が完了したときに、「1」にセットされるものである。
このステップ65の答がNO(F_WDSVO2RL=0)で、第1出力変化期間パラメータWDSVO2RLの算出が完了していないときには、出力変化量DSVO2が第1所定変化量DVREFRL以上であるか否かを判別する(ステップ66)。この答がNOのときには、そのまま本処理を終了する。
一方、ステップ66の答がYESで、出力変化量DSVO2が第1所定変化量DVREFRL以上になったときには、第1排ガス流量積算値SUMSVRLを第1終了時排ガス流量積算値SUMSVENDRLとして設定する(ステップ67)。第1終了時排ガス流量積算値SUMSVENDRLは、その算出手法から明らかなように、フューエルカット運転を開始してから、出力変化量DSVO2が再び第1所定変化量DVREFRLに戻るまでの排ガス流量の積算値に相当する(図7参照)。
次いで、上記ステップ67で設定された第1終了時排ガス流量積算値SUMSVENDRLから、ステップ63で設定された第1開始時排ガス流量積算値SUMSVSTRLを減算することによって、第1出力変化期間パラメータWDSVO2RLを算出する(ステップ68)。次に、第1出力変化期間パラメータWDSVO2RLの算出が完了したとして、そのことを表すために、第1出力変化期間パラメータ算出済みフラグF_WDSVO2RLを「1」に設定し(ステップ69)、本処理を終了する。
また、このステップ69の実行によって、前記ステップ65の答がYES(F_WDSVO2RL=1)になり、その場合には、そのまま本処理を終了する。
前述したように、第1開始時排ガス流量積算値SUMSVSTRLは、フューエルカット運転を開始してから、出力変化量DSVO2が第1所定変化量DVREFRLになるまでの排ガス流量の積算値に相当し、第1終了時排ガス流量積算値SUMSVENDRLは、フューエルカット運転を開始してから、出力変化量DSVO2が再び第1所定変化量DVREFRLに戻るまでの排ガス流量の積算値に相当する。したがって、図7に示すように、後者(SUMSVENDRL)から前者(SUMSVSTRL)を減算することで算出された第1出力変化期間パラメータWDSVO2RLは、出力変化量DSVO2が第1所定変化量DVREFRLになってから再び第1所定変化量DVREFRLに戻るまでの排ガス流量の積算値に相当し、出力変化量DSVO2が第1所定変化量DVREFRLになってから再び第1所定変化量DVREFRLに戻るまでの期間(図7にTIRLで図示)を良好に表す。
図2に戻り、前記ステップ10に続くステップ11では、第1排ガス流量積算値SUMSVRLが第2所定値SUMRL2以上であるか否かを判別する。この答がNO(SUMSVRL<SUMRL2)のときには、図4のステップ58で設定された第1出力変化量極値算出済みフラグF_HDSVO2RLが「1」であるか否かを判別する(ステップ12)。この答がNOで、第1出力変化量極値HDSVO2RLが算出されていないときには、前記ステップ7を実行し、本処理を終了する。
一方、上記ステップ12の答がYESで、第1出力変化量極値HDSVO2RLが算出されているときには、図6のステップ69で設定された第1出力変化期間パラメータ算出済みフラグF_WDSVO2RLが「1」であるか否かを判別する(ステップ13)。この答がNOで、第1出力変化期間パラメータWDSVO2RLが算出されていないときには、前記ステップ7を実行し、本処理を終了する。
一方、上記ステップ13の答がYESのとき、すなわち、第1出力変化量極値HDSVO2RLおよび第1出力変化期間パラメータWDSVO2RLがいずれも算出されているときには、図6のステップ68で算出された第1出力変化期間パラメータWDSVO2RLに対する、図4のステップ54で設定された第1出力変化量極値の絶対値|HDSVO2RL|の比(|HDSVO2RL|/WDSVO2RL)を、第1判定用パラメータKJUDSVO2RLとして算出する(ステップ14)。次いで、算出された第1判定用パラメータKJUDSVO2RLが第1判定値KREFRL以下であるか否かを判別する(ステップ15)。
この答がYESで、第1判定用パラメータKJUDSVO2RLが第1判定値KREFRL以下のときには、リーン空燃比への空燃比の切換時におけるO2センサ24の応答特性の異常(以下「第1異常」という)が発生していると仮判定し、そのことを表すために、第1仮異常フラグF_TMPNGRLを「1」にセットする(ステップ16)。次いで、第1異常の仮判定結果が得られたことを表すために、第1仮判定済みフラグF_TMPJUDRLを「1」に設定し(ステップ17)、本処理を終了する。
一方、上記ステップ15の答がNOで、第1判定用パラメータKJUDSVO2RLが第1判定値KREFRLよりも大きいときには、第1異常が発生していないと仮判定し、そのことを表すために、第1仮異常フラグF_TMPNGRLを「0」に設定する(ステップ18)。次いで、上記ステップ17を実行し、本処理を終了する。
以上のようにO2センサ24の第1異常を仮判定するのは、図19および図20を用いて前述したように、O2センサ24が異常であるときには、第1出力変化量極値の絶対値|HDSVO2RL|が小さくなるとともに、第1出力変化期間パラメータWDSVO2RLが大きくなる結果、第1判定用パラメータKJUDSVO2RLすなわち第1出力変化期間パラメータWDSVO2RLに対する第1出力変化量極値の絶対値|HDSVO2RL|の比が、第1判定値KREFRL以下になるためである。
なお、一旦、ステップ15、16および18による第1異常の仮判定の結果が得られると、その後、本処理が完了するまで(前記ステップ1がYESになるまで)の間に、第1出力変化量極値HDSVO2RLが再度、算出されても、ステップ12〜18は実行されず、第1異常の仮判定の結果が変更されることはない。このため、本処理では、第2実施形態で後述するように複数の第1出力変化量極値HDSVO2RLが算出された場合に、そのうちの最先の第1出力変化量極値HDSVO2RLと、それに対応する第1出力変化期間パラメータWDSVO2RLとの関係に基づいて、O2センサ24の第1異常が仮判定される。
一方、前記ステップ11の答がYESで、第1排ガス流量積算値SUMSVRLが第2所定値SUMRL2に達したとき、すなわち、リーン空燃比への混合気空燃比の切換の開始時から多量の排ガスがO2センサ24を通過しときには、前記ステップ7または17で設定された第1仮判定済みフラグF_TMPJUDRLが「1」であるか否かを判別する(ステップ19)。この答がYESで、第1異常の仮判定結果が得られているときには、第1仮異常フラグF_TMPNGRLが「1」であるか否かを判別する(ステップ20)。
この答がNO(F_TMPNGRL=0)のとき、すなわち、リーン空燃比への混合気空燃比の切換の開始時から多量の排ガスがO2センサ24を通過しており、かつ、O2センサ24の第1異常が発生していないと仮判定されているときには、第1異常が発生していないとの判定を確定し、そのことを表すために、第1異常フラグF_NGRLを「0」に設定する(ステップ21)。次いで、本処理による異常判定が完了したとして、そのことを表すために、第1異常判定完了フラグF_DONERLを「1」に設定し(ステップ22)、本処理を終了する。
一方、上記ステップ20の答がYES(F_TMPNGRL=1)のとき、すなわち、リーン空燃比への混合気空燃比の切換の開始時から多量の排ガスがO2センサ24を通過しており、かつ、O2センサ24の第1異常が発生していると仮判定されているときには、第1異常が発生しているとの判定を確定し、そのことを表すために、第1異常フラグF_NGRLを「1」に設定する(ステップ23)。次いで、上記ステップ22を実行し、本処理を終了する。
一方、前記ステップ19の答がNOで、第1仮判定済みフラグF_TMPJUDRLが「0」のとき、すなわち、リーン空燃比への混合気空燃比の切換の開始時から多量の排ガスがO2センサ24を通過しており、かつ、第1出力変化量極値HDSVO2RLおよび/または第1出力変化期間パラメータWDSVO2RLが算出されていないことで、第1異常の仮判定結果が得られていないときには、第1異常が発生しているとの判定を確定するとともに、上記ステップ23および22を実行し、本処理を終了する。
また、ステップ22の実行により前記ステップ1の答がYES(F_DONERL=1)になり、その場合には、第1実行条件成立フラグF_JUDRLを「0」にリセットする(ステップ24)とともに、前記ステップ4〜7を実行し、本処理を終了する。
次に、図8〜図11を参照しながら、第2異常判定処理について説明する。この第2異常判定処理では、混合気空燃比がリーン空燃比からリッチ空燃比に切り換えられたときにおけるO2センサ24の応答特性の異常が、第1異常判定処理と同様、出力変化量DSVO2の変化期間と当該変化期間における極値との関係に基づいて判定される。この場合におけるリッチ空燃比への混合気空燃比の切換として、フューエルカット運転から前述したCAT還元モードへのエンジン3の運転モードの切換が利用される。また、第2異常判定処理は、第1異常判定処理と同様、エンジン3の始動後、所定周期(例えば10msec〜50msecの範囲内の所定の周期)で繰り返し実行される。
まず、図8のステップ81では、第2異常判定完了フラグF_DONELRが「1」であるか否かを判別する。この第2異常判定完了フラグF_DONERLは、本処理(第2異常判処理)による異常判定が完了したときに「1」にセットされるものであり、エンジン3の始動時に「0」にリセットされる。
このステップ81の答がNOで、本処理による異常判定が完了していないときには、第2実行条件判定処理を実行する(ステップ82)。この第2実行条件判定処理は、本処理による異常判定を実行するための条件である第2実行条件が成立しているか否かを判定するものであり、図9に示すフローチャートに従って実行される。
まず、図9のステップ111、112および113においてそれぞれ、図3のステップ31、34および35と同様、指定故障が発生しているか、エンジン3の暖機が完了しているか否か、および、O2センサ24が活性済みであるか否かを判別する。このステップ111の答がYES、または、ステップ112若しくは113の答がNOのときには、第2排ガス流量積算値SUMSVLRを値0にリセットする(ステップ114)とともに、第2実行条件が成立していないとして、第2実行条件成立フラグF_JUDLRを「0」にリセットし(ステップ115)、本処理を終了する。
一方、ステップ111の答がNOで指定故障が発生しておらず、ステップ112の答がYESでエンジン3の暖機が完了しており、且つ、ステップ113の答がYESでO2センサ24が活性化済みであるときには、ステップ116および117において、フューエルカットフラグF_F/Cが「1」であるか否か、および、CAT還元モード中であるか否かを、それぞれ判別する。
このステップ116の答がYESでフューエルカット運転の実行中であるとき、または、ステップ117の答がNOでCAT還元モードの実行中でないときには、第2実行条件が成立していないとして、前記ステップ114および115を実行し、本処理を終了する。このようにフューエルカット運転の実行中であるとき、または、CAT還元モードの実行中でないときに、第2実行条件が成立していないとみなすのは、次の理由による。すなわち、前述したように、第2異常判定処理では、リーン空燃比からリッチ空燃比への混合気空燃比の切換時におけるO2センサ24の応答特性の異常が判定され、この場合における混合気空燃比の切換として、フューエルカット運転からCAT還元モードへの運転モードの切換を利用するためである。
一方、ステップ116の答がNOで、かつ、ステップ117の答がYESのとき、すなわち、フューエルカット運転の実行中でなく、かつ、CAT還元モードの実行中であるときには、そのときに得られている第2排ガス流量積算値SUMSVLRすなわちその前回値に、第2排ガス流量SVLRを加算することによって、第2排ガス流量積算値の今回値SUMSVLRを算出する(ステップ118)。この第2排ガス流量SVLRは、今回の処理サイクルでエンジン3から排出された排ガスの流量に相当し、検出された吸入空気量QAに応じて算出される。また、第2排ガス流量積算値SUMSVLRは、フューエルカット運転の終了に伴って開始されたCAT還元モードの開始時から今回までに排出された排ガスの流量の積算値に相当する。その理由は次のとおりである。
すなわち、ステップ111〜113の判別結果は、ステップ31、34およびステップ35と同様、エンジン3の始動後、最初のフューエルカット運転が実行される前に、すなわち、最初のフューエルカット運転の終了に伴ってCAT還元モードが実行される前に、得られる。それに加え、ステップ117の答がYESにならない限り、すなわち、CAT還元モードが開始されない限り、前記ステップ114の実行によって第2排ガス流量積算値SUMSVLRが値0に保持されるとともに、第2排ガス流量積算値SUMSVLRが、その前回値に今回の処理サイクルでエンジン3から排出された排ガスの流量(第2排ガス流量SVLR)を加算することによって算出されるためである。
上記ステップ118に続くステップ119では、第2実行条件成立フラグF_JUDLRが「1」であるか否かを判別する。この答がNO(F_JUDLR=0)のときには、ステップ118で算出された第2排ガス流量積算値SUMSVLRが第1所定値SUMLR1以上であるか否かを判別する(ステップ120)。
このステップ120の答がNO(SUMSVLR<SUMLR1)で、CAT還元モードの開始時からの排ガス流量の積算値が、第1所定値SUMLR1よりも小さいときには、CAT還元モードの開始によりリーン空燃比からリッチ空燃比に切り換えられた混合気空燃比に対応する排ガスが、O2センサ24にまだ到達していないとみなす。また、それによりO2センサ24の異常を精度良く判定できないため、第2実行条件が成立していないとして、前記ステップ115を実行し、本処理を終了する。
一方、ステップ120の答がYES(SUMSVLR≧SUMLR1)で、CAT還元モードの開始時からの排ガス流量の積算値が第1所定値SUMLR1に達したときには、O2センサ出力SVO2が第2所定出力VREFLR以下であるか否かを判別する(ステップ121)。
このステップ121の答がNO(SVO2>VREFLR)のときには、O2センサ出力SVO2で表される排ガス空燃比がリッチ側にあることから、リーン空燃比からリッチ空燃比への混合気空燃比の切換時におけるO2センサ24の異常を精度良く判定できないおそれがあるため、第2実行条件が成立していないとして、前記ステップ115を実行し、本処理を終了する。
一方、ステップ121の答がYESで、O2センサ出力SVO2が第2所定出力VREFLR以下であるときには、第2実行条件が成立したとして、第2実行条件成立フラグF_JUDLRを「1」に設定し(ステップ122)、本処理を終了する。また、このステップ122の実行によって、前記ステップ119の答がYES(F_JUDLR=1)になり、その場合には、そのまま本処理を終了する。
図8に戻り、前記ステップ82に続くステップ83では、第2実行条件成立フラグF_JUDLRが「1」であるか否かを判別する。この答がNO(F_JUDLR=0)で、第2実行条件が成立していないときには、ステップ84〜87においてそれぞれ、後述する第2開始時排ガス流量積算値算出済みフラグF_WDSVO2STLR、第2出力変化量極値算出済みフラグF_HDSVO2LR、第2出力変化期間パラメータ算出済みフラグF_WDSVO2LR、および第2仮判定済みフラグF_TMPJUDLRを「0」にリセットし、本処理を終了する。
一方、上記ステップ83の答がYES(F_JUDLR=1)で、第2実行条件が成立しているときには、ステップ88において、図2のステップ8と同様、そのときに得られている出力変化量DSVO2をその前回値DSVO2Zとしてシフトするとともに、出力変化量の今回値DSVO2を算出する。
ステップ88に続くステップ89では、図10に示すHDSVO2LR算出処理を実行する。前述したように、本処理を含む第2異常判定処理では、リーン空燃比からリッチ空燃比への混合気空燃比の切換時におけるO2センサ24の応答特性の異常が判定される。この場合、図5に示すリーン空燃比への混合気空燃比の切換時の場合とは逆に、O2センサ出力SVO2は、リッチ空燃比への混合気空燃比の切換によってLoレベルからHiレベルに変化し、それに伴い、O2センサ出力SVO2の変化量である出力変化量DSVO2は、値0から増大し、正の極値となった後に減少し、再び値0に戻る。本処理では、出力変化量DSVO2が後述する第2所定変化量DVREFLRになってから再び第2所定変化量DVREFLRに戻るまでの期間内における出力変化量DSVO2の極値として、第2出力変化量極値HDSVO2LRが算出される。
まず、図10のステップ131では、そのときに得られている第2出力変化量増大中フラグF_RNWHDSVO2LRを、その前回値F_RNWHDSVO2LRZとしてシフトする。この第2出力変化量増大中フラグF_RNWHDSVO2LRの詳細については、後述する。
次いで、図2のステップ88で算出された出力変化量DSVO2が第2所定変化量DVREFLR以上であるか否かを判別する(ステップ132)。この第2所定変化量DVREFLRは、出力変化量DSVO2が確実に変化しているか否かを判定できるような正の所定値に設定されており、その絶対値が、前述した第1所定変化量DVREFRLと等しい。このステップ132の答がNOのときには、そのまま本処理を終了する一方、YESで、出力変化量DSVO2が第2所定変化量DVREFLR以上であるときには、出力変化量の今回値DSVO2がその前回値DSVO2Z以上であるか否かを判別する(ステップ133)。
このステップ133の答がYESで、DSVO2≧DSVO2Zのとき、すなわち、出力変化量DSVO2が増大しているときには、出力変化量DSVO2を第2出力変化量極値HDSVO2LRとして設定する(ステップ134)とともに、出力変化量DSVO2の増大中であることを表すために、第2出力変化量増大中フラグF_RNWHDSVO2LRを「1」に設定し(ステップ135)、本処理を終了する。なお、第2出力変化量増大中フラグF_RNWHDSVO2LRは、エンジン3の始動時に「0」にリセットされる。
一方、ステップ133の答がNOで、出力変化量の今回値DSVO2がその前回値DSVO2Zよりも小さいときには、出力変化量DSVO2が減少側に変化しているとして、第2出力変化量増大中フラグF_RNWHDSVO2LRを「0」に設定する(ステップ136)。次いで、前記ステップ131で設定された第1出力変化量増大中フラグの前回値F_RNWHDSVO2LRZが「1」であるか否かを判別する(ステップ137)。
このステップ137の答がYES(F_RNWHDSVO2LRZ=1)のときには、前回の処理サイクルにおける前記ステップ134の実行により第2出力変化量極値HDSVO2LRの算出(設定)が完了したとして、そのことを表すために、第2出力変化量極値算出済みフラグF_HDSVO2LRを「1」に設定し(ステップ138)、本処理を終了する。一方、ステップ137の答がNOのとき、すなわち、出力変化量DSVO2が減少中のときには、そのまま本処理を終了する。
上述したようにして第2出力変化量極値HDSVO2LRを算出するのは、第1出力変化量極値HDSVO2RLと同様の理由による。このため、その詳細な説明については省略する。
図8に戻り、前記ステップ89に続くステップ90では、図11に示すWDSVO2LR算出処理を実行する。本処理では、出力変化量DSVO2が第2所定変化量DVREFLRになってから再び第2所定変化量DVREFLRに戻るまでの期間を表す第2出力変化期間パラメータWDSVO2LRが算出される。
まず、図11のステップ141では、第2開始時排ガス流量積算値算出済みフラグF_WDSVO2STLRが「1」であるか否かを判別する。この第2開始時排ガス流量積算値算出済みフラグF_WDSVO2STLRは、後述する第2開始時排ガス流量積算値SUMSVSTLRの算出が完了したときに、「1」に設定されるものであり、エンジン3の始動時に「0」にリセットされる。
このステップ141の答がNO(F_WDSVO2STLR=0)で、第2開始時排ガス流量積算値SUMSVSTLRの算出が完了していないときには、出力変化量DSVO2が第2所定変化量DVREFLR以上であるか否かを判別する(ステップ142)。この答がNOのときには、そのまま本処理を終了する。
一方、上記ステップ142の答がYESで、出力変化量DSVO2が第2所定変化量DVREFLR以上になったときには、図9のステップ118で算出された第2排ガス流量積算値SUMSVLRを第2開始時排ガス流量積算値SUMSVSTLRとして設定する(ステップ143)。次いで、第2開始時排ガス流量積算値SUMSVSTLRの算出(設定)が完了したとして、そのことを表すために、第2開始時排ガス流量積算値算出済みフラグF_WDSVO2STLRを「1」に設定し(ステップ144)、本処理を終了する。
第2開始時排ガス流量積算値SUMSVSTLRは、その算出手法から明らかなように、CAT還元モードを開始してから、出力変化量DSVO2が第2所定変化量DVREFLRになるまでの排ガス流量の積算値に相当する。
また、上記ステップ144の実行によって、前記ステップ141の答がYES(F_WDSVO2STLR=1)になり、その場合には、第2出力変化期間パラメータ算出済みフラグF_WDSVO2LRが「1」であるか否かを判別する(ステップ145)。この第2出力変化期間パラメータ算出済みフラグF_WDSVO2LRは、第2出力変化期間パラメータWDSVO2LRの算出が完了したときに、「1」にセットされるものである。
このステップ145の答がNO(F_WDSVO2LR=0)で、第2出力変化期間パラメータWDSVO2LRの算出が完了していないときには、出力変化量DSVO2が第2所定変化量DVREFLR以下であるか否かを判別する(ステップ146)。この答がNOのときには、そのまま本処理を終了する。
一方、ステップ146の答がYESで、出力変化量DSVO2が第2所定変化量DVREFLR以下になったときには、第2排ガス流量積算値SUMSVLRを第2終了時排ガス流量積算値SUMSVENDLRとして設定する(ステップ147)。第2終了時排ガス流量積算値SUMSVENDLRは、その算出手法から明らかなように、CAT還元モードを開始してから、出力変化量DSVO2が再び第2所定変化量DVREFLRに戻るまでの排ガス流量の積算値に相当する。
次いで、上記ステップ147で設定された第2終了時排ガス流量積算値SUMSVENDLRから、ステップ143で設定された第2開始時排ガス流量積算値SUMSVSTLRを減算することによって、第2出力変化期間パラメータWDSVO2LRを算出する(ステップ148)。次に、第2出力変化期間パラメータWDSVO2LRの算出が完了したとして、そのことを表すために、第2出力変化期間パラメータ算出済みフラグF_WDSVO2LRを「1」に設定し(ステップ149)、本処理を終了する。
また、このステップ149の実行によって、前記ステップ145の答がYES(F_WDSVO2LR=1)になり、その場合には、そのまま本処理を終了する。
前述したように、第2開始時排ガス流量積算値SUMSVSTLRは、CAT還元モードを開始してから、出力変化量DSVO2が第2所定変化量DVREFLRになるまでの排ガス流量の積算値に相当し、第2終了時排ガス流量積算値SUMSVENDLRは、CAT還元モードを開始してから、出力変化量DSVO2が再び第2所定変化量DVREFLRに戻るまでの排ガス流量の積算値に相当する。したがって、後者(SUMSVENDLR)から前者(SUMSVSTLR)を減算することで算出された第2出力変化期間パラメータWDSVO2LRは、出力変化量DSVO2が第2所定変化量DVREFLRになってから再び第2所定変化量DVREFLRに戻るまでの排ガス流量の積算値に相当し、出力変化量DSVO2が第2所定変化量DVREFLRになってから再び第2所定変化量DVREFLRに戻るまでの期間を良好に表す。
図8に戻り、前記ステップ90に続くステップ91では、第2排ガス流量積算値SUMSVLRが第2所定値SUMLR2以上であるか否かを判別する。この答がNO(SUMSVLR<SUMLR2)のときには、図10のステップ138で設定された第2出力変化量極値算出済みフラグF_HDSVO2LRが「1」であるか否かを判別する(ステップ92)。この答がNOで、第2出力変化量極値HDSVO2LRが算出されていないときには、前記ステップ87を実行し、本処理を終了する。
一方、上記ステップ92の答がYESで、第2出力変化量極値HDSVO2LRが算出されているときには、図11のステップ149で設定された第2出力変化期間パラメータ算出済みフラグF_WDSVO2LRが「1」であるか否かを判別する(ステップ93)。この答がNOで、第2出力変化期間パラメータWDSVO2LRが算出されていないときには、前記ステップ87を実行し、本処理を終了する。
一方、上記ステップ93の答がYESのとき、すなわち、第2出力変化量極値HDSVO2LRおよび第2出力変化期間パラメータWDSVO2LRがいずれも算出されているときには、図11のステップ148で算出された第2出力変化期間パラメータWDSVO2LRに対する、図10のステップ134で設定された第2出力変化量極値の絶対値|HDSVO2LR|の比(|HDSVO2LR|/WDSVO2LR)を、第2判定用パラメータKJUDSVO2LRとして算出する(ステップ94)。次いで、算出された第2判定用パラメータKJUDSVO2LRが第2判定値KREFLR以下であるか否かを判別する(ステップ95)。
この答がYESで、第2判定用パラメータKJUDSVO2LRが第2判定値KREFLR以下のときには、リッチ空燃比への空燃比の切換時におけるO2センサ24の応答特性の異常(以下「第2異常」という)が発生していると仮判定し、そのことを表すために、第2仮異常フラグF_TMPNGLRを「1」にセットする(ステップ96)。次いで、第2異常の仮判定結果が得られたことを表すために、第2仮判定済みフラグF_TMPJUDLRを「1」に設定し(ステップ97)、本処理を終了する。
一方、上記ステップ95の答がNOで、第2判定用パラメータKJUDSVO2LRが第2判定値KREFLRよりも大きいときには、第2異常が発生していないと仮判定し、そのことを表すために、第2仮異常フラグF_TMPNGLRを「0」に設定する(ステップ98)。次いで、上記ステップ97を実行し、本処理を終了する。
以上のようにO2センサ24の第2異常を仮判定するのは、図19および図20を用いて前述したように、O2センサ24が異常であるときには、第2出力変化量極値の絶対値|HDSVO2LR|が小さくなるとともに、第2出力変化期間パラメータWDSVO2LRが大きくなる結果、第2判定用パラメータKJUDSVO2LRすなわち第2出力変化期間パラメータWDSVO2LRに対する第2出力変化量極値の絶対値|HDSVO2LR|の比が、第2判定値KREFLR以下になるためである。
なお、一旦、ステップ95、96および98による第2異常の仮判定の結果が得られると、その後、本処理が完了するまで(前記ステップ81がYESになるまで)の間に、第2出力変化量極値HDSVO2LRが再度、算出されても、ステップ92〜98は実行されず、第2異常の仮判定の結果が変更されることはない。このため、本処理では、第2実施形態で後述するように複数の第2出力変化量極値HDSVO2LRが算出された場合に、そのうちの最先の第2出力変化量極値HDSVO2LRと、それに対応する第2出力変化期間パラメータWDSVO2LRとの関係に基づいて、O2センサ24の第2異常が仮判定される。
一方、前記ステップ91の答がYESで、第2排ガス流量積算値SUMSVLRが第2所定値SUMLR2に達したとき、すなわち、リッチ空燃比への混合気空燃比の切換の開始時から多量の排ガスがO2センサ24を通過しときには、前記ステップ87または97で設定された第2仮判定済みフラグF_TMPJUDLRが「1」であるか否かを判別する(ステップ99)。この答がYESで、第2異常の仮判定結果が得られているときには、第2仮異常フラグF_TMPNGLRが「1」であるか否かを判別する(ステップ100)。
この答がNO(F_TMPNGLR=0)のとき、すなわち、リッチ空燃比への混合気空燃比の切換の開始時から多量の排ガスがO2センサ24を通過しており、かつ、O2センサ24の第2異常が発生していないと仮判定されているときには、第2異常が発生していないとの判定を確定し、そのことを表すために、第2異常フラグF_NGLRを「0」に設定する(ステップ101)。次いで、本処理による異常判定が完了したとして、そのことを表すために、第2異常判定完了フラグF_DONELRを「1」に設定し(ステップ102)、本処理を終了する。
一方、上記ステップ100の答がYES(F_TMPNGLR=1)のとき、すなわち、リッチ空燃比への混合気空燃比の切換の開始時から多量の排ガスがO2センサ24を通過しており、かつ、O2センサ24の第2異常が発生していると仮判定されているときには、第2異常が発生しているとの判定を確定し、そのことを表すために、第2異常フラグF_NGLRを「1」に設定する(ステップ103)。次いで、上記ステップ102を実行し、本処理を終了する。
一方、前記ステップ99の答がNOで、第2仮判定済みフラグF_TMPJUDLRが「0」のとき、すなわち、リッチ空燃比への混合気空燃比の切換の開始時から多量の排ガスがO2センサ24を通過しており、かつ、第2出力変化量極値HDSVO2LRおよび/または第2出力変化期間パラメータWDSVO2LRが算出されていないことで、第2異常の仮判定結果が得られていないときには、第2異常が発生しているとの判定を確定するとともに、上記ステップ103および102を実行し、本処理を終了する。
また、ステップ102の実行により前記ステップ81の答がYES(F_DONELR=1)になり、その場合には、第2実行条件成立フラグF_JUDLRを「0」にリセットする(ステップ104)とともに、前記ステップ84〜87を実行し、本処理を終了する。
また、第1実施形態における各種の要素と、各請求項に係る発明における各種の要素との対応関係は、次のとおりである。すなわち、第1実施形態におけるO2センサ24および三元触媒7が、本発明における空燃比センサおよび触媒にそれぞれ相当するとともに、第1実施形態におけるECU2が、本発明における空燃比制御手段、出力変化期間パラメータ算出手段、出力変化量極値算出手段、異常判定手段、および排ガス流量積算値算出手段に相当する。
また、第1実施形態における出力変化量DSVO2が、本発明における空燃比センサの出力の変化量に相当するとともに、第1実施形態における第1および第2所定変化量DVREFRL、DVREFLRが、本発明における所定変化量に相当する。さらに、第1実施形態における第1および第2出力変化期間パラメータWDSVO2RL、WDSVO2LRが、本発明における出力変化期間パラメータに相当するとともに、第1実施形態における第1および第2出力変化量極値HDSVO2RL、HDSVO2LRが、本発明における出力変化量極値に相当する。また、第1実施形態における第1および第2判定用パラメータKJUDSVO2RL、KJUDSVO2LRが、本発明における出力変化期間パラメータと出力変化量極値との関係、および出力変化期間パラメータに対する出力変化量極値の比に相当する。さらに、第1実施形態における第1および第2排ガス流量積算値SUMSVRL、SUMSVLRが、本発明における排ガス流量積算値に相当するとともに、第1実施形態における第1および第2所定値SUMLR1、SUMLR2が、本発明における第3および第4所定値にそれぞれ相当する。
以上のように、第1実施形態によれば、第1異常判定処理が実行されることによって、リッチ空燃比からリーン空燃比への混合気空燃比の切換が行われた後に、この切換により出力変化量DSVO2が第1所定変化量DVREFRLになってから再び第1所定変化量DVREFRLに戻るまでの期間(以下「第1出力変化期間」という)を表す第1出力変化期間パラメータWDSVO2RLが算出される(図6のステップ68)。また、第1出力変化期間パラメータWDSVO2RLによって表される第1出力変化期間内に得られた出力変化量DSVO2の極値である第1出力変化量極値HDSVO2RLが算出される(図4のステップ54)。さらに、算出された第1出力変化期間パラメータWDSVO2RLに対する、第1出力変化量極値の絶対値|HDSVO2RL|の比に基づいて、O2センサ24の第1異常が仮判定される(図2のステップ14〜16および18)。
また、第2異常判定処理が実行されることによって、リーン空燃比からリッチ空燃比への混合気空燃比の切換が行われた後に、この切換により出力変化量DSVO2が第2所定変化量DVREFLRになってから再び第2所定変化量DVREFLRに戻るまでの期間(以下「第2出力変化期間」という)を表す第2出力変化期間パラメータWDSVO2LRが算出される(図11のステップ148)。また、第2出力変化期間パラメータWDSVO2LRによって表される第2出力変化期間内に得られた出力変化量DSVO2の極値である第2出力変化量極値HDSVO2LRが算出される(図10のステップ134)。さらに、算出された第2出力変化期間パラメータWDSVO2LRに対する、第2出力変化量極値の絶対値|HDSVO2LR|の比に基づいて、O2センサ24の第2異常が仮判定される(図8のステップ94〜96および98)。
以上により、図20を用いて説明した排ガス空燃比停滞の影響により排ガス空燃比の変化量が比較的小さい場合でも、第1出力変化期間パラメータWDSVO2RLと第1出力変化量極値HDSVO2RLとの関係に基づいて、O2センサ24の第1異常を精度良く判定することができる。同様に、第2出力変化期間パラメータWDSVO2LRと第2出力変化量極値HDSVO2LRとの関係に基づいて、O2センサ24の第2異常を精度良く判定することができる。
また、第1出力変化期間パラメータWDSVO2RLとして、出力変化量DSVO2が第1所定変化量DVREFRLになってから再び第1所定変化量DVREFRLに戻るまでの期間を算出するので、ノイズなどの外乱などによりO2センサ出力SVO2が一時的に小さく変動したときの第1出力変化期間に基づいて第1異常の判定が行われるのを防止することができる。同様に、第2出力変化期間パラメータWDSVO2LRとして、出力変化量DSVO2が第2所定変化量DVREFLRになってから再び第2所定変化量DVREFLRに戻るまでの期間を算出するので、ノイズなどの外乱などによりO2センサ出力SVO2が一時的に小さく変動したときの第2出力変化期間に基づいて第2異常の判定が行われるのを防止することができる。
さらに、O2センサ24の応答特性が、リーン空燃比への混合気空燃比の切換時(以下「リーン空燃比切換時」という)と、リッチ空燃比への混合気空燃比の切換時(以下「リッチ空燃比切換時」という)とで、互いに異なる場合でも、リーン空燃比切換時におけるO2センサ24の異常である第1異常とリッチ空燃比切換時におけるO2センサ24の異常である第2異常の双方を精度良く判定することができる。
また、O2センサ24の第1異常の判定を、第1判定用パラメータKJUDSVO2RL、すなわち第1出力変化期間パラメータWDSVO2RLに対する第1出力変化量極値の絶対値|HDSVO2RL|の比に基づいて行うので、第1出力変化期間と第1出力変化量極値HDSVO2RLとの関係に直接的に基づいて適切に行うことができる。同様に、O2センサ24の第2異常の判定を、第2判定用パラメータKJUDSVO2LR、すなわち第2出力変化期間パラメータWDSVO2LRに対する第2出力変化量極値の絶対値|HDSVO2LR|の比に基づいて行うので、第2出力変化期間と第2出力変化量極値HDSVO2LRとの関係に直接的に基づいて適切に行うことができる。
さらに、排ガス空燃比が理論排ガス空燃比の付近にあるときに、排ガス空燃比に対する出力変化量DSVO2が最大になるという出力特性を、O2センサ24が有しており、そのようなO2センサ24に対し、混合気空燃比を、理論空燃比よりもリーンなリーン空燃比とリッチなリッチ空燃比との間で切り換えるので、算出された第1および第2判定用パラメータKJUDSVO2RL,KJUDSVO2LRはそれぞれ、O2センサ24の第1および第2異常の有無をより良好に表す。したがって、前述した効果、すなわち、排ガス空燃比停滞の影響により排ガス空燃比の変化量が小さい場合でもO2センサ24の第1および第2異常を精度良く判定することができるという効果を、有効に得ることができる。
また、O2センサ24の上流側に三元触媒7が設けられているので、排ガス空燃比がエンジン3の複数の気筒間でばらついている場合でも、排ガスが三元触媒7において攪拌されるので、このばらつきに起因する排ガス空燃比の変動による異常判定への影響を抑制することができる。
さらに、第1異常判定処理において、リーン空燃比への混合気空燃比の切換が、フューエルカット運転への運転モードの切換を利用して行われ(図3のステップ36)、フューエルカット運転が開始された以降の排ガス流量の積算値である第1排ガス流量積算値SUMSVRLが算出される(図3のステップ37)。そして、算出された第1排ガス流量積算値SUMSVRLが第1所定値SUMRL1以上になって(図3のステップ39:YES)から第2所定値SUMRL2に達する(図2のステップ11:YES)までの期間(以下「第1判定期間」という)が経過するまでに、第1判定用パラメータKJUDSVO2RLに基づくO2センサ24の第1異常の判定が終了しているとき(図2のステップ19:YES)には、当該判定結果に基づいてO2センサ24の第1異常が確定される(ステップ20、21および23)。
また、第2異常判定処理において、リッチ空燃比への混合気空燃比の切換が、フューエルカット運転終了後のCAT還元処理モードへの運転モードの切換を利用して行われ(図9のステップ116および117)、CAT還元モードが開始された以降の排ガス流量の積算値である第2排ガス流量積算値SUMSVLRが算出される(図9のステップ118)。そして、算出された第2排ガス流量積算値SUMSVLRが第1所定値SUMLR1以上になって(図9のステップ120:YES)から第2所定値SUMLR2に達する(図8のステップ91:YES)までの期間(以下「第2判定期間」という)が経過するまでに、第2判定用パラメータKJUDSVO2LRに基づくO2センサ24の第2異常の判定が終了しているとき(図8のステップ99:YES)には、当該判定結果に基づいてO2センサ24の第2異常が確定される(ステップ100、101および103)。
このように、フューエルカット運転の開始後すなわちリーン空燃比への混合気空燃比の切換開始後、第1排ガス流量積算値SUMSVRLが第1所定値SUMRL1に達した後に、そのときに得られたO2センサ24の第1異常の判定結果に基づいて、O2センサ24の異常が確定される。したがって、リーン空燃比への混合気空燃比の切換開始後、リーン空燃比の混合気空燃比が燃焼することによって生成された排ガスがO2センサ24に到達するまでのむだ時間を補償しながら、O2センサ24の異常を適切に判定することができる。
同様に、CAT還元モードの開始後すなわちリッチ空燃比への混合気空燃比の切換開始後、第2排ガス流量積算値SUMSVLRが第1所定値SUMLR1に達した後に、そのときに得られたO2センサ24の異常の判定結果に基づいて、O2センサ24の異常が確定される。したがって、リッチ空燃比への混合気空燃比の切換開始後、リッチ空燃比の混合気が燃焼することによって生成された排ガスがO2センサ24に到達するまでのむだ時間を補償しながら、O2センサ24の異常を精度良く判定することができる。
また、O2センサ24が異常の場合には、リーン空燃比への混合気空燃比の切換開始後、多量の排ガスがO2センサ24を通過しても、O2センサ出力SVO2がほとんど変化せず、その結果、第1出力変化期間パラメータWDSVO2RLおよび第1出力変化量極値HDSVO2RLの少なくとも一方の算出が完了しない。同様に、O2センサ24が異常の場合には、リッチ空燃比への混合気空燃比の切換開始後、多量の排ガスがO2センサ24を通過しても、O2センサ出力SVO2がほとんど変化せず、その結果、第2出力変化期間パラメータWDSVO2LRおよび第2出力変化量極値HDSVO2LRの少なくとも一方の算出が完了しない。
これに対して、第1異常判定処理では、リーン空燃比への混合気空燃比の切換開始後、第1排ガス流量積算値SUMSVRLが第2所定値SUMRL2を超えても(図2のステップ11:YES)なお、すなわち、多量の排ガスがO2センサ24を通過してもなお、第1出力変化期間パラメータWDSVO2RLおよび第1出力変化量極値HDSVO2RLの算出が完了していないとき(図2のステップ19:NO)に、O2センサ24の第1異常が発生しているとの判定を確定する(ステップ23)。したがって、第1異常を精度良く判定することができる。
同様に、第2異常判定処理では、リッチ空燃比への混合気空燃比の切換開始後、第2排ガス流量積算値SUMSVLRが第2所定値SUMLR2を超えても(図8のステップ91:YES)なお、すなわち、多量の排ガスがO2センサ24を通過してもなお、第2出力変化期間パラメータWDSVO2LRおよび第2出力変化量極値HDSVO2LRの算出が完了していないとき(図8のステップ99:NO)に、O2センサ24の第2異常が発生しているとの判定を確定する(ステップ103)。したがって、O2センサ24の第2異常を精度良く判定することができる。
また、O2センサ24の応答特性が同じであっても、第1出力変化期間は、O2センサ24を通過する排ガスの流量が少ないほど、より長くなる。これに対し、上述した第1実施形態によれば、第1出力変化期間パラメータWDSVO2RLを、時間ではなく、排ガスの流量で表すので、第1異常の判定を排ガスの流量に応じて精度良く行うことができる。同様に、第2出力変化期間パラメータWDSVO2LRを、時間ではなく、排ガスの流量で表すので、第2異常の判定を、排ガスの流量に応じて精度良く行うことができる。
次に、図12〜図15を参照しながら、本発明の第2実施形態による第1および第2異常判定処理について説明する。この第2実施形態は、第1実施形態と比較して、後述する所定の条件が成立しているときにO2センサ24の異常判定を保留する点のみが異なっている。これらの図12〜図15において、第1実施形態と同じ実行内容のステップについては、同じステップ番号を付している。以下、第2実施形態による第1および第2異常判定処理について、第1実施形態と異なる実行内容を中心に説明する。
まず、図12に示す第1異常判定処理では、前記ステップ6に続くステップ161において、後述する第1極値カウンタのカウンタ値CHDSVO2RLを値0にリセットする。次いで、前記ステップ7を実行し、本処理を終了する。
前記ステップ8に続くステップ162では、図13に示すHDSVO2RL算出処理を実行する。本処理では、図4に示す第1実施形態のHDSVO2RL算出処理と異なり、第1出力変化量極値HDSVO2RLが算出されたときのO2センサ出力SVO2と、第1出力変化量極値HDSVO2RLが算出された回数とに基づいて、O2センサ24の第1異常の判定を保留すべきか否かが判定される。
図13の前記ステップ55に続くステップ171では、O2センサ出力SVO2を第1ピーク時出力SVO2PKRLとして設定し、本処理を終了する。また、前記ステップ58に続くステップ172では、図12のステップ161でリセットされた第1極値カウンタのカウンタ値CHDSVO2RLをインクリメントする。
図4を用いて説明したように、ステップ57の答がYESになったときに、第1出力変化量極値HDSVO2RLの算出(設定)が完了し、そのことを表す第1出力変化量極値算出済みフラグF_HDSVO2RLが「1」にセットされる(ステップ58)。それに加え、第1極値カウンタのカウンタ値CHDSVO2RLは、第1実行条件が成立していない限り(図12のステップ3:NO)、図12のステップ161の実行により値0にリセットされるとともに、上記ステップ58に続くステップ172の実行によりインクリメントされる。以上から、第1極値カウンタのカウンタ値CHDSVO2RLは、リーン空燃比への混合気空燃比の切換開始後に、第1出力変化量極値HDSVO2RLが算出された回数を表す。
ステップ172に続くステップ173では、第1極値カウンタのカウンタ値CHDSVO2RLが値1よりも大きいか否かを判別する。この答がYESで、複数の第1出力変化量極値HDSVO2RLが算出されているときには、O2センサ24の第1異常の判定を保留すべきとして、そのことを表すために、第1判定許可フラグF_HDSVO2RLOKを「0」に設定し(ステップ174)、本処理を終了する。
一方、上記ステップ173の答がNOのとき、すなわち、算出された第1出力変化量極値HDSVO2RLが1つのときには、前記ステップ171で設定された第1ピーク時出力SVO2PKRLが、第1下限値VLMLRLおよび第1上限値VLMHRLで規定される第1所定範囲内にあるか否かを判別する(ステップ175)。これらの第1下限値VLMLRLおよび第1上限値VLMHRLは、両者で規定された第1所定範囲で表される排ガス空燃比の範囲が理論排ガス空燃比を含む理論排ガス空燃比の付近の所定の範囲になるように、設定されている。すなわち、第1所定範囲で表される排ガス空燃比の範囲が、リーン空燃比に対応するリーン排ガス空燃比とリッチ空燃比に対応するリッチ排ガス空燃比との間の理論排ガス空燃比の付近の所定の範囲になるように設定されている。
上記ステップ175の答がNOで、第1ピーク時出力SVO2PKRLが第1所定範囲内にないときには、O2センサ24の第1異常の判定を保留すべきとして、前記ステップ174を実行し、本処理を終了する。
一方、ステップ175の答がYESのとき、すなわち、算出された第1出力変化量極値HDSVO2RLが1つで、かつ、第1ピーク時出力SVO2PKRLが第1所定範囲内にあるときには、O2センサ24の第1異常の判定を保留せずに、許可すべきとして、第1判定許可フラグF_HDSVO2RLOKを「1」にセットし(ステップ176)、本処理を終了する。
前述したように、第1ピーク時出力SVO2PKRLは、第1出力変化量極値HDSVO2RLと同様、出力変化量DSVO2がその前回値DSVO2Z以下である限り(ステップ53:YES)、すなわち出力変化量DSVO2が増大している限り、今回のO2センサ出力SVO2に更新される(ステップ171)。このことと、第1実施形態で述べた第1出力変化量極値HDSVO2RLの算出手法の説明から明らかなように、第1ピーク時出力SVO2PKRLは、出力変化量DSVO2が極値になったときに得られたO2センサ出力SVO2に相当する。
図12に戻り、前記ステップ11の答がYESのときには、図13のステップ174または176で設定された第1判定許可フラグF_HDSVO2RLOKが「1」であるか否かを判別する(ステップ163)。この答がYES(F_HDSVO2RLOK=1)で、O2センサ24の第1異常の判定が保留されておらず、許可されているときには、前記ステップ19〜23を実行することによって、前述したように第1異常の判定を確定し、本処理を終了する。
一方、ステップ163の答がNO(F_HDSVO2RLOK=0)で、O2センサ24の第1異常の判定が保留されているときには、ステップ19〜23をスキップし、第1異常の判定を確定せずに、そのまま本処理を終了する。
図14に示す第2異常判定処理では、前記ステップ86に続くステップ181において、後述する第2極値カウンタのカウンタ値CHDSVO2LRを値0にリセットする。次いで、前記ステップ87を実行し、本処理を終了する。
前記ステップ88に続くステップ182では、図15に示すHDSVO2LR算出処理を実行する。本処理では、図10に示す第1実施形態のHDSVO2LR算出処理と異なり、第2出力変化量極値HDSVO2LRが算出されたときのO2センサ出力SVO2と、第2出力変化量極値HDSVO2LRが算出された回数とに基づいて、O2センサ24の第2異常の判定を保留すべきか否かが判定される。
図15の前記ステップ135に続くステップ191では、O2センサ出力SVO2を第2ピーク時出力SVO2PKLRとして設定し、本処理を終了する。また、前記ステップ138に続くステップ192では、図14のステップ181でリセットされた第2極値カウンタのカウンタ値CHDSVO2LRをインクリメントする。
図10を用いて説明したように、ステップ137の答がYESになったときに、第2出力変化量極値HDSVO2LRの算出(設定)が完了し、そのことを表す第2出力変化量極値算出済みフラグF_HDSVO2LRが「1」にセットされる(ステップ138)。それに加え、第2極値カウンタのカウンタ値CHDSVO2LRは、第2実行条件が成立していない限り(図14のステップ83:NO)、図14のステップ181の実行により値0にリセットされるとともに、上記ステップ138に続くステップ192の実行によりインクリメントされる。以上から、第2極値カウンタのカウンタ値CHDSVO2LRは、リッチ空燃比への混合気空燃比の切換開始後に、第2出力変化量極値HDSVO2LRが算出された回数を表す。
ステップ192に続くステップ193では、第2極値カウンタのカウンタ値CHDSVO2LRが値1よりも大きいか否かを判別する。この答がYESで、複数の第2出力変化量極値HDSVO2LRが算出されているときには、O2センサ24の第2異常の判定を保留すべきとして、そのことを表すために、第2判定許可フラグF_HDSVO2LROKを「0」に設定し(ステップ194)、本処理を終了する。
一方、上記ステップ193の答がNOのとき、すなわち、算出された第2出力変化量極値HDSVO2LRが1つのときには、前記ステップ191で設定された第2ピーク時出力SVO2PKLRが、第2下限値VLMLLRおよび第2上限値VLMHLRで規定される第2所定範囲内にあるか否かを判別する(ステップ195)。図13のステップ175で用いられる第1下限値VLMLRLおよび第1上限値VLMHRLと同様、これらの第2下限値VLMLLRおよび第2上限値VLMHLRは、両者で規定された第2所定範囲で表される排ガス空燃比の範囲が理論排ガス空燃比を含む理論排ガス空燃比の付近の所定の範囲になるように、設定されている。すなわち、第2所定範囲で表される排ガス空燃比の範囲が、リーン排ガス空燃比とリッチ排ガス空燃比との間の理論排ガス空燃比の付近の所定の範囲になるように、第2下限値VLMLLRおよび第2上限値VLMHLRが設定されている。
上記ステップ195の答がNOで、第2ピーク時出力SVO2PKLRが第2所定範囲内にないときには、O2センサ24の第2異常の判定を保留すべきとして、前記ステップ194を実行し、本処理を終了する。
一方、ステップ195の答がYESのとき、すなわち、算出された第2出力変化量極値HDSVO2LRが1つで、かつ、第2ピーク時出力SVO2PKLRが第2所定範囲内にあるときには、O2センサ24の第2異常の判定を保留せずに、許可すべきとして、第2判定許可フラグF_HDSVO2LROKを「1」にセットし(ステップ196)、本処理を終了する。
前述したように、第2ピーク時出力SVO2PKLRは、第2出力変化量極値HDSVO2LRと同様、出力変化量DSVO2がその前回値DSVO2Z以上である限り(ステップ133:YES)、すなわち出力変化量DSVO2が増大している限り、今回のO2センサ出力SVO2に更新される(ステップ191)。このことと、第1実施形態で述べた第2出力変化量極値HDSVO2LRの算出手法の説明から明らかなように、第2ピーク時出力SVO2PKLRは、出力変化量DSVO2が極値になったときに得られたO2センサ出力SVO2に相当する。
図14に戻り、前記ステップ91の答がYESのときには、図15のステップ194または196で設定された第2判定許可フラグF_HDSVO2LROKが「1」であるか否かを判別する(ステップ183)。この答がYES(F_HDSVO2LROK=1)で、O2センサ24の第2異常の判定が保留されておらず、許可されているときには、前記ステップ99〜103を実行することによって、前述したように第2異常の判定を確定し、本処理を終了する。
一方、ステップ183の答がNO(F_HDSVO2LROK=0)で、O2センサ24の第2異常の判定が保留されているときには、ステップ99〜103をスキップし、第2異常の判定を確定せずに、そのまま本処理を終了する。
また、第2実施形態における各種の要素と、本発明における各種の要素との対応関係は、次のとおりである。すなわち、第2実施形態における第1および第2ピーク時出力SVO2PKRL、SVO2PKLRが、本発明における空燃比センサの出力の変化量が極値になったときに得られた空燃比センサの出力に相当する。
以上のように、第2実施形態によれば、リーン空燃比への混合気空燃比の切換後、出力変化量DSVO2が極値になったときに得られたO2センサ出力SVO2に相当する第1ピーク時出力SVO2PKRLが算出される(図13のステップ171)。また、第1ピーク時出力SVO2PKRLが第1下限値VLMLRLおよび第1上限値VLMHRLで規定される第1所定範囲内にないとき(図13のステップ175:NO、図12のステップ163:NO)に、O2センサ24の第1異常の判定が保留される。さらに、リッチ空燃比への混合気空燃比の切換後、出力変化量DSVO2が極値になったときに得られたO2センサ出力SVO2に相当する第2ピーク時出力SVO2PKLRが算出される(図15のステップ191)。また、第2ピーク時出力SVO2PKLRが第1下限値VLMLLRおよび第1上限値VLMHLRで規定される第2所定範囲内にないとき(図15のステップ195:NO、図14のステップ183:NO)に、O2センサ24の第2異常の判定が保留される。
リーン空燃比とリッチ空燃比との間で混合気空燃比を変化させた場合において、前述した排ガス空燃比停滞が発生しないときには、通常、排ガス空燃比が、リーン排ガス空燃比(リーン空燃比に対応する排ガス空燃比)とリッチ排ガス空燃比(リッチ空燃比に対応する排ガス空燃比)との間の理論排ガス空燃比であるときに、排ガス空燃比の変化量は最大になる。このため、排ガス空燃比停滞が発生していない場合には、空燃比センサの出力で表される排ガス空燃比が理論排ガス空燃比付近にあるときに、空燃比センサの出力変化量の極値が発生する。
このことから明らかなように、混合気空燃比の切換が行われた後に出力変化量DSVO2が極値になったときに得られたO2センサ出力SVO2で表される排ガス空燃比が、上記の理論排ガス空燃比付近にないときには、排ガス空燃比停滞が発生している可能性がある。さらに、この場合、排ガス空燃比が、理論排ガス空燃比を含む所定排ガス空燃比範囲内にないときには、前述した切換直後排ガス空燃比停滞の発生により排ガス空燃比がほとんど変化せずにすぐに停滞することで、排ガス空燃比の変化量が非常に小さくなっている場合がある。その場合には、前述した第1および第2判定用パラメータKJUDSVO2RL,KJUDSVO2LRに基づいて第1異常および第2異常をそれぞれ判定しても、O2センサ24が正常なときに第1および第2異常が発生していると誤判定するおそれがある。
これに対して、第2実施形態によれば、第1ピーク時出力SVO2PKRLが第1所定範囲内にないときに、O2センサ24の第1異常の判定が保留されるとともに、この第1所定範囲で表される排ガス空燃比の範囲が、リーン排ガス空燃比とリッチ排ガス空燃比との間の理論排ガス空燃比の付近の所定の範囲になるように設定されている。これにより、切換直後排ガス空燃比停滞の発生中における第1異常の判定を保留できるので、上述した誤判定を防止することができる。
同様に、第2ピーク時出力SVO2PKLRが第2所定範囲内にないときに、O2センサ24の第2異常の判定が保留されるとともに、この第2所定範囲で表される排ガス空燃比の範囲が、リーン排ガス空燃比とリッチ排ガス空燃比との間の理論排ガス空燃比の付近の所定の範囲になるように設定されている。これにより、切換直後排ガス空燃比停滞の発生中における第2異常の判定を保留できるので、上述した誤判定を防止することができる。
また、複数の第1出力変化量極値HDSVO2RLが算出されているとき(図13のステップ173:YES、図12のステップ163:NO)に、第1異常の判定が保留されるとともに、複数の第2出力変化量極値HDSVO2LRが算出されているとき(図15のステップ193:YES、図14のステップ183:NO)に、第2異常の判定が保留される。このことによっても、切換直後排ガス空燃比停滞の発生中における第1および第2異常の判定を保留できるので、上述した誤判定を防止することができる。その他、第1実施形態による効果を同様に得ることができる。
さらに、第1異常の判定が保留された後、一旦、第1実行条件が成立しなくなる(ステップ3:NO)と、ステップ4〜7および161において、各種のフラグが「0」にリセットされる。そして、その後のエンジン3の運転中に、第1実行条件が成立すると、再度、第1出力変化期間パラメータWDSVO2RLおよび第1出力変化量極値HDSVO2RLが算出されるとともに、算出された第1出力変化期間パラメータWDSVO2RLと第1出力変化量極値HDSVO2RLとの関係に基づいて、第1異常が判定される。このことは、第2異常の判定についても同様である。したがって、エンジン3の停止および次回の始動を待つことなく、エンジン3の今回の運転中に、第1および第2異常の判定を改めて実行することができる。
なお、第1および第2実施形態では、O2センサ24の第1異常を、第1判定用パラメータKJUDSVO2RL、すなわち第1出力変化期間パラメータWDSVO2RLに対する第1出力変化量極値の絶対値|HDSVO2RL|の比に基づいて判定しているが、前者WDSVO2RLと後者HDSVO2RLとの関係を表す他の適当なパラメータ、例えば次のパラメータ(A)〜(H)に基づいて判定してもよい。
(A)第1出力変化期間パラメータWDSVO2RLに対する第1出力変化量極値HDSVO2RLそのものの比
(B)第1判定用パラメータKJUDSVO2RLの逆数、すなわち、第1出力変化量極値の絶対値|HDSVO2RL|(または第1出力変化量極値HDSVO2RL)に対する第1出力変化期間パラメータWDSVO2RLの比(WDSVO2RL/|HDSVO2RL|)
(C)第1出力変化期間パラメータWDSVO2RLと第1出力変化量極値HDSVO2RLとの偏差(WDSVO2RL−HDSVO2RL)、またはこの偏差の絶対値
(D)第1出力変化量極値HDSVO2RLと第1出力変化期間パラメータWDSVO2RLとの偏差(HDSVO2RL−WDSVO2RL)、またはこの偏差の絶対値
(E)第1出力変化期間パラメータWDSVO2RLに対する、第1出力変化量極値HDSVO2RL(または絶対値|HDSVO2RL|)と第1出力変化期間パラメータWDSVO2RLとの偏差(またはこの偏差の絶対値)の比((HDSVO2RL−WDSVO2RL)/WDSVO2RL)
(F)(E)の逆数(WDSVO2RL/(HDSVO2RL−WDSVO2RL))
(G)第1出力変化期間パラメータWDSVO2RLに対する、第1出力変化期間パラメータWDSVO2RLと第1出力変化量極値HDSVO2RL(または絶対値|HDSVO2RL|)との偏差(またはこの偏差の絶対値)の比((WDSVO2RL−HDSVO2RL)/WDSVO2RL)
(H)(G)の逆数(WDSVO2RL/(WDSVO2RL−|HDSVO2RL|))
また、第2実施形態では、複数の第1出力変化量極値HDSVO2RLが算出されておらず、かつ、第1ピーク時出力SVO2PKRLが第1所定範囲内にあるときに、第1異常の判定を保留せずに許可しているが、これらの条件の一方のみが成立しているときに、第1異常の判定を許可してもよい。同様に、第2実施形態では、複数の第2出力変化量極値HDSVO2LRが算出されておらず、かつ、第2ピーク時出力SVO2PKLRが第2所定範囲内にあるときに、第2異常の判定を保留せずに許可しているが、これらの条件の一方のみが成立しているときに、第2異常の判定を許可してもよい。
次に、図16〜図18を参照しながら、本発明の第3実施形態による第1および第2異常判定処理について説明する。図16に示す第3実施形態の第1異常判定処理は、第1実施形態と比較して、第1判定用パラメータKJUDSVO2RL、すなわち第1出力変化期間パラメータWDSVO2RLに対する第1出力変化量極値の絶対値|HDSVO2RL|の比ではなく、第1出力変化期間パラメータWDSVO2RLに基づいて算出された第1判定用しきい値HDREFRLと第1出力変化量極値HDSVO2RLとの比較結果に基づいて、O2センサ24の第1異常を判定する点のみが異なっている。
図16において、第1実施形態の第1異常判定処理と同じ実行内容のステップについては、同じステップ番号を付している。図16と図2との比較から明らかなように、前記ステップ14および15に代えて、ステップ201および202をそれぞれ実行する点のみが異なっているので、以下、この点を中心に説明する。
前記ステップ13の答がYESのときには、図6のステップ68で算出された第1出力変化期間パラメータWDSVO2RLに基づき、図17に示すマップを検索することによって、第1判定用しきい値HDREFRLを算出する(ステップ201)。このマップでは、第1判定用しきい値HDREFRLは、第1出力変化期間パラメータWDSVO2RLが大きいほど、より大きな値にリニアに設定されている。
次いで、図4のステップ54で設定された第1出力変化量極値の絶対値|HDSVO2RL|が、ステップ201で算出された第1判定用しきい値HDREFRL以下であるか否かを判別する(ステップ202)。この答がYESのときには、O2センサ24の第1異常が発生していると仮判定し、前記ステップ16を実行し、第1仮異常フラグF_TMPNGRLを「1」にセットするとともに、前記ステップ17を実行し、本処理を終了する。
一方、ステップ202の答がNOで、第1出力変化量極値の絶対値|HDSVO2RL|が第1判定用しきい値HDREFRLよりも小さいときには、O2センサ24の第1異常が発生していないと仮判定し、前記ステップ18を実行し、第1仮異常フラグF_TMPNGRLを「0」にセットするとともに、前記ステップ17を実行し、本処理を終了する。
また、図18に示す第3実施形態の第2異常判定処理は、第1実施形態と比較して、第2判定用パラメータKJUDSVO2LR、すなわち第2出力変化期間パラメータWDSVO2LRに対する第2出力変化量極値の絶対値|HDSVO2LR|の比ではなく、第2出力変化期間パラメータWDSVO2LRに基づいて算出された第2判定用しきい値HDREFLRと第2出力変化量極値HDSVO2LRとの比較結果に基づいて、O2センサ24の第2異常を判定する点のみが異なっている。
図18において、第1実施形態の第2異常判定処理と同じ実行内容のステップについては、同じステップ番号を付している。図18と図8との比較から明らかなように、前記ステップ94および95に代えて、ステップ211および212をそれぞれ実行する点のみが異なっているので、以下、この点を中心に説明する。
前記ステップ93の答がYESのときには、図11のステップ148で算出された第2出力変化期間パラメータWDSVO2LRに基づき、マップ(図示せず)を検索することによって、第2判定用しきい値HDREFLRを算出する(ステップ211)。このマップでは、第2判定用しきい値HDREFLRは、第1出力変化期間パラメータWDSVO2RLに基づく第1判定用しきい値HDREFRLの設定と同様、第2出力変化期間パラメータWDSVO2LRが大きいほど、より大きな値にリニアに設定されている。
次いで、図10のステップ134で設定された第2出力変化量極値の絶対値|HDSVO2LR|が、ステップ211で算出された第2判定用しきい値HDREFLR以下であるか否かを判別する(ステップ212)。この答がYESのときには、O2センサ24の第2異常が発生していると仮判定し、前記ステップ96を実行し、第2仮異常フラグF_TMPNGLRを「1」にセットするとともに、前記ステップ97を実行し、本処理を終了する。
一方、ステップ212の答がNOで、第2出力変化量極値の絶対値|HDSVO2LR|が第2判定用しきい値HDREFLRよりも小さいときには、O2センサ24の第2異常が発生していないと仮判定し、前記ステップ98を実行し、第2仮異常フラグF_TMPNGLRを「0」にセットするとともに、前記ステップ97を実行し、本処理を終了する。
また、第3実施形態における各種の要素と、本発明における各種の要素との対応関係は、次のとおりである。すなわち、第3実施形態における第1および第2判定用しきい値HDREFRL、HDREFLRが、本発明における第1しきい値に相当する。
以上により、第3実施形態によれば、第1実施形態による効果を同様に得ることができる。
なお、第3実施形態では、第1出力変化期間パラメータWDSVO2RLに基づいて算出された第1判定用しきい値HDREFRLと第1出力変化量極値HDSVO2RLとの比較結果に基づいて、O2センサ24の第1異常を判定しているが、これとは逆に、第1出力変化量極値HDSVO2RLに基づいて算出されたしきい値と第1出力変化期間パラメータWDSVO2RLとの比較結果に基づいて、O2センサ24の第1異常を判定してもよい。このことは、第2判定用しきい値HDREFLRおよび第2出力変化量極値HDSVO2LRについても、同様に当てはまる。
また、第3実施形態では、第2実施形態で述べた第1および第2異常の判定の保留(図13のステップ173〜176、図12のステップ163、図15のステップ193〜196、図14のステップ183)を、行っていないが、行ってもよい。この場合、第2実施形態の場合と異なり、複数の第1出力変化量極値HDSVO2RLが算出されていないという条件、および、第1ピーク時出力SVO2PKRLが第1所定範囲内にあるという条件の一方が成立しているときに、第1異常の判定を保留せずに許可してもよい。このことは、第2異常の判定の保留についても同様である。
さらに、第1および第3実施形態では、第2実施形態で述べたように複数の第1出力変化量極値HDSVO2RLが算出された場合に、最先の第1出力変化量極値HDSVO2RLと、それに対応する第1出力変化期間パラメータWDSVO2RLとの関係に基づいて、第1異常を判定しているが、複数のHDSVO2RL値のうちの最大の第1出力変化量極値HDSVO2RLと、それに対応する第1出力変化期間パラメータWDSVO2RLとの関係に基づいて、O2センサ24の第1異常を判定してもよい。あるいは、複数の第1出力変化量極値HDSVO2RLのうち、最後に算出された第1出力変化量極値HDSVO2RLと、それに対応する第1出力変化期間パラメータWDSVO2RLとの関係に基づいて、第1異常を判定してもよい。以上の点は、第2出力変化量極値HDSVO2LRおよび第2出力変化期間パラメータWDSVO2LRについても同様である。
なお、本発明は、説明した第1〜第3実施形態(以下、総称して「実施形態」という)に限定されることなく、種々の態様で実施することができる。例えば、実施形態では、第1所定変化量DVREFRLおよび第2所定変化量DVREFLRの絶対値を、互いに等しい値に設定しているが、互いに異なる値に設定してもよい。また、実施形態では、第1および第2出力変化期間パラメータWDSVO2RL,WDSVO2LRを、排ガスの流量で表しているが、時間で表してもよい。さらに、実施形態では、第1および第2出力変化量極値HDSVO2RL,HDSVO2LRを、値0を基準としているが、第1および第2所定変化量DVREFRL,DVREFLRをそれぞれ基準としてもよい。
また、実施形態では、第1および第2異常判定処理の双方を実行しているが、両者の一方のみを実行してもよい。さらに、実施形態では、O2センサ24の上流側に三元触媒7が設けられているが、この三元触媒7を省略してもよい。また、実施形態では、O2センサ24は、ジルコニアタイプであるが、チタニアタイプでもよい。
さらに、実施形態では、本発明の空燃比センサは、いわゆる二値型のO2センサ24であるが、排ガス空燃比を検出する他の適当なセンサ、例えば、前述したLAFセンサ23でもよい。この場合、リーン空燃比およびリッチ空燃比を、必ずしも実施形態で述べたように理論空燃比よりもリーン側およびリッチ側にそれぞれ設定する必要はなく、両者の間で相対的にリーン側およびリッチ側であればよい。この条件を満たす限り、リーン空燃比およびリッチ空燃比の双方を、理論空燃比よりもリーン側に、あるいはリッチ側に、設定してもよい。さらに、この場合、前述した第1下限値VLMLRLおよび第1上限値VLMHRLで規定される第1所定範囲は、排ガス空燃比の変化量が最大になる所定排ガス空燃比を実験により求め、求めた所定排ガス空燃比を含む所定排ガス空燃比の付近の所定の範囲に設定される。このことは、第2下限値VLMLLRおよび第2上限値VLMHLRで規定される第2所定範囲についても同様である。
また、実施形態では、リーン空燃比への混合気空燃比の切換を、リッチ化運転からフューエルカット運転への運転モードの切換を利用して行うとともに、リッチ空燃比への混合気空燃比の切換をフューエルカット運転からCAT還元モードへの運転モードの切換を利用して行っているが、例えば、ECU2による燃料噴射弁5を介した空燃比制御によって、混合気空燃比を積極的にリーン空燃比とリッチ空燃比との間で切り換えてもよい。あるいは、三元触媒7を活性化すべく昇温するために混合気空燃比をリーン空燃比とリッチ空燃比との間で切り換えるパータべーション制御を利用してもよい。また、リッチ空燃比からリーン空燃比への混合気空燃比の切換時におけるリッチ空燃比と、リーン空燃比からリッチ空燃比への混合気空燃比の切換時におけるリッチ空燃比とが、互いに異なっていてもよく、同様に、リッチ空燃比からリーン空燃比への混合気空燃比の切換時におけるリーン空燃比と、リーン空燃比からリッチ空燃比への混合気空燃比の切換時におけるリーン空燃比とが、互いに異なっていてもよい。
さらに、実施形態では、O2センサ24の第1および第2異常を仮判定した後、当該仮判定に基づく第1および第2異常の確定を、第1および第2排ガス流量積算値SUMSVRL,SUMSVLRが第2所定値SUMRL2およびSUMLR2にそれぞれ達する(ステップ11,91:YES)のを待って、行っているが、当該仮判定の結果が得られた時にすぐに行ってもよい。また、実施形態では、本発明の内燃機関は、車両用のガソリンエンジンであるエンジン3であるが、例えば、ディーゼルエンジンやLPGエンジン、クランク軸が鉛直方向に配置された船外機などのような船舶推進機用エンジンを含む、様々な産業用の内燃機関でもよい。その他、本発明の趣旨の範囲内で、細部の構成を適宜、変更することが可能である。