(57)【要約】本空燃比制御装置は、触媒４３を排気通路に備える内燃機関に適用され、その触媒よりも下流に配設された濃淡電池型酸素濃度センサである下流側空燃比センサ５６と、その下流側空燃比センサの出力値に基づいて触媒流入ガスの空燃比を変更するように、機関１０に供給される混合気の空燃比を制御する空燃比制御手段と、を備える。更に、その空燃比制御手段は、下流側空燃比センサの出力値が減少している場合に触媒流入ガスの空燃比が理論空燃比よりもリッチ側の空燃比となるように、且つ、下流側空燃比センサの出力値が増大している場合に触媒流入ガスの空燃比が理論空燃比よりもリーン側の空燃比となるように、機関１０に供給される混合気の空燃比を制御する。
2010134209.tif 000002
【特許請求の範囲】
【請求項１】
排気通路に触媒が配設された内燃機関に適用され、
前記排気通路の前記触媒よりも下流に配設され且つ同触媒から流出したガスである触媒流出ガスに含まれる酸素の量が同触媒流出ガスに含まれる未燃物を酸化するために必要な量よりも少ないときに最大出力値を出力するとともに同触媒流出ガスに含まれる酸素の量が同触媒流出ガスに含まれる未燃物を酸化するために必要な量よりも多いときに最小出力値を出力する濃淡電池型酸素濃度センサである下流側空燃比センサと、
前記下流側空燃比センサの出力値に基づいて前記触媒に流入するガスである触媒流入ガスの空燃比を変更するように前記機関に供給される混合気の空燃比を制御する空燃比制御手段と、
を備えた内燃機関の空燃比制御装置において、
前記空燃比制御手段は、
前記下流側空燃比センサの出力値が減少している場合に前記触媒流入ガスの空燃比が理論空燃比よりもリッチ側の空燃比となるように、且つ、前記下流側空燃比センサの出力値が増大している場合に前記触媒流入ガスの空燃比が理論空燃比よりもリーン側の空燃比となるように、前記機関に供給される混合気の空燃比を制御する通常空燃比フィードバック制御を実行するように構成された空燃比制御装置。
【請求項２】
請求の範囲１に記載の内燃機関の空燃比制御装置において、
前記空燃比制御手段は、
前記下流側空燃比センサの出力値が所定の第１閾値よりも小さく且つ同第１閾値よりも小さい所定の第２閾値よりも大きいとき前記通常空燃比フィードバック制御を実行するように構成され、
前記第１閾値は、前記最大出力値と前記最小出力値との中央の値である中央値と前記最大出力値との間の値であって且つ同中央値よりも同最大出力値に近い値に設定され、
前記第２閾値は、前記中央値と前記最小出力値との間の値であって且つ同中央値よりも同最小出力値に近い値に設定された、
空燃比制御装置。
【請求項３】
請求の範囲２に記載の内燃機関の空燃比制御装置において、
前記第１閾値は、前記触媒流入ガスの空燃比が理論空燃比よりもリーン側の空燃比であり且つ前記触媒の酸素吸蔵量が増大している場合であって、前記触媒流出ガスの空燃比が理論空燃比であるときの前記下流側空燃比センサの出力値に等しくなるように設定され、
前記第２閾値は、前記触媒流入ガスの空燃比が理論空燃比よりもリッチ側の空燃比であり且つ前記触媒の酸素吸蔵量が減少している場合であって、前記触媒流出ガスの空燃比が理論空燃比であるときの前記下流側空燃比センサの出力値に等しくなるように設定された、
空燃比制御装置。
【請求項４】
請求の範囲２又は請求の範囲３に記載の空燃比制御装置において、
前記空燃比制御手段は、
前記下流側空燃比センサの出力値が前記第１閾値を含む所定範囲内の値以上である場合、前記触媒流入ガスの空燃比が理論空燃比よりもリーン側の空燃比となるように前記機関に供給される混合気の空燃比を制御する空燃比制御装置。
【請求項５】
請求の範囲２又は請求の範囲３に記載の空燃比制御装置において、
前記空燃比制御手段は、
前記下流側空燃比センサの出力値が前記第２閾値を含む所定範囲内の値以下である場合、前記触媒流入ガスの空燃比が理論空燃比よりもリッチ側の空燃比となるように前記機関に供給される混合気の空燃比を制御する空燃比制御装置。
【請求項６】
請求の範囲２又は請求の範囲３に記載の空燃比制御装置において、
前記空燃比制御手段は、
前記下流側空燃比センサの出力値が前記第１閾値を含む所定範囲内の値以上である場合、前記触媒流入ガスの空燃比が理論空燃比よりもリーン側の空燃比となるように前記機関に供給される混合気の空燃比を制御し、且つ、
前記下流側空燃比センサの出力値が前記第２閾値を含む所定範囲内の値以下である場合、前記触媒流入ガスの空燃比が理論空燃比よりもリッチ側の空燃比となるように前記機関に供給される混合気の空燃比を制御する空燃比制御装置。
【請求項７】
請求の範囲１乃至請求の範囲６の何れか一項に記載の空燃比制御装置において、
前記空燃比制御手段は、
前記機関に吸入される吸入空気量を取得するとともに同取得された吸入空気量に基づいて前記機関に供給される混合気の空燃比を理論空燃比に一致させるための基本燃料噴射量を算出する基本燃料噴射量算出手段と、
前記基本燃料噴射量を補正するためのフィードバック量であるサブフィードバック量を前記下流側空燃比センサの出力値に基づいて算出するサブフィードバック量算出手段と、
前記基本燃料噴射量を前記サブフィードバック量により補正することにより得られる量の燃料を前記機関に噴射供給する燃料噴射手段と、
を備え、
前記サブフィードバック量算出手段は、
前記通常空燃比フィードバック制御を実行するために、前記下流側空燃比センサの出力値が減少している場合に前記サブフィードバック量が前記基本燃料噴射量を同出力値の変化速度の大きさが大きいほどより増大させる値となり、且つ、前記下流側空燃比センサの出力値が増大している場合に前記サブフィードバック量が前記基本燃料噴射量を同出力値の変化速度の大きさが大きいほどより減少させる値となるように、前記サブフィードバック量を算出するように構成された、
空燃比制御装置。
【請求項８】
請求の範囲６に記載の内燃機関の空燃比制御装置において、
前記空燃比制御手段は、
前記機関に吸入される吸入空気量を取得するとともに同取得された吸入空気量に基づいて前記機関に供給される混合気の空燃比を理論空燃比に一致させるための基本燃料噴射量を算出する基本燃料噴射量算出手段と、
前記基本燃料噴射量を補正するためのフィードバック量であるサブフィードバック量を前記下流側空燃比センサの出力値に基づいて算出するサブフィードバック量算出手段と、
前記基本燃料噴射量を前記サブフィードバック量により補正することにより得られる量の燃料を前記機関に噴射供給する燃料噴射手段と、
を備え、
前記サブフィードバック量算出手段は、前記通常空燃比フィードバック制御を実行するために、前記下流側空燃比センサの出力値が減少している場合に前記基本燃料噴射量を同出力値の変化速度の大きさが大きいほどより増大させ且つ前記下流側空燃比センサの出力値が増大している場合に前記基本燃料噴射量を同出力値の変化速度の大きさが大きいほどより減少させるサブフィードバック量の微分項を、同出力値の変化速度に所定の微分ゲインｋｄを乗じることにより算出する微分項算出手段、
を含む空燃比制御装置。
【請求項９】
請求の範囲８に記載の内燃機関の空燃比制御装置において、
前記サブフィードバック量算出手段は、
前記下流側空燃比センサの出力値が前記第１閾値以上である場合、前記第１閾値と前記下流側空燃比センサの出力値との差にリーン制御用ゲインＫｐＬを乗じた値と、前記第１閾値と前記第２閾値との間に設定された所定の目標値と前記第１閾値との差に第１ゲインＫｐＳ１を乗じた値と、の和を、前記基本燃料噴射量を減少させることによって前記機関に供給される混合気の空燃比を理論空燃比よりもリーン側の空燃比に制御するための前記サブフィードバック量の比例項として算出し、
前記下流側空燃比センサの出力値が前記第２閾値以下である場合、前記第２閾値と前記下流側空燃比センサの出力値との差にリッチ制御用ゲインＫｐＲを乗じた値と、前記目標値と前記第２閾値との差に第２ゲインＫｐＳ２を乗じた値と、の和を、前記基本燃料噴射量を増大させることによって前記機関に供給される混合気の空燃比を理論空燃比よりもリッチ側の空燃比に制御するための前記サブフィードバック量の比例項として算出し、
前記下流側空燃比センサ出力値が前記第１閾値と前記第２閾値との間にある場合、前記目標値と前記下流側空燃比センサの出力値との差に第３ゲインＫｐＳ３を乗じた値を前記サブフィードバック量の比例項として算出する比例項算出手段、
を含む空燃比制御装置。
【請求項１０】
請求の範囲９に記載の内燃機関の空燃比制御装置において、
前記比例項算出手段は、
前記下流側空燃比センサの出力値が前記第１閾値を含む所定範囲内の値よりも大きい場合、前記目標値を前記第１閾値と前記中央値との間の値である第１目標値に設定し、
前記下流側空燃比センサの出力値が前記第２閾値を含む所定範囲内の値よりも小さい場合、前記目標値を前記第２閾値と前記中央値との間の値である第２目標値に設定し、
前記下流側空燃比センサの出力値が前記第１閾値を含む所定範囲内の値と前記第２閾値を含む所定範囲内の値との間にある場合、前記目標値を前記第１目標値と前記第２目標値との間の値である第３目標値に設定するように構成された、
空燃比制御装置。
【請求項１１】
請求の範囲９又は請求の範囲１０に記載の内燃機関の空燃比制御装置において
前記比例項算出手段は、
前記下流側空燃比センサの出力値の変化速度の大きさが大きいほど前記比例項の大きさをより小さくするように構成された空燃比制御装置。
【請求項１２】
請求の範囲１乃至請求の範囲６の何れか一項に記載の内燃機関の空燃比制御装置において、
前記空燃比制御手段は、
前記機関に吸入される吸入空気量を取得するとともに同取得された吸入空気量に基づいて前記機関に供給される混合気の空燃比を理論空燃比に一致させるための基本燃料噴射量を算出する基本燃料噴射量算出手段と、
前記排気通路であって前記触媒よりも上流に配設されるとともにその配設部位を流れるガスの空燃比に応じた出力値を出力する上流側空燃比センサと、
前記上流側空燃比センサの出力値により表される上流側空燃比が理論空燃比に一致するように前記基本燃料噴射量を補正するメインフィードバック量を算出するメインフィードバック量算出手段と、
前記下流側空燃比センサの出力値が減少している場合に前記基本燃料噴射量を増大させるように前記基本燃料噴射量を補正し且つ前記下流側空燃比センサの出力値が増大している場合に前記基本燃料噴射量を減少させるように前記基本燃料噴射量を補正するサブフィードバック量を算出するサブフィードバック量算出手段と、
前記基本燃料噴射量を前記メインフィードバック量及び前記サブフィードバック量からなる空燃比補正量により補正することにより得られる量の燃料を前記機関に噴射供給する燃料噴射手段と、
を備え、
前記メインフィードバック量算出手段は、
前記下流側空燃比センサの出力値が減少している場合に前記メインフィードバック量が前記基本燃料噴射量を減少させる値になっているとき前記メインフィードバック量の大きさを小さくするか又は０に設定し、
前記下流側空燃比センサの出力値が増大している場合に前記メインフィードバック量が前記基本燃料噴射量を増大させる値になっているとき前記メインフィードバック量の大きさを小さくするか又は０に設定する、
ように構成された空燃比制御装置。
【請求項１３】
請求の範囲６に記載の内燃機関の空燃比制御装置において、
前記空燃比制御手段は、
前記機関に吸入される吸入空気量を取得するとともに同取得された吸入空気量に基づいて前記機関に供給される混合気の空燃比を理論空燃比に一致させるための基本燃料噴射量を算出する基本燃料噴射量算出手段と、
前記排気通路であって前記触媒よりも上流に配設されるとともにその配設部位を流れるガスの空燃比に応じた出力値を出力する上流側空燃比センサと、
前記上流側空燃比センサの出力値により表される上流側空燃比が理論空燃比に一致するように前記基本燃料噴射量を補正するメインフィードバック量を算出するメインフィードバック量算出手段と、
前記下流側空燃比センサの出力値が減少している場合に前記基本燃料噴射量を増大させるように前記基本燃料噴射量を補正し且つ前記下流側空燃比センサの出力値が増大している場合に前記基本燃料噴射量を減少させるように前記基本燃料噴射量を補正するサブフィードバック量を算出するサブフィードバック量算出手段と、
前記基本燃料噴射量を前記メインフィードバック量及び前記サブフィードバック量からなる空燃比補正量により補正することにより得られる量の燃料を前記機関に噴射供給する燃料噴射手段と、
を備え、
前記メインフィードバック量算出手段は、
前記下流側空燃比センサの出力値が前記第１閾値を含む所定範囲内の値以上である場合に前記メインフィードバック量が前記基本燃料噴射量を増大させる値であるとき同メインフィードバック量を０に設定し、
前記下流側空燃比センサの出力値が前記第２閾値を含む所定範囲内の値以下である場合に前記メインフィードバック量が前記基本燃料噴射量を減少させる値であるとき同メインフィードバック量を０に設定する、
ように構成された空燃比制御装置。
【請求項１４】
請求の範囲２、請求の範囲３、請求の範囲４、請求の範囲６、請求の範囲８、請求の範囲９、請求の範囲１０、請求の範囲１１及び請求の範囲１３の何れか一項に記載の内燃機関の空燃比制御装置において、
前記空燃比制御手段は、
前記下流側空燃比センサの出力値が前記最大出力値となっているときに前記触媒流入ガスの空燃比を理論空燃比よりもリーン側の所定リーン空燃比に制御し、その状態において前記下流側空燃比センサの出力値が前記最小出力値又は前記最小出力値に所定値を加えた値に到達するまでの期間において同下流側空燃比センサの出力値の変化速度の大きさが最小となった時点における同下流側空燃比センサの出力値を前記第１閾値として取得するストイキ上限値取得手段を含む空燃比制御装置。
【請求項１５】
請求の範囲２、請求の範囲３、請求の範囲５、請求の範囲６、請求の範囲８、請求の範囲９、請求の範囲１０、請求の範囲１１、請求の範囲１３及び請求の範囲１４の何れか一項に記載の内燃機関の空燃比制御装置において、
前記空燃比制御手段は、
前記下流側空燃比センサの出力値が前記最小出力値となっているときに前記触媒流入ガスの空燃比を理論空燃比よりもリッチ側の所定リッチ空燃比に制御し、その状態において前記下流側空燃比センサの出力値が前記最大出力値又は前記最大出力値から所定値を減じた値に到達するまでの期間において同下流側空燃比センサの出力値の変化速度の大きさが最小となった時点における同下流側空燃比センサの出力値を前記第２閾値として取得するストイキ下限値取得手段を含む空燃比制御装置。
【請求項１６】
請求の範囲１乃至請求の範囲６の何れか一項に記載の内燃機関の空燃比制御装置において、
前記空燃比制御手段は、
前記機関に吸入される吸入空気量を取得するとともに同取得された吸入空気量に基づいて前記機関に供給される混合気の空燃比を理論空燃比に一致させるための基本燃料噴射量を算出する基本燃料噴射量算出手段と、
前記排気通路であって前記触媒よりも上流に配設されるとともにその配設部位を流れるガスの空燃比に応じた出力値を出力する上流側空燃比センサと、
前記上流側空燃比センサの出力値により表される上流側空燃比が理論空燃比に一致するように前記基本燃料噴射量を補正するメインフィードバック量を算出するメインフィードバック量算出手段と、
前記下流側空燃比センサの出力値が減少している場合に前記基本燃料噴射量を増大させるように前記基本燃料噴射量を補正し且つ前記下流側空燃比センサの出力値が増大している場合に前記基本燃料噴射量を減少させるように前記基本燃料噴射量を補正するサブフィードバック量を算出するサブフィードバック量算出手段と、
前記基本燃料噴射量を前記メインフィードバック量及び前記サブフィードバック量からなる空燃比補正量により補正することにより得られる量の燃料を前記機関に噴射供給する燃料噴射手段と、
前記空燃比補正量が前記基本燃料噴射量を増大させる値である状態が継続している場合に同空燃比補正量によって同基本燃料噴射量が増大させられる量の積算値を求め、同求めた積算値の大きさが所定の増量閾値に到達したとき、同空燃比補正量に関わらず、前記機関に供給される混合気の空燃比が所定の第１の触媒回復時間だけ理論空燃比よりもリーン側の空燃比となるように前記燃料噴射手段から噴射供給される燃料の量を制御する触媒機能回復手段、
を含む空燃比制御装置。
【請求項１７】
請求の範囲１乃至請求の範囲６の何れか一項に記載の内燃機関の空燃比制御装置において、
前記空燃比制御手段は、
前記機関に吸入される吸入空気量を取得するとともに同取得された吸入空気量に基づいて前記機関に供給される混合気の空燃比を理論空燃比に一致させるための基本燃料噴射量を算出する基本燃料噴射量算出手段と、
前記排気通路であって前記触媒よりも上流に配設されるとともにその配設部位を流れるガスの空燃比に応じた出力値を出力する上流側空燃比センサと、
前記上流側空燃比センサの出力値により表される上流側空燃比が理論空燃比に一致するように前記基本燃料噴射量を補正するメインフィードバック量を算出するメインフィードバック量算出手段と、
前記下流側空燃比センサの出力値が減少している場合に前記基本燃料噴射量を増大させるように前記基本燃料噴射量を補正し且つ前記下流側空燃比センサの出力値が増大している場合に前記基本燃料噴射量を減少させるように前記基本燃料噴射量を補正するサブフィードバック量を算出するサブフィードバック量算出手段と、
前記基本燃料噴射量を前記メインフィードバック量及び前記サブフィードバック量からなる空燃比補正量により補正することにより得られる量の燃料を前記機関に噴射供給する燃料噴射手段と、
前記空燃比補正量が前記基本燃料噴射量を減少させる値である状態が継続している場合に同空燃比補正量によって同基本燃料噴射量が減少させられる量の積算値を求め、同求めた積算値の大きさが所定の減量閾値に到達したとき、同空燃比補正量に関わらず、前記機関に供給される混合気の空燃比が所定の第２の触媒回復時間だけ理論空燃比よりもリッチ側の空燃比となるように前記燃料噴射手段から噴射供給される燃料の量を制御する触媒機能回復手段、
を含む空燃比制御装置。
【請求項１８】
請求の範囲６に記載の内燃機関の空燃比制御装置において、
前記空燃比制御手段は、
前記下流側空燃比センサの出力値が前記第１閾値よりも小さく且つ前記第２閾値よりも大きい値となっていて前記通常空燃比フィードバック制御が実行されている期間における同出力値の変動周波数を取得するとともに同取得した変動周波数が所定の閾値周波数以下となった場合、前記通常空燃比フィードバック制御に代え、前記触媒の酸素吸蔵量を推定するとともに同推定した酸素吸蔵量が所定の酸素吸蔵量下限値と同酸素吸蔵量下限値よりも大きい所定の酸素吸蔵量上限値との間になるように、同推定した酸素吸蔵量に基づいて前記機関に供給される混合気の空燃比を制御する酸素吸蔵量フィードバック制御を実行するように構成された、
空燃比制御装置。
【請求項１９】
請求の範囲１８に記載の内燃機関の空燃比制御装置において、
前記空燃比制御手段は、
前記酸素吸蔵量フィードバック制御が実行されている期間に、前記下流側空燃比センサの出力値が前記第１閾値以上となるか又は前記第２閾値以下となった場合、前記酸素吸蔵量フィードバック制御を終了するとともに、前記下流側空燃比センサの出力値に基づいた前記機関に供給される混合気の空燃比の制御を再開するように構成された、
空燃比制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、排気通路に触媒を備えた内燃機関の空燃比制御装置に関する。
【背景技術】
【０００２】
従来から、内燃機関から排出される排ガスを浄化するために同機関の排気通路に三元触媒が配設されている。三元触媒は、周知のように、その三元触媒に流入するガスの成分に応じて酸素を吸蔵又は放出する「酸素吸蔵機能」を有する。以下、三元触媒は単に「触媒」とも称呼され、触媒に流入するガスは「触媒流入ガス」とも称呼される。
従来の空燃比制御装置（従来装置）は、機関の排気通路であって触媒の下流側に配設された下流側空燃比センサを備える。従来装置は、気筒に吸入される空気量に基づいて「機関に供給される混合気の空燃比を理論空燃比に一致させるための基本燃料噴射量」を求め、その基本燃料噴射量を少なくとも下流側空燃比センサの出力値に基づいて補正するようになっている。
より具体的に述べると、下流側空燃比センサは濃淡電池型酸素濃度センサであって出力値Ｖｏｘｓを出力する（図３を参照。）。下流側空燃比センサの出力値Ｖｏｘｓは、触媒から流出するガス（以下、「触媒流出ガス」とも称呼される。）の空燃比が理論空燃比よりも小さい場合（理論空燃比よりもリッチ側の空燃比である場合）、即ち、触媒流出ガスに過剰な酸素が含まれていない場合、最大出力値Ｖｍａｘとなる。「触媒流出ガスに過剰な酸素が含まれていない場合」とは、触媒流出ガス中の「未燃物と酸素と」が結合した結果、酸素が不足し未燃物が残る場合を言う。換言すると、「触媒流出ガスに過剰の酸素が含まれていない場合」とは、触媒流出ガス中の未燃物を総て酸化するのに必要な量よりも少ない量の酸素が触媒流出ガス中に含まれている場合のことである。
更に、下流側空燃比センサの出力値Ｖｏｘｓは、触媒流出ガスの空燃比が理論空燃比よりも大きい場合（理論空燃比よりもリーン側の空燃比である場合）、即ち、触媒流出ガスに過剰の酸素が含まれている場合、最小出力値Ｖｍｉｎとなる。「触媒流出ガスに過剰の酸素が含まれている場合」とは、触媒流出ガス中の「未燃物と酸素と」が結合した結果、未燃物は消滅し酸素が残る場合を言う。換言すると、「触媒流出ガスに過剰の酸素が含まれている場合」とは、触媒流出ガス中の未燃物を総て酸化するのに必要な量よりも多い量の酸素が触媒流出ガス中に含まれている場合のことである。
このように、触媒流出ガスに過剰な酸素が含まれていると出力値は最小出力値Ｖｍｉｎとなり、触媒流出ガスに過剰な酸素が含まれていなければ出力値は最大出力値Ｖｍａｘとなるので、出力値Ｖｏｘｓが「最大出力値Ｖｍａｘと最小出力値Ｖｍｉｎとの中央の値Ｖｍｉｄ（即ち、中央値Ｖｍｉｄ＝（Ｖｍａｘ＋Ｖｍｉｎ）／２）」に一致している場合、触媒流出ガスの空燃比は理論空燃比に一致していると考えられている。
そして、従来装置は、下流側空燃比センサの出力値Ｖｏｘｓが「理論空燃比に相当する値（即ち、中央値Ｖｍｉｄ）に設定された下流側目標値Ｖｏｘｓｒｅｆ」に一致するように空燃比のフィードバック量を比例・積分制御（ＰＩ制御）等に基づいて算出する。この空燃比のフィードバック量は、便宜上「サブフィードバック量」とも称呼される。従来装置は、基本燃料噴射量をサブフィードバック量により補正することにより、機関に供給される混合気の空燃比を制御し、以って、触媒流入ガスの空燃比を制御する（例えば、特開２００５−１７１９８２号公報を参照。）。
【発明の開示】
【０００３】
図３９は、「上述した従来装置」及び「本発明による空燃比制御装置（以下、単に「本装置」とも称呼する。）」による空燃比制御の様子を破線及び実線によりそれぞれ表したタイムチャートである。図３９に示した例においては、時刻ｔ０にて、下流側空燃比センサの出力値Ｖｏｘｓが中央値Ｖｍｉｄよりも小さい値から中央値Ｖｍｉｄよりも大きい値に変化している。前述したように、従来装置は、下流側目標値Ｖｏｘｓｒｅｆを中央値Ｖｍｉｄに設定している。
従って、時刻ｔ０以降における出力値Ｖｏｘｓは中央値Ｖｍｉｄよりも大きくなるので、従来装置によって算出されるサブフィードバック量は基本燃料噴射量を減少（減量補正）する値になる。これにより、触媒流入ガスの空燃比は理論空燃比よりもリーン側の空燃比へと制御される。以下、理論空燃比よりもリーン側の空燃比を、単に「リーン空燃比」とも称呼する。
この結果、触媒流入ガスには過剰な酸素が含まれるので、触媒に吸蔵されている酸素の量（以下、「酸素吸蔵量ＯＳＡ」とも称呼する。）は増加する。触媒の酸素吸蔵量ＯＳＡが比較的小さい場合、触媒は酸素を効率良く吸蔵することができる。従って、時刻ｔ０における酸素吸蔵量ＯＳＡが比較的小さい場合、時刻ｔ０以降において触媒流入ガスに含まれる過剰な酸素の殆どは触媒に吸蔵される。その結果、触媒流出ガスに酸素が含まれなていない状態が継続するので、下流側空燃比センサの出力値Ｖｏｘｓは最大出力値Ｖｍａｘに向けて増大し続ける。
その後、時刻ｔ１において触媒の酸素吸蔵量ＯＳＡが所定の上限値ＣＨｉに到達すると、触媒は酸素を効率良く吸蔵することができなくなる。よって、触媒流出ガスに比較的多量の酸素が含まれ始める。この結果、時刻ｔ１の直後の時点である時刻ｔ２から下流側空燃比センサの出力値Ｖｏｘｓは最小出力値Ｖｍｉｎに向けて減少し始める。
ところが、時刻ｔ２からその後の時刻ｔ５までの期間、出力値Ｖｏｘｓは中央値Ｖｍｉｄ（従来装置の下流側目標値Ｖｏｘｓｒｅｆ）よりも大きいので、従来装置によるサブフィードバック量は基本燃料噴射量を減少する値になり続ける。この結果、時刻ｔ２以降においても酸素吸蔵量ＯＳＡは増大し続け、時刻ｔ５より前の時刻ｔ４にて「触媒の酸素吸蔵量ＯＳＡの最大値である最大酸素吸蔵量Ｃｍａｘ」に到達する。
このとき、触媒流入ガスの空燃比は理論空燃比よりリーン側の空燃比であり、従って、機関に供給される混合気の空燃比も理論空燃比よりリーン側の空燃比である。このため、触媒流入ガスには多量のＮＯｘ（窒素酸化物）が含まれている。ところが、酸素吸蔵量ＯＳＡが最大酸素吸蔵量Ｃｍａｘに到達しているから、触媒はＮＯｘを充分に浄化することができない。この結果、時刻ｔ４から時刻ｔ５までの期間において、比較的多量のＮＯｘが触媒の下流に排出される場合がある。このように、従来装置は、触媒による排気浄化作用にとって不必要な「燃料噴射量の減量補正」を行う場合がある（図３９のハッチング部を参照。）。換言すると、従来装置によれば、触媒流入ガスの空燃比が「触媒の排気浄化効率を良好な値に維持するために必要とされる空燃比（以下、「触媒流入ガス要求空燃比」とも称呼する。）」よりもリーン側の空燃比に制御されてしまう。
一方、下流側空燃比センサの出力値Ｖｏｘｓが「中央値Ｖｍｉｄに設定された下流側目標値Ｖｏｘｓｒｅｆ」よりも小さい場合、従来装置によって算出されるサブフィードバック量は基本燃料噴射量を増大（増量補正）する値となる。それにより、触媒流入ガスの空燃比は理論空燃比よりもリッチ側の空燃比に制御される。以下、理論空燃比よりもリッチ側の空燃比を、単に「リッチ空燃比」とも称呼する。
この結果、触媒流入ガスには過剰な未燃物（ＣＯ、ＨＣ及びＨ２等）が含まれるので、触媒に吸蔵されている酸素はその未燃物の浄化に使用される。従って、酸素吸蔵量ＯＳＡは減少する。しかしながら、触媒の酸素吸蔵量ＯＳＡが比較的大きい場合、触媒流入ガスに含まれる酸素はそのまま触媒下流に流出する。更には、下流側空燃比センサの近傍又は下流側空燃比センサの拡散抵抗層に残存する酸素を完全に消費するのに充分な量の未燃物が触媒下流に流出しない。その結果、下流側空燃比センサの出力値Ｖｏｘｓは最小出力値Ｖｍｉｎ近傍の値を維持する。
その後、触媒の酸素吸蔵量ＯＳＡが所定の下限値ＣＬｏ（＜ＣＨｉ）にまで減少すると、触媒は触媒流入ガスに含まれる酸素を効率良く吸蔵し始めるとともに触媒流入ガスに含まれる未燃物を完全には浄化できなくなる。よって、触媒流出ガスに酸素が含まれなくなるとともに、比較的多量の未燃物が含まれ始める。この未燃物により、下流側空燃比センサの近傍又は下流側空燃比センサの拡散抵抗層に残存する酸素が消費される。この結果、下流側空燃比センサの出力値Ｖｏｘｓは最小出力値Ｖｍｉｎ近傍の値から最大出力値Ｖｍａｘに向けて増大し始める。
ところが、その時点から暫くの間、出力値Ｖｏｘｓは下流側目標値Ｖｏｘｓｒｅｆ（中央値Ｖｍｉｄ）よりも小さいから、従来装置によるサブフィードバック量は基本燃料噴射量を増大する値になり続ける。この結果、触媒の酸素吸蔵量ＯＳＡは減少し続け「０」に到達する。
このとき、触媒流入ガスの空燃比は理論空燃比よりリッチ側の空燃比であり、従って、機関に供給される混合気の空燃比も理論空燃比よりリッチ側の空燃比である。このため、触媒流入ガスには多量の未燃物が含まれる。更に、酸素吸蔵量ＯＳＡが「０」に達しているから、触媒はその未燃物を充分に浄化することができない。この結果、多量の未燃物が触媒の下流に排出される場合がある。このように、従来装置は、触媒による排気浄化作用にとって不必要な「燃料噴射量の増量補正」を行う場合がある。換言すると、従来装置によれば、触媒流入ガスの空燃比が「触媒流入ガス要求空燃比」よりもリッチ側の空燃比に制御されてしまう。
本発明は、上述した課題に対処するためになされたものである。即ち、本発明の目的の一つは、実際の触媒流入ガスの空燃比が「触媒流入ガス要求空燃比」に出来るだけ一致するように「機関に供給される混合気の空燃比」を制御することにより、エミッションを更に改善することができる内燃機関の空燃比制御装置を提供することにある。更に、本発明の目的の他の一つは、触媒が担持する貴金属の量を低減することにより触媒の最大酸素吸蔵量Ｃｍａｘを低下させても、エミッションが悪化することのない空燃比制御装置を提供することにある。
本発明者は、下流側空燃比センサの出力値Ｖｏｘｓの時間的変化（時間の経過に伴う変化、変化速度）は触媒の状態（酸素吸蔵状態）を表すので、下流側空燃比センサの出力値Ｖｏｘｓの時間的変化に基づいて「触媒流入ガスの空燃比（即ち、機関に供給される混合気の空燃比）」を制御することにより、触媒流入ガスの空燃比を「触媒流入ガス要求空燃比」に一致させることができるとの知見を得た。
以下、下流側空燃比センサの出力値Ｖｏｘｓの時間的変化が「触媒の状態を表す」理由について場合分けしながら説明する。
（１）酸素吸蔵量ＯＳＡが上述した下限値ＣＬｏ（即ち、「０」に近い所定値）以下である状態の触媒（酸素不足状態にある触媒、酸素不足触媒）に、理論空燃比よりもリーン側の空燃比の燃焼ガスを供給した場合。
この場合、図４に模式的に示したように、燃焼ガスである触媒流入ガスには「未燃物（ＨＣ等）」と「過剰の酸素（Ｏ２）」とが含まれている。酸素は触媒４３中の酸素吸蔵材と結合することにより触媒４３に吸蔵される。未燃物は「触媒流入ガス中の酸素又は触媒４３に残存している酸素」と結合する。このように、触媒流入ガスに含まれる酸素は触媒４３内において吸蔵又は消費されるので、触媒流出ガス中に酸素は存在しない。この結果、下流側空燃比センサの出力値Ｖｏｘｓは最大出力値Ｖｍａｘ近傍の値となる。
（２）触媒に理論空燃比よりもリーン側の空燃比の燃焼ガスを供給し続けることにより、酸素吸蔵量ＯＳＡが上述した上限値ＣＨｉ（即ち、最大酸素吸蔵量Ｃｍａｘに近い所定値）以上となった場合。
この場合、図５に模式的に示したように、燃焼ガスである触媒流入ガスには「未燃物」と「過剰の酸素」とが含まれている。この時点において、触媒の酸素を吸蔵する余力は小さくなっているので、触媒流入ガス中の酸素は、その一部が触媒４３に吸蔵されるものの、残りの多くは触媒４３の下流に流出し始める。未燃物は「触媒４３に吸蔵されている酸素」と結合する。従って、触媒流出ガスが過剰の酸素を含み始める。よって、下流側空燃比センサの出力値Ｖｏｘｓは最小出力値Ｖｍｉｎ近傍に向けて急激に減少し始め、その後、最小出力値Ｖｍｉｎに到達する。
以上の説明から理解されるように、理論空燃比よりもリーン側の空燃比の燃焼ガスを触媒に供給している場合に下流側空燃比センサの出力値Ｖｏｘｓが最大出力値Ｖｍａｘ近傍の値から減少を開始した時、触媒の酸素吸蔵量ＯＳＡは相当に大きくなっている。従って、この状態において、触媒に「理論空燃比よりもリーン側の空燃比のガス」を供給することは適切でない。換言すると、下流側空燃比センサの出力値Ｖｏｘｓが比較的迅速に減少している場合、「触媒流入ガス要求空燃比」は理論空燃比又は理論空燃比よりもリッチ側の空燃比である。
（３）酸素吸蔵量ＯＳＡが上述した上限値ＣＨｉ以上である状態の触媒（酸素過剰状態にある触媒、酸素過剰触媒）に、理論空燃比よりもリッチ側の空燃比の燃焼ガスを供給した場合。
この場合、図６に模式的に示したように、燃焼ガスである触媒流入ガスには「過剰の未燃物」と「酸素」とが含まれている。未燃物は「触媒４３に吸蔵されている酸素」と結合する。従って、触媒流入ガス中の酸素は触媒４３を通過し、触媒４３の下流に流出する。この結果、下流側空燃比センサの出力値Ｖｏｘｓは最小出力値Ｖｍｉｎ近傍の値となる。
（４）触媒に理論空燃比よりもリッチ側の空燃比の燃焼ガスを供給し続けることにより、酸素吸蔵量ＯＳＡが上述した下限値ＣＬｏ（即ち、「０」に近い所定値）以下となった場合。
この場合、図７に模式的に示したように、燃焼ガスである触媒流入ガスには「過剰の未燃物」と「酸素」とが含まれている。このとき、それまでに吸蔵していた酸素を未燃物に対して与える触媒の余力は小さくなっているので、触媒流入ガス中の未燃物は、その一部が「触媒４３に吸蔵されている酸素」と結合し且つ他の一部が「触媒流入ガス中の酸素」と結合するものの、残りの多くは触媒４３の下流に流出し始める。従って、触媒流出ガスには酸素が含まれず、未燃物が含まれ始める。よって、下流側空燃比センサの出力値Ｖｏｘｓは最大出力値Ｖｍａｘ近傍に向けて急激に増大し、その後、最大出力値Ｖｍａｘに到達する。
以上の説明から理解されるように、理論空燃比よりもリッチ側の空燃比の燃焼ガスを触媒に供給している場合に下流側空燃比センサの出力値Ｖｏｘｓが最小出力値Ｖｍｉｎ近傍の値から増大を開始した時、触媒の酸素吸蔵量ＯＳＡは相当に小さくなっている。従って、この状態において、触媒に「理論空燃比よりもリッチ側の空燃比のガス」を供給することは適切でない。換言すると、下流側空燃比センサの出力値Ｖｏｘｓが比較的迅速に増大している場合、「触媒流入ガス要求空燃比」は理論空燃比又は理論空燃比よりもリーン側の空燃比である。
このような知見に基づいてなされた本発明の内燃機関の空燃比制御装置は、
排気通路に触媒が配設された内燃機関に適用され、
前記排気通路の前記触媒よりも下流に配設された濃淡電池型酸素濃度センサである下流側空燃比センサと、
前記下流側空燃比センサの出力値に基づいて「前記触媒に流入するガスである触媒流入ガス」の空燃比を変更するように「前記機関に供給される混合気の空燃比」を制御する空燃比制御手段と、
を備える。
前記下流側空燃比センサは、
「前記触媒から流出したガスである触媒流出ガス」に含まれる酸素の量が、「同触媒流出ガスに含まれる未燃物を酸化するために必要な量」よりも少ないときに「最大出力値Ｖｍａｘ」を出力するとともに、
触媒流出ガスに含まれる酸素の量が、「同触媒流出ガスに含まれる未燃物を酸化するために必要な量」よりも多いときに「最小出力値Ｖｍｉｎ」を出力する、
ようになっている。
更に、前記空燃比制御手段は、
前記下流側空燃比センサの出力値が減少している場合（時間の経過とともに小さくなっている場合）に「前記触媒流入ガスの空燃比」が「理論空燃比よりもリッチ側の空燃比」となるように、且つ、前記下流側空燃比センサの出力値が増大している場合（時間の経過とともに大きくなっている場合）に「前記触媒流入ガスの空燃比」が「理論空燃比よりもリーン側の空燃比」となるように、前記機関に供給される混合気の空燃比を制御する。このような空燃比のフィードバック制御を、「通常空燃比フィードバック制御」とも称呼する。
前述したように、下流側空燃比センサの出力値が比較的迅速に減少している場合、たとえ下流側空燃比センサの出力値が中央値Ｖｍｉｄよりも大きいときであっても、触媒の酸素吸蔵量ＯＳＡは「０」近傍の量ではなく、寧ろ、最大酸素吸蔵量Ｃｍａｘに近い値にまで増大している。従って、下流側空燃比センサの出力値が減少している場合（より具体的には、下流側空燃比センサの出力値の変化速度の大きさが「０である所定の第１変化速度閾値又は０よりも大きい所定の第１変化速度閾値」以上である場合）、触媒流入ガス要求空燃比は理論空燃比よりもリッチ側の空燃比である。
それ故、上記構成によれば、酸素吸蔵量ＯＳＡが最大酸素吸蔵量Ｃｍａｘに到達する前の時点において「触媒流入ガスの空燃比」を「理論空燃比よりもリッチ側の空燃比」に設定することができ、それにより酸素吸蔵量ＯＳＡを減少させ始めることができる（図３９の時刻ｔ３以降における実線を参照。）。即ち、本発明の装置は、従来装置のように不必要な燃料噴射量の減量補正を行わないので、多量のＮＯｘが触媒の下流に排出されることを回避することができる。
加えて、前述したように、下流側空燃比センサの出力値が比較的迅速に増大している場合、たとえ下流側空燃比センサの出力値が中央値Ｖｍｉｄよりも小さいときであっても、触媒の酸素吸蔵量ＯＳＡは最大酸素吸蔵量Ｃｍａｘの近傍ではなく、寧ろ、「０」に近い値にまで減少している。従って、下流側空燃比センサの出力値が増大している場合（より具体的には、下流側空燃比センサの出力値の変化速度の大きさが「０である所定の第２変化速度閾値又は０よりも大きい所定の第２変化速度閾値」以上である場合）、触媒流入ガス要求空燃比は理論空燃比よりもリーン側の空燃比である。
それ故、上記構成によれば、酸素吸蔵量ＯＳＡが「０」に到達する前の時点において「触媒流入ガスの空燃比」を「理論空燃比よりもリーン側の空燃比」に設定することができ、それにより酸素吸蔵量ＯＳＡを増大させ始めることができる（図３９の時刻ｔ７以降における実線を参照。）。即ち、本発明の装置は、従来装置のように不必要な燃料噴射量の増量補正を行わないので、多量の未燃物が排出されることを回避することができる。
なお、上記第１変化速度閾値と上記第２変化速度閾値とは同一であっても異なっていてもよい。また、上記第１変化速度閾値及び上記第２変化速度閾値のそれぞれは、「０」又は実質的に「０」である小さい値であってもよい。
以上の説明から理解されるように、従来装置は酸素吸蔵量ＯＳＡが「０から最大酸素吸蔵量Ｃｍａｘまでの範囲」において変動するように「触媒流入ガスの空燃比（即ち、機関の空燃比）」を制御していたのに対し、本発明の装置は酸素吸蔵量ＯＳＡが「０よりも大きい値（上記下限値ＣＬｏ近傍の値）から最大酸素吸蔵量Ｃｍａｘよりも小さい値（上記上限値ＣＨｉ近傍の値）までの範囲」において変動するように「触媒流入ガスの空燃比（即ち、機関の空燃比）」を制御する。従って、触媒の状態を「未燃物及びＮＯｘを効率よく浄化する状態」に維持することができ、未燃物及びＮＯｘの排出量をより低減することができる。
加えて、本発明の装置によれば、酸素吸蔵量ＯＳＡが「０」又は最大酸素吸蔵量Ｃｍａｘに到達し難いので、空燃比のフィードバック制御（上記通常空燃比フィードバック制御）中における「触媒流入ガスの空燃比（即ち、機関の空燃比）」を「理論空燃比から大きく乖離した空燃比」に設定してもエミッションは悪化しない。これにより、「触媒のリッチ被毒及びリーン被毒」による最大酸素吸蔵量Ｃｍａｘの実質的な低下、及び、それに伴う排気浄化効率の低下を回避することもできる。
即ち、触媒のリッチ被毒は、「触媒流入ガスの空燃比」が「理論空燃比よりもリッチ側の空燃比」である状態が比較的長い時間継続したとき、触媒が担持する貴金属の周囲にＨＣ等が付着することによって発生する。このリッチ被毒は触媒の浄化効率の低下をもたらす。リッチ被毒は、「理論空燃比に対して大きくリーン側に偏移した空燃比」のガスを触媒に供給することにより解消することができる。
触媒のリーン被毒は、「触媒流入ガスの空燃比」が「理論空燃比よりもリーン側の空燃比」である状態が比較的長い時間継続したとき、触媒が担持する貴金属が酸化してその貴金属の表面積が実質的に低下することによって発生する。このリーン被毒も触媒の浄化効率の低下をもたらす。リーン被毒は、「理論空燃比に対して大きくリッチ側に偏移した空燃比」のガスを触媒に供給することにより解消することができる。
本発明の空燃比制御装置が備える空燃比制御手段は、
前記下流側空燃比センサの出力値が、「所定の第１閾値」よりも小さく且つ「その第１閾値よりも小さい所定の第２閾値」よりも大きいとき、前記通常空燃比フィードバック制御を実行するように構成され得る。
前記第１閾値は、「前記最大出力値と前記最小出力値との中央の値（半分の値、平均値）」である中央値と、前記最大出力値と、の間の値であって、且つ、同中央値よりも同最大出力値に近い値に設定される。
より具体的には、前記第１閾値は、「前記触媒流入ガスの空燃比」が「理論空燃比よりもリーン側の空燃比」であり且つ前記触媒の酸素吸蔵量が増大している場合であって、「前記触媒流出ガスの空燃比」が「理論空燃比」であるときの「前記下流側空燃比センサの出力値」に等しくなるように設定される。
下流側空燃比センサの出力値が前記第１閾値よりも大きい場合、触媒は酸素不足状態であると考えられる。即ち、触媒の酸素吸蔵量ＯＳＡが「０」又は実質的に「０」である場合（触媒が酸素不足状態である場合）、触媒流入ガスの空燃比に関わらず、酸素は触媒の下流に流出しない（図４及び図７を参照。）。従って、触媒が酸素不足状態であるとき、下流側空燃比センサの出力値は最大出力値Ｖｍａｘ近傍の値となるので、下流側空燃比センサの出力値は上記第１閾値以上となる。
従って、そのような場合には、下流側空燃比センサの出力値が減少したとしても、「触媒流入ガスの空燃比」を「理論空燃比よりもリッチ側の空燃比」に設定しないほうがよい。よって、上記のように第１閾値を設定し、且つ、下流側空燃比センサの出力値がその第１閾値以上であれば、上記通常空燃比フィードバック制御を行わないようにすることが望ましい。
前記第２閾値は、前記中央値と前記最小出力値との間の値であって、且つ、同中央値よりも同最小出力値に近い値に設定される。
より具体的には、前記第２閾値は、「前記触媒流入ガスの空燃比」が「理論空燃比よりもリッチ側の空燃比」であり且つ前記触媒の酸素吸蔵量が減少している場合であって、「前記触媒流出ガスの空燃比」が「理論空燃比」であるときの「前記下流側空燃比センサの出力値」に等しくなるように設定される。
下流側空燃比センサの出力値が前記第２閾値よりも小さい場合、触媒は酸素過剰状態であると考えられる。即ち、酸素吸蔵量ＯＳＡが最大酸素吸蔵量Ｃｍａｘ又は実質的に最大酸素吸蔵量Ｃｍａｘである場合（触媒が酸素過剰状態である場合）、触媒流入ガスの空燃比に関わらず、酸素は触媒の下流に流出する（図５及び図６を参照。）。従って、触媒が酸素過剰状態であるとき、下流側空燃比センサの出力値は最小出力値Ｖｍｉｎ近傍の値となるので、下流側空燃比センサの出力値は上記第２閾値以下となる。
従って、そのような場合には、下流側空燃比センサの出力値が増大したとしても、「触媒流入ガスの空燃比」を「理論空燃比よりもリーン側の空燃比」に設定しないほうがよい。よって、上記のように第２閾値を設定し、且つ、下流側空燃比センサの出力値がその第２閾値以下であれば、上記通常空燃比フィードバック制御を行わないようにすることが望ましい。
本発明の空燃比制御装置が備える空燃比制御手段は、
前記下流側空燃比センサの出力値が前記第１閾値を含む所定範囲内の値以上である場合、「前記触媒流入ガスの空燃比」が「理論空燃比よりもリーン側の空燃比」となるように「前記機関に供給される混合気の空燃比」を制御することが好適である。
上述したように、触媒の酸素吸蔵量ＯＳＡが「０」又は実質的に「０」であって、触媒が酸素不足触媒である場合、下流側空燃比センサの出力値Ｖｏｘｓは最大出力値Ｖｍａｘ近傍の値となる。
より詳細に述べると、所定の運転条件（例えば、触媒過熱防止増量を実行するべき条件）が成立すると、機関に供給される混合気の空燃比が理論空燃比よりもリッチ側の空燃比に設定される。この状態が継続すると触媒に吸蔵されている酸素が消費され、酸素吸蔵量ＯＳＡは「０」に到達する。
このような酸素不足状態にある触媒に「理論空燃比よりもリッチ側の空燃比の燃焼ガス」が継続して流入した場合、図７に示したように、触媒の下流に酸素は流出せず、且つ、触媒の下流に未燃物が流出する。従って、下流側空燃比センサの近傍及び下流側空燃比センサの拡散抵抗層等に残存する酸素は未燃物により完全に消費される。この結果、図８の時刻ｔ１〜時刻ｔ２に示したように、下流側空燃比センサの出力値Ｖｏｘｓは実質的に最大出力値Ｖｍａｘとなる。
その後、このような酸素不足状態にある触媒に「理論空燃比よりもリーン側の空燃比の燃焼ガス」が流入した場合、図４に示したように、触媒の下流に酸素は流出しない。更に、触媒流入ガスに含まれる未燃物は触媒において酸化される。このとき、触媒流出ガスは未燃物も酸素も含んでいない。即ち、触媒流出ガスの空燃比は理論空燃比である。しかしながら、下流側空燃比センサの近傍及び下流側空燃比センサの拡散抵抗層等に残存する酸素は完全に消費されているから、下流側空燃比センサの出力値Ｖｏｘｓは、図８の時刻ｔ２〜時刻ｔ３に示したように僅かに減少するものの、時刻ｔ３〜ｔ４に示したように中央値Ｖｍｉｄと最大出力値Ｖｍａｘとの間の値であって最大出力値Ｖｍａｘに近い値（例えば、ストイキ上限値ＶＨｉｌｉｍｉｔ）を暫くの間維持する。
その後、酸素吸蔵量ＯＳＡがある程度まで大きくなると、図５に示したように、触媒流出ガスに酸素が含まれ始める。その結果、図８の時刻ｔ４以降に示したように、下流側空燃比センサの出力値Ｖｏｘｓは急激に減少し始める。
以上から明らかなように、下流側空燃比センサの出力値Ｖｏｘｓが、「中央値Ｖｍｉｄよりも最大出力値Ｖｍａｘに近い上記第１閾値を含む所定幅範囲内の値（図８におけるＶｍａｘ−α１に相当する値）」以上である場合、酸素吸蔵量ＯＳＡは極めて小さいので、触媒流入ガス要求空燃比は「理論空燃比よりもリーン側の空燃比」である。従って、上記構成のように、下流側空燃比センサの出力値Ｖｏｘｓが第１閾値を含む所定範囲内の値（Ｖｍａｘ−α１）よりも大きい場合、下流側空燃比センサの出力値Ｖｏｘｓの変化速度に関わらず、「触媒流入ガスの空燃比」が「理論空燃比よりもリーン側の空燃比」となるように「機関に供給される混合気の空燃比」を制御することが望ましい。これにより、酸素吸蔵量ＯＳＡを速やかに増大させることができる。その結果、触媒の排気浄化効率を迅速に高くすることができる。なお、値（Ｖｍａｘ−α１）は、上記第１閾値又は上記ストイキ上限値ＶＨｉｌｉｍｉｔと一致していることが望ましい。
同様な理由により、本発明の空燃比制御装置が備える空燃比制御手段は、
前記下流側空燃比センサの出力値が前記第２閾値を含む所定範囲内の値以下である場合、「前記触媒流入ガスの空燃比」が「理論空燃比よりもリッチ側の空燃比」となるように「前記機関に供給される混合気の空燃比」を制御することが好適である。
上述したように、酸素吸蔵量ＯＳＡが最大酸素吸蔵量Ｃｍａｘ又は実質的に最大酸素吸蔵量Ｃｍａｘであって、触媒が酸素過剰状態である場合、下流側空燃比センサの出力値Ｖｏｘｓは最小出力値Ｖｍｉｎ近傍の値となる。
より詳細に述べると、例えば、フューエルカット（Ｆ／Ｃ）運転を実行するべき条件が成立してフューエルカット運転が実行されると、多量の酸素が触媒に流入する。この状態が継続すると酸素吸蔵量ＯＳＡは最大酸素吸蔵量Ｃｍａｘに到達する。
このような酸素過剰状態にある触媒に「理論空燃比よりもリーン側の空燃比の燃焼ガス」が継続して流入した場合、図５に示したように、触媒の下流に酸素が流出し続ける。この結果、図９の時刻ｔ１〜時刻ｔ２に示したように、下流側空燃比センサの出力値Ｖｏｘｓは実質的に最小出力値Ｖｍｉｎとなる。
その後、このような酸素過剰状態にある触媒に「理論空燃比よりもリッチ側の空燃比の燃焼ガス」が流入した場合、図６に示したように、「触媒流入ガスに含まれる未燃物」は「触媒に吸蔵されている酸素」及び「触媒流入ガスに含まれる酸素」と結合することにより酸化され、「触媒流入ガスに含まれる残余の酸素」は触媒の下流に極めて僅かだけ流出する。即ち、この場合、触媒流出ガスの空燃比は実質的に理論空燃比であると言うことができる。しかしながら、下流側空燃比センサの近傍及び下流側空燃比センサの拡散抵抗層等には酸素が残存している。従って、下流側空燃比センサの出力値Ｖｏｘｓは、図９の時刻ｔ２〜時刻ｔ３に示したように僅かに増大するものの、時刻ｔ３〜ｔ４に示したように中央値Ｖｍｉｄと最小出力値Ｖｍｉｎとの間の値であって最小出力値Ｖｍｉｎに近い値（例えば、ストイキ下限値ＶＬｏｌｉｍｉｔ）を暫くの間維持する。
その後、酸素吸蔵量ＯＳＡがある程度まで小さくなると、図７に示したように、触媒流出ガスに未燃物が含まれ始める。これにより、下流側空燃比センサの近傍又は拡散抵抗層に残存する酸素が未燃物により消費される。その結果、図９の時刻ｔ４以降に示したように、下流側空燃比センサの出力値Ｖｏｘｓは急激に増大し始める。
以上から明らかなように、下流側空燃比センサの出力値Ｖｏｘｓが、「中央値Ｖｍｉｄよりも最小出力値Ｖｍｉｎに近い上記第２閾値を含む所定範囲内の値（図９におけるＶｍｉｎ＋α２に相当する値）」以下である場合、酸素吸蔵量ＯＳＡは極めて大きいので、触媒流入ガス要求空燃比は「理論空燃比よりもリッチ側の空燃比」である。従って、上記構成のように、下流側空燃比センサの出力値Ｖｏｘｓが第２閾値を含む所定範囲内の値（Ｖｍａｘ＋α２）よりも小さい場合、下流側空燃比センサの出力値Ｖｏｘｓの変化速度に関わらず、「触媒流入ガスの空燃比」が「理論空燃比よりもリッチ側の空燃比」となるように「機関に供給される混合気の空燃比を制御」することが望ましい。これにより、酸素吸蔵量ＯＳＡを速やかに減少させることができる。その結果、触媒の排気浄化効率を迅速に高くすることができる。なお、値（Ｖｍａｘ＋α２）は、上記第２閾値又は上記ストイキ下限値ＶＬｏｌｉｍｉｔと一致していることが望ましい。
更に、本発明の空燃比制御装置の一つの態様において、前記空燃比制御手段は、基本燃料噴射量算出手段と、サブフィードバック量算出手段と、燃料噴射手段と、を備える。
基本燃料噴射量算出手段は、前記機関に吸入される吸入空気量を取得（検出又は推定）するとともに、その取得された吸入空気量に基づいて「前記機関に供給される混合気の空燃比を理論空燃比に一致させるための基本燃料噴射量」を算出する。
サブフィードバック量算出手段は、「前記基本燃料噴射量を補正するためのフィードバック量」である「サブフィードバック量」を、前記下流側空燃比センサの出力値に基づいて算出する。
燃料噴射手段は、前記基本燃料噴射量を前記サブフィードバック量により補正することにより得られる量（指示噴射量、最終燃料噴射量）の燃料を前記機関に噴射供給する。
この場合、前記サブフィードバック量算出手段は、前記通常空燃比フィードバック制御を実行するために、
（１）前記下流側空燃比センサの出力値が減少している場合（下流側空燃比センサの出力値の変化速度が負の場合）、前記サブフィードバック量が前記基本燃料噴射量を「同出力値の変化速度の大きさが大きいほどより増大させる値」となり、且つ、
（２）前記下流側空燃比センサの出力値が増大している場合（下流側空燃比センサの出力値の変化速度が正の場合）、前記サブフィードバック量が前記基本燃料噴射量を「同出力値の変化速度の大きさが大きいほどより減少させる値」となるように、
前記サブフィードバック量を算出するように構成されることが好適である。
下流側空燃比センサの出力値Ｖｏｘｓが最小出力値Ｖｍｉｎに向けて減少している場合、酸素吸蔵量ＯＳＡが最大酸素吸蔵量Ｃｍａｘに近づいたために過剰な酸素が触媒から流出し始めたと考えることができる。更に、その減少速度の大きさが大きいほど、酸素吸蔵量ＯＳＡは最大酸素吸蔵量Ｃｍａｘに近づいていると考えることができる。従って、下流側空燃比センサの出力値Ｖｏｘｓが減少している場合、その減少速度の大きさが大きいほど「触媒流入ガスの空燃比を理論空燃比よりもよりリッチ側の空燃比」に設定することにより、酸素吸蔵量ＯＳＡを迅速に減少させることが望ましい。
そこで、上記構成においては、下流側空燃比センサの出力値が減少している場合、サブフィードバック量は「基本燃料噴射量を下流側空燃比センサの出力値の変化速度の大きさが大きいほどより増大させる値」となるように算出される。この結果、酸素吸蔵量ＯＳＡが最大酸素吸蔵量Ｃｍａｘに到達する前の時点にて酸素吸蔵量ＯＳＡを適切に減少させることができるので、触媒の排気浄化効率を高い値に維持することができる。
一方、下流側空燃比センサの出力値Ｖｏｘｓが最大出力値Ｖｍａｘに向けて増大している場合、酸素吸蔵量ＯＳＡが「０」に近づいたために過剰な未燃物が触媒から流出し始めたと考えることができる。更に、その増大速度の大きさが大きいほど、酸素吸蔵量ＯＳＡは「０」に近づいていると考えることができる。従って、下流側空燃比センサの出力値Ｖｏｘｓが増大している場合、その増大速度の大きさが大きいほど「触媒流入ガスの空燃比を理論空燃比よりもよりリーン側の空燃比」に設定することにより、酸素吸蔵量ＯＳＡを迅速に増大させることが望ましい。
そこで、上記構成においては、下流側空燃比センサの出力値が増大している場合、サブフィードバック量は「基本燃料噴射量を下流側空燃比センサの出力値の変化速度の大きさが大きいほどより減少させる値」となるように算出される。この結果、酸素吸蔵量ＯＳＡが「０」に到達する前の時点にて酸素吸蔵量ＯＳＡを適切に増大させることができるので、触媒の排気浄化効率を高い値に維持することができる。
本発明の空燃比制御装置の他の態様において、前記空燃比制御手段は、
前記機関に吸入される吸入空気量を取得するとともに同取得された吸入空気量に基づいて前記機関に供給される混合気の空燃比を理論空燃比に一致させるための基本燃料噴射量を算出する基本燃料噴射量算出手段と、
前記基本燃料噴射量を補正するためのフィードバック量であるサブフィードバック量を前記下流側空燃比センサの出力値に基づいて算出するサブフィードバック量算出手段と、
前記基本燃料噴射量を前記サブフィードバック量により補正することにより得られる量の燃料を前記機関に噴射供給する燃料噴射手段と、
を備える。
更に、前記サブフィードバック量算出手段は、
（Ａ）前記通常空燃比フィードバック制御を実行するために、
前記下流側空燃比センサの出力値が減少している場合に前記基本燃料噴射量を同出力値の変化速度の大きさが大きいほどより増大させ、且つ、前記下流側空燃比センサの出力値が増大している場合に前記基本燃料噴射量を同出力値の変化速度の大きさが大きいほどより減少させるサブフィードバック量の微分項を、「下流側空燃比センサの出力値の変化速度」に「所定の微分ゲインｋｄ」を乗じることにより算出する微分項算出手段、
を含むことが好適である。
上述したように、下流側空燃比センサの出力値Ｖｏｘｓが減少している場合、その減少速度の大きさが大きいほど「触媒流入ガスの空燃比を理論空燃比よりもよりリッチ側の空燃比」に設定することが望ましい。即ち、下流側空燃比センサの出力値Ｖｏｘｓが減少している場合、触媒流入ガス要求空燃比は「出力値Ｖｏｘｓの減少速度の大きさが大きいほど理論空燃比との偏差がより大きいリッチ空燃比」である。
更に、上述したように、下流側空燃比センサの出力値Ｖｏｘｓが増大している場合、その増大速度の大きさが大きいほど「触媒流入ガスの空燃比を理論空燃比よりもよりリーン側の空燃比」に設定することが望ましい。即ち、下流側空燃比センサの出力値Ｖｏｘｓが増大している場合、触媒流入ガス要求空燃比は「出力値Ｖｏｘｓの増大速度の大きさが大きいほど理論空燃比との偏差がより大きいリーン空燃比」である。
そこで、上記構成においては、下流側空燃比センサの出力値の変化速度（単位時間あたりの下流側空燃比センサの出力値Ｖｏｘｓの変化量に相当）に所定の微分ゲインｋｄを乗じた値が「サブフィードバック量の微分項」として算出される。微分ゲインｋｄは、下流側空燃比センサの出力値が時間の経過とともに減少しているとき、微分項が正の値（即ち、基本燃料噴射量を増大する値）となるように定められる。また、微分ゲインｋｄは、下流側空燃比センサの出力値が時間の経過とともに増大しているとき、微分項が負の値（即ち、基本燃料噴射量を減少する値）となるように定められる。この微分項を用いることにより、触媒流入ガス要求空燃比に応じた空燃比のガスを触媒に流入させることができる。この結果、酸素吸蔵量ＯＳＡが最大酸素吸蔵量Ｃｍａｘ又は「０」に到達することがないので、触媒の排気浄化効率を高い値に維持することができる。
更に、前記サブフィードバック量算出手段が前記微分項算出手段を含んでいる場合、そのサブフィードバック量算出手段は、更に、以下に述べるように構成された比例項算出手段を含むことが望ましい。
即ち、前記比例項算出手段は、
（Ｂ１）前記下流側空燃比センサの出力値が前記第１閾値以上である場合、「前記第１閾値と、前記下流側空燃比センサの出力値と、の差」にリーン制御用ゲインＫｐＬを乗じた値と、「前記第１閾値と前記第２閾値との間に設定された所定の目標値（例えば、前記中央値）と、前記第１閾値と、の差」に第１ゲインＫｐＳ１を乗じた値と、の和を、「前記基本燃料噴射量を減少させる」ことによって「前記機関に供給される混合気の空燃比を理論空燃比よりもリーン側の空燃比」に制御するための「前記サブフィードバック量の比例項」として算出し、
（Ｂ２）前記下流側空燃比センサの出力値が前記第２閾値以下である場合、「前記第２閾値と、前記下流側空燃比センサの出力値と、の差」にリッチ制御用ゲインＫｐＲを乗じた値と、「前記目標値と、前記第２閾値と、の差」に第２ゲインＫｐＳ２を乗じた値と、の和を、「前記基本燃料噴射量を増大させる」ことによって「前記機関に供給される混合気の空燃比を理論空燃比よりもリッチ側の空燃比」に制御するための「前記サブフィードバック量の比例項」として算出として算出し、
（Ｂ３）前記下流側空燃比センサ出力値が前記第１閾値と前記第２閾値との間にある場合、前記目標値と前記下流側空燃比センサの出力値との差に第３ゲインＫｐＳ３を乗じた値を「前記サブフィードバック量の比例項」として算出する。
下流側空燃比センサの出力値Ｖｏｘｓが、「前記第１閾値を含む所定範囲内の値（図８におけるＶｍａｘ−α１、好ましくはストイキ上限値ＶＨｉｌｉｍｉｔ）」と「前記第２閾値を含む所定範囲内の値（図９におけるＶｍｉｎ＋α２、好ましくはストイキ下限値ＶＬｏｌｉｍｉｔ）」との間にある場合、触媒の酸素吸蔵量ＯＳＡは適量に近いと考えることができる。即ち、この場合、酸素吸蔵量ＯＳＡは、明らかに最大酸素吸蔵量Ｃｍａｘの近傍ではなく、且つ、明らかに「０」の近傍でもない。よって、下流側空燃比センサの出力値Ｖｏｘｓが第１閾値と第２閾値との間にある場合、出力値Ｖｏｘｓを「前記第１閾値と前記第２閾値との間に設定される目標値（例えば、中央値Ｖｍｉｄ）」に近づけるためのサブフィードバック量の比例項を大きくする必要性は小さい。
これに対し、下流側空燃比センサの出力値Ｖｏｘｓが前記第１閾値を含む所定範囲内の値以上である場合、酸素吸蔵量ＯＳＡは「０」に近いので、触媒流入ガス要求空燃比は理論空燃比よりもリーン側の空燃比である。この場合、従来装置は、「下流側空燃比センサの出力値Ｖｏｘｓと中央値Ｖｍｉｄに設定された目標値との差」に「所定のゲイン」を乗じることにより「サブフィードバック量の比例項」を算出していた。しかしながら、前述したように、下流側空燃比センサの出力値Ｖｏｘｓが前記第１閾値を含む所定範囲内の値以下であるとき、大きな値を有する比例項により触媒流入ガスの空燃比をリーン側に移行する必要性は小さい。従って、従来装置のように比例項を求めると、下流側空燃比センサの出力値Ｖｏｘｓが前記第１閾値以上である場合の比例項が過大となる恐れがある。
そこで、上記構成（Ｂ１を参照。）においては、前記下流側空燃比センサの出力値が前記第１閾値以上である場合、「前記第１閾値と、前記下流側空燃比センサの出力値と、の差」にリーン制御用ゲインＫｐＬを乗じた値と、「前記第１閾値と前記第２閾値との間に設定された所定の目標値と、前記第１閾値と、の差」に第１ゲインＫｐＳ１を乗じた値と、の和を「前記サブフィードバック量の比例項」として算出する。即ち、出力値と目標値との偏差を、「出力値と第１閾値との偏差」及び「第１閾値と目標値」との偏差に区分し、それぞれの偏差に固有のゲインを乗じることによって比例項を求める。
これにより、リーン制御用ゲインＫｐＬと第１ゲインＫｐＳ１とを異なる値に設定することができる（例えば、ＫｐＬ＞ＫｐＳ１）。従って、「触媒流入ガスの空燃比を理論空燃比よりもリーン側に設定するための比例項が過大となりすぎることにより、酸素吸蔵量ＯＳＡが逆に最大酸素吸蔵量Ｃｍａｘ近傍にまで一気に増大する事態が発生すること」を回避することができる。
同様に、下流側空燃比センサの出力値Ｖｏｘｓが前記第２閾値を含む所定範囲内の値以下である場合、酸素吸蔵量ＯＳＡは最大酸素吸蔵量Ｃｍａｘに近いので、触媒流入ガス要求空燃比は理論空燃比よりもリッチ側の空燃比である。この場合においても、従来装置は、「下流側空燃比センサの出力値Ｖｏｘｓと中央値Ｖｍｉｄに設定れた目標値との差」に「所定のゲイン」を乗じることにより「サブフィードバック量の比例項」を算出していた。しかしながら、前述したように、下流側空燃比センサの出力値Ｖｏｘｓが前記第２閾値を含む所定範囲内の値以上であるとき、大きな値を有する比例項により触媒流入ガスの空燃比をリッチ側に移行する必要はない。従って、従来装置のように比例項を求めると、下流側空燃比センサの出力値Ｖｏｘｓが前記第２閾値以下である場合の比例項が過大となる恐れがある。
そこで、上記構成（Ｂ２を参照。）においては、前記下流側空燃比センサの出力値が前記第２閾値以下である場合、「前記第２閾値と、前記下流側空燃比センサの出力値と、の差」にリッチ制御用ゲインＫｐＲを乗じた値と、「前記目標値と、前記第２閾値と、の差」に第２ゲインＫｐＳ２を乗じた値と、の和を「前記サブフィードバック量の比例項」として算出する。即ち、出力値と目標値との偏差を、「出力値と第２閾値との偏差」及び「第２閾値と目標値」との偏差に区分し、それぞれの偏差に固有のゲインを乗じることによって比例項を求める。
これにより、リッチ制御用ゲインＫｐＲと第２ゲインＫｐＳ２とを異なる値に設定することができる（例えば、ＫｐＲ＞ＫｐＳ２）。この結果、「触媒流入ガスの空燃比を理論空燃比よりもリッチ側に設定するための比例項が過大となりすぎることにより、酸素吸蔵量ＯＳＡが逆に「０」近傍にまで一気に減少する事態が発生すること」を回避することができる。
そして、前述したように、下流側空燃比センサの出力値Ｖｏｘｓが第１閾値と第２閾値との間にある場合、サブフィードバック量の比例項を大きくする必要性は小さい。よって、上記構成（Ｂ３を参照。）においては、下流側空燃比センサの出力値Ｖｏｘｓが第１閾値と第２閾値との間にある場合、前記目標値と前記下流側空燃比センサの出力値との差に適切な第３ゲインＫｐＳ３（例えば、ゲインＫｐＬ及びゲインＫｐＲよりも小さいゲイン）を乗じた値を「前記サブフィードバック量の比例項」として算出する。以上により、酸素吸蔵量ＯＳＡを適切な範囲に維持するための比例項が算出される。
なお、リーン制御用ゲインＫｐＬの絶対値と、リッチ制御用ゲインＫｐＲの絶対値と、は相違した値であってもよく、同じ値（閾値外偏差用ゲイン）であってもよい。また、第１ゲインＫｐＳ１と第２ゲインＫｐＳ２と第３ゲインＫｐＳ３とは、互いに相違する値であってもよく、同じ値（閾値内偏差用ゲイン）であってもよい。第３ゲインＫｐＳ３は、第１ゲインＫｐＳ１及び第２ゲインＫｐＳ２よりも小さく、「０」であってもよい。
上記比例項算出手段を含む内燃機関の空燃比制御装置において
前記比例項算出手段は、
（Ｃ１）前記下流側空燃比センサの出力値が前記第１閾値を含む所定範囲内の値よりも大きい場合、前記目標値を前記第１閾値と前記中央値との間の値である第１目標値に設定し、
（Ｃ２）前記下流側空燃比センサの出力値が前記第２閾値を含む所定範囲内の値よりも小さい場合、前記目標値を前記第２閾値と前記中央値との間の値である第２目標値に設定し、
（Ｃ３）前記下流側空燃比センサの出力値が前記第１閾値を含む所定範囲内の値と前記第２閾値を含む所定範囲内の値との間にある場合、前記目標値を前記第１目標値と前記第２目標値との間の値である第３目標値（好ましくは、前記中央値）に設定するように構成され得る。
上記（Ｃ１）の構成によれば、前記下流側空燃比センサの出力値が前記第１閾値を含む所定範囲内の値よりも大きい場合、前記目標値が「前記第１閾値と前記中央値との間の値、即ち、第１目標値」に設定されるので、前記目標値が「前記中央値」に設定される場合と比較して、「第１閾値と目標値（第１目標値）との差の大きさ（即ち、上記第１ゲインＫｐＳ１が乗じられる偏差）」が過大とならない。従って、比例項を「下流側空燃比センサの出力値を前記第１閾値以下に移行させるために必要ではあるが過大ではない値」に設定することができる。
同様に、上記（Ｃ２）の構成によれば、前記下流側空燃比センサの出力値が前記第２閾値を含む所定範囲内の値よりも小さい場合、前記目標値が「前記第２閾値と前記中央値との間の値、即ち、第２目標値」に設定されるので、前記目標値が「前記中央値」に設定される場合と比較して、「第２閾値と目標値（第２目標値）との差の大きさ（即ち、上記第２ゲインＫｐＳ２が乗じられる偏差）」が過大とならない。従って、比例項を「下流側空燃比センサの出力値Ｖｏｘｓを前記第２閾値以上に移行させるために必要ではあるが過大ではない値」に設定することができる。
更に、上記（Ｃ３）の構成によれば、前記下流側空燃比センサの出力値が前記第１閾値を含む所定範囲内の値と前記第２閾値を含む所定範囲内の値との間にある場合、前記目標値が「前記第１目標値と前記第２目標値との間の値、即ち、第３目標値」に設定されるので、比例項を「下流側空燃比センサの出力値を前記第１閾値と前記第２閾値との間に維持するために適切な値」に設定することができる。
前記微分項算出手段及び前記比例項算出手段を備える本発明の内燃機関の空燃比制御装置において、
前記比例項算出手段は、
前記下流側空燃比センサの出力値の変化速度の大きさが大きいほど前記サブフィードバック量の比例項の大きさを小さくする（上記比例項の大きさが小さくなるように同比例項を補正する）ように構成されることが好適である。
前述したように、下流側空燃比センサの出力値Ｖｏｘｓが減少し且つその出力値Ｖｏｘｓの変化速度の大きさが大きいほど、酸素吸蔵量ＯＳＡは最大酸素吸蔵量Ｃｍａｘ近傍に接近していると考えることができる。従って、下流側空燃比センサの出力値Ｖｏｘｓが減少し且つその出力値Ｖｏｘｓの変化速度の大きさが大きいほど、サブフィードバック量は基本燃料噴射量をより大きく増量補正する値となることが望ましい。ところが、下流側空燃比センサの出力値Ｖｏｘｓが目標値よりも大きいと、比例項は基本燃料噴射量を減量補正する値となる。従って、上記構成のように、前記下流側空燃比センサの出力値の変化速度の大きさが大きいほど前記サブフィードバック量の比例項の大きさを小さくすれば、比例項が「下流側空燃比センサの出力値の変化に基づく微分項による適切な空燃比制御」を阻害しないので、酸素吸蔵量ＯＳＡが最大酸素吸蔵量Ｃｍａｘ近傍に到達してしまう可能性を低減することができる。
同様に、下流側空燃比センサの出力値Ｖｏｘｓが増大し且つその出力値Ｖｏｘｓの変化速度の大きさが大きいほど、酸素吸蔵量ＯＳＡは「０」近傍に到達していると考えることができる。従って、下流側空燃比センサの出力値Ｖｏｘｓが増大し且つその出力値Ｖｏｘｓの変化速度の大きさが大きいほど、サブフィードバック量は基本燃料噴射量をより大きく減量補正する値となることが望ましい。ところが、下流側空燃比センサの出力値Ｖｏｘｓが目標値よりも小さいと、比例項は基本燃料噴射量を増量補正する値となる。従って、上記構成のように、前記下流側空燃比センサの出力値の変化速度の大きさが大きいほど前記サブフィードバック量の比例項の大きさを小さくすれば、比例項が「下流側空燃比センサの出力値の変化に基づく微分項による適切な空燃比制御」を阻害しないので、酸素吸蔵量ＯＳＡが「０」近傍に到達してしまう可能性を低減することができる。
本発明の空燃比制御装置が備える空燃比制御手段は、
前記機関に吸入される吸入空気量を取得するとともに同取得された吸入空気量に基づいて前記機関に供給される混合気の空燃比を理論空燃比に一致させるための基本燃料噴射量を算出する基本燃料噴射量算出手段と、
前記排気通路であって前記触媒よりも上流に配設されるとともにその配設部位を流れるガスの空燃比に応じた出力値を出力する上流側空燃比センサと、
メインフィードバック量算出手段と、
サブフィードバック量算出手段と、
燃料噴射手段と、
を備える。
前記メインフィードバック量算出手段は、
「前記上流側空燃比センサの出力値により表される上流側空燃比」が理論空燃比に一致するように「前記基本燃料噴射量を補正するフィードバック量（メインフィードバック量）」を算出する。
前記サブフィードバック量算出手段は、
（Ｄ１）前記下流側空燃比センサの出力値が減少している場合、前記基本燃料噴射量を増大させるように前記基本燃料噴射量を補正し、且つ、
（Ｄ２）前記下流側空燃比センサの出力値が増大している場合、前記基本燃料噴射量を減少させるように前記基本燃料噴射量を補正する、
「サブフィードバック量」を算出する。
前記燃料噴射手段は、
前記基本燃料噴射量を、「前記メインフィードバック量及び前記サブフィードバック量」からなる「空燃比補正量」により補正することによって得られる量、の燃料を前記機関に噴射供給する。
更に、前記メインフィードバック量算出手段は、
（Ｅ１）前記下流側空燃比センサの出力値が減少している場合、前記メインフィードバック量が「前記基本燃料噴射量を減少させる値」になっているとき、前記メインフィードバック量の大きさを小さくするか又は０に設定し、且つ、
（Ｅ２）前記下流側空燃比センサの出力値が増大している場合、前記メインフィードバック量が「前記基本燃料噴射量を増大させる値」になっているとき、前記メインフィードバック量の大きさを小さくするか又は０に設定する、
ように構成されてもよい。
一般に、機関に供給される混合気の空燃比の過渡的（一時的）な乱れを速やかに補償するために、「上流側空燃比センサの出力値に基づいて算出されるメインフィードバック量」を用いるメインフィードバック制御が、「下流側空燃比センサの出力値に基づいて算出されるサブフィードバック量」を用いるサブフィードバック制御とともに実行されることが多い。
ところで、上述したように、前記下流側空燃比センサの出力値が減少している場合（特に、前記下流側空燃比センサの出力値Ｖｏｘｓが減少し且つその変化速度の大きさが第１変化速度閾値以上である場合）、酸素吸蔵量ＯＳＡはもはや「０」近傍ではなく、寧ろ最大酸素吸蔵量Ｃｍａｘに近づいている。従って、触媒流入ガス要求空燃比は「理論空燃比よりもリッチ側の空燃比」である。このとき、基本燃料噴射量が減少（減量補正）されること（即ち、触媒流入ガスの空燃比がリーン空燃比に制御されること）は触媒にとって好ましくない。しかしながら、例えば、「機関に供給される混合気の空燃比の過渡的変動」に起因してメインフィードバック量が「基本燃料噴射量を大きく減量補正するような値」になった場合、「前記メインフィードバック量及び前記サブフィードバック量からなる空燃比補正量」が全体として「前記基本燃料噴射量を減量補正する値」になることがある。即ち、空燃比補正量が「触媒流入ガスの空燃比」を「理論空燃比よりもリーン側の空燃比」に設定するような値になる場合がある。
そこで、上記（Ｅ１）に記載したように、前記下流側空燃比センサの出力値が減少している場合（即ち、触媒流入ガス要求空燃比が「理論空燃比よりもリッチ側の空燃比」である場合）、前記メインフィードバック量が「前記基本燃料噴射量を減少させる値」になっているのであれば、前記メインフィードバック量の大きさを小さくするか又は０に設定することが望ましい。
これによれば、「前記メインフィードバック量が前記基本燃料噴射量を過度に減少させてしまい、その結果、「触媒流入ガス要求空燃比と相違する空燃比（この場合、理論空燃比よりもリーン側の空燃比）のガスが触媒に流入する可能性」を低減することができる。
同様に、前記下流側空燃比センサの出力値が増大している場合（特に、前記下流側空燃比センサの出力値Ｖｏｘｓが増大し且つその変化速度の大きさが第２変化速度閾値以上である場合）、酸素吸蔵量ＯＳＡはもはや最大酸素吸蔵量Ｃｍａｘ近傍ではなく、寧ろ「０」に近づいている。従って、触媒流入ガス要求空燃比は「理論空燃比よりもリーン側の空燃比」である。このとき、基本燃料噴射量が増大（増量補正）されることは触媒にとって好ましくない。しかしながら、例えば、「機関に供給される混合気の空燃比」の過渡的変動に起因してメインフィードバック量が「基本燃料噴射量を大きく増量補正するような値」になった場合、「前記メインフィードバック量及び前記サブフィードバック量からなる空燃比補正量」が全体として「前記基本燃料噴射量を増大させる値」になることがある。即ち、空燃比補正量が「触媒流入ガスの空燃比」を「理論空燃比よりもリッチ側の空燃比」に設定するような値になる場合がある。
そこで、上記（Ｅ２）に記載したように、前記下流側空燃比センサの出力値が増大している場合（即ち、触媒流入ガス要求空燃比が「理論空燃比よりもリーン側の空燃比」である場合）、前記メインフィードバック量が「前記基本燃料噴射量を増大させる値」になっているのであれば、前記メインフィードバック量の大きさを小さくするか又は０に設定することが望ましい。
これによれば、「前記メインフィードバック量が前記基本燃料噴射量を過度に増大させてしまい、その結果、「触媒流入ガス要求空燃比と相違する空燃比（この場合、理論空燃比よりもリッチ側の空燃比）のガスが触媒に流入する可能性」を低減することができる。
更に、前記メインフィードバック量算出手段は、
（Ｆ１）前記下流側空燃比センサの出力値が前記第１閾値を含む所定範囲内の値以上である場合、前記メインフィードバック量が「前記基本燃料噴射量を増大させる値」であるとき、同メインフィードバック量を０に設定し、
（Ｆ２）前記下流側空燃比センサの出力値が前記第２閾値を含む所定範囲内の値以下である場合、前記メインフィードバック量が「前記基本燃料噴射量を減少させる値」であるとき、同メインフィードバック量を０に設定する、
ように構成されることが好ましい。
前述したように、前記下流側空燃比センサの出力値が前記第１閾値を含む所定範囲内の値以上である場合、酸素吸蔵量ＯＳＡは「０」又は実質的に「０」である。従って、触媒流入ガス要求空燃比は「理論空燃比よりもリーン側の空燃比」であるから、前記メインフィードバック量が前記基本燃料噴射量を増大（増量補正）することは触媒にとって好ましくない。
そこで、上記（Ｆ１）に記載したように、前記下流側空燃比センサの出力値が前記第１閾値を含む所定範囲内の値以上である場合において前記メインフィードバック量が前記基本燃料噴射量を増大させる値であるとき、前記メインフィードバック量を０に設定すれば、「前記メインフィードバック量が、触媒流入ガス要求空燃比と相違する空燃比のガスを触媒に流入させてしまうように作用すること」を回避することができる。
同様に、前記下流側空燃比センサの出力値が前記第２閾値を含む所定範囲内の値以下である場合、酸素吸蔵量ＯＳＡは最大酸素吸蔵量Ｃｍａｘ又は実質的に最大酸素吸蔵量Ｃｍａｘである。従って、触媒流入ガス要求空燃比は「理論空燃比よりもリッチ側の空燃比」であるから、前記メインフィードバック量が前記基本燃料噴射量を減少（減量補正）することは触媒にとって好ましくない。
そこで、上記（Ｆ２）に記載したように、前記下流側空燃比センサの出力値が前記第２閾値を含む所定範囲内の値以下である場合において前記メインフィードバック量が前記基本燃料噴射量を減少させる値であるとき、前記メインフィードバック量を０に設定すれば、「前記メインフィードバック量が触媒にとって不都合な空燃比のガスを供給するように作用すること」を回避することができる。
更に、本発明の空燃比制御装置における前記空燃比制御手段は、
前記下流側空燃比センサの出力値が前記最大出力値となっているときに「前記触媒流入ガスの空燃比」を「理論空燃比よりもリーン側の所定リーン空燃比」に制御し、その状態において前記下流側空燃比センサの出力値が「前記最小出力値」又は「前記最小出力値に所定値を加えた値」に到達するまでの期間において、「同下流側空燃比センサの出力値の変化速度の大きさが最小となった時点」における「同下流側空燃比センサの出力値」を前記第１閾値として取得する、ストイキ上限値取得手段を含むことが好適である。
図８の時刻ｔ１〜ｔ２に示したように、触媒流入ガスの空燃比が理論空燃比よりもリッチ側の空燃比である状態が継続すると、下流側空燃比センサの出力値Ｖｏｘｓは最大出力値Ｖｍａｘに到達する。このとき（時刻ｔ２）、触媒流入ガスの空燃比が理論空燃比よりもリーン側の空燃比に制御されると、下流側空燃比センサの出力値Ｖｏｘｓは時刻ｔ２〜ｔ３において僅かに減少し、時刻ｔ３〜ｔ４において略一定値となり、時刻ｔ４以降において最小出力値Ｖｍｉｎに向けて急激に減少する。この時刻ｔ３〜ｔ４の期間において、触媒は触媒流入ガスに含まれる酸素を急激に吸蔵していて、触媒流出ガスの空燃比は実質的に理論空燃比である。換言すると、下流側空燃比センサの出力値Ｖｏｘｓが「時刻ｔ３〜ｔ４において示す値」を超えないように触媒流入ガスを制御すれば、触媒の酸素吸蔵量ＯＳＡが「０」近傍の値にならないので、未燃物及びＮＯｘは良好に浄化される。
そして、この時刻ｔ３〜ｔ４における出力値Ｖｏｘｓは、出力値Ｖｏｘｓが最大出力値Ｖｍａｘから最小出力値Ｖｍｉｎ又はその近傍へと変化するまでの期間において「出力値Ｖｏｘｓの変化速度の大きさが最小となった時点」における出力値Ｖｏｘｓである。よって、上記構成によれば、時刻ｔ３〜ｔ４における出力値Ｖｏｘｓを「前記第１閾値、又は、前記ストイキ上限値」として取得することができる。
更に、本発明の空燃比制御装置における前記空燃比制御手段は、
前記下流側空燃比センサの出力値が前記最小出力値となっているときに「前記触媒流入ガスの空燃比」を「理論空燃比よりもリッチ側の所定リッチ空燃比」に制御し、その状態において前記下流側空燃比センサの出力値が「前記最大出力値」又は「前記最大出力値から所定値を減じた値」に到達するまでの期間において、「同下流側空燃比センサの出力値の変化速度の大きさが最小となった時点」における「同下流側空燃比センサの出力値」を前記第２閾値として取得する、ストイキ下限値取得手段を含むことが好適である。
図９の時刻ｔ１〜ｔ２に示したように、触媒流入ガスの空燃比が理論空燃比よりもリーン側の空燃比（図９の例においてはフューエルカット運転）である状態が継続すると、下流側空燃比センサの出力値Ｖｏｘｓは最小出力値Ｖｍｉｎに到達する。このとき（時刻ｔ２）、触媒流入ガスの空燃比が理論空燃比よりもリッチ側の空燃比に制御されると、下流側空燃比センサの出力値Ｖｏｘｓは時刻ｔ２〜ｔ３において僅かに増大し、時刻ｔ３〜ｔ４において略一定値となり、時刻ｔ４以降において最大出力値Ｖｍａｘに向けて急激に増大する。この時刻ｔ３〜ｔ４の期間においては、触媒は吸蔵している酸素を急激に放出することにより未燃物を酸化していて、触媒流出ガスの空燃比は実質的に理論空燃比である。換言すると、下流側空燃比センサの出力値Ｖｏｘｓが「時刻ｔ３〜ｔ４において示す値」を下回らないように触媒流入ガスを制御すれば、触媒の酸素吸蔵量ＯＳＡが最大酸素吸蔵量Ｃｍａｘ近傍の値にならないので、未燃物及びＮＯｘは良好に浄化される。
そして、この時刻ｔ３〜ｔ４における出力値Ｖｏｘｓは、出力値Ｖｏｘｓが最小出力値Ｖｍｉｎから最大出力値Ｖｍａｘ又はその近傍へと変化するまでの期間において「出力値Ｖｏｘｓの変化速度の大きさが最小となった時点」における出力値Ｖｏｘｓである。よって、上記構成によれば、時刻ｔ３〜ｔ４における出力値Ｖｏｘｓを「前記第２閾値又は前記ストイキ下限値」として取得することができる。
更に、本発明による内燃機関の空燃比制御装置において、
前記空燃比制御手段は、
前記機関に吸入される吸入空気量を取得するとともに同取得された吸入空気量に基づいて前記機関に供給される混合気の空燃比を理論空燃比に一致させるための基本燃料噴射量を算出する基本燃料噴射量算出手段と、
前記排気通路であって前記触媒よりも上流に配設されるとともにその配設部位を流れるガスの空燃比に応じた出力値を出力する上流側空燃比センサと、
前記上流側空燃比センサの出力値により表される上流側空燃比が理論空燃比に一致するように「前記基本燃料噴射量を補正するメインフィードバック量」を算出するメインフィードバック量算出手段と、
前記下流側空燃比センサの出力値が減少している場合に前記基本燃料噴射量を増大させるように前記基本燃料噴射量を補正し且つ前記下流側空燃比センサの出力値が増大している場合に前記基本燃料噴射量を減少させるように「前記基本燃料噴射量を補正するサブフィードバック量」を算出するサブフィードバック量算出手段と、
前記基本燃料噴射量を「前記メインフィードバック量及び前記サブフィードバック量」からなる空燃比補正量により補正することにより得られる量、の燃料を前記機関に噴射供給する燃料噴射手段と、
前記空燃比補正量が前記基本燃料噴射量を増大させる値である状態が継続している場合に「同空燃比補正量によって同基本燃料噴射量が増大させられる量」の積算値を求め、同求めた積算値の大きさが所定の増量閾値に到達したとき、同空燃比補正量に関わらず、「前記機関に供給される混合気の空燃比（従って、触媒流入ガスの空燃比）」が「所定の第１の触媒回復時間」だけ「理論空燃比よりもリーン側の空燃比」となるように「前記燃料噴射手段から噴射供給される燃料の量」を制御する触媒機能回復手段（第１回復手段）、
を含むことが好適である。
上述したように、触媒流入ガスの空燃比が「理論空燃比よりもリッチ側の空燃比」である状態が長時間継続したとき、触媒が担持する貴金属の周囲にＨＣが付着することによって触媒のリッチ被毒が発生する。触媒のリッチ被毒は触媒の浄化効率の低下をもたらす。触媒のリッチ被毒は、理論空燃比に対して大きくリーン側に偏移した空燃比のガスを触媒に供給することにより解消することができる。
そこで、上記触媒機能回復手段は、「前記メインフィードバック量と前記サブフィードバック量とからなる前記基本燃料噴射量の補正量、即ち、空燃比補正量」が「同基本燃料噴射量を増大させる値である状態」が継続している場合に、「同空燃比補正量によって同基本燃料噴射量が増大させられる量」の積算値を求め、その積算値の大きさが「所定の増量閾値」に到達したとき、触媒のリッチ被毒が発生する可能性が高いと判断し、「機関に供給される混合気の空燃比」を第１の触媒回復時間だけ「理論空燃比よりもリーン側の空燃比」に制御する。この結果、触媒のリッチ被毒が解消されるので、「触媒のリッチ被毒に起因して触媒の浄化効率が低下すること」を回避することができる。
同様に、上記空燃比制御手段が、上記基本燃料噴射量算出手段と、上記上流側空燃比センサと、上記メインフィードバック量算出手段と、上記サブフィードバック量算出手段と、上記燃料噴射手段と、を含む場合、更に、上記空燃比制御手段は、
前記空燃比補正量が前記基本燃料噴射量を減少させる値である状態が継続している場合に「同空燃比補正量によって同基本燃料噴射量が減少させられる量」の積算値を求め、同求めた積算値の大きさが所定の減量閾値に到達したとき、同空燃比補正量に関わらず、前記機関に供給される混合気の空燃比（従って、触媒流入ガスの空燃比）が「所定の第２の触媒回復時間」だけ「理論空燃比よりもリッチ側の空燃比」となるように「前記燃料噴射手段から噴射供給される燃料の量」を制御する触媒機能回復手段（第２回復手段）、
を含むことが好適である。
上述したように、触媒流入ガスの空燃比が理論空燃比よりもリーン側の空燃比である状態が長時間継続したとき、触媒が担持する貴金属が酸化して表面積が低下することによって触媒のリーン被毒が発生する。触媒のリーン被毒も触媒の浄化効率の低下をもたらす。触媒のリーン被毒は、理論空燃比に対して大きくリッチ側に偏移した空燃比のガスを触媒に供給することにより解消することができる。
そこで、上記触媒機能回復手段は、「前記メインフィードバック量と前記サブフィードバック量とからなる前記基本燃料噴射量の補正量、即ち、空燃比補正量」が同基本燃料噴射量を減少させる値である状態が継続している場合に、「同空燃比補正量によって同基本燃料噴射量が減少させられる量」の積算値をもとめ、その積算値の大きさが所定の減量閾値に到達したとき、触媒のリーン被毒が発生する可能性が高いと判断し、「機関に供給される混合気の空燃比」を第２の触媒回復時間だけ「理論空燃比よりもリッチ側の空燃比」に制御する。この結果、触媒のリーン被毒が解消されるので、「触媒のリーン被毒に起因して触媒の浄化効率が低下すること」を回避することができる。
更に、本発明による空燃比制御装置の他の態様において、
前記空燃比制御手段は、
前記下流側空燃比センサの出力値が「前記第１閾値よりも小さく且つ前記第２閾値よりも大きい値」となっていて「前記通常空燃比フィードバック制御が実行されている期間」における「同出力値の変動周波数」を取得するとともに、同取得した変動周波数が所定の閾値周波数以下となった場合、「前記通常空燃比フィードバック制御」に代え、前記触媒の酸素吸蔵量を推定するとともに「同推定した酸素吸蔵量」が「所定の酸素吸蔵量下限値と、同酸素吸蔵量下限値よりも大きい所定の酸素吸蔵量上限値と、の間」になるように、同推定した酸素吸蔵量に基づいて「前記機関に供給される混合気の空燃比」を制御する「酸素吸蔵量フィードバック制御」を実行するように構成される。
前記通常空燃比フィードバック制御を実行している場合、下流側空燃比センサの出力値の変動周波数が小さくなる状態が発生し得る。ここで、下流側空燃比センサの出力値の変動周波数とは、下流側空燃比センサの出力値が前記中央値Ｖｍｉｄを中心にして同中央値Ｖｍｉｄを上下する際の周期の逆数である。より具体的に述べると、下流側空燃比センサの出力値の変動周波数は、例えば、「下流側空燃比センサの出力値が前記中央値Ｖｍｉｄより小さい値から大きい値へと変化した時点から、下流側空燃比センサの出力値がその後前記中央値Ｖｍｉｄより大きい値から小さい値へと変化し、更に、前記中央値Ｖｍｉｄより小さい値から大きい値へと再び変化する時点までの時間」を「一周期」とした場合の周波数である。従って、下流側空燃比センサの出力値の変動周波数は、「下流側空燃比センサの出力値が前記中央値Ｖｍｉｄより大きい値から小さい値へと変化した時点から、下流側空燃比センサの出力値がその後前記中央値Ｖｍｉｄより小さい値から大きい値へと変化し、更に、前記中央値Ｖｍｉｄより大きい値から小さい値へと再び変化する時点までの時間」を「一周期」とした場合の周波数でもある。
下流側空燃比センサの出力値の変動周波数が小さくなる状態は、触媒流入ガスの空燃比が理論空燃比に極めて近い空燃比となっている状態であり、その場合、触媒のリッチ被毒及び触媒のリーン被毒が解消され難い。換言すると、エミッションが悪化しない範囲において「触媒流入ガスの空燃比」を「理論空燃比を中心として大きく変動させる場合」の方が、「触媒流出ガスの空燃比」を「理論空燃比近傍の略一定の空燃比に維持し続ける場合」よりも、触媒の浄化効率は向上する。
そこで、上記構成のように、「通常空燃比フィードバック制御中の下流側空燃比センサの出力値の変動周波数」が所定の閾値周波数以下となった場合、「前記通常空燃比フィードバック制御」を停止し、触媒の酸素吸蔵量が「酸素吸蔵量下限値から酸素吸蔵量上限値までの範囲」において変動するように「前記機関に供給される混合気の空燃比」を制御する。これによれば、触媒流入ガスの変動が大きくなるので、触媒の浄化効率を改善することができる。なお、前記酸素吸蔵量上限値と前記酸素吸蔵量下限値とは、それらの差が最大酸素吸蔵量Ｃｍａｘよりも小さい値になるように定められている。
更に、このような「酸素吸蔵量フィードバック制御」を実行する空燃比制御手段は、
前記酸素吸蔵量フィードバック制御が実行されている期間に、前記下流側空燃比センサの出力値が「前記第１閾値以上となるか又は前記第２閾値以下となった場合」、前記酸素吸蔵量フィードバック制御を終了するとともに、「前記下流側空燃比センサの出力値に基づいた前記機関に供給される混合気の空燃比の制御」を再開するように構成されることが望ましい。
これによれば、下流側空燃比センサの出力値が前記第１閾値以上になることによりエミッションが悪化する可能性が生じた場合、下流側空燃比センサの出力値を前記第１閾値よりも小さくさせる空燃比制御が直ちに実行され、下流側空燃比センサの出力値が前記第２閾値以下となることによりエミッションが悪化する可能性が生じた場合、下流側空燃比センサの出力値を前記第２よりも大きくさせる空燃比制御が直ちに実行される。
従って、酸素吸蔵量フィードバック制御を実行することによって、酸素吸蔵量が「０」又は最大酸素吸蔵量Ｃｍａｘに近づいた場合であっても、エミッションが悪化することを回避することができる。
【図面の簡単な説明】
【０００４】
図１は、本発明の第１実施形態に係る内燃機関の空燃比制御装置（第１制御装置）を適用した内燃機関の概略図である。
図２は、図１に示した上流側空燃比センサの出力電圧と空燃比との関係を示したグラフである。
図３は、図１に示した下流側空燃比センサの出力電圧と空燃比との関係を示したグラフである。
図４は、酸素不足状態にある触媒にリーン空燃比（理論空燃比よりもリーン側の空燃比）のガスが流入した場合における同触媒の作用を示した概念図である。
図５は、酸素過剰状態にある触媒にリーン空燃比のガスが流入した場合における同触媒の作用を示した概念図である。
図６は、酸素過剰状態にある触媒にリッチ空燃比（理論空燃比よりもリッチ側の空燃比）のガスが流入した場合における同触媒の作用を示した概念図である。
図７は、酸素不足状態にある触媒にリッチ空燃比のガスが流入した場合における同触媒の作用を示した概念図である。
図８は、触媒にリッチ空燃比のガスが所定時間以上流入した後にリーン空燃比のガスが流入した場合の下流側空燃比センサの出力値の変化の様子を示したタイムチャートである。
図９は、フューエルカット運転が所定時間以上継続した後にリッチ空燃比のガスが流入した場合の下流側空燃比センサの出力値の変化の様子を示したタイムチャートである。
図１０は、第１制御装置が通常空燃比フィードバック制御を実行している期間における、「下流側空燃比センサの出力値、触媒の酸素吸蔵量、及び、触媒流入ガスの空燃比」を示したタイムチャートである。
図１１は、第１制御装置の作動を示す概略フローチャートである。
図１２は、第１制御装置のＣＰＵが実行する、燃料噴射量の計算及び噴射指示を行うためのルーチンを示したフローチャートである。
図１３は、第１制御装置のＣＰＵが実行する、下流側空燃比センサの出力値の変化速度を取得するためのルーチンを示したフローチャートである。
図１４は、第１制御装置のＣＰＵが実行する、メインフィードバック量を算出するためのルーチンを示したフローチャートである。
図１５は、第１制御装置のＣＰＵが実行する、リーン否定判定及びリッチ否定判定を行うためのルーチンを示したフローチャートである。
図１６は、第１制御装置のＣＰＵが実行する、メインフィードバック量の補正を行うためのルーチンを示したフローチャートである。
図１７は、第１制御装置のＣＰＵが実行する、サブフィードバック量（サブフィードバック量の微分項を含む。）を算出するためのルーチンを示したフローチャートである。
図１８は、第１制御装置のＣＰＵが実行する、サブフィードバック量の比例項を算出するためのルーチンを示したフローチャートである。
図１９は、サブフィードバック量の比例項の算出に用いられる偏差を説明するための下流側空燃比センサの出力値のタイムチャートである。
図２０は、第１制御装置のＣＰＵが実行する、サブフィードバック量の比例項を制限するためのルーチンを示したフローチャートである。
図２１は、第１制御装置のＣＰＵが実行する、「ストイキ上限値及びストイキ下限値」を取得する際の作動について説明するためのタイムチャートである。
図２２は、ストイキ下限値を検出するための制御を行うルーチンを示したフローチャートである。
図２３は、ストイキ下限値を検出するためのルーチンを示したフローチャートである。
図２４は、ストイキ上限値を検出するための制御を行うルーチンを示したフローチャートである。
図２５は、ストイキ上限値を検出するためのルーチンを示したフローチャートである。
図２６は、本発明の第２実施形態に係る内燃機関の空燃比制御装置（第２制御装置）のＣＰＵが実行する、触媒リッチ状態及び触媒リーン状態を判定するためのルーチンを示したフローチャートである。
図２７は、第２制御装置のＣＰＵが実行する、サブフィードバック量の比例項の目標値（下流側目標値）を変更するためのルーチンを示したフローチャートである。
図２８は、第２制御装置における下流側目標値の変化の様子を示したタイムチャートである。
図２９は、第２制御装置における下流側目標値の変化の様子を示したタイムチャートである。
図３０は、本発明の第３実施形態に係る内燃機関の空燃比制御装置（第３制御装置）のＣＰＵが実行する、メインフィードバック量の補正を行うためのルーチンを示したフローチャートである。
図３１は、本発明の第４実施形態に係る内燃機関の空燃比制御装置（第４制御装置）のＣＰＵが実行する、触媒被毒対策制御を開始・実行するためのルーチンを示したフローチャートである。
図３２は、第４制御装置のＣＰＵが実行する、触媒被毒対策制御を終了するためのルーチンを示したフローチャートである。
図３３は、本発明の第５実施形態に係る内燃機関の空燃比制御装置（第５制御装置）のＣＰＵが実行する、サブフィードバック量の比例項を算出するためのルーチンを示したフローチャートである。
図３４は、第５制御装置のＣＰＵが実行する、酸素吸蔵量フィードバック制御を開始するか否かを判定するためのルーチンを示したフローチャートである。
図３５は、第５制御装置のＣＰＵが実行する、酸素吸蔵量フィードバック制御を実行するためのルーチンを示したフローチャートである。
図３６は、第５制御装置のＣＰＵが実行する、酸素吸蔵量フィードバック制御を終了するか否かを判定するためのルーチンを示したフローチャートである。
図３７は、本発明の変形例に係る内燃機関の空燃比制御装置のＣＰＵが実行する、触媒リッチ状態及び触媒リーン状態を判定するためのルーチンを示したフローチャートである。
図３８は、本発明の他の変形例に係る内燃機関の空燃比制御装置のＣＰＵが実行する、触媒リッチ状態及び触媒リーン状態を判定するためのルーチンを示したフローチャートである。
図３９は、従来の空燃比制御装置及び本発明による空燃比制御装置の作動を説明するためのタイムチャートである。
【発明を実施するための最良の形態】
【０００５】
以下、本発明による内燃機関の空燃比制御装置の各実施形態について図面を参照しつつ説明する。
１．第１実施形態
（構成）
図１は、本発明の第１実施形態に係る空燃比制御装置（以下、「第１制御装置」とも称呼する。）が適用される内燃機関１０の概略構成を示している。機関１０は、４サイクル・火花点火式・多気筒（本例において４気筒）・ガソリン燃料機関である。機関１０は、本体部２０、吸気系統３０及び排気系統４０を備えている。
本体部２０は、シリンダブロック部とシリンダヘッド部とを備えている。本体部２０は、ピストン頂面、シリンダ壁面及びシリンダヘッド部の下面からなる複数（４個）の燃焼室（第１気筒＃１乃至第４気筒＃４）２１を備えている。
シリンダヘッド部には、各燃焼室（各気筒）２１に「空気及び燃料からなる混合気」を供給するための吸気ポート２２と、各燃焼室２１から排ガス（既燃ガス）を排出するための排気ポート２３と、が形成されている。吸気ポート２２は図示しない吸気弁により開閉され、排気ポート２３は図示しない排気弁により開閉されるようになっている。
シリンダヘッド部には複数（４個）の点火プラグ２４が固定されている。各点火プラグ２４は、その火花発生部が各燃焼室２１の中央部であってシリンダヘッド部の下面近傍位置に露呈するように配設されている。各点火プラグ２４は、点火信号に応答して火花発生部から点火用火花を発生するようになっている。
シリンダヘッド部には更に複数（４個）の燃料噴射弁（インジェクタ）２５が固定されている。燃料噴射弁２５は、各吸気ポート２２に一つずつ（即ち、一つの気筒に対して一つ）設けられている。燃料噴射弁２５は、噴射指示信号に応答し、「その噴射指示信号に含まれる指示噴射量の燃料」を対応する吸気ポート２２内に噴射するようになっている。
更に、シリンダヘッド部には、吸気弁制御装置２６が設けられている。この吸気弁制御装置２６は、インテークカムシャフト（図示せず）とインテークカム（図示せず）との相対回転角度（位相角度）を油圧により調整・制御する周知の構成を備えている。吸気弁制御装置２６は、指示信号（駆動信号）に基いて作動し、吸気弁の開弁タイミング（吸気弁開弁タイミング）を変更することができるようになっている。
吸気系統３０は、インテークマニホールド３１、吸気管３２、エアフィルタ３３、スロットル弁３４及びスロットル弁アクチュエータ３４ａを備えている。
インテークマニホールド３１は、各吸気ポート２２に接続された複数の枝部と、それらの枝部が集合したサージタンク部と、を備えている。吸気管３２はサージタンク部に接続されている。インテークマニホールド３１、吸気管３２及び複数の吸気ポート２２は、吸気通路を構成している。エアフィルタ３３は吸気管３２の端部に設けられている。スロットル弁３４はエアフィルタ３３とインテークマニホールド３１との間の位置において吸気管３２に回動可能に取り付けられている。スロットル弁３４は、回動することにより吸気管３２が形成する吸気通路の開口断面積を変更するようになっている。スロットル弁アクチュエータ３４ａは、ＤＣモータからなり、指示信号（駆動信号）に応答してスロットル弁３４を回動させるようになっている。
排気系統４０は、エキゾーストマニホールド４１、エキゾーストパイプ（排気管）４２、上流側触媒４３及び下流側触媒４４を備えている。
エキゾーストマニホールド４１は、各排気ポート２３に接続された複数の枝部４１ａと、それらの枝部４１ａが集合した集合部（排気集合部）４１ｂと、からなっている。エキゾーストパイプ４２は、エキゾーストマニホールド４１の集合部４１ｂに接続されている。エキゾーストマニホールド４１、エキゾーストパイプ４２及び複数の排気ポート２３は、排ガスが通過する通路を構成している。なお、本明細書において、エキゾーストマニホールド４１の集合部４１ｂ及びエキゾーストパイプ４２により形成される通路を、便宜上、「排気通路」と称呼する。
上流側触媒４３は、セラミックからなる担持体に「触媒物質である貴金属」及び「酸素吸蔵物質であるセリア（ＣｅＯ２）」を担持していて、酸素吸蔵・放出機能（酸素吸蔵機能）を有する三元触媒である。上流側触媒４３はエキゾーストパイプ４２に配設（介装）されている。上流側触媒４３は所定の活性温度に到達すると、「未燃物（ＨＣ、ＣＯ及びＨ２等）と窒素酸化物（ＮＯｘ）とを同時に浄化する触媒機能」及び「酸素吸蔵機能」を発揮する。上流側触媒４３は、スタート・キャタリティック・コンバータ（ＳＣ）又は第１触媒とも称呼される。
下流側触媒４４は、上流側触媒４３と同様の三元触媒である。下流側触媒４４は、上流側触媒４３よりも下流においてエキゾーストパイプ４２に配設（介装）されている。下流側触媒４４は、車両のフロア下方に配設されているため、アンダ・フロア・キャタリティック・コンバータ（ＵＦＣ）又は第２触媒とも称呼される。なお、本明細書において、単に「触媒」と言うとき、その「触媒」は上流側触媒４３を意味する。
第１制御装置は、熱線式エアフローメータ５１、スロットルポジションセンサ５２、機関回転速度センサ５３、水温センサ５４、上流側空燃比センサ５５、下流側空燃比センサ５６及びアクセル開度センサ５７を備えている。
熱線式エアフローメータ５１は、吸気管３２内を流れる吸入空気の質量流量を検出し、その質量流量（機関１０の単位時間あたりの吸入空気量）Ｇａを表す信号を出力するようになっている。
スロットルポジションセンサ５２は、スロットル弁３４の開度を検出し、スロットル弁開度ＴＡを表す信号を出力するようになっている。
機関回転速度センサ５３は、インテークカムシャフトが５°回転する毎に幅狭のパルスを有するとともにインテークカムシャフトが３６０°回転する毎に幅広のパルスを有する信号を出力するようになっている。機関回転速度センサ５３から出力される信号は後述する電気制御装置６０により機関回転速度ＮＥを表す信号に変換されるようになっている。更に、電気制御装置６０は、機関回転速度センサ５３及び図示しないクランク角センサからの信号に基いて、機関１０のクランク角度（絶対クランク角）を取得するようになっている。
水温センサ５４は、内燃機関１０の冷却水の温度を検出し、冷却水温ＴＨＷを表す信号を出力するようになっている。
上流側空燃比センサ５５は、エキゾーストマニホールド４１の集合部４１ｂと上流側触媒４３との間の位置においてエキゾーストマニホールド４１及びエキゾーストパイプ４２の何れか（即ち、排気通路）に配設されている。上流側空燃比センサ５５は、例えば、特開平１１−７２４７３号公報、特開２０００−６５７８２号公報及び特開２００４−６９５４７号公報等に開示された「拡散抵抗層を備える限界電流式広域空燃比センサ」である。
上流側空燃比センサ５５は、図２に示したように、上流側空燃比センサ５５の配設位置を流れる排ガスの空燃比（触媒４３に流入するガスである「触媒流入ガス」の空燃比、検出上流側空燃比ａｂｙｆｓ）に応じた出力値Ｖａｂｙｆｓを出力する。出力値Ｖａｂｙｆｓは触媒流入ガスの空燃比が大きくなるほど（即ち、触媒流入ガスの空燃比がリーン側の空燃比になるほど）増大する。
電気制御装置６０は、図２に示した空燃比変換テーブル（マップ）Ｍａｐａｂｙｆｓを記憶している。電気制御装置６０は、出力値Ｖａｂｙｆｓを空燃比変換テーブルＭａｐａｂｙｆｓに適用することにより、実際の上流側空燃比ａｂｙｆｓを検出する（検出上流側空燃比ａｂｙｆｓを取得する）ようになっている。
再び、図１を参照すると、下流側空燃比センサ５６は、上流側触媒４３と下流側触媒４４との間の位置においてエキゾーストパイプ４２（即ち、排気通路）に配設されている。下流側空燃比センサ５６は、周知の濃淡電池型の酸素濃度センサ（Ｏ２センサ）である。下流側空燃比センサ５６は、例えば、固体電解質層と、固体電解質層の外側に形成された排ガス側電極層と、大気室（固体電解質層の内側）に露呈し且つ固体電解室層を挟んで排ガス側電極層と対向するように固体電解質層の内側に形成された大気側電極層と、排ガス側電極層を覆い且つ排ガスが接触する（排ガス中に晒されるように配置される）拡散抵抗層と、を備える。固体電解質層は試験管状であってもよく、板状であってもよい。下流側空燃比センサ５６は、下流側空燃比センサ５６の配設位置を流れる排ガス（即ち、触媒４３から流出するガスである「触媒流出ガス」）の空燃比（下流側空燃比ａｆｄｏｗｎ）に応じた出力値Ｖｏｘｓを出力するようになっている。
下流側空燃比センサ５６の出力値Ｖｏｘｓは、図３に示したように、触媒流出ガス（被検出ガス）の空燃比が理論空燃比よりもリッチ側の空燃比であって、触媒流出ガスの酸化平衡後のガスの酸素分圧が小さいとき最大出力値Ｖｍａｘ（例えば、約０．９Ｖ又は１．０Ｖ）となる。即ち、下流側空燃比センサ５６は、触媒流出ガスに過剰の酸素が含まれていないときに最大出力値Ｖｍａｘを出力する。
また、出力値Ｖｏｘｓは、触媒流出ガスの空燃比が理論空燃比よりもリーン側の空燃比であって、触媒流出ガスの酸化平衡後のガスの酸素分圧が大きいとき最小出力値ｍｉｎ（例えば、約０．１Ｖ又は０Ｖ）となる。即ち、下流側空燃比センサ５６は触媒流出ガスに過剰の酸素が含まれているとき最小出力値Ｖｍｉｎを出力する
更に、この出力値Ｖｏｘｓは、触媒流出ガスの空燃比が理論空燃比よりもリッチ側の空燃比からリーン側の空燃比へと変化する際に最大出力値Ｖｍａｘから最小出力値Ｖｍｉｎへと急激に減少する。逆に、出力値Ｖｏｘｓは、触媒流出ガスの空燃比が理論空燃比よりもリーン側の空燃比からリッチ側の空燃比へと変化する際に最小出力値Ｖｍｉｎから最大出力値Ｖｍａｘへと急激に増大する。
図１に示したアクセル開度センサ５７は、運転者によって操作されるアクセルペダルＡＰの操作量を検出し、アクセルペダルＡＰの操作量Ａｃｃｐを表す信号を出力するようになっている。
電気制御装置６０は、「ＣＰＵ、ＲＯＭ、ＲＡＭ、バックアップＲＡＭ、並びに、ＡＤコンバータを含むインターフェース等」からなる「周知のマイクロコンピュータ」を含む回路である。
電気制御装置６０が備えるバックアップＲＡＭは、機関１０を搭載した車両の図示しないイグニッション・キー・スイッチの位置（オフ位置、始動位置及びオン位置等の何れか）に関わらず、車両に搭載されたバッテリから電力の供給を受けるようになっている。バックアップＲＡＭは、バッテリから電力の供給を受けている場合、ＣＰＵの指示に応じてデータを格納する（データが書き込まれる）とともに、そのデータを読み出し可能となるように保持（記憶）する。バックアップＲＡＭは、バッテリが車両から取り外される等によりバッテリからの電力供給が遮断されると、データを保持することができない。即ち、それまでに保持していたデータが消失（破壊）される。
電気制御装置６０のインターフェースは、前記センサ５１〜５７と接続され、ＣＰＵにセンサ５１〜５７からの信号を供給するようになっている。更に、そのインターフェースは、ＣＰＵの指示に応じて、各気筒の点火プラグ２４、各気筒の燃料噴射弁２５、吸気弁制御装置２６及びスロットル弁アクチュエータ３４ａ等に指示信号（駆動信号）等を送出するようになっている。なお、電気制御装置６０は、取得されたアクセルペダルの操作量Ａｃｃｐが大きくなるほどスロットル弁開度ＴＡが大きくなるように、スロットル弁アクチュエータ３４ａに指示信号を送出するようになっている。
（第１制御装置による空燃比制御の概要）
次に、上記第１制御装置による「空燃比のフィードバック制御」の概要について説明する。図１０は、定常状態における空燃比フィードバック制御（以下、「通常空燃比フィードバック制御」とも称呼する。）中の「下流側空燃比センサ５６の出力値Ｖｏｘｓ、触媒４３の酸素吸蔵量ＯＳＡ、触媒４３に流入するガスである触媒流入ガスの空燃比」を示したタイムチャートである。なお、図１０においては、理解が容易になるように、実際の各値の波形が模式化されたものが示されている。図１１は、第１制御装置の空燃比制御に係る作動を示す概念フローチャートである。なお、第１制御装置は、下流側空燃比センサ５６の出力値Ｖｏｘｓが後述する「第１閾値と第２閾値」との間にある場合に、図１１に示した作動を実質的に行う。
図１０に示した例においては、時刻ｔ０における酸素吸蔵量ＯＳＡが下限値ＣＬｏ（「０」近傍の値）であり、触媒流入ガスの空燃比は理論空燃比よりもリーン側の空燃比（リーン空燃比）に制御されいていると仮定している。この仮定によれば、触媒流入ガスはリーン空燃比であるから、過剰の酸素が触媒４３に流入する。従って、酸素吸蔵量ＯＳＡは次第に増大する。
その後、時刻ｔ１において酸素吸蔵量ＯＳＡは「下限値ＣＬｏよりも大きい上限値（最大酸素吸蔵量Ｃｍａｘ近傍の値）ＣＨｉ」に到達する。このとき、触媒４３は酸素を効率良く吸蔵することができなくなる。よって、触媒４３から流出するガスである触媒流出ガスに比較的多量の酸素が含まれ始める。この結果、時刻ｔ１の直後の時点である時刻ｔ２から下流側空燃比センサ５６の出力値Ｖｏｘｓは最小出力値Ｖｍｉｎに向けて減少し始める。その後、時刻ｔ３にて出力値Ｖｏｘｓの変化速度の大きさ｜Ｖｏｘｓ｜は、第１変化速度閾値ΔＶ１ｔｈ以上となる。第１変化速度閾値ΔＶ１ｔｈは「０」又は「０」より大きい所定値である。
このとき、第１制御装置は、図１１に示した「出力値Ｖｏｘｓの変化速度ΔＶｏｘｓが負であるか否かを判定するステップ１１１０」にて「Ｙｅｓ」と判定し、「出力値Ｖｏｘｓの変化速度の大きさ｜ΔＶｏｘｓ｜が第１変化速度閾値ΔＶ１ｔｈ以上であるか否かを判定するステップ１１２０」にても「Ｙｅｓ」と判定する。なお、第１変化速度閾値ΔＶ１ｔｈが「０」である場合、ステップ１１２０は省略され得る。
そして、第１制御装置はステップ１１３０に進み、機関に供給される混合気の空燃比（以下、「機関の空燃比」とも称呼する。）を理論空燃比よりもリッチ側の空燃比（リッチ空燃比）に制御することにより、触媒流入ガスの空燃比をリッチ空燃比に制御する。この結果、触媒４３に過剰の未燃物が流入するので、図１０の時刻ｔ３以降に示したように、酸素吸蔵量ＯＳＡは減少を開始する。
このように、触媒流入ガスの空燃比がリーン空燃比である場合に下流側空燃比センサ５６の出力値Ｖｏｘｓが減少を開始したとき（時刻ｔ２）、その出力値Ｖｏｘｓが中央値Ｖｍｉｄ（最大出力値Ｖｍａｘと最小出力値Ｖｍｉｎとの平均値＝（Ｖｍａｘ＋Ｖｍｉｎ）／２）より大きくても、触媒４３の酸素吸蔵量ＯＳＡはもはや「０」近傍の量ではなく、寧ろ、最大酸素吸蔵量Ｃｍａｘに近い値（上限値ＣＨｉを超える値）にまで増大している。
従って、下流側空燃比センサ５６の出力値Ｖｏｘｓが減少している場合（特に、出力値Ｖｏｘｓが減少し且つ出力値Ｖｏｘｓの変化速度の大きさ｜ΔＶｏｘｓ｜が第１変化速度閾値ΔＶ１ｔｈ以上である場合）、触媒４３に供給すべき燃焼ガスの空燃比（即ち、触媒流入ガス要求空燃比）はリッチ空燃比である。それ故、第１制御装置は、下流側空燃比センサ５６の出力値Ｖｏｘｓが減少している場合における同出力値Ｖｏｘｓの変化速度の大きさ｜ΔＶｏｘｓ｜が第１変化速度閾値ΔＶ１ｔｈ以上となったとき（時刻ｔ３）、触媒流入ガスの空燃比をリッチ空燃比に設定する。この結果、触媒４３の酸素吸蔵量ＯＳＡが最大酸素吸蔵量Ｃｍａｘに到達する前の時点において、酸素吸蔵量ＯＳＡを減少させ始めることができる（時刻ｔ３以降を参照。）。従って、第１制御装置は、「酸素吸蔵量ＯＳＡが最大酸素吸蔵量Ｃｍａｘに到達することに起因してＮＯｘの排出量が増大すること」を回避することができる。
酸素吸蔵量ＯＳＡは時刻ｔ３以降において次第に減少する。一方、時刻ｔ１直後において触媒４３から流出したガス（触媒流出ガス）に多量に含まれていた過剰の酸素は、下流側空燃比センサ５６の近傍及び下流側空燃比センサの拡散抵抗層に残存する。そのため、下流側空燃比センサ５６の出力値Ｖｏｘｓは減少し続ける。
その後、酸素吸蔵量ＯＳＡは、時刻ｔ４にて下限値ＣＬｏに到達する。このとき、触媒４３は触媒流入ガスに含まれる多量の未燃物を浄化することができなくなる。よって、触媒流出ガスに比較的多量の未燃物が含まれ始める。この未燃物により、下流側空燃比センサ５６の近傍及び下流側空燃比センサの拡散抵抗層に残存する酸素は消費される。よって、下流側空燃比センサ５６の出力値Ｖｏｘｓは、時刻ｔ４の直後の時点である時刻ｔ５から、最大出力値Ｖｍａｘに向けて増大し始める。そして、時刻ｔ６にて出力値Ｖｏｘｓの変化速度の大きさ｜ΔＶｏｘｓ｜は、第２変化速度閾値ΔＶ２ｔｈ以上となる。第２変化速度閾値ΔＶ２ｔｈは「０」又は「０」より大きい所定値である。
このとき、第１制御装置は、図１１に示した「出力値Ｖｏｘｓの変化速度ΔＶｏｘｓが負であるか否かを判定するステップ１１１０」にて「Ｎｏ」と判定し、「出力値Ｖｏｘｓの変化速度の大きさ｜ΔＶｏｘｓ｜が第２変化速度閾値ΔＶ２ｔｈ以上であるか否かを判定するステップ１１４０」にて「Ｙｅｓ」と判定する。なお、第２変化速度閾値ΔＶ２ｔｈが「０」である場合、ステップ１１４０は省略され得る。
そして、第１制御装置はステップ１１５０に進み、機関の空燃比をリーン空燃比に制御することにより、触媒流入ガスの空燃比をリーン空燃比に制御する。この結果、触媒４３に過剰の酸素が流入するので、図１０の時刻ｔ６以降に示したように、酸素吸蔵量ＯＳＡは増大を開始する。
このように、触媒流入ガスの空燃比がリッチ空燃比である場合に下流側空燃比センサ５６の出力値Ｖｏｘｓが増大を開始したとき（時刻ｔ６）、その出力値Ｖｏｘｓが中央値Ｖｍｉｄより小さくても、触媒４３の酸素吸蔵量ＯＳＡはもはや最大酸素吸蔵量Ｃｍａｘ近傍の量ではなく、寧ろ、「０」に近い値（下限値ＣＬｏを下回る値）にまで減少している。
従って、下流側空燃比センサ５６の出力値Ｖｏｘｓが増大している場合（特に、出力値Ｖｏｘｓが増大し且つ出力値Ｖｏｘｓの変化速度の大きさ｜ΔＶｏｘｓ｜が第２変化速度閾値ΔＶ２ｔｈ以上である場合）、触媒流入ガス要求空燃比はリーン空燃比である。それ故、第１制御装置は、下流側空燃比センサ５６の出力値Ｖｏｘｓが増大している場合における同出力値Ｖｏｘｓの変化速度の大きさ｜ΔＶｏｘｓ｜が第２変化速度閾値ΔＶ２ｔｈ以上となったとき（時刻ｔ６）、触媒流入ガスの空燃比をリーン空燃比に設定する。この結果、触媒４３の酸素吸蔵量ＯＳＡが「０」に到達する前の時点において、酸素吸蔵量ＯＳＡを増大させ始めることができる（時刻ｔ６以降を参照。）。従って、第１制御装置は、「酸素吸蔵量ＯＳＡが「０」に到達することに起因して未燃物の排出量が増大すること」を回避することができる。
酸素吸蔵量ＯＳＡは時刻ｔ６以降において次第に増大する。一方、時刻ｔ４直後において触媒流出ガスに多量に含まれていた過剰の未燃物は、下流側空燃比センサ５６の近傍及び下流側空燃比センサの拡散抵抗層に残存する。そのため、下流側空燃比センサ５６の出力値Ｖｏｘｓは増大し続ける。
その後、酸素吸蔵量ＯＳＡは、時刻ｔ７にて上限値ＣＨｉに再び到達する。この結果、下流側空燃比センサ５６の出力値Ｖｏｘｓは時刻ｔ８にて減少を開始する。そして、時刻ｔ９にて出力値Ｖｏｘｓの変化速度の大きさ｜ΔＶｏｘｓ｜が第１変化速度閾値ΔＶ１ｔｈ以上となると、第１制御装置は、時刻ｔ３以降と同様、触媒流入ガスをリッチ空燃比に制御する。
なお、第１制御装置は、図１１のステップ１１２０及びステップ１１４０の何れかにて「Ｎｏ」と判定すると、触媒流入ガスの空燃比をそれ以前の空燃比に維持する。以上が、定常状態における「第１制御装置の通常空燃比フィードバック制御」の概要である。このように、第１制御装置は、定常状態において、酸素吸蔵量ＯＳＡを「０」又は最大酸素吸蔵量Ｃｍａｘに到達させることなく、酸素吸蔵量ＯＳＡを下限値ＣＬｏの近傍から上限値ＣＨｉの近傍までの範囲内において変動させる。従って、ＮＯｘ及び未燃物が多量に排出してしまうことを回避することができる。
以上から理解されるように、第１制御装置は、下流側空燃比センサ５６の出力値Ｖｏｘｓの変化速度ΔＶｏｘｓ（変化速度ΔＶｏｘｓの符号及び／又は変化速度ΔＶｏｘｓの大きさ）に基づいて、触媒４３の状態が「酸素過剰状態（酸素吸蔵量ＯＳＡが最大酸素吸蔵量Ｃｍａｘ近傍である状態）」であるのか、「酸素不足状態（酸素吸蔵量ＯＳＡが「０」近傍である状態）」であるのかを判定して、触媒流入ガスの空燃比を制御する。
より具体的には、第１制御装置は、下流側空燃比センサ５６の出力値Ｖｏｘｓが減少していれば、触媒４３の状態はもはや酸素不足状態ではないと判定する。更に、第１制御装置は、下流側空燃比センサ５６の出力値Ｖｏｘｓが減少している場合における同出力値Ｖｏｘｓの変化速度の大きさ｜ΔＶｏｘｓ｜が第１変化速度閾値ΔＶ１ｔｈ以上であれば、触媒４３の状態は酸素過剰状態であるか又は酸素過剰状態に近い状態であると判定する。
更に、第１制御装置は、下流側空燃比センサ５６の出力値Ｖｏｘｓが減少している場合における同出力値Ｖｏｘｓの変化速度の大きさ｜ΔＶｏｘｓ｜が大きくなるほど、触媒４３の状態が酸素過剰状態に近づいていると判定するように構成され得る。
従って、第１制御装置は、触媒４３の状態が酸素過剰状態に近づいている場合ほど（下流側空燃比センサ５６の出力値Ｖｏｘｓが減少している場合における同出力値Ｖｏｘｓの変化速度の大きさ｜Ｖｏｘｓ｜が大きくなるほど）、触媒流入ガスの空燃比を「より深いリッチ空燃比」に設定するように構成されることもできる。ここで、より深いリッチ空燃比とは、理論空燃比との差の大きさがより大きいリッチ空燃比のことである。
加えて、第１制御装置は、下流側空燃比センサ５６の出力値Ｖｏｘｓが増大していれば、触媒４３の状態はもはや酸素過剰状態ではないと判定する。更に、第１制御装置は、下流側空燃比センサ５６の出力値Ｖｏｘｓが増大している場合における同出力値Ｖｏｘｓの変化速度の大きさ｜ΔＶｏｘｓ｜が第２変化速度閾値ΔＶ２ｔｈ以上であれば、触媒４３の状態は酸素不足状態であるか又は酸素不足状態に近い状態であると判定する。
更に、第１制御装置は、下流側空燃比センサ５６の出力値Ｖｏｘｓが増大している場合における同出力値Ｖｏｘｓの変化速度の大きさ｜ΔＶｏｘｓ｜が大きくなるほど、触媒４３の状態が酸素不足状態に近づいていると判定するように構成され得る。
従って、第１制御装置は、触媒４３の状態が酸素不足状態に近づいている場合ほど（下流側空燃比センサ５６の出力値Ｖｏｘｓが増大している場合における同出力値Ｖｏｘｓの変化速度の大きさ｜ΔＶｏｘｓ｜が大きくなるほど）、触媒流入ガスの空燃比を「より深いリーン空燃比」に設定するように構成されることもできる。ここで、より深いリーン空燃比とは、理論空燃比との差の大きさがより大きいリーン空燃比のことである。
（実際の作動）
次に、第１制御装置の実際の作動について説明する。以下、説明の便宜上、「ＭａｐＸ（ａ１，ａ２，…）」は、ａ１，ａ２，…を引数とする値Ｘを求めるためのテーブルを表すものとする。
＜燃料噴射制御＞
ＣＰＵ７１は、図１２にフローチャートにより示した最終燃料噴射量Ｆｉの計算及び噴射指示を行うルーチンを、各気筒のクランク角が各気筒の吸気上死点前の所定クランク角度（例えば、ＢＴＤＣ９０°ＣＡ）となる毎に、繰り返し実行するようになっている。従って、任意の気筒のクランク角度が上記所定クランク角度になると、ＣＰＵ７１はステップ１２００から処理を開始してステップ１２０５に進み、上流側目標空燃比ａｂｙｆｒを理論空燃比ｓｔｏｉｃｈ（例えば、１４．６）に設定する。
次に、ＣＰＵはステップ１２１０に進み、リッチコントロールフラグＸｒｉｃｈｃｏｎｔの値、強制リッチフラグＸＥＮｒｉｃｈの値、及び、酸素吸蔵量調整用リッチフラグＸＯＳＡｒｉｃｈの値のうちの何れかが「１」であるか否かを判定する。いま、これらのフラグの値は総て「０」であると仮定する。なお、これらのフラグは、機関１０が搭載された図示しない車両のイグニッション・キー・スイッチがオフ位置からオン位置へと変更された際、ＣＰＵにより実行されるイニシャルルーチンにおいて「０」に設定される。これらのフラグの値の「１」への変更については後述する。
この仮定に従えば、ＣＰＵはステップ１２１０にて「Ｎｏ」と判定してステップ１２２０に進み、リーンコントロールフラグＸｌｅａｎｃｏｎｔの値、強制リーンフラグＸＥＮｌｅａｎの値、及び、酸素吸蔵量調整用リーンフラグＸＯＳＡｌｅａｎの値のうちの何れかが「１」であるか否かを判定する。更に、ここでは、これらのフラグの値も総て「０」であると仮定する。これらのフラグの値も、前述したイニシャルルーチンにおいて「０」に設定される。これらのフラグの値の「１」への変更については後述する。
この仮定に従えば、ＣＰＵはステップ１２２０にて「Ｎｏ」と判定し、以下に述べるステップ１２４０及びステップ１２６５の処理を順に行ってステップ１２９５に進む。
ステップ１２４０：ＣＰＵは、テーブルＭａｐＭｃ（Ｇａ，ＮＥ）に基づいて「今回の吸気行程を迎える気筒」に吸入される筒内吸入空気量Ｍｃ（ｋ）を取得（推定・決定）する。今回の吸気行程を迎える気筒は「燃料噴射気筒」とも称呼される。Ｇａは、エアフローメータ５１が計測している吸入空気量である。ＮＥは、別途求められている機関回転速度である。筒内吸入空気量Ｍｃ（ｋ）は、各気筒の吸気行程に対応されながらＲＡＭに記憶されていく。なお、ＣＰＵは周知の「空気モデル」を用いて筒内吸入空気量Ｍｃ（ｋ）を推定してもよい。
ステップ１２４５：ＣＰＵは、下記の（１）式に従って、筒内吸入空気量Ｍｃ（ｋ）を上流側目標空燃比ａｂｙｆｒで除することにより、機関の空燃比を上流側目標空燃比ａｂｙｆｒに一致させるための基本燃料噴射量Ｆｂａｓｅを求める。この場合、上流側目標空燃比ａｂｙｆｒは、上述したステップ１２０５において「理論空燃比ｓｔｏｉｃｈ」に設定されている。従って、基本燃料噴射量Ｆｂａｓｅは機関の空燃比を理論空燃比に一致させるためのフィードフォワード量となる。
Ｆｂａｓｅ＝Ｍｃ（ｋ）／ａｂｙｆｒ  …（１）
ステップ１２５０：ＣＰＵは、下記の（２）式に従って、最終燃料噴射量Ｆｉを求める。即ち、ＣＰＵは、基本燃料噴射量Ｆｂａｓｅを、メインフィードバック量ＤＦｍａｉｎにより補正するとともに、サブフィードバック量ＤＦｓｕｂにより補正することによって、最終燃料噴射量Ｆｉを算出する。即ち、ＣＰＵは、基本燃料噴射量Ｆｂａｓｅに、メインフィードバック量ＤＦｍａｉｎとサブフィードバック量とを加えることによって、最終燃料噴射量Ｆｉを求める。なお、メインフィードバック量ＤＦｍａｉｎとサブフィードバック量ＤＦｓｕｂとの和（ＤＦｍａｉｎ＋ＤＦｓｕｂ）は、基本燃料噴射量Ｆｂａｓｅを補正する補正量であるので、空燃比補正量とも称呼される。
Ｆｉ＝Ｆｂａｓｅ＋ＤＦｍａｉｎ＋ＤＦｓｕｂ  …（２）
ステップ１２５５：ＣＰＵはフューエルカット（燃料供給遮断）条件が成立しているか否かを判定する。フューエルカット条件（ＦＣ条件）は、例えば、アクセルペダル操作量Ａｃｃｐ又はスロットル弁開度ＴＡが「０」であり、且つ、機関回転速度ＮＥがフューエルカット回転速度ＮＥＦＣ以上であるときに成立する。更に、フューエルカット条件は、フューエルカット中（フューエルカット条件成立中）においてアクセルペダル操作量Ａｃｃｐ又はスロットル弁開度ＴＡが「０」でなくなるか、若しくは、機関回転速度ＮＥがフューエルカット復帰回転速度ＮＥＦＫ以下となったときに不成立となる。フューエルカット復帰回転速度ＮＥＦＫは、フューエルカット回転速度ＮＥＦＣよりも小さい。
ＣＰＵは、フューエルカット条件が成立しているとき、ステップ１２５５にて「Ｙｅｓ」と判定してステップ１２６０に進み、最終燃料噴射量Ｆｉを「０」に設定してからステップ１２６５に進む。これに対し、フューエルカット条件が不成立であるとき、ＣＰＵはステップ１２５５にて「Ｎｏ」と判定し、ステップ１２６５に直接進む。
ステップ１２６５：ＣＰＵは、最終燃料噴射量（指示噴射量）Ｆｉの燃料が燃料噴射気筒に対する燃料噴射弁２５から噴射されるように、その燃料噴射弁２５に対して噴射指示を行う。従って、フューエルカット条件が成立しているとき最終燃料噴射量Ｆｉは「０」であるから、燃料噴射は実行されない。
＜下流側空燃比センサの出力値の変化速度取得＞
ＣＰＵは、所定時間ｔｓが経過する毎に図１３にフローチャートにより示した「下流側空燃比センサ出力値変化速度取得ルーチン」を実行するようになっている。従って、所定のタイミングになると、ＣＰＵは図１３のステップ１３００から処理を開始してステップ１３１０に進み、「現時点における下流側空燃比センサ５６の出力値Ｖｏｘｓ」から「所定時間ｔｓ前の出力値Ｖｏｘｓである前回出力値Ｖｏｘｓｏｌｄ」を減じたを「下流側空燃比センサ５６の出力値Ｖｏｘｓの変化速度ΔＶｏｘｓ」として取得する。
次に、ＣＰＵはステップ１３２０に進み、現時点における下流側空燃比センサ５６の出力値Ｖｏｘｓを前回出力値Ｖｏｘｓｏｌｄとして記憶する。その後、ＣＰＵはステップ１３９５に進んで本ルーチンを一旦終了する。
＜メインフィードバック量の算出＞
ＣＰＵは、所定時間が経過する毎に図１４にフローチャートにより示した「メインフィードバック量算出ルーチン」を実行するようになっている。従って、所定のタイミングになると、ＣＰＵは図１４のステップ１４００から処理を開始してステップ１４０５に進み、「メインフィードバック制御条件（上流側空燃比フィードバック制御条件）」が成立しているか否かを判定する。
メインフィードバック制御条件は以下の総ての条件が成立したときに成立する。
（Ａ−１）上流側空燃比センサ５５が活性化している。
（Ａ−２）機関の負荷（負荷率）ＫＬが閾値ＫＬｔｈ以下である。
（Ａ−３）フューエルカット中でない。
なお、負荷率ＫＬは、ここでは下記の（３）式により求められる。この負荷率ＫＬに代え、アクセルペダル操作量Ａｃｃｐが用いられても良い。（３）式において、Ｍｃ（ｋ）は筒内吸入空気量であり、ρは空気密度（単位は（ｇ／ｌ））、Ｌは機関１０の排気量（単位は（ｌ））、「４」は機関１０の気筒数である。
ＫＬ＝（Ｍｃ（ｋ）／（ρ・Ｌ／４））・１００％  …（３）
いま、メインフィードバック制御条件が成立していると仮定して説明を続ける。この場合、ＣＰＵはステップ１４０５にて「Ｙｅｓ」と判定して以下に述べるステップ１４１０乃至ステップ１４３５の処理を順に行い、ステップ１４９５に進んで本ルーチンを一旦終了する。
ステップ１４１０：ＣＰＵは、下記（４）式に示したように、上流側空燃比センサ５５の出力値Ｖａｂｙｆｓを図２に示したテーブルＭａｐａｂｙｆｓに適用することにより、検出上流側空燃比ａｂｙｆｓを取得する。
ａｂｙｆｓ＝Ｍａｐａｂｙｆｓ（Ｖａｂｙｆｓ）  …（４）
ステップ１４１５：ＣＰＵは、下記（５）式に従って、「現時点よりもＮサイクル前の時点において燃焼室２１に実際に供給された燃料の量」である「筒内燃料供給量Ｆｃ（ｋ−Ｎ）」を求める。即ち、ＣＰＵは、「現時点よりもＮサイクル（即ち、Ｎ・７２０°クランク角）前の時点における筒内吸入空気量Ｍｃ（ｋ−Ｎ）」を「検出上流側空燃比ａｂｙｆｓ」にで除すことにより、筒内燃料供給量Ｆｃ（ｋ−Ｎ）を求める。
Ｆｃ（ｋ−Ｎ）＝Ｍｃ（ｋ−Ｎ）／ａｂｙｆｓ  …（５）
このように、筒内燃料供給量Ｆｃ（ｋ−Ｎ）を求めるために、現時点からＮストローク前の筒内吸入空気量Ｍｃ（ｋ−Ｎ）を検出上流側空燃比ａｂｙｆｓで除すのは、「燃焼室２１内での混合気の燃焼により生成された排ガス」が上流側空燃比センサ５５に到達するまでに「Ｎストロークに相当する時間」を要しているからである。
ステップ１４２０：ＣＰＵは、下記（６）式に従って、「現時点よりもＮサイクル前の時点において燃焼室２１に供給されるべきであった燃料の量」である「目標筒内燃料供給量Ｆｃｒ（ｋ−Ｎ）」を求める。即ち、ＣＰＵは、現時点からＮストローク前の筒内吸入空気量Ｍｃ（ｋ−Ｎ）を上流側目標空燃比ａｂｙｆｒで除すことにより、目標筒内燃料供給量Ｆｃｒ（ｋ−Ｎ）を求める。
Ｆｃｒ＝Ｍｃ（ｋ−Ｎ）／ａｂｙｆｒ  …（６）
ステップ１４２５：ＣＰＵは、上記（７）式に従って、筒内燃料供給量偏差ＤＦｃを取得する。即ち、ＣＰＵは、目標筒内燃料供給量Ｆｃｒ（ｋ−Ｎ）から筒内燃料供給量Ｆｃ（ｋ−Ｎ）を減じることにより、筒内燃料供給量偏差ＤＦｃを求める。この筒内燃料供給量偏差ＤＦｃは、Ｎストローク前の時点で筒内に供給された燃料の過不足分を表す量となる。
ＤＦｃ＝Ｆｃｒ（ｋ−Ｎ）−Ｆｃ（ｋ−Ｎ）  …（７）
ステップ１４３０：ＣＰＵは、下記の（８）式に従って、メインフィードバック量ＤＦｍａｉｎを求める。この（８）式において、Ｇｐは予め設定された比例ゲインである。これにより、検出上流側空燃比ａｂｙｆｓを上流側目標空燃比ａｂｙｆｒに一致させるための「メインフィードバック量ＤＦｍａｉｎ」が算出される。
ＤＦｍａｉｎ＝Ｇｐ・ＤＦｃ  …（８）
ステップ１４３５：ＣＰＵは、図１５及び図１６に示したルーチンを実行することによって、メインフィードバック量ＤＦｍａｉｎを「触媒流入ガス要求空燃比」に応じて補正（制限）する。図１５及び図１６に示したルーチンについては後述する。
以上により、メインフィードバック量ＤＦｍａｉｎが求められ、このメインフィードバック量ＤＦｍａｉｎが前述した図１２のステップ１２５０の処理により最終燃料噴射量Ｆｉに反映される。なお、ＣＰＵは、筒内燃料供給量偏差ＤＦｃの積分値に積分ゲインＧｉを乗じた積分項を上記比例項であるＧｐ・ＤＦｃに加えることにより、メインフィードバック量ＤＦｍａｉｎを求めてもよい。
一方、図１４のステップ１４０５の判定時において、メインフィードバック制御条件が不成立であると、ＣＰＵはそのステップ１４０５にて「Ｎｏ」と判定してステップ１４４０に進み、メインフィードバック量ＤＦｍａｉｎの値を「０」に設定する。その後、ＣＰＵは、ステップ１４９５に進んで本ルーチンを一旦終了する。このように、メインフィードバック制御条件が不成立であるとき、メインフィードバック量ＤＦｍａｉｎは「０」に設定される。従って、基本燃料噴射量Ｆｂａｓｅのメインフィードバック量ＤＦｍａｉｎによる補正は行われない。
＜リーン否定及びリッチ否定の判定＞
次に、上記ステップ１４３５において実行されるメインフィードバック量ＤＦｍａｉｎの補正について説明する。ＣＰＵは、先ず、図１５にフローチャートにより示した「リッチ否定・リーン否定判定ルーチン」を実行する。
このルーチンにおいて、触媒４３の状態が「酸素過剰状態ではない」とき、「リーン否定」であるとの判定がなされ、リーン否定フラグＸＮＯＴｌｅａｎの値が「１」に設定されるとともに、リッチ否定フラグＸＮＯＴｒｉｃｈの値が「０」に設定される。触媒４３の状態が酸素過剰状態であることは、「触媒４３の酸素吸蔵量ＯＳＡが所定の上限値ＣＨｉ以上であって、触媒４３の最大酸素吸蔵量Ｃｍａｘに実質的に等しい状態である」ことと同義である。
更に、このルーチンにおいて、触媒４３の状態が「酸素不足状態ではない」とき、「リッチ否定」であるとの判定がなされ、リッチ否定フラグＸＮＯＴｒｉｃｈの値が「１」に設定されるとともに、リーン否定フラグＸＮＯＴｌｅａｎの値が「０」に設定される。触媒４３の状態が酸素不足状態であることは、「触媒４３の酸素吸蔵量ＯＳＡが所定の下限値ＣＬｏ以下であって、「０」に実質的に等しい状態である」ことと同義である。
前述したように、ＣＰＵは、図１４のステップ１４３５に進んだとき、図１５にフローチャートにより示した「リッチ否定・リーン否定判定ルーチン」を実行する。即ち、ＣＰＵが図１４のステップ１４３５に進むと、そのＣＰＵは図１５のステップ１５００から処理を開始してステップ１５１０に進み、下流側空燃比センサ５６の出力値Ｖｏｘｓの変化速度ΔＶｏｘｓが負である（０より小さい）か否かを判定する。
前述したように、変化速度ΔＶｏｘｓが負であれば（即ち、変化速度ΔＶｏｘｓが「０」よりも小さく、出力値Ｖｏｘｓが減少していれば）、触媒４３の状態はもはや酸素不足状態ではない。そこで、ＣＰＵは変化速度ΔＶｏｘｓが負であるとき、ステップ１５１０にて「Ｙｅｓ」と判定し、ステップ１５２０にてリッチ否定フラグＸＮＯＴｒｉｃｈの値を「１」に設定する。次に、ＣＰＵはステップ１５３０にてリーン否定フラグＸＮＯＴｌｅａｎの値を「０」に設定し、ステップ１５９５に進んで本ルーチンを一旦終了する。
これに対し、変化速度ΔＶｏｘｓが正（即ち、変化速度ΔＶｏｘｓが「０」よりも大きく、出力値Ｖｏｘｓが増大していれば）、触媒４３の状態はもはや酸素過剰状態ではない。そこで、ＣＰＵは変化速度ΔＶｏｘｓが正であるとき、ステップ１５１０にて「Ｎｏ」と判定し、変化速度ΔＶｏｘｓが正であるか否かを判定するステップ１５４０にて「Ｙｅｓ」と判定する。そして、ＣＰＵはステップ１５５０にてリッチ否定フラグＸＮＯＴｒｉｃｈの値を「０」に設定し、続くステップ１５６０にてリーン否定フラグＸＮＯＴｌｅａｎの値を「１」に設定する。その後、ＣＰＵはステップ１５９５に進んで本ルーチンを一旦終了する。
なお、変化速度ΔＶｏｘｓが「０」であるとき、ＣＰＵはステップ１５１０及びステップ１５４０の両ステップにて「Ｎｏ」と判定し、ステップ１５９５に直接進んで本ルーチンを一旦終了する。
＜メインフィードバック量の制限＞
更に、前述したように、ＣＰＵは、図１４のステップ１４３５に進んだとき、図１５に示したルーチンに続いて図１６にフローチャートにより示した「メインフィードバック量補正（制限）ルーチン」を実行するようになっている。
従って、所定のタイミングになると、ＣＰＵは図１６のステップ１６００から処理を開始してステップ１６１０に進み、メインフィードバック量ＤＦｍａｉｎが正であるか否かを判定する。即ち、ＣＰＵは、ステップ１６１０にて「メインフィードバック量ＤＦｍａｉｎが、基本燃料噴射量Ｆｂａｓｅを増量補正する値（機関の空燃比と等しい触媒流入ガスの空燃比を理論空燃比よりもリッチ側に補正しようとする値）」であるか否かを判定する。
このとき、メインフィードバック量ＤＦｍａｉｎの値が正であると（即ち、メインフィードバック量ＤＦｍａｉｎが触媒流入ガスの空燃比をリッチ空燃比に移行させる値であると）、ＣＰＵはステップ１６１０にて「Ｙｅｓ」と判定してステップ１６２０に進み、リーン否定フラグＸＮＯＴｌｅａｎの値が「１」であるか否かを判定する。換言すると、ＣＰＵはステップ１６２０にて、触媒４３の状態が「酸素過剰状態でない」と判定されているか否かを判定する。
このとき、リーン否定フラグＸＮＯＴｌｅａｎの値が「１」であると（即ち、触媒４３の状態が「酸素過剰状態でない」と）、もはや触媒４３にリッチ空燃比のガスを供給する必要はない。即ち、触媒流入ガス要求空燃比は理論空燃比又はリーン空燃比であって、リッチ空燃比ではない。そこで、この場合、ＣＰＵはステップ１６２０にて「Ｙｅｓ」と判定してステップ１６３０に進み、メインフィードバック量ＤＦｍａｉｎの値を「０」に設定する。これにより、メインフィードバック量ＤＦｍａｉｎが、触媒流入ガスの空燃比を「触媒流入ガス要求空燃比」とは異なる空燃比（この場合、リッチ空燃比）に補正することがないように補正（設定・制限）される。
なお、ＣＰＵはステップ１６３０にて、メインフィードバック量ＤＦｍａｉｎに「１」より小さい正の係数を乗じた値を最終的なメインフィードバック量ＤＦｍａｉｎとして設定してもよい。即ち、ＣＰＵはステップ１６３０にてメインフィードバック量ＤＦｍａｉｎの大きさを小さくしてもよい。
また、ＣＰＵはステップ１６３０にて、メインフィードバック量ＤＦｍａｉｎと後述するサブフィードバック量ＤＦｓｕｂとの和である「空燃比補正量（ＤＦｍａｉｎ＋ＤＦｓｕｂ）」が正の値（基本燃料噴射量Ｆｂａｓｅを増大する値）である場合に、空燃比補正量（ＤＦｍａｉｎ＋ＤＦｓｕｂ）が「０」（基本燃料噴射量Ｆｂａｓｅを増大することのない値）となるようにメインフィードバック量ＤＦｍａｉｎを修正してもよい。
これに対し、ＣＰＵがステップ１６２０に進んだときリーン否定フラグＸＮＯＴｌｅａｎの値が「０」であると、ＣＰＵはステップ１６２０にて「Ｎｏ」と判定し、ステップ１６９５に直接進んで本ルーチンを一旦終了する。
一方、ＣＰＵがステップ１６１０に進んだとき、メインフィードバック量ＤＦｍａｉｎの値が負（又は０）であると（即ち、メインフィードバック量ＤＦｍａｉｎが触媒流入ガスの空燃比をリーン空燃比に移行させる値であると）、ＣＰＵはステップ１６１０にて「Ｎｏ」と判定してステップ１６４０に進み、リッチ否定フラグＸＮＯＴｒｉｃｈの値が「１」であるか否かを判定する。換言すると、ＣＰＵはステップ１６４０にて、触媒４３の状態が「酸素不足状態でない」と判定されているか否かを判定する。
このとき、リッチ否定フラグＸＮＯＴｒｉｃｈの値が「１」であると（即ち、触媒４３の状態が「酸素不足状態でない」と）、もはや触媒４３にリーン空燃比のガスを供給する必要はない。即ち、触媒流入ガス要求空燃比は理論空燃比又はリッチ空燃比であって、リーン空燃比ではない。そこで、この場合、ＣＰＵはステップ１６４０にて「Ｙｅｓ」と判定してステップ１６５０に進み、メインフィードバック量ＤＦｍａｉｎの値を「０」に設定する。これにより、メインフィードバック量ＤＦｍａｉｎが、触媒流入ガスの空燃比を「触媒流入ガス要求空燃比」とは異なる空燃比（この場合、リーン空燃比）に補正することがないように補正（設定・制限）される。
なお、ＣＰＵはステップ１６５０にて、メインフィードバック量ＤＦｍａｉｎに「１」より小さい正の係数を乗じた値を最終的なメインフィードバック量ＤＦｍａｉｎとして設定してもよい。即ち、ＣＰＵはステップ１６５０にてメインフィードバック量ＤＦｍａｉｎの大きさを小さくしてもよい。
また、ＣＰＵはステップ１６５０にて、メインフィードバック量ＤＦｍａｉｎとサブフィードバック量ＤＦｓｕｂとの和である「空燃比補正量（ＤＦｍａｉｎ＋ＤＦｓｕｂ）」が負の値（基本燃料噴射量Ｆｂａｓｅを減少する値）である場合に、空燃比補正量（ＤＦｍａｉｎ＋ＤＦｓｕｂ）が「０」（基本燃料噴射量Ｆｂａｓｅを減少することのない値）となるようにメインフィードバック量ＤＦｍａｉｎを修正してもよい。
これに対し、ＣＰＵがステップ１６４０に進んだときリッチ否定フラグＸＮＯＴｒｉｃｈの値が「０」であると、ＣＰＵはステップ１６４０にて「Ｎｏ」と判定し、ステップ１６９５に直接進んで本ルーチンを一旦終了する。以上により、メインフィードバック量ＤＦｍａｉｎが求められる。
＜サブフィードバック量の算出＞
ＣＰＵは、所定時間が経過する毎に図１７にフローチャートにより示した「サブフィードバック量算出ルーチン」を実行するようになっている。従って、所定のタイミングになると、ＣＰＵは図１７のステップ１７００から処理を開始してステップ１７１０に進み、「サブフィードバック制御条件（下流側空燃比フィードバック制御条件）」が成立しているか否かを判定する。
サブフィードバック制御条件は以下の総ての条件が成立したときに成立する。
（Ｂ−１）メインフィードバック制御条件が成立している。
（Ｂ−２）下流側空燃比センサ５６が活性化している。
（Ｂ−３）上流側目標空燃比ａｂｙｆｒが理論空燃比ｓｔｏｉｃｈに設定されている。
いま、サブフィードバック制御条件が成立していると仮定して説明を続ける。この場合、ＣＰＵはステップ１７１０にて「Ｙｅｓ」と判定し、以下に述べるステップ１７２０乃至ステップ１７６０の処理を順に行い、その後、ステップ１７９５に進んで本ルーチンを一旦終了する。
ステップ１７２０：ＣＰＵは図１８に示した「比例項算出ルーチン」を実行することによりサブフィードバック量ＤＦｓｕｂの比例項ＳＰを算出する。比例項算出ルーチンについては後述する。
ステップ１７３０：ＣＰＵは、「現時点における下流側空燃比センサ５６の出力値Ｖｏｘｓから、本ルーチンを前回実行した時点における下流側空燃比センサ５６の出力値Ｖｏｘｓである前回値Ｖｏｘｓｏｌｄｓｕｂを減じた値」を、下流側空燃比センサ５６の出力値Ｖｏｘｓの微分値ＤＶｏｘｓとして求める。なお、微分値ＤＶｏｘｓは、図１３に示したルーチンにより求められている変化速度ΔＶｏｘｓにより置換されてもよい。微分値ＤＶｏｘｓは、下流側空燃比センサ５６の出力値Ｖｏｘｓの変化速度であり、単位時間あたりの下流側空燃比センサ５６の出力値Ｖｏｘｓの変化量と言うこともできる。
ステップ１７４０：ＣＰＵは、下記の（９）式に示したように、微分値ＤＶｏｘｓに微分ゲイン（微分定数）Ｋｄを乗じることによってサブフィードバック量の微分項ＳＤを求める。微分ゲインＫｄは負の値である。従って、出力値Ｖｏｘｓが減少しているとき、微分値ＤＶｏｘｓは負の値となり、微分項ＳＤは正の値となる。これにより、出力値Ｖｏｘｓが減少しているとき、微分項ＳＤは触媒流入ガスの空燃比をリッチ空燃比へと補正する値となる。また、出力値Ｖｏｘｓが増大しているとき、微分値ＤＶｏｘｓは正の値となり、微分項ＳＤは負の値となる。これにより、出力値Ｖｏｘｓが増大しているとき、微分項ＳＤは触媒流入ガスの空燃比をリーン空燃比へと補正する値となる。更に、（９）式から明らかなように、微分項ＳＤは、変化速度の大きさ｜ΔＶｏｘｓ｜が大きいほど、その大きさ｜ＳＤ｜が大きくなる。
ＳＤ＝Ｋｄ・ＤＶｏｘｓ  …（９）
ステップ１７５０：ＣＰＵは、現時点における下流側空燃比センサ５６の出力値Ｖｏｘｓを前回値Ｖｏｘｓｏｌｄｓｕｂとして記憶する。
ステップ１７６０：ＣＰＵは、下記の（１０）式に示したように、ステップ１７２０にて求められている比例項ＳＰと、ステップ１７４０にて求められている微分項ＳＤと、を加えることによりサブフィードバック量ＤＦｓｕｂを算出する。以上の処理により、所定時間の経過毎にサブフィードバック量ＤＦｓｕｂが更新される。
ＤＦｓｕｂ＝ＳＰ＋ＳＤ  …（１０）
一方、サブフィードバック制御条件が成立していない場合、ＣＰＵは図１７のステップ１７１０にて「Ｎｏ」と判定してステップ１７７０に進み、サブフィードバック量ＤＦｓｕｂを「０」に設定する。その後、ＣＰＵはステップ１７９５に進んで本ルーチンを一旦終了する。
＜サブフィードバック量の比例項の算出＞
前述したように、ＣＰＵは、図１７のステップ１７２０に進んだとき、図１８にフローチャートにより示した「サブフィードバック量の比例項算出ルーチン」を実行するようになっている。従って、ＣＰＵが図１７のステップ１７２０に進むと、ＣＰＵは図１８のステップ１８００から処理を開始してステップ１８１０に進み、下流側空燃比センサ５６の出力値Ｖｏｘｓが「第１閾値としてのストイキ上限値ＶＨｉｌｉｍｉｔ」以上であるか否かを判定する。
第１閾値は、「下流側空燃比センサ５６の出力値Ｖｏｘｓの最大出力値Ｖｍａｘと最小出力値Ｖｍｉｎとの中央値Ｖｍｉｄ（＝（Ｖｍａｘ＋Ｖｍｉｎ）／２）」と「最大出力値Ｖｍａｘ」との間の値である。即ち、第１閾値は、中央値Ｖｍｉｄよりも最大出力値Ｖｍａｘに近い所定値である。
ストイキ上限値ＶＨｉｌｉｍｉｔは、触媒４３が酸素不足状態にある場合（即ち、触媒４３の酸素吸蔵量ＯＳＡが「０」又は「０」近傍である場合）であってリーン空燃比のガスが触媒４３に流入している場合において、触媒４３がその流入する酸素を取り込んでいて触媒４３からは酸素も未燃物も実質的に流出しない状態にあるときの出力値Ｖｏｘｓである（図８の時刻ｔ３〜ｔ４における出力値Ｖｏｘｓを参照。）。
いま、出力値Ｖｏｘｓがストイキ上限値ＶＨｉｌｉｍｉｔ以上であると仮定する。この場合、ＣＰＵはステップ１８１０にて「Ｙｅｓ」と判定してステップ１８２０に進み、下記の（１１）式に従ってサブフィードバック量ＤＦｓｕｂの比例項ＳＰを算出する。
ＳＰ＝（ＶＨｉｌｉｍｉｔ−Ｖｏｘｓ）・ＫｐＬ＋（Ｖｏｘｓｒｅｆ−ＶＨｉｌｉｍｉｔ）・ＫｐＳ１  …（１１）
（１１）式において、ＫｐＬはリーン制御用ゲインであり、正の値である。ＫｐＳ１は第１ゲインであり、正の値である。Ｖｏｘｓｒｅｆは下流側空燃比センサ５６の出力値Ｖｏｘｓの目標値（下流側目標値Ｖｏｘｓｒｅｆ、サブフィードバック目標値）である。第１制御装置において、下流側目標値Ｖｏｘｓｒｅｆは一定であり、中央値Ｖｍｉｄに設定されている。この結果、出力値Ｖｏｘｓがストイキ上限値ＶＨｉｌｉｍｉｔ以上である場合、比例項ＳＰは必ず負の値となる。即ち、比例項ＳＰは触媒流入ガスの空燃比（＝機関の空燃比）をリーン空燃比に設定する値となる。
このように、第１制御装置は、出力値Ｖｏｘｓと下流側目標値Ｖｏｘｓｒｅｆとの偏差を、出力値Ｖｏｘｓと第１閾値（ここでは、ストイキ上限値ＶＨｉｌｉｍｉｔ）との偏差（図１９における偏差ｄ１を参照。）と、ストイキ上限値ＶＨｉｌｉｍｉｔと下流側目標値Ｖｏｘｓｒｅｆとの偏差（図１９における偏差ｄ２を参照。）と、に分け、それぞれの偏差に対して異なる比例ゲイン（ＫｐＬ，ＫｐＳ１）を乗じる。そして、第１制御装置は、それらの和を比例項ＳＰとして求める。
即ち、上記ステップ１８１０及び上記ステップ１８２０は、下流側空燃比センサ５６の出力値Ｖｏｘｓが第１閾値（本例において、ストイキ上限値ＶＨｉｌｉｍｉｔ）以上である場合、
（１）「第１閾値ＶＨｉｌｉｍｉｔと、下流側空燃比センサの出力値Ｖｏｘｓと、の差」にリーン制御用ゲインＫｐＬを乗じた値（（ＶＨｉｌｉｍｉｔ−Ｖｏｘｓ）・ＫｐＬ）と、
（２）「第１閾値ＶＨｉｌｉｍｉｔと後述する第２閾値ＶＬｏｌｉｍｉｔとの間に設定された所定の目標値Ｖｏｘｓｒｅｆ（本例において、中央値Ｖｍｉｄ）」と、第１閾値ＶＨｉｌｉｍｉｔと、の差に第１ゲインＫｐＳ１を乗じた値（（Ｖｏｘｓｒｅｆ−ＶＨｉｌｉｍｉｔ）・ＫｐＳ１）と、
の和を、「機関１０に供給される混合気の空燃比を理論空燃比よりもリーン側に制御する」ための「サブフィードバック量ＤＦｓｕｂの比例項ＳＰ」として算出するステップである。
次に、ＣＰＵはステップ１８３０に進み、図２０にフローチャートにより示した「サブフィードバック量の比例項制限ルーチン」を実行する。より具体的に述べると、ＣＰＵは図２０のステップ２０００から処理を開始してステップ２０１０に進み、比例項ＳＰが正であるか否かを判定する。
前述したように、出力値Ｖｏｘｓが第１閾値としてのストイキ上限値ＶＨｉｌｉｍｉｔ以上であるとき、ステップ１８２０にて算出される比例項ＳＰは負の値となる。従って、ＣＰＵはステップ２０１０にて「Ｎｏ」と判定してステップ２０５０に進み、リッチ否定フラグＸＮＯＴｒｉｃｈの値が「１」であるか否かを判定する。
いま、触媒４３の状態が酸素不足状態（酸素吸蔵量ＯＳＡが実質的に「０」である。）であると仮定すると、出力値Ｖｏｘｓは減少することなく（即ち、変化速度ΔＶｏｘｓは負ではなく）、且つ、出力値Ｖｏｘｓは最大出力値Ｖｍａｘ近傍の値を維持する。従って、リッチ否定フラグＸＮＯＴｒｉｃｈの値は、図１５のルーチンのステップ１５２０において「１」に設定されることはなく、通常「０」に維持されている。この場合、ＣＰＵは図２０のステップ２０５０にて「Ｎｏ」と判定し、ステップ２０９５に直接進んで本ルーチンを一旦終了する。従って、比例項ＳＰは制限されることなく、負の値を維持する。
これに対し、触媒４３が酸素不足状態を脱すると、出力値Ｖｏｘｓは減少する（変化速度ΔＶｏｘｓが負となる）。そのため、リッチ否定フラグＸＮＯＴｒｉｃｈの値は、図１５のステップ１５１０及びステップ１５２０の処理によって「１」に設定される。このとき、ＣＰＵがステップ２０５０に進むと、ＣＰＵはそのステップ２０５０にて「Ｙｅｓ」と判定し、ステップ２０６０に進む。
ＣＰＵはステップ２０６０にて比例項反映率（比例項補正係数、リーン制限係数）Ｋｂを求める。より具体的に述べると、ＣＰＵは下流側空燃比センサ５６の出力値Ｖｏｘｓの変化速度ΔＶｏｘｓの絶対値をステップ２０６０内に記載した反映率テーブルＭａｐＫｂ（｜ΔＶｏｘｓ｜）に適用することにより比例項反映率Ｋｂを求める。この反映率テーブルＭａｐＫｂ（｜ΔＶｏｘｓ｜）によれば、絶対値｜ΔＶｏｘｓ｜が「０と、第１変化速度閾値ΔＶ１ｔｈよりも所定値だけ小さい値と、の間の値」であるとき、比例項反映率Ｋｂは「１」に設定される。更に、反映率テーブルＭａｐＫｂ（｜ΔＶｏｘｓ｜）によれば、絶対値｜ΔＶｏｘｓ｜が「第１変化速度閾値ΔＶ１ｔｈよりも所定値だけ小さい値と、第１変化速度閾値ΔＶ１ｔｈと、の間の値」であるとき、比例項反映率Ｋｂは絶対値｜ΔＶｏｘｓ｜が増大するにつれて「１」から「０」に向けて減少する値に設定される。加えて、反映率テーブルＭａｐＫｂ（｜ΔＶｏｘｓ｜）によれば、絶対値｜ΔＶｏｘｓ｜が「第１変化速度閾値ΔＶ１ｔｈ以上の値」であるとき、比例項反映率Ｋｂは「０」に設定される。
次に、ＣＰＵはステップ２０７０に進み、比例項ＳＰに比例項反映率Ｋｂを乗じた値を最終的な比例項ＳＰとして求める。この結果、下流側空燃比センサ５６の出力値Ｖｏｘｓの変化速度ΔＶｏｘｓの大きさ｜ΔＶｏｘｓ｜が大きいほど、サブフィードバック量ＤＦｓｕｂの比例項ＳＰの大きさは小さくなる。その後、ＣＰＵはステップ２０９５を経由して、図１８のステップ１８９５へと進み、図１８のルーチンを一旦終了する。
なお、図２０のステップ２０６０内に破線により示したように、比例項反映率Ｋｂは、絶対値｜ΔＶｏｘｓ｜が第１変化速度閾値ΔＶ１ｔｈよりも小さいときに「１」に設定され、絶対値｜ΔＶｏｘｓ｜が第１変化速度閾値ΔＶ１ｔｈ以上であるときに「０」に設定されてもよい。
再び、図１８を参照すると、ＣＰＵがステップ１８１０に進んだとき、下流側空燃比センサ５６の出力値Ｖｏｘｓが「第１閾値としてのストイキ上限値ＶＨｉｌｉｍｉｔ」よりも小さいと、ＣＰＵはそのステップ１８１０にて「Ｎｏ」と判定してステップ１８４０に進み、下流側空燃比センサ５６の出力値Ｖｏｘｓが「第２閾値としてのストイキ下限値ＶＬｏｌｉｍｉｔ」以下であるか否かを判定する。
第２閾値は、中央値Ｖｍｉｄと最小出力値Ｖｍｉｎとの間の値である。即ち、第２閾値は、中央値Ｖｍｉｄよりも最小出力値Ｖｍｉｎに近い所定値である。
ストイキ下限値ＶＬｏｌｉｍｉｔは、触媒４３が酸素過剰状態にある場合（即ち、触媒４３の酸素吸蔵量ＯＳＡが最大酸素吸蔵量Ｃｍａｘ又は最大酸素吸蔵量Ｃｍａｘ近傍である場合）であってリッチ空燃比のガスが触媒４３に流入している場合において、触媒４３が内部に吸蔵している酸素を未燃物の酸化のために消費していて触媒４３からは酸素も未燃物も実質的に流出しない状態にあるときの出力値Ｖｏｘｓである（図９の時刻ｔ３〜ｔ４における出力値Ｖｏｘｓを参照。）。
いま、出力値Ｖｏｘｓがストイキ下限値ＶＬｏｌｉｍｉｔ以下であると仮定する。この場合、ＣＰＵはステップ１８４０にて「Ｙｅｓ」と判定してステップ１８５０に進み、下記の（１２）式に従ってサブフィードバック量ＤＦｓｕｂの比例項ＳＰを算出する。
ＳＰ＝（ＶＬｏｌｉｍｉｔ−Ｖｏｘｓ）・ＫｐＲ＋（Ｖｏｘｓｒｅｆ−ＶＬｏｌｉｍｉｔ）・ＫｐＳ２  …（１２）
（１２）式において、ＫｐＲはリッチ制御用ゲインであり、正の値である。リッチ制御用ゲインＫｐＲはリーン制御用ゲインＫｐＬと同じであってもよい。ＫｐＳ２は第２ゲインであり、正の値である。第２ゲインＫｐＳ２は第１ゲインＫｐＳ１と同じであってもよい。この結果、出力値Ｖｏｘｓがストイキ下限値ＶＬｏｌｉｍｉｔ以下である場合、比例項ＳＰは必ず正の値となる。即ち、比例項ＳＰは触媒流入ガスの空燃比（＝機関の空燃比）をリッチ空燃比に設定する値となる。
このように、第１制御装置は、出力値Ｖｏｘｓと下流側目標値Ｖｏｘｓｒｅｆとの偏差を、出力値Ｖｏｘｓと第２閾値（ここでは、ストイキ下限値ＶＬｏｌｉｍｉｔ）との偏差（図１９における偏差ｄ３を参照。）と、ストイキ下限値ＶＬｏｌｉｍｉｔと下流側目標値Ｖｏｘｓｒｅｆとの偏差（図１９における偏差ｄ４を参照。）と、に分け、それぞれの偏差に対して異なる比例ゲイン（ＫｐＲ，ＫｐＳ２）を乗じる。
即ち、上記ステップ１８４０及び上記ステップ１８５０は、下流側空燃比センサ５６の出力値Ｖｏｘｓが第２閾値（本例において、ストイキ下限値ＶＬｏｌｉｍｉｔ）以下である場合、
（１）「第２閾値と、下流側空燃比センサの出力値と、の差」にリーン制御用ゲインＫｐＬを乗じた値（（ＶＨｉｌｉｍｉｔ−Ｖｏｘｓ）・ＫｐＬ）と、
（２）「第１閾値と第２閾値との間に設定された所定の目標値Ｖｏｘｓｒｅｆ（本例において、中央値Ｖｍｉｄ）」と、第２閾値と、の差に第２ゲインＫｐＳ２を乗じた値（（Ｖｏｘｓｒｅｆ−ＶＬｏｌｉｍｉｔ）・ＫｐＳ２）と、
の和を、「機関１０に供給される混合気の空燃比を理論空燃比よりもリッチ側に制御する」ための「サブフィードバック量ＤＦｓｕｂの比例項ＳＰ」として算出するステップである。
次に、ＣＰＵはステップ１８３０に進み、図２０のステップ２０００及びステップ２０１０に進む。この場合、比例項ＳＰは正である。従って、ＣＰＵはステップ２０１０にて「Ｙｅｓ」と判定してステップ２０２０に進み、リーン否定フラグＸＮＯＴｌｅａｎの値が「１」であるか否かを判定する。
いま、触媒４３の状態が酸素過剰状態（酸素吸蔵量ＯＳＡが実質的に最大酸素吸蔵量Ｃｍａｘである。）であるとすると、出力値Ｖｏｘｓは増大することなく（即ち、変化速度ΔＶｏｘｓは正ではなく）、且つ、出力値Ｖｏｘｓは最小出力値Ｖｍｉｎ近傍の値を維持する。従って、リーン否定フラグＸＮＯＴｌｅａｎの値は、図１５のルーチンのステップ１５６０において「１」に設定されることはなく、通常「０」に維持されている。この場合、ＣＰＵは図２０のステップ２０２０にて「Ｎｏ」と判定し、ステップ２０９５に直接進んで本ルーチンを一旦終了する。従って、比例項ＳＰは制限されることなく、正の値を維持する。
これに対し、触媒４３が酸素過剰状態を脱すると、出力値Ｖｏｘｓは増大する（変化速度ΔＶｏｘｓが正となる）。そのため、リーン否定フラグＸＮＯＴｌｅａｎの値は、図１５のステップ１５４０及びステップ１５６０の処理によって「１」に設定される。このとき、ＣＰＵがステップ２０２０に進むと、ＣＰＵはそのステップ２０２０にて「Ｙｅｓ」と判定し、ステップ２０３０に進む。
ＣＰＵはステップ２０３０にて比例項反映率（比例項補正係数、リッチ制限係数）Ｋａを求める。より具体的に述べると、ＣＰＵは下流側空燃比センサ５６の出力値Ｖｏｘｓの変化速度ΔＶｏｘｓの絶対値をステップ２０３０内に記載した反映率テーブルＭａｐＫａ（｜ΔＶｏｘｓ｜）に適用することにより比例項反映率Ｋａを求める。この反映率テーブルＭａｐＫａ（｜ΔＶｏｘｓ｜）によれば、絶対値｜ΔＶｏｘｓ｜が「０と、第２変化速度閾値ΔＶ２ｔｈよりも所定値だけ小さい値と、の間の値」であるとき、比例項反映率Ｋａは「１」に設定される。更に、反映率テーブルＭａｐＫａ（｜ΔＶｏｘｓ｜）によれば、絶対値｜ΔＶｏｘｓ｜が「第２変化速度閾値ΔＶ２ｔｈよりも所定値だけ小さい値と、第２変化速度閾値ΔＶ２ｔｈと、の間の値」であるとき、比例項反映率Ｋａは絶対値｜ΔＶｏｘｓ｜が増大するにつれて「１」から「０」に向けて減少する値に設定される。加えて、反映率テーブルＭａｐＫａ（｜ΔＶｏｘｓ｜）によれば、絶対値｜ΔＶｏｘｓ｜が「第２変化速度閾値ΔＶ２ｔｈ以上の値」であるとき、比例項反映率Ｋａは「０」に設定される。
次に、ＣＰＵはステップ２０４０に進み、比例項ＳＰに比例項反映率Ｋａを乗じた値を最終的な比例項ＳＰとして求める。この結果、下流側空燃比センサ５６の出力値Ｖｏｘｓの変化速度ΔＶｏｘｓの大きさ｜ΔＶｏｘｓ｜が大きいほど、サブフィードバック量ＤＦｓｕｂの比例項ＳＰの大きさは小さくなる。その後、ＣＰＵはステップ２０９５を経由して、図１８のステップ１８９５へと進み、図１８のルーチンを一旦終了する。
なお、図２０のステップ２０３０内に破線により示したように、比例項反映率Ｋａは、絶対値｜ΔＶｏｘｓ｜が第２変化速度閾値ΔＶ２ｔｈよりも小さいときに「１」に設定され、絶対値｜ΔＶｏｘｓ｜が第２変化速度閾値ΔＶ２ｔｈ以上であるときに「０」に設定されてもよい。
再び、図１８を参照すると、ＣＰＵがステップ１８１０に進んだとき、下流側空燃比センサ５６の出力値Ｖｏｘｓが「第１閾値としてのストイキ上限値ＶＨｉｌｉｍｉｔ」よりも小さいと、ＣＰＵはそのステップ１８１０からステップ１８４０に進む。更に、ＣＰＵがステップ１８４０に進んだとき、下流側空燃比センサ５６の出力値Ｖｏｘｓが「第２閾値としてのストイキ下限値ＶＬｏｌｉｍｉｔ」よりも大きいと、ＣＰＵはそのステップ１８４０にて「Ｎｏ」と判定してステップ１８６０に進む。即ち、出力値Ｖｏｘｓが第１閾値と第２閾値との間にあるとき、ＣＰＵはステップ１８６０に進む。
ＣＰＵはステップ１８６０にて、下記の（１３）式に従ってサブフィードバック量ＤＦｓｕｂの比例項ＳＰを算出する。
ＳＰ＝（Ｖｏｘｓｒｅｆ−Ｖｏｘｓ）・ＫｐＳ３  …（１３）
（１３）式において、ＫｐＳ３は第３ゲインであり、正の値である。第３ゲインＫｐＳ
３は、第１ゲインＫｐＳ１及び第２ゲインＫｐＳ２と同じであってもよい。この結果、出力値Ｖｏｘｓが下流側目標値Ｖｏｘｓｒｅｆよりも大きく且つ第１閾値ＶＨｉｌｉｍｉｔ以下であるとき、比例項ＳＰは負であって、触媒流入ガスの空燃比をリーン側空燃比に設定する値となる。これに対し、出力値Ｖｏｘｓが下流側目標値Ｖｏｘｓｒｅｆよりも小さく且つ第２閾値ＶＬｏｌｉｍｉｔ以上であるとき、比例項ＳＰは正であって、触媒流入ガスの空燃比をリッチ空燃比に設定する値となる。
なお、但し、第３ゲインＫｐＳ３は、「０」を含む極めて小さい値（例えば、微分項ＳＤが正であるときにサブフィードバック量ＤＦｓｕｂ（＝ＳＤ＋ＳＰ）が負となることがない値、及び、微分項ＳＤが負であるときにサブフィードバック量ＤＦｓｕｂ（＝ＳＤ＋ＳＰ）が正となることがない値）に選択されていることが好ましい。或いは、比例項ＳＰは、下流側空燃比センサ５６の出力値Ｖｏｘｓが、「第１閾値を含む所定範囲内の値（Ｖｍａｘ−α１）」よりも小さく且つ「第２閾値を含む所定範囲内の値（Ｖｍａｘ＋α２）」よりも大きいとき、「０」になるように決定されることが好ましい。
その後、ＣＰＵはステップ１８３０（図２０のルーチン）の処理を行う。この場合、出力値Ｖｏｘｓは「第１閾値ＶＨｉｌｉｍｉｔと第２閾値ＶＬｏｌｉｍｉｔとの間」にあるので、触媒４３は通常、酸素不足状態でも酸素過剰状態でもない。従って、下流側空燃比センサ５６の出力値Ｖｏｘｓの変化速度ΔＶｏｘｓの大きさ｜ΔＶｏｘｓ｜は「０」ではないので、ＣＰＵが図１５のルーチンを実行することにより、リーン否定フラグＸＮＯＴｌｅａｎの値及びリッチ否定フラグＸＮＯＴｒｉｃｈの値のうちの何れか一方は「１」に設定されている。更に、触媒４３が「酸素不足状態でも酸素過剰状態でもない」場合、下流側空燃比センサ５６の出力値Ｖｏｘｓの変化速度ΔＶｏｘｓの大きさ｜ΔＶｏｘｓ｜は、第１変化速度閾値ΔＶ１ｔｈ又は第２変化速度閾値ΔＶ２ｔｈよりも大きいか、或いは、それらの近傍の値となることが多い。従って、図２０のステップ２０３０において求められる反映率Ｋａ又はステップ２０６０により求められる反映率Ｋｂは「１」よりも小さく、特に、出力値Ｖｏｘｓの変化速度の大きさ｜ΔＶｏｘｓ｜が大きい場合、反映率Ｋａ及び反映率Ｋｂは「０」になる。
よって、このような場合、サブフィードバック量ＤＦｓｕｂの比例項ＳＰは実質的に「０」となるので、サブフィードバック量ＤＦｓｕｂは微分項ＳＤのみに応じて変化することになる。その後、ＣＰＵはステップ１８９５に進んで本ルーチンを一旦終了する。
このように、下流側空燃比センサ５６の出力値Ｖｏｘｓが「第１閾値ＶＨｉｌｉｍｉｔと第２閾値ＶＬｏｌｉｍｉｔとの間」にある場合、サブフィードバック量ＤＦｓｕｂは実質的に微分項ＳＤのみを含むことになる。よって、サブフィードバック量は、出力値Ｖｏｘｓが減少しているときに触媒流入ガスの空燃比（＝機関の空燃比）をリッチ空燃比に設定し、出力値Ｖｏｘｓが増大しているときに触媒流入ガスの空燃比をリーン空燃比に設定する値になる。
＜ストイキ上限値及びストイキ下限値の取得＞
次に、ストイキ下限値ＶＬｏｌｉｍｉｔ及びストイキ上限値ＶＨｉｌｉｍｉｔの取得方法について説明する。ＣＰＵは機関１０の運転開始後に「ストイキ下限値ＶＬｏｌｉｍｉｔ及びストイキ上限値ＶＨｉｌｉｍｉｔ」を一度も取得していない場合、所定時間以上に渡るフューエルカット運転が実行された後に「ストイキ下限値ＶＬｏｌｉｍｉｔ及びストイキ上限値ＶＨｉｌｉｍｉｔ」を取得するための制御を行う。
ＣＰＵは、上述したフューエルカット条件が成立したときフューエルカット運転を実行する。それにより、触媒４３には多量の酸素が流入する。従って、フューエルカット運転が所定時間以上継続すると、触媒４３の酸素吸蔵量ＯＳＡは最大酸素吸蔵量Ｃｍａｘに到達する。その結果、下流側空燃比センサ５６の出力値Ｖｏｘｓは、図２１の時刻ｔ１以前に示したように、最小出力値Ｖｍｉｎになる。その後、フューエルカット条件が不成立となると、フューエルカット運転が終了する。
このとき、「ストイキ下限値ＶＬｏｌｉｍｉｔ及びストイキ上限値ＶＨｉｌｉｍｉｔ」が今回の機関１０の運転開始後において取得されていなければ、ＣＰＵはそれらを取得するために、先ず、機関の空燃比をリッチ空燃比に設定する（図２１の時刻ｔ１以降を参照。）。
この結果、触媒流入ガスに含まれる未燃物は「触媒に吸蔵されている酸素及び触媒流入ガスに含まれる酸素」と結合することにより酸化される。即ち、この場合、触媒流出ガスの空燃比は実質的に理論空燃比であると言うことができる。しかしながら、下流側空燃比センサ５６の近傍及び下流側空燃比センサ５６の拡散抵抗層等には、フューエルカット運転中に供給された酸素が残存している。従って、下流側空燃比センサ５６の出力値Ｖｏｘｓは、図２１の時刻ｔ１以降において僅かに増大するものの、中央値Ｖｍｉｄと最小出力値Ｖｍｉｎとの間の値であって且つ最小出力値Ｖｍｉｎ近傍の値を暫くの間維持する。このときの出力値Ｖｏｘｓがストイキ下限値ＶＬｏｌｉｍｉｔである。
そこで、ＣＰＵは「時刻ｔ１」から「出力値Ｖｏｘｓが実質的に最大出力値Ｖｍａｘに到達する時点（時刻ｔ３）」までの期間において出力値Ｖｏｘｓの変化速度ΔＶｏｘｓの大きさが最小となる時点（時刻ｔ２を参照。）を検出し、その時点の出力値Ｖｏｘｓをストイキ下限値ＶＬｏｌｉｍｉｔとして取得する。
その後、時刻ｔ３において「出力値Ｖｏｘｓが最大出力値Ｖｍａｘに到達する」と、ＣＰＵは機関の空燃比をリーン空燃比に設定する（図２１の時刻ｔ３以降を参照。）。この状態において、触媒４３の酸素吸蔵量ＯＳＡは「０」である。
これにより、触媒４３は酸素を吸蔵し始めるので、触媒４３の下流に酸素は流出しない。更に、触媒流入ガスに含まれる未燃物は触媒において酸化される。このとき、触媒流出ガスは未燃物も酸素も含んでいない。即ち、触媒流出ガスの空燃比は理論空燃比である。しかしながら、下流側空燃比センサ５６の近傍及び下流側空燃比センサ５６の拡散抵抗層等に残存する酸素は完全に消費されているから、下流側空燃比センサの出力値Ｖｏｘｓは、図２１の時刻ｔ３以降に示したように僅かに減少するものの、中央値Ｖｍｉｄと最大出力値Ｖｍａｘとの間の値であって且つ最大出力値Ｖｍａｘの近傍の値を暫くの間維持する。このときの出力値Ｖｏｘｓがストイキ上限値ＶＨｉｌｉｍｉｔである。
そこで、ＣＰＵは「時刻ｔ３」から「出力値Ｖｏｘｓが実質的に最小出力値Ｖｍｉｎに到達する時点（時刻ｔ５）」までの期間において出力値Ｖｏｘｓの変化速度ΔＶｏｘｓの大きさが最小となる時点（時刻ｔ４を参照。）を検出し、その時点の出力値Ｖｏｘｓをストイキ上限値ＶＨｉｌｉｍｉｔとして取得する。以上が、ストイキ下限値ＶＬｏｌｉｍｉｔ及びストイキ上限値ＶＨｉｌｉｍｉｔの取得方法である。
次に、ＣＰＵの実際の作動について説明すると、ＣＰＵは、所定時間が経過する毎に図２２にフローチャートにより示した「ストイキ下限値検出用リッチ制御ルーチン」を実行するようになっている。従って、所定のタイミングになると、ＣＰＵは図２２のステップ２２００から処理を開始してステップ２２１０に進み、現時点がフューエルカット運転の終了直後（即ち、フューエルカット条件が不成立となった直後）であるか否かを判定する。このとき、現時点がフューエルカット運転の終了直後でなければ、ＣＰＵはステップ２２１０からステップ２２９５に直接進んで本ルーチンを一旦終了する。
これに対し、ＣＰＵがステップ２２１０に進んだとき、その時点がフューエルカット運転の終了直後であると、ＣＰＵはそのステップ２２１０にて「Ｙｅｓ」と判定してステップ２２２０に進み、ストイキ下限値取得完了フラグＸＬｏｌｉｍｉｔｄｅｔの値が「０」であるか否かを判定する。
ところで、ＣＰＵは、機関１０の今回の運転開始時において、ストイキ下限値取得完了フラグＸＬｏｌｉｍｉｔｄｅｔの値を「０」に設定するとともに、ストイキ上限値取得完了フラグＸＨｉｌｉｍｉｔｄｅｔの値を「０」に設定する。即ち、ＣＰＵは、前述したイニシャルルーチンにおいて、これらのフラグの値を「０」に設定する。また、ＣＰＵは後述するように、機関１０の今回の運転開始後において、ストイキ下限値ＶＬｏｌｉｍｉｔが取得されたときストイキ下限値取得完了フラグＸＬｏｌｉｍｉｔｄｅｔの値を「１」に設定し、ストイキ上限値ＶＨｉｌｉｍｉｔが取得されたときストイキ上限値取得完了フラグＸＨｉｌｉｍｉｔｄｅｔの値を「１」に設定する。
従って、今回の運転開始後においてストイキ下限値ＶＬｏｌｉｍｉｔが取得されていないとすると、ストイキ下限値取得完了フラグＸＬｏｌｉｍｉｔｄｅｔの値は「０」である。この場合、ＣＰＵはステップ２２２０にて「Ｙｅｓ」と判定してステップ２２３０に進み、その時点の直前に終了したフューエルカット運転が所定時間以上継続していたか否かを判定する。換言すると、ＣＰＵは触媒４３の酸素吸蔵量ＯＳＡが最大酸素吸蔵量Ｃｍａｘに到達しているか否かを判定する。従って、このステップ２２３０は、下流側空燃比センサ５６の出力値Ｖｏｘｓが最小出力値Ｖｍｉｎであるか否かを確認するステップに置換され得る。
いま、その時点の直前に終了したフューエルカット運転が所定時間以上継続していたと仮定すると、ＣＰＵはステップ２２３０にて「Ｙｅｓ」と判定してステップ２２４０に進み、リッチコントロールフラグＸｒｉｃｈｃｏｎｔの値を「１」に設定する。次いで、ＣＰＵはステップ２２５０に進み、最小変化速度ΔＶｏｘｓｍｉｎの値を予め定められた変化速度初期値ΔＶｏｘｓｍｉｎＩｎｉｔｉａｌに設定する。その後、ＣＰＵはステップ２２９５に進んで本ルーチンを一旦終了する。なお、ＣＰＵは上記ステップ２２２０にて「Ｎｏ」と判定した場合、及び、上記ステップ２２３０にて「Ｎｏ」と判定した場合、ステップ２２９５に直接進んで本ルーチンを一旦終了する。
上記ステップ２２４０にてリッチコントロールフラグＸｒｉｃｈｃｏｎｔの値が「１」に設定されると、ＣＰＵは図１２のステップ１２１０にて「Ｙｅｓ」と判定してステップ１２１５に進み、上流側目標空燃比ａｂｙｆｒを理論空燃比よりもリッチ側の空燃比ＡＦｒｉｃｈ（例えば、１４．２）に設定する。更に、ＣＰＵは図１２のステップ１２３０にてメインフィードバック量ＤＦｍａｉｎの値を「０」に設定するとともに、ステップ１２３５にてサブフィードバック量ＤＦｓｕｂの値を「０」に設定する。この結果、ＣＰＵがステップ１２４０以降の処理を実行すると、機関の空燃比（従って、触媒流入ガスの空燃比）はリッチ空燃比ＡＦｒｉｃｈに制御される。
更に、ＣＰＵは、所定時間が経過する毎に図２３にフローチャートにより示した「ストイキ下限値検出ルーチン」を実行するようになっている。従って、所定のタイミングになると、ＣＰＵは図２３のステップ２３００から処理を開始してステップ２３１０に進み、リッチコントロールフラグＸｒｉｃｈｃｏｎｔの値が「１」であるか否かを判定する。このとき、リッチコントロールフラグＸｒｉｃｈｃｏｎｔの値が「０」であると、ＣＰＵはステップ２３１０にて「Ｎｏ」と判定し、ステップ２３９５に直接進んで本ルーチンを一旦終了する。
これに対し、上述した図２２のステップ２２４０の処理によってリッチコントロールフラグＸｒｉｃｈｃｏｎｔの値が「１」に変更されると、ＣＰＵはステップ２３１０にて「Ｙｅｓ」と判定してステップ２３２０に進むようになる。そして、ＣＰＵは、出力値Ｖｏｘｓが最小出力値Ｖｍｉｎに微小な正の値δ２を加えた値（Ｖｍｉｎ＋δ２）よりも大きいか否かを判定する。
いま、フューエルカット運転が終了した直後であってリッチコントロールフラグＸｒｉｃｈｃｏｎｔの値が「１」に変更された直後であると仮定すると、出力値Ｖｏｘｓは最小出力値Ｖｍｉｎに微小な正の値δ２を加えた値以下である（図２１の時刻ｔ１の直後を参照。）。この場合、ＣＰＵはステップ２３２０にて「Ｎｏ」と判定し、ステップ２３９５に直接進んで本ルーチンを一旦終了する。
この状態が継続すると、出力値Ｖｏｘｓは次第に増大し、最小出力値Ｖｍｉｎに微小な正の値δ２を加えた値（Ｖｍｉｎ＋δ２）を上回る。このとき、ＣＰＵがステップ２３２０の処理を実行すると、ＣＰＵはそのステップ２３２０にて「Ｙｅｓ」と判定してステップ２３３０に進み、変化速度ΔＶｏｘｓの大きさ（変化速度ΔＶｏｘｓの絶対値）｜ΔＶｏｘｓ｜が最小変化速度ΔＶｏｘｓｍｉｎよりも小さいか否かを判定する。なお、最小変化速度ΔＶｏｘｓｍｉｎは、当初、前述した図２２のステップ２２５０にて変化速度初期値ΔＶｏｘｓｍｉｎＩｎｉｔｉａｌに設定されている。
このとき、変化速度ΔＶｏｘｓの大きさ｜ΔＶｏｘｓ｜が最小変化速度ΔＶｏｘｓｍｉｎ以上であると、ＣＰＵはステップ２３３０にて「Ｎｏ」と判定し、ステップ２３６０に直接進む。これに対し、変化速度ΔＶｏｘｓの大きさ｜ΔＶｏｘｓ｜が最小変化速度ΔＶｏｘｓｍｉｎよりも小さいと、ＣＰＵはステップ２３４０にて変化速度ΔＶｏｘｓの大きさ｜ΔＶｏｘｓ｜を最小変化速度ΔＶｏｘｓｍｉｎとして取得するとともに、ステップ２３５０にて出力値Ｖｏｘｓをストイキ下限値ＶＬｏｌｉｍｉｔとして取得する。
このステップ２３３０乃至ステップ２３５０の処理が繰り返し実行されるにより、変化速度ΔＶｏｘｓの大きさ｜ΔＶｏｘｓ｜が最小となった時点における出力値Ｖｏｘｓがストイキ下限値ＶＬｏｌｉｍｉｔとして取得される。
次いで、ＣＰＵはステップ２３６０に進み、出力値Ｖｏｘｓが「最大出力値Ｖｍａｘから微小な正の値δ１を減じた値（Ｖｍａｘ−δ１）」よりも大きいか否かを判定する。換言すると、ＣＰＵはステップ２３６０にて「出力値Ｖｏｘｓが最大出力値Ｖｍａｘに実質的に到達したか否か」を判定する。
図２１の時刻ｔ１〜時刻ｔ３に示したように、リッチコントロールフラグＸｒｉｃｈｃｏｎｔの値が「１」に設定されてから暫くの値、出力値Ｖｏｘｓは値（Ｖｍａｘ−δ１）よりも小さい。従って、ＣＰＵはステップ２３６０にて「Ｎｏ」と判定し、ステップ２３９５に直接進んで本ルーチンを一旦終了する。
そして、この状態が継続すること、出力値Ｖｏｘｓは値（Ｖｍａｘ−δ１）よりも大きくなる。このとき、ＣＰＵがステップ２３６０に進むと、ＣＰＵはそのステップ２３６０にて「Ｙｅｓ」と判定してステップ２３７０に進み、リッチコントロールフラグＸｒｉｃｈｃｏｎｔの値を「０」に設定する。更に、ＣＰＵはステップ２３８０にて、ストイキ下限値取得完了フラグＸＬｏｌｉｍｉｔｄｅｔの値を「１」に設定し、ステップ２３９５に進んで本ルーチンを一旦終了する。
この結果、リッチコントロールフラグＸｒｉｃｈｃｏｎｔの値が「１」に設定されてから、出力値Ｖｏｘｓが最大出力値Ｖｍａｘ近傍の値（Ｖｍａｘ−δ１）に到達するまでの期間において、変化速度ΔＶｏｘｓの大きさ｜ΔＶｏｘｓ｜が最小となったときの出力値Ｖｏｘｓがストイキ下限値ＶＬｏｌｉｍｉｔとして取得される。
加えて、ＣＰＵは、所定時間が経過する毎に図２４にフローチャートにより示した「ストイキ上限値検出用リーン制御ルーチン」を実行するようになっている。従って、所定のタイミングになると、ＣＰＵは図２４のステップ２４００から処理を開始してステップ２４１０に進み、現時点がリッチコントロールフラグＸｒｉｃｈｃｏｎｔの値が「１」から「０」へと変化した直後であるか否かを判定する。
このとき、現時点が「リッチコントロールフラグＸｒｉｃｈｃｏｎｔの値が「１」から「０」へと変化した直後」でなければ、ＣＰＵはステップ２４１０にて「Ｎｏ」と判定してステップ２４９５に直接進んで本ルーチンを一旦終了する。
これに対し、現時点が、「リッチコントロールフラグＸｒｉｃｈｃｏｎｔの値が「１」から「０」へと変更された直後」であると、ＣＰＵはステップ２４１０にて「Ｙｅｓ」と判定してステップ２４２０に進み、ストイキ上限値取得完了フラグＸＨｉｌｉｍｉｔｄｅｔの値が「０」であるか否かを判定する。
ところで、前述したように、ＣＰＵは、機関１０の今回の運転開始時において、ストイキ上限値取得完了フラグＸＨｉｌｉｍｉｔｄｅｔの値を「０」に設定するとともに、ストイキ上限値ＶＨｉｌｉｍｉｔが取得されたときストイキ上限値取得完了フラグＸＨｉｌｉｍｉｔｄｅｔの値を「１」に設定する。
従って、今回の運転開始後においてストイキ上限値ＶＨｉｌｉｍｉｔが取得されていないとすると、ストイキ上限値取得完了フラグＸＨｉｌｉｍｉｔｄｅｔの値は「０」である。この場合、ＣＰＵはステップ２４２０にて「Ｙｅｓ」と判定してステップ２４３０に進み、下流側空燃比センサ５６の出力値Ｖｏｘｓが「最大出力値Ｖｍａｘから微小な正の値δ１を減じた値（Ｖｍａｘ−δ１）」より大きいか否かを判定する。即ち、ＣＰＵはステップ２４２０にて、触媒４３の酸素吸蔵量ＯＳＡが実質的に「０」であるか否か、換言すると、下流側空燃比センサ５６の出力値Ｖｏｘｓが実質的に最大出力値Ｖｍａｘであるか否かを判定する。
そして、ＣＰＵは、下流側空燃比センサ５６の出力値Ｖｏｘｓが「最大出力値Ｖｍａｘから微小な正の値δ１を減じた値（Ｖｍａｘ−δ１）」より大きい場合、ステップ２４３０にて「Ｙｅｓ」と判定してステップ２４４０に進み、リーンコントロールフラグＸｌｅａｎｃｏｎｔの値を「１」に設定する。次いで、ＣＰＵはステップ２４５０に進み、最小変化速度ΔＶｏｘｓｍｉｎの値を予め定められた変化速度初期値ΔＶｏｘｓｍｉｎＩｎｉｔｉａｌに設定する。その後、ＣＰＵはステップ２４９５に進んで本ルーチンを一旦終了する。なお、ＣＰＵは上記ステップ２４２０にて「Ｎｏ」と判定した場合、及び、上記ステップ２４３０にて「Ｎｏ」と判定した場合、ステップ２４９５に直接進んで本ルーチンを一旦終了する。
上記ステップ２４４０にてリーンコントロールフラグＸｌｅａｎｃｏｎｔの値の値が「１」に設定されると、ＣＰＵは図１２のステップ１２２０にて「Ｙｅｓ」と判定してステップ１２２５に進み、上流側目標空燃比ａｂｙｆｒを理論空燃比よりもリーン側の空燃比ＡＦｌｅａｎ（例えば、１５．０）に設定する。更に、ＣＰＵは図１２のステップ１２３０にてメインフィードバック量ＤＦｍａｉｎの値を「０」に設定するとともに、ステップ１２３５にてサブフィードバック量ＤＦｓｕｂの値を「０」に設定する。この結果、ＣＰＵがステップ１２４０以降の処理を実行すると、機関の空燃比（従って、触媒流入ガスの空燃比）はリーン空燃比ＡＦｌｅａｎに制御される。
更に、ＣＰＵは、所定時間が経過する毎に図２５にフローチャートにより示した「ストイキ上限値検出ルーチン」を実行するようになっている。従って、所定のタイミングになると、ＣＰＵは図２５のステップ２５００から処理を開始してステップ２５１０に進み、リーンコントロールフラグＸｌｅａｎｃｏｎｔの値が「１」であるか否かを判定する。このとき、リーンコントロールフラグＸｌｅａｎｃｏｎｔの値が「０」であると、ＣＰＵはステップ２５１０にて「Ｎｏ」と判定し、ステップ２５９５に直接進んで本ルーチンを一旦終了する。
これに対し、上述した図２４のステップ２４４０の処理によってリーンコントロールフラグＸｌｅａｎｃｏｎｔの値が「１」に変更されると、ＣＰＵはステップ２５１０にて「Ｙｅｓ」と判定してステップ２５２０に進むようになる。そして、ＣＰＵは、出力値Ｖｏｘｓが「最大出力値Ｖｍａｘから微小な正の値δ１を減じた値（Ｖｍａｘ−δ１）」より小さいか否かを判定する。
いま、前述した図２４のステップ２４４０にてリーンコントロールフラグＸｌｅａｎｃｏｎｔの値が「１」に変更された直後であると仮定すると、出力値Ｖｏｘｓは「最大出力値Ｖｍａｘから微小な正の値δ１を減じた値（Ｖｍａｘ−δ１）」以上である（図２４のステップ２４３０及び図２１の時刻ｔ３の直後を参照。）。この場合、ＣＰＵはステップ２５２０にて「Ｎｏ」と判定し、ステップ２５９５に直接進んで本ルーチンを一旦終了する。
この状態が継続すると、出力値Ｖｏｘｓは次第に減少し、「最大出力値Ｖｍａｘから微小な正の値δ１を減じた値（Ｖｍａｘ−δ１）」よりも小さくなる。このとき、ＣＰＵがステップ２５２０の処理を実行すると、ＣＰＵはそのステップ２５２０にて「Ｙｅｓ」と判定してステップ２５３０に進み、変化速度ΔＶｏｘｓの大きさ（変化速度ΔＶｏｘｓの絶対値）｜ΔＶｏｘｓ｜が最小変化速度ΔＶｏｘｓｍｉｎよりも小さいか否かを判定する。なお、この時点における最小変化速度ΔＶｏｘｓｍｉｎは、前述した図２４のステップ２４５０にて変化速度初期値ΔＶｏｘｓｍｉｎＩｎｉｔｉａｌに設定されている。
このとき、変化速度ΔＶｏｘｓの大きさ｜ΔＶｏｘｓ｜が最小変化速度ΔＶｏｘｓｍｉｎ以上であると、ＣＰＵはステップ２５３０にて「Ｎｏ」と判定し、ステップ２５６０に直接進む。これに対し、変化速度ΔＶｏｘｓの大きさ｜ΔＶｏｘｓ｜が最小変化速度ΔＶｏｘｓｍｉｎよりも小さいと、ＣＰＵはステップ２５４０にて変化速度ΔＶｏｘｓの大きさ｜ΔＶｏｘｓ｜を最小変化速度ΔＶｏｘｓｍｉｎとして取得するとともに、ステップ２５５０にて出力値Ｖｏｘｓをストイキ上限値ＶＨｉｌｉｍｉｔとして取得する。
このステップ２５３０乃至ステップ２５５０の処理が繰り返し実行されるにより、変化速度ΔＶｏｘｓの大きさ｜ΔＶｏｘｓ｜が最小となった時点における出力値Ｖｏｘｓがストイキ上限値ＶＨｉｌｉｍｉｔとして取得される。
次いで、ＣＰＵはステップ２５６０に進み、出力値Ｖｏｘｓが「最小出力値Ｖｍｉｎに微小な正の値δ２を加えた値（Ｖｍｉｎ＋δ２）」よりも小さいか否かを判定する。換言すると、ＣＰＵはステップ２５６０にて「出力値Ｖｏｘｓが最小出力値Ｖｍｉｎに実質的に到達したか否か」を判定する。図２１の時刻ｔ３〜時刻ｔ５に示したように、リーンコントロールフラグＸｌｅａｎｃｏｎｔの値が「１」に設定されてから暫くの値、出力値Ｖｏｘｓは値（Ｖｍｉｎ＋δ２）よりも大きい。従って、ＣＰＵはステップ２５６０にて「Ｎｏ」と判定し、ステップ２５９５に直接進んで本ルーチンを一旦終了する。
そして、この状態が継続すること、出力値Ｖｏｘｓは値（Ｖｍｉｎ＋δ２）よりも小さくなる。このとき、ＣＰＵがステップ２５６０に進むと、ＣＰＵはそのステップ２５６０にて「Ｙｅｓ」と判定してステップ２５７０に進み、リーンコントロールフラグＸｌｅａｎｃｏｎｔの値を「０」に設定する。更に、ＣＰＵはステップ２５８０にて、ストイキ上限値取得完了フラグＸＨｉｌｉｍｉｔｄｅｔの値を「１」に設定し、ステップ２５９５に進んで本ルーチンを一旦終了する。
この結果、リーンコントロールフラグＸｌｅａｎｃｏｎｔの値が「１」に設定されてから、出力値Ｖｏｘｓが最小出力値Ｖｍｉｎ近傍の値（Ｖｍｉｎ＋δ２）に到達するまでの期間において、変化速度ΔＶｏｘｓの大きさ｜ΔＶｏｘｓ｜が最小となったときの出力値Ｖｏｘｓがストイキ上限値ＶＨｉｌｉｍｉｔとして取得される。
加えて、図２３のステップ２３７０にてリッチコントロールフラグＸｒｉｃｈｃｏｎｔの値が「０」に設定されるとともに、図２５のステップ２５７０にてリーンコントロールフラグＸｌｅａｎｃｏｎｔの値が「０」に設定されるので、この時点以降、ＣＰＵは図１２のステップ１２１０及びステップ１２２０の両ステップにて「Ｎｏ」と判定し、ステップ１２１５又はステップ１２２５の処理を行わなくなる。従って、上流側目標空燃比ａｂｙｆｒはステップ１２０５にて設定された理論空燃比ｓｔｏｉｃｈ（例えば、１４．６）に設定される。
更に、図２３のステップ２３８０にてストイキ下限値取得完了フラグＸＬｏｌｉｍｉｔｄｅｔの値が「１」に設定され、図２５のステップ２５８０にてストイキ上限値取得完了フラグＸＨｉｌｉｍｉｔｄｅｔの値が「１」に設定される。従って、次に、機関１０が始動されるまで（上述したイニシャルルーチンが実行されるまで）、ＣＰＵは、図２２のステップ２２２０にて「Ｎｏ」と判定するとともに、図２４のステップ２４２０にて「Ｎｏ」と判定するようになる。従って、上流側目標空燃比ａｂｙｆｒをリッチ空燃比ＡＦｒｉｃｈに設定することよるストイキ下限値ＶＬｏｌｉｍｉｔの取得、及び、上流側目標空燃比ａｂｙｆｒをリーン空燃比ＡＦｌｅａｎに設定することによるストイキ上限値ＸＨｉｌｉｍｉｔの取得は行われない。もちろん、第１制御装置は、機関が運転されている間、所定時間以上に渡るフューエルカット運転が行われれば、ストイキ下限値ＶＬｏｌｉｍｉｔの取得、及び、ストイキ上限値ＸＨｉｌｉｍｉｔの取得を繰り返し実行してもよい。
以上、説明したように、第１制御装置は、濃淡電池型酸素濃度センサである下流側空燃比センサ５６と、その下流側空燃比センサ５６の出力値Ｖｏｘｓに基づいて触媒４３に流入するガスである「触媒流入ガス」の空燃比を変更するように「機関１０に供給される混合気の空燃比」を制御する空燃比制御手段（図１１のルーチンを参照。）と、を備える。
更に、その空燃比制御手段は、
下流側空燃比センサ５６の出力値Ｖｏｘｓが減少している場合、前記触媒流入ガスの空燃比が理論空燃比よりもリッチ側の空燃比となるように（図１１のステップ１１１０及びステップ１１３０を参照。）、且つ、下流側空燃比センサ５６の出力値Ｖｏｘｓが増大している場合、前記触媒流入ガスの空燃比が理論空燃比よりもリーン側の空燃比となるように（図１１のステップ１１１０及びステップ１１５０を参照。）、機関１０に供給される混合気の空燃比を制御する（即ち、通常空燃比フィードバック制御を実行する）ように構成されている。
特に、その空燃比制御手段は、
下流側空燃比センサ５６の出力値Ｖｏｘｓが減少している場合における同出力値の変化速度の大きさ｜ΔＶｏｘｓ｜が所定の第１変化速度閾値ΔＶ１ｔｈ以上であるとき、前記触媒流入ガスの空燃比が理論空燃比よりもリッチ側の空燃比となるように（図１１のステップ１１２０及びステップ１１３０を参照。）、且つ、下流側空燃比センサ５６の出力値Ｖｏｘｓが増大している場合における同出力値の変化速度の大きさ｜ΔＶｏｘｓ｜が所定の第２変化速度閾値ΔＶ２ｔｈ以上であるとき、前記触媒流入ガスの空燃比が理論空燃比よりもリーン側の空燃比となるように（図１１のステップ１１４０及びステップ１１５０を参照。）、機関１０に供給される混合気の空燃比を制御するように構成されている。
より具体的には、下流側空燃比センサ５６の出力値Ｖｏｘｓが減少している場合における同出力値の変化速度の大きさ｜ΔＶｏｘｓ｜が所定の第１変化速度閾値ΔＶ１ｔｈ（「０」を含む値）以上であるとき、図２０のステップ２０６０にて反映率Ｋｂが「０」に設定されることからサブフィードバック量ＤＦｓｕｂの比例項ＳＰはステップ２０７０にて「０」に設定され、且つ、微分項ＳＤは正の値になるので（図１７のステップ１７３０及びステップ１７４０を参照。）、基本燃料噴射量Ｆｂａｓｅはサブフィードバック量ＤＦｓｕｂ（この場合、微分項ＳＤのみを含むことになる）によって増量補正され、その結果、機関の空燃比（従って、触媒流入ガスの空燃比）はリッチ空燃比に制御される。
下流側空燃比センサ５６の出力値Ｖｏｘｓが減少していて、且つ、その変化速度の大きさ｜ΔＶｏｘｓ｜が第１変化速度閾値ΔＶ１ｔｈ以上であれば、触媒４３から過剰の酸素が流出していることを意味するので、たとえ下流側空燃比センサ５６の出力値Ｖｏｘｓが中央値Ｖｍｉｄよりも大きいとき（従来技術におけるリッチ検出時）であっても、触媒４３の酸素吸蔵量ＯＳＡは「０」近傍ではなく、寧ろ、最大酸素吸蔵量Ｃｍａｘに近い値にまで減少している。従って、このような場合、触媒流入ガス要求空燃比は理論空燃比よりもリッチ側の空燃比（リッチ空燃比）である。従って、上述したように、このような場合、第１制御装置は触媒流入ガスの空燃比をリッチ空燃比に制御する。
それ故、第１制御装置によれば、酸素吸蔵量ＯＳＡが最大酸素吸蔵量Ｃｍａｘに到達する前の時点において触媒流入ガスの空燃比をリッチ空燃比に設定することができ、それにより酸素吸蔵量ＯＳＡを減少させ始めることができる。この結果、第１制御装置は、従来装置のように不必要な燃料噴射量の減量補正を行わないので、多量のＮＯｘが排出されることを回避することができる。
更に、下流側空燃比センサ５６の出力値Ｖｏｘｓが増大している場合における同出力値の変化速度の大きさ｜ΔＶｏｘｓ｜が所定の第２変化速度閾値ΔＶ２ｔｈ（「０」を含む値）以上であるとき、図２０のステップ２０３０にて反映率Ｋａが「０」に設定され、且つ、微分項ＳＤは負の値になるので（図１７のステップ１７３０及びステップ１７４０を参照。）、基本燃料噴射量Ｆｂａｓｅはサブフィードバック量ＤＦｓｕｂ（微分項ＳＤ）によって減量補正され、その結果、機関の空燃比（従って、触媒流入ガスの空燃比）はリーン空燃比に制御される。
下流側空燃比センサ５６の出力値Ｖｏｘｓが増大していて、且つ、その変化速度の大きさ｜ΔＶｏｘｓ｜が第２変化速度閾値ΔＶ２ｔｈ以上であれば、触媒４３から過剰の未燃物が流出していることを意味するので、たとえ下流側空燃比センサ５６の出力値Ｖｏｘｓが中央値Ｖｍｉｄよりも小さいとき（従来技術におけるリーン検出時）であっても、触媒４３の酸素吸蔵量ＯＳＡは最大酸素吸蔵量Ｃｍａｘの近傍ではなく、寧ろ、「０」に近い値にまで減少している。従って、このような場合、触媒流入ガス要求空燃比は理論空燃比よりもリーン側の空燃比（リーン空燃比）である。従って、上述したように、このような場合、第１制御装置は触媒流入ガスの空燃比をリーン空燃比に制御する。
それ故、第１制御装置によれば、酸素吸蔵量ＯＳＡが「０」に到達する前の時点において触媒流入ガスの空燃比をリーン空燃比に設定することができ、それにより酸素吸蔵量ＯＳＡを増大させ始めることができる。この結果、第１制御装置は、従来装置のように不必要な燃料噴射量の増量補正を行わないので、多量の未燃物が排出されることを回避することができる。
更に、第１制御装置が備える空燃比制御手段は、
前記下流側空燃比センサの出力値が、「所定の第１閾値」よりも小さく且つ「その第１閾値よりも小さい所定の第２閾値」よりも大きいとき、実質的に「サブフィードバック量ＤＦｓｕｂの比例項ＳＰ」に基づくことなく、実質的に「サブフィードバック量ＤＦｓｕｂの微分項ＳＤ」に基づく「通常空燃比フィードバック制御」を実行するように構成されている。
より具体的には、前記第１閾値は、ストイキ上限値ＶＨｉｌｉｍｉｔに設定されている。ストイキ上限値ＶＨｉｌｉｍｉｔは、「触媒流入ガスの空燃比」が「リーン空燃比」であり且つ触媒４３の酸素吸蔵量ＯＳＡが増大している場合であって、「触媒流出ガスの空燃比」が「理論空燃比」であるときの「下流側空燃比センサ５６の出力値Ｖｏｘｓ」に等しくなるように設定される。
下流側空燃比センサ５６の出力値Ｖｏｘｓが第１閾値以上であって、触媒４３が酸素不足状態であると考えられる場合、下流側空燃比センサ５６の出力値Ｖｏｘｓが減少したとしても、「触媒流入ガスの空燃比」をリッチ空燃比に設定しないほうがよい。従って、第１制御装置は、下流側空燃比センサ５６の出力値Ｖｏｘｓが第１閾値以上であれば、上記通常空燃比フィードバック制御を行わないようにしている。
また、前記第２閾値は、ストイキ下限値ＶＬｏｌｉｍｉｔに設定されている。ストイキ下限値ＶＬｏｌｉｍｉｔは、「触媒流入ガスの空燃比」が「リッチ空燃比」であり且つ触媒４３の酸素吸蔵量ＯＳＡが減少している場合であって、「触媒流出ガスの空燃比」が「理論空燃比」であるときの「下流側空燃比センサ５６の出力値Ｖｏｘｓ」に等しくなるように設定される。
下流側空燃比センサ５６の出力値Ｖｏｘｓが第２閾値以下であって、触媒４３が酸素過剰状態であると考えられる場合、下流側空燃比センサ５６の出力値Ｖｏｘｓが増大したとしても、「触媒流入ガスの空燃比」をリーン空燃比に設定しないほうがよい。従って、第１制御装置は、下流側空燃比センサ５６の出力値Ｖｏｘｓが第２閾値以下であれば、上記通常空燃比フィードバック制御を行わないようにしている。
加えて、第１制御装置の空燃比制御手段は、
下流側空燃比センサ５６の出力値Ｖｏｘｓが、前記第１閾値を含む所定範囲内の値（例えば、Ｖｍａｘ−α１、好ましくはストイキ上限値ＶＨｉｌｉｍｉｔ）以上である場合（図１８のステップ１８１０にて「Ｙｅｓ」と判定される場合）、「触媒流入ガスの空燃比」がリーン空燃比となるように「前記機関に供給される混合気の空燃比」を制御するように構成されている。
これは、出力値Ｖｏｘｓが第１閾値を含む所定範囲内の値（例えば、Ｖｍａｘ−α１、好ましくはＶＨｉｌｉｍｉｔ）以上である場合、
・図１８のステップ１８２０にて算出されるサブフィードバック量ＤＦｓｕｂの比例項ＳＰが「負の値であって、その大きさ｜ＳＰ｜が相当に大きな値」となること、
・出力値Ｖｏｘｓが減少しないことが多く、出力値Ｖｏｘｓが減少しないときには、リッチ否定フラグＸＮＯＴｒｉｃｈが図１５のステップ１５２０にて「１」に設定されないので比例項ＳＰが減少されず（図２０のステップ２０５０からステップ２０９５に直接向う流れを参照。）、且つ、微分項ＳＤが正の値とならないので、サブフィードバック量ＤＦｓｕｂ（＝ＳＰ＋ＳＤ）は負の値（基本燃料噴射量Ｆｂａｓｅを減少させる値）になること、
・出力値Ｖｏｘｓが減少したとしても、その出力値Ｖｏｘｓの変化速度の大きさ｜ΔＶｏｘｓ｜は第１変化速度閾値ΔＶ１ｔｈよりも相当に小さいので比例項ＳＰは減少されず（図２０のステップ２０６０及びステップ２０７０を参照。）、且つ、微分項ＳＤは正の値となるけれども変化速度の大きさ｜ΔＶｏｘｓ｜はそれほど大きくないことから微分項の大きさ｜ＳＤ｜は比較的小さく、従って、サブフィードバック量ＤＦｓｕｂ（＝ＳＰ＋ＳＤ）は負の値になること、
によって、実現される。
前述したように、下流側空燃比センサの出力値Ｖｏｘｓが第１閾値を含む所定範囲内の値（Ｖｍａｘ−α１、好ましくはストイキ上限値ＶＨｉｌｉｍｉｔ）以上である場合、触媒４３の酸素吸蔵量ＯＳＡは極めて小さいので、触媒流入ガス要求空燃比は理論空燃比よりもリーン側の空燃比である。従って、第１制御装置は、下流側空燃比センサの出力値Ｖｏｘｓが第１閾値を含む所定範囲内の値以上である場合、下流側空燃比センサの出力値Ｖｏｘｓの変化速度に関わらず、触媒流入ガスの空燃比が理論空燃比よりもリーン側の空燃比となるように「機関に供給される混合気の空燃比を制御」する。その結果、第１制御装置は、触媒４３の酸素吸蔵量ＯＳＡを速やかに増大させることができるので、触媒４３の排気浄化効率を迅速に高くすることができる。
更に、第１制御装置の空燃比制御手段は、
下流側空燃比センサ５６の出力値Ｖｏｘｓが、前記第２閾値を含む所定範囲内の値（例えば、Ｖｍｉｎ＋α２、好ましくはストイキ下限値ＶＬｏｌｉｍｉｔ）以下である場合（図１８のステップ１８４０にて「Ｙｅｓ」と判定される場合）、「触媒流入ガスの空燃比」がリッチ空燃比となるように「前記機関に供給される混合気の空燃比」を制御するように構成されている。
これは、出力値Ｖｏｘｓが第２閾値を含む所定範囲内の値（例えば、Ｖｍａｘ＋α２、好ましくはストイキ下限値ＶＬｏｌｉｍｉｔ）以下である場合、
・図１８のステップ１８５０にて算出されるサブフィードバック量ＤＦｓｕｂの比例項ＳＰが「正の値であって、その大きさ｜ＳＰ｜が相当に大きな値」となること、
・出力値Ｖｏｘｓが増大しないことが多く、出力値Ｖｏｘｓが増大しないときには、リーン否定フラグＸＮＯＴｌｅａｎが図１５のステップ１５６０にて「１」に設定されないので、比例項ＳＰが減少されず（図２０のステップ２０２０からステップ２０９５に直接向う流れを参照。）、且つ、微分項ＳＤが負の値とならないので、サブフィードバック量ＤＦｓｕｂ（＝ＳＰ＋ＳＤ）は正の値（基本燃料噴射量Ｆｂａｓｅを増大させる値）になること、
・出力値Ｖｏｘｓが増大したとしても、その出力値Ｖｏｘｓの変化速度の大きさ｜ΔＶｏｘｓ｜は第２変化速度閾値ΔＶ２ｔｈよりも相当に小さいので比例項ＳＰは減少されず（図２０のステップ２０３０及びステップ２０４０を参照。）、且つ、微分項ＳＤは負の値となるけれども変化速度の大きさ｜ΔＶｏｘｓ｜はそれほど大きくないことから微分項の大きさ｜ＳＤ｜は比較的小さく、従って、サブフィードバック量ＤＦｓｕｂ（＝ＳＰ＋ＳＤ）は正の値になること、
によって、実現される。
前述したように、下流側空燃比センサの出力値Ｖｏｘｓが第２閾値を含む所定範囲内の値（例えば、Ｖｍａｘ＋α２、好ましくはストイキ下限値ＶＬｏｌｉｍｉｔ）以下である場合、触媒４３の酸素吸蔵量ＯＳＡは最大酸素吸蔵量Ｃｍａｘに近いので、触媒流入ガス要求空燃比は理論空燃比よりもリッチ側の空燃比である。従って、第１制御装置は、下流側空燃比センサの出力値Ｖｏｘｓが第２閾値を含む所定範囲内の値以下である場合、下流側空燃比センサの出力値Ｖｏｘｓの変化速度に関わらず、触媒流入ガスの空燃比が理論空燃比よりもリッチ側の空燃比となるように「機関に供給される混合気の空燃比を制御」する。その結果、第１制御装置は、触媒４３の酸素吸蔵量ＯＳＡを速やかに減少させることができるので、触媒４３の排気浄化効率を迅速に高くすることができる。
更に、第１制御装置の空燃比制御手段は、
機関１０に吸入される吸入空気量を取得するとともに同取得された吸入空気量に基づいて「機関に供給される混合気の空燃比」を理論空燃比に一致させるための基本燃料噴射量Ｆｂａｓｅを算出する基本燃料噴射量算出手段（図１２のステップ１２１５、ステップ１２４０及びステップ１２４５を参照。）と、
基本燃料噴射量Ｆｂａｓｅを補正するためのフィードバック量である「サブフィードバック量ＤＦｓｕｂ」を下流側空燃比センサ５６の出力値Ｖｏｘｓに基づいて算出するサブフィードバック量算出手段（図１７及び図１８のルーチンを参照。）と、
基本燃料噴射量Ｆｂａｓｅをサブフィードバック量ＤＦｓｕｂにより補正することにより得られる量（最終燃料噴射量）Ｆｉの燃料を機関１０に噴射供給する燃料噴射手段（図１２のステップ１２６５及び燃料噴射弁２５等を参照。）と、
を備える。
そして、前記サブフィードバック量算出手段は、前述した「通常空燃比フィードバック制御」を実行するために、
（１）下流側空燃比センサ５６の出力値Ｖｏｘｓが減少している場合（ＤＶｏｘｓ＜０）、サブフィードバック量ＤＦｓｕｂが、基本燃料噴射量Ｆｂａｓｅを「出力値Ｖｏｘｓの変化速度の大きさ｜ＤＶｏｘｓ｜の大きさが大きいほどより増大させる値」となり、且つ、
（２）下流側空燃比センサ５６の出力値Ｖｏｘｓが増大している場合（ＤＶｏｘｓ＞０）、サブフィードバック量ＤＦｓｕｂが、基本燃料噴射量Ｆｂａｓｅを「出力値Ｖｏｘｓの変化速度の大きさ｜ＤＶｏｘｓ｜が大きいほどより減少させる値」となるように、
サブフィードバック量ＤＦｓｕｂを算出する（図１７のステップ１７３０乃至ステップ１７５０、及び、ステップ１７６０を参照。）。
下流側空燃比センサの出力値Ｖｏｘｓが最小出力値Ｖｍｉｎに向けて急激に減少している場合、酸素吸蔵量ＯＳＡが最大酸素吸蔵量Ｃｍａｘに近づいたために触媒４３から過剰な酸素が流出していると考えることができる。従って、下流側空燃比センサの出力値Ｖｏｘｓが減少している場合、その変化速度の大きさ（減少速度の大きさ）｜ＤＶｏｘｓ｜が大きいほど「触媒流入ガスの空燃比を理論空燃比よりもよりリッチ側の空燃比」に設定することが望ましい。
そこで、第１制御装置は、下流側空燃比センサ５６の出力値Ｖｏｘｓが減少している場合、基本燃料噴射量Ｆｂａｓｅを変化速度の大きさ｜ＤＶｏｘｓ｜が大きいほどより増大させる値となるように、サブフィードバック量ＤＦｓｕｂ（実際には、微分項ＳＤ）を算出する。この結果、酸素吸蔵量ＯＳＡが最大酸素吸蔵量Ｃｍａｘに到達する前の時点にて酸素吸蔵量ＯＳＡを減少させ始めることができるので、触媒４３の排気浄化効率を高い値に維持することができる。
一方、下流側空燃比センサ５６の出力値Ｖｏｘｓが最大出力値Ｖｍａｘに向けて急激に増大している場合、酸素吸蔵量ＯＳＡが「０」に近づいたために触媒４３から過剰な未燃物が流出していると考えることができる。従って、下流側空燃比センサ５６の出力値Ｖｏｘｓが増大している場合、その変化速度の大きさ（増大速度の大きさ）｜ＤＶｏｘｓ｜が大きいほど「触媒流入ガスの空燃比を理論空燃比よりもよりリーン側の空燃比」に設定することが望ましい。
そこで、第１制御装置は、下流側空燃比センサ５６の出力値Ｖｏｘｓが増大している場合、基本燃料噴射量Ｆｂａｓｅを変化速度の大きさ｜ＤＶｏｘｓ｜が大きいほどより減少させる値となるように、サブフィードバック量ＤＦｓｕｂ（実際には、微分項ＳＤ）を算出する。この結果、酸素吸蔵量ＯＳＡが「０」に到達する前の時点にて酸素吸蔵量ＯＳＡを増大させ始めることができるので、触媒４３の排気浄化効率を高い値に維持することができる。
更に、具体的に述べると、上記「第１制御装置のサブフィードバック量算出手段」は、前記通常空燃比フィードバック制御を実行するために、
下流側空燃比センサ５６の出力値Ｖｏｘｓが減少している場合に基本燃料噴射量Ｆｂａｓｅを「出力値Ｖｏｘｓの変化速度の大きさ｜ＤＶｏｘｓ｜」が大きいほどより増大させ、且つ、下流側空燃比センサ５６の出力値Ｖｏｘｓが増大している場合に基本燃料噴射量Ｆｂａｓｅを「出力値Ｖｏｘｓの変化速度の大きさ｜ＤＶｏｘｓ｜」が大きいほどより減少させるように、下流側空燃比センサ５６の出力値Ｖｏｘｓの変化速度ＤＶｏｘｓに所定の微分ゲインｋｄを乗じた値（ｋｄ・Ｄｖｏｘｓ）を「サブフィードバック量ＤＦｓｕｂの微分項ＳＤ」として算出する微分項算出手段を含んでいる（図１７のステップ１７３０乃至ステップ１７５０、及び、ステップ１７６０を参照。）。
このように、第１制御装置によれば、下流側空燃比センサ５６の出力値Ｖｏｘｓの変化速度（単位時間あたりの下流側空燃比センサの出力値の変化量に相当）ＤＶｏｘｓに所定の微分ゲインｋｄを乗じた値（ｋｄ・ＤＶｏｘｓ）が「サブフィードバック量の微分項ＳＤ」として算出される。微分ゲインｋｄは、下流側空燃比センサ５６の出力値Ｖｏｘｓが時間の経過とともに減少しているとき微分項ＳＤが正の値（基本燃料噴射量Ｆｂａｓｅを増大させる値）となり、下流側空燃比センサ５６の出力値Ｖｏｘｓが時間の経過とともに増大しているとき微分項ＳＤが負の値（基本燃料噴射量Ｆｂａｓｅを減少させる値）となるように定められる。この微分項ＳＤを用いることにより、触媒流入ガス要求空燃比に応じた空燃比のガスを触媒に流入させることができる。この結果、酸素吸蔵量ＯＳＡが最大酸素吸蔵量Ｃｍａｘ又は「０」に到達することがないので、触媒４３の排気浄化効率を高い値に維持することができる。
また、第１制御装置が備えるサブフィードバック量算出手段は、以下に述べるように構成された比例項算出手段を含んでいる。
即ち、その比例項算出手段は、
（Ｂ１）下流側空燃比センサ５６の出力値Ｖｏｘｓが前記第１閾値（例えば、ストイキ上限値ＶＨｉｌｉｍｉｔ）以上である場合、前記第１閾値と前記出力値Ｖｏｘｓとの差にリーン制御用ゲインＫｐＬを乗じた値（ＶＨｉｌｉｍｉｔ−Ｖｏｘｓ）・ＫｐＬと、
前記第１閾値（例えば、ストイキ上限値ＶＨｉｌｉｍｉｔ）と前記第２閾値（例えば、ストイキ下限値ＶＬｏｌｉｍｉｔ）との間に設定された所定の目標値Ｖｏｘｓｒｅｆと、前記第１閾値と、の差に、第１ゲインＫｐＳ１を乗じた値（Ｖｏｘｓｒｅｆ−ＶＨｉｌｉｍｉｔ）・ＫｐＳ１と、
の和を、「前記機関に供給される混合気の空燃比を理論空燃比よりもリーン側に制御するための前記サブフィードバック量ＤＦｓｕｂの比例項ＳＰ」として算出する（図１８のステップ１８２０を参照。）。
更に、その比例項算出手段は、
（Ｂ２）下流側空燃比センサ５６の出力値Ｖｏｘｓが前記第２閾値（例えば、ストイキ下限値ＶＬｏｌｉｍｉｔ）以下である場合、前記第２閾値と前記出力値Ｖｏｘｓとの差にリッチ制御用ゲインＫｐＲを乗じた値（ＶＬｏｌｉｍｉｔ−Ｖｏｘｓ）・ＫｐＲと、
前記目標値Ｖｏｘｓｒｅｆと前記第２閾値との差に第２ゲインＫｐＳ２を乗じた値（Ｖｏｘｓｒｅｆ−ＶＬｏｌｉｍｉｔ）・ＫｐＳ２と、
の和を、「前記機関に供給される混合気の空燃比を理論空燃比よりもリッチ側に制御するための前記サブフィードバック量ＤＦｓｕｂの比例項ＳＰ」として算出する（図１８のステップ１８５０を参照。）。
更に、その比例項算出手段は、
（Ｂ３）下流側空燃比センサ５６の出力値Ｖｏｘｓが前記第１閾値と前記第２閾値との間にある場合、前記目標値と前記下流側空燃比センサの出力値との差に第３ゲインＫｐＳ３を乗じた値（Ｖｏｘｓｒｅｆ−Ｖｏｘｓ）・ＫｐＳ３を、「前記サブフィードバック量ＤＦｓｕｂの比例項ＳＰ」として算出する（図１８のステップ１８６０を参照。）。
下流側空燃比センサの出力値Ｖｏｘｓが、「前記第１閾値を含む所定範囲内の値（図８におけるＶｍａｘ−α１、好ましくはストイキ上限値ＶＨｉｌｉｍｉｔ）」と「前記第２閾値を含む所定範囲内の値（図９におけるＶｍｉｎ＋α２、好ましくはストイキ下限値ＶＬｏｌｉｍｉｔ）」との間にある場合、酸素吸蔵量ＯＳＡは適量に近いと考えることができる。即ち、この場合、酸素吸蔵量ＯＳＡは、明らかに最大酸素吸蔵量Ｃｍａｘの近傍ではなく、且つ、明らかに「０」の近傍でもない。よって、下流側空燃比センサの出力値Ｖｏｘｓが第１閾値と第２閾値との間にある場合、出力値Ｖｏｘｓを「前記第１閾値と前記第２閾値との間に設定される目標値（例えば、中央値Ｖｍｉｄ）」に近づけるためのサブフィードバック量の比例項ＳＰを大きくする必要性は小さい。
これに対し、下流側空燃比センサの出力値Ｖｏｘｓが前記第１閾値を含む所定範囲内の値以上である場合、酸素吸蔵量ＯＳＡは「０」に近いので、触媒流入ガス要求空燃比は理論空燃比よりもリーン側の空燃比である。この場合、従来装置は、「下流側空燃比センサの出力値Ｖｏｘｓと中央値Ｖｍｉｄに設定された目標値Ｖｏｘｓｒｅｆとの差（Ｖｏｘｓｒｅｆ−Ｖｏｘｓ）」に「所定のゲイン」を乗じることにより「サブフィードバック量の比例項ＳＰ」を算出していた。しかしながら、比例項ＳＰは出力値Ｖｏｘｓを第１閾値にまで低下させるように機能すれば充分であるので、従来装置のように比例項ＳＰを求めると、下流側空燃比センサの出力値Ｖｏｘｓが前記第１閾値以上である場合の比例項ＳＰが過大となる恐れがある。
そこで、第１制御装置は、上記（Ｂ１）に記載したように、下流側空燃比センサ５６の出力値Ｖｏｘｓが前記第１閾値以上である場合、（ＶＨｉｌｉｍｉｔ−Ｖｏｘｓ）・ＫｐＬと（Ｖｏｘｓｒｅｆ−ＶＨｉｌｉｍｉｔ）・ＫｐＳ１との和を「サブフィードバック量ＤＦｓｕｂの比例項ＳＰ」として算出する。これにより、リーン制御用ゲインＫｐＬと第１ゲインＫｐＳ１とを異なる値に設定することができる（例えば、ＫｐＬ＞ＫｐＳ１）。従って、「触媒流入ガスの空燃比を理論空燃比よりもリーン側に設定するための比例項ＳＰが過大となりすぎて、酸素吸蔵量ＯＳＡが逆に最大酸素吸蔵量Ｃｍａｘ近傍にまで一気に増大する事態」を回避することができる。
同様に、下流側空燃比センサの出力値Ｖｏｘｓが前記第２閾値を含む所定範囲内の値以下である場合、酸素吸蔵量ＯＳＡは最大酸素吸蔵量Ｃｍａｘに近いので、触媒流入ガス要求空燃比は理論空燃比よりもリッチ側の空燃比である。この場合においても、従来装置は、「下流側空燃比センサの出力値Ｖｏｘｓと中央値Ｖｍｉｄに設定された目標値Ｖｏｘｓｒｅｆとの差（Ｖｏｘｓｒｅｆ−Ｖｏｘｓ）」に「所定のゲイン」を乗じることにより「サブフィードバック量の比例項ＳＰ」を算出していた。しかしながら、比例項ＳＰは出力値Ｖｏｘｓを第２閾値にまで増加させるように機能すれば充分であるから、従来装置のように比例項を求めると、下流側空燃比センサの出力値Ｖｏｘｓが前記第２閾値以下である場合の比例項ＳＰが過大となる恐れがある。
そこで、第１制御装置は、上記（Ｂ２）に記載したように、下流側空燃比センサ５６の出力値Ｖｏｘｓが前記第２閾値以下である場合、（ＶＬｏｌｉｍｉｔ−Ｖｏｘｓ）・ＫｐＲと（Ｖｏｘｓｒｅｆ−ＶＬｏｌｉｍｉｔ）・ＫｐＳ２との和を「サブフィードバック量ＤＦｓｕｂの比例項ＳＰ」として算出する。これにより、リッチ制御用ゲインＫｐＲと第２ゲインＫｐＳ２とを異なる値に設定することができる（例えば、ＫｐＲ＞ＫｐＳ２）。従って、「触媒流入ガスの空燃比を理論空燃比よりもリッチ側に設定するための比例項が過大となりすぎて、酸素吸蔵量ＯＳＡが逆に０近傍にまで一気に減少する事態」を回避することができる。
そして、第１制御装置は、上記（Ｂ３）に記載したように、下流側空燃比センサの出力値Ｖｏｘｓが第１閾値と第２閾値との間にある場合、従来技術と同様、前記目標値と前記下流側空燃比センサの出力値との差に適切な第３ゲインＫｐＳ３を乗じた値（Ｖｏｘｓｒｅｆ−Ｖｏｘｓ）・ＫｐＳ３を「サブフィードバック量ＤＦｓｕｂの比例項ＳＰ」として算出する。以上により、酸素吸蔵量ＯＳＡを適切な範囲に維持するための比例項ＳＰが算出される。
なお、リーン制御用ゲインＫｐＬの絶対値と、リッチ制御用ゲインＫｐＲの絶対値と、は相違した値であってもよく、同じ値（閾値外偏差用ゲイン）であってもよい。第１ゲインＫｐＳ１と第２ゲインＫｐＳ２と第３ゲインＫｐＳ３とは、互いに相違する値であってもよく、同じ値（閾値内偏差用ゲイン）であってもよい。また、前述したように、第３ゲインＫｐＳ３は、第１ゲインＫｐＳ１及び第２ゲインＫｐＳ２よりも小さく、「０」であってもよい。
更に、第１制御装置の上記比例項算出手段は、
下流側空燃比センサ５６の出力値Ｖｏｘｓの変化速度の大きさ｜ΔＶｏｘｓ｜（又は、｜ＤＶｏｘｓ｜）が大きいほど、サブフィードバック量の比例項ＳＰの大きさを小さくする、ように構成されている（図２０のステップ２０３０、ステップ２０４０、ステップ２０６０及びステップ２０７０を参照。）。
前述したように、下流側空燃比センサの出力値Ｖｏｘｓが減少し且つその出力値Ｖｏｘｓの変化速度の大きさが大きいほど、酸素吸蔵量ＯＳＡは最大酸素吸蔵量Ｃｍａｘ近傍に接近していると考えることができる。従って、下流側空燃比センサの出力値Ｖｏｘｓが減少し且つその出力値Ｖｏｘｓの変化速度の大きさが大きいほど、サブフィードバック量ＤＦｓｕｂは基本燃料噴射量Ｆｂａｓｅをより大きく増量補正する値となることが望ましい。ところが、下流側空燃比センサの出力値Ｖｏｘｓが目標値Ｖｏｘｓｒｅｆよりも大きいと、サブフィードバック量ＤＦｓｕｂの比例項ＳＰは基本燃料噴射量Ｆｂａｓｅを減量補正する値となる。従って、第１制御装置のように、下流側空燃比センサ５６の出力値Ｖｏｘｓの出力値の変化速度の大きさが大きいほどサブフィードバック量ＤＦｓｕｂの比例項ＳＰを小さくすれば（「０」に設定することを含む。）、微分項ＳＤが効果的に作用するので、「酸素吸蔵量ＯＳＡが最大酸素吸蔵量Ｃｍａｘ近傍に到達してしまうことを回避する」ことができる。
同様に、下流側空燃比センサの出力値Ｖｏｘｓが増大し且つその出力値Ｖｏｘｓの変化速度の大きさが大きいほど、酸素吸蔵量ＯＳＡは「０」近傍に接近していると考えることができる。従って、下流側空燃比センサの出力値Ｖｏｘｓが増大し且つその出力値Ｖｏｘｓの変化速度の大きさが大きいほど、サブフィードバック量ＤＦｓｕｂは基本燃料噴射量Ｆｂａｓｅをより大きく減量補正する値となることが望ましい。ところが、下流側空燃比センサの出力値Ｖｏｘｓが目標値Ｖｏｘｓｒｅｆよりも小さいと、比例項ＳＰは基本燃料噴射量Ｆｂａｓｅを増量補正する値となる。従って、第１制御装置のように、下流側空燃比センサ５６の出力値Ｖｏｘｓの出力値の変化速度の大きさが大きいほどサブフィードバック量ＤＦｓｕｂの比例項ＳＰを小さくすれば（「０」に設定することを含む。）、微分項ＳＤが効果的に作用するので、「酸素吸蔵量ＯＳＡが「０」近傍に到達してしまうことを回避する」ことができる。
また、第１制御装置の空燃比制御手段は、
前記機関に吸入される吸入空気量を取得するとともに同取得された吸入空気量に基づいて前記機関に供給される混合気の空燃比を理論空燃比に一致させるための基本燃料噴射量Ｆｂａｓｅを算出する基本燃料噴射量算出手段（図１２のステップ１２０５、ステップ１２４０及びステップ１２４５を参照。）と、
機関１０の排気通路であって触媒４３よりも上流に配設されるとともにその配設部位を流れるガスの空燃比に応じた出力値Ｖａｂｙｆｓを出力する上流側空燃比センサ５５と、
前記上流側空燃比センサの出力値Ｖａｂｙｆｓにより表される上流側空燃比ａｂｙｆｓが理論空燃比に一致するように「基本燃料噴射量Ｆｂａｓｅを補正するメインフィードバック量ＤＦｍａｉｎ」を算出するメインフィードバック量算出手段（図１４のルーチンを参照。）と、
基本燃料噴射量Ｆｂａｓｅを補正する上記サブフィードバック量ＤＦｓｕｂを算出するサブフィードバック量算出手段（図１７のルーチン及び図１８のルーチンを参照。）と、
基本燃料噴射量Ｆｂａｓｅを「メインフィードバック量ＤＦｍａｉｎ及びサブフィードバック量ＤＦｓｕｂからなる空燃比補正量（ＤＦｍａｉｎ＋ＤＦｓｕｂ）」により補正して得られる量Ｆｉの燃料を機関１０に噴射供給する燃料噴射手段（図１２のステップ１２５０、ステップ１２６５及び燃料噴射弁２５等を参照。）と、
を備える。
更に、前記メインフィードバック量算出手段は、
（Ｅ１）下流側空燃比センサ５６の出力値Ｖｏｘｓが減少している場合、メインフィードバック量ＤＦｍａｉｎが「基本燃料噴射量Ｆｂａｓｅを減少させる値（即ち、負の値）」になっているとき、そのメインフィードバック量ＤＦｍａｉｎの大きさを小さくするか又は０に設定するように構成されている（図１５のステップ１５１０、ステップ１５２０、図１６のステップ１６１０、ステップ１６４０、及び、ステップ１６５０を参照。）。
更に、前記メインフィードバック量算出手段は、
（Ｅ２）下流側空燃比センサ５６の出力値Ｖｏｘｓが増大している場合、メインフィードバック量ＤＦｍａｉｎが「基本燃料噴射量Ｆｂａｓｅを増大させる値（即ち、正の値）」になっているとき、そのメインフィードバック量ＤＦｍａｉｎの大きさを小さくするか又は０に設定するように構成されている（図１５のステップ１５１０、ステップ１５４０、ステップ１５６０、図１６のステップ１６１０、ステップ１６２０、及び、ステップ１６３０を参照。）。
このように、第１制御装置は、機関１０に供給される混合気の空燃比の過渡的（一時的）な乱れを速やかに補償するために、上流側空燃比センサの出力値Ｖａｂｙｆｓに基づいて算出されるメインフィードバック量ＤＦｍａｉｎによるメインフィードバック制御を、下流側空燃比センサの出力値Ｖｏｘｓに基づいて算出されるサブフィードバック量ＤＦｓｕｂによるサブフィードバック制御とともに実行する。
しかしながら、下流側空燃比センサ５６の出力値Ｖｏｘｓが減少している場合、酸素吸蔵量ＯＳＡはもはや「０」近傍ではなく最大酸素吸蔵量Ｃｍａｘ近傍に向って変化しているので、触媒流入ガス要求空燃比は「理論空燃比よりもリッチ側の空燃比」である。従って、このとき、基本燃料噴射量Ｆｂａｓｅが減少（減量補正）されることは触媒４３にとって好ましくない。しかしながら、例えば、空燃比の過渡的変動に起因してメインフィードバック量ＤＦｍａｉｎが「基本燃料噴射量Ｆｂａｓｅを減量補正するような値」になった場合、空燃比補正量（ＤＦｍａｉｎ＋ＤＦｓｕｂ）が基本燃料噴射量Ｆｂａｓｅを減量補正する値になることがある。
そこで、第１制御装置は、上記（Ｅ１）に記載したように、下流側空燃比センサ５６の出力値Ｖｏｘｓが減少している場合（即ち、触媒流入ガス要求空燃比が「理論空燃比よりもリッチ側の空燃比」である場合）、メインフィードバック量ＤＦｍａｉｎが「基本燃料噴射量Ｆｂａｓｅを減少させる値」になっているのであれば、そのメインフィードバック量ＤＦｍａｉｎを小さくする（メインフィードバック量ＤＦｍａｉｎの大きさを小さくする）か又は０に設定する。
これによれば、「メインフィードバック量ＤＦｍａｉｎが基本燃料噴射量Ｆｂａｓｅを過度に減少させてしまい、その結果、触媒流入ガス要求空燃比と相違する空燃比（この場合、リーン空燃比）のガスが触媒に流入すること」を回避することができる。
同様に、下流側空燃比センサ５６の出力値Ｖｏｘｓが増大している場合、酸素吸蔵量ＯＳＡはもはや最大酸素吸蔵量Ｃｍａｘ近傍ではなく、寧ろ「０」に近づいている。従って、触媒流入ガス要求空燃比は「理論空燃比よりもリーン側の空燃比」である。このとき、基本燃料噴射量Ｆｂａｓｅが増大（増量補正）されることは触媒４３にとって好ましくない。しかしながら、例えば、「機関に供給される混合気の空燃比」の過渡的変動に起因してメインフィードバック量ＤＦｍａｉｎが「基本燃料噴射量Ｆｂａｓｅを大きく増量補正するような値」になった場合、空燃比補正量（ＤＦｍａｉｎ＋ＤＦｓｕｂ）が「基本燃料噴射量Ｆｂａｓｅを増量補正するような値」になることがある。
そこで、第１制御装置は、上記（Ｅ２）に記載したように、下流側空燃比センサ５６の出力値Ｖｏｘｓが増大している場合（即ち、触媒流入ガス要求空燃比が「理論空燃比よりもリーン側の空燃比」である場合）、メインフィードバック量ＤＦｍａｉｎが「基本燃料噴射量Ｆｂａｓｅを増大させる値」になっているのであれば、そのメインフィードバック量ＤＦｍａｉｎを小さくする（メインフィードバック量ＤＦｍａｉｎの大きさを小さくする）か又は０に設定する。
これによれば、「メインフィードバック量ＤＦｍａｉｎが基本燃料噴射量Ｆｂａｓｅを過度に増大させてしまい、その結果、触媒流入ガス要求空燃比と相違する空燃比（この場合、理論空燃比よりもリッチ側の空燃比）のガスが触媒に流入すること」を回避することができる。
更に、第１制御装置の空燃比制御手段は、
下流側空燃比センサ５６の出力値Ｖｏｘｓが最大出力値Ｖｍａｘとなっているときに「触媒流入ガスの空燃比」を「理論空燃比よりもリーン側の所定リーン空燃比」に制御し、（図２４のステップ２４３０及びステップ２４４０、図１２のステップ１２２０、ステップ１２２５乃至ステップ１２５０を参照。）、その状態において下流側空燃比センサ５６の出力値Ｖｏｘｓが「最小出力値Ｖｍｉｎ」又は「最小出力値Ｖｍｉｎに所定値δ２を加えた値」に到達するまでの期間において、「下流側空燃比センサ５６の出力値Ｖｏｘｓの変化速度の大きさ｜ΔＶｏｘｓ｜が最小となった時点」における下流側空燃比センサ５６の出力値Ｖｏｘｓを「前記第１閾値（ストイキ上限値ＶＨｉｌｉｍｉｔ）」として取得する「ストイキ上限値取得手段」を含んでいる（図２５のルーチン、特に、ステップ２５３０乃至ステップ２５５０を参照。）。
これにより、触媒４３が「触媒流入ガスに含まれる酸素を急激に吸蔵している状態」であるときの、下流側空燃比センサ５６の出力値Ｖｏｘｓを「前記第１閾値（ＶＨｉｌｉｍｉｔ）」として取得することができる。
なお、第１制御装置は、下流側空燃比センサ５６の温度を検出するか或いは排ガス温度等から推定し、この下流側空燃比センサ５６の温度と、予め求めておいた「下流側空燃比センサ５６の温度と第１閾値（ＶＨｉｌｉｍｉｔ）との関係」と、から、第１閾値（ＶＨｉｌｉｍｉｔ）を推定してもよい。
加えて、第１制御装置の空燃比制御手段は、
下流側空燃比センサ５６の出力値Ｖｏｘｓが最小出力値Ｖｍｉｎとなっているときに「触媒流入ガスの空燃比」を「理論空燃比よりもリッチ側の所定リッチ空燃比」に制御し（図２２のステップ２２３０及びステップ２２４０、図１２のステップ１２１０、ステップ１２１５、及びステップ１２３０乃至ステップ１２５０を参照。）、その状態において下流側空燃比センサ５６の出力値Ｖｏｘｓが「最大出力値Ｖｍａｘ」又は「最大出力値Ｖｍａｘから所定値δ１を減じた値」に到達するまでの期間において、「下流側空燃比センサ５６の出力値Ｖｏｘｓの変化速度の大きさ｜ΔＶｏｘｓ｜が最小となった時点」における「下流側空燃比センサ５６の出力値Ｖｏｘｓ」を「前記第２閾値（ストイキ下限値ＶＬｏｌｉｍｉｔ）として取得する「ストイキ下限値取得手段」を含んでいる（図２３のルーチン、特に、ステップ２３３０乃至ステップ２３５０を参照。）。
これにより、触媒４３が「触媒流入ガスに含まれる酸素を急激に放出している状態」であるときの、下流側空燃比センサ５６の出力値Ｖｏｘｓを「前記第２閾値（ＶＬｏｌｉｍｉｔ）」として取得することができる。
なお、第１制御装置は、下流側空燃比センサ５６の温度を検出するか或いは排ガス温度等から推定し、この下流側空燃比センサ５６の温度と、予め求めておいた「下流側空燃比センサ５６の温度と第２閾値（ＶＬｏｌｉｍｉｔ）との関係」と、から、第２閾値（ＶＬｏｌｉｍｉｔ）を推定してもよい。
２．第２実施形態
次に、本発明の第２実施形態に係る内燃機関の空燃比制御装置（以下、「第２制御装置」とも称呼する。）について説明する。第２制御装置は、触媒の状態が、「酸素不足状態（触媒リッチ状態）」、「酸素過剰状態（触媒リーン状態）」及び「酸素不足状態でもなく且つ酸素過剰状態でもない通常状態」のうちのどの状態であるかに応じて下流側目標値Ｖｏｘｓｒｅｆを変更する点のみにおいて、第１制御装置と相違している。従って、以下、この相違点を中心として説明を加える。
＜触媒状態の判定＞
第２制御装置のＣＰＵは、第１制御装置のＣＰＵが実行するルーチンに加え、更に、図２６にフローチャートにより示した「触媒リッチ・リーン状態判定ルーチン」と、図２７にフローチャートにより示した下流側目標値変更ルーチン」を、所定時間が経過する毎に実行するようになっている。
従って、所定のタイミングになると、ＣＰＵは図２６のステップ２６００から処理を開始してステップ２６１０に進み、下流側空燃比センサ５６の出力値Ｖｏｘｓが「ストイキ上限値ＶＨｉｌｉｍｉｔに「０以上の微小な値γ１」を加えた値（ＶＨｉｌｉｍｉｔ＋γ１）」以上であるか否かを判定する。値（ＸＨｉｌｉｍｉｔ＋γ１）は最大出力値Ｖｍａｘ以下の値であり且つストイキ上限値ＶＨｉｌｉｍｉｔ以上の値である。よって、値（ＶＨｉｌｉｍｉｔ＋γ１）は、最大出力値Ｖｍａｘであってもよく、ストイキ上限値ＶＨｉｌｉｍｉｔであってもよい。なお、本例において、値（ＶＨｉｌｉｍｉｔ＋γ１）は、前記第１閾値を含む所定範囲内の値（Ｖｍａｘ−α１）に設定されている。
触媒４３の酸素吸蔵量ＯＳＡが実質的に「０」であると（即ち、触媒４３の状態が酸素不足状態であると）、触媒流出ガスに酸素は含まれなくなるので、出力値Ｖｏｘｓは値（ＶＨｉｌｉｍｉｔ＋γ１）以上となる。従って、出力値Ｖｏｘｓが値（ＶＨｉｌｉｍｉｔ＋γ１）以上であるとき、ＣＰＵはステップ２６１０にて「Ｙｅｓ」と判定してステップ２６２０に進み、触媒リッチ状態フラグ（酸素不足状態フラグ）ＸＣＣＲＯｒｉｃｈの値を「１」に設定する。その後、ＣＰＵはステップ２６４０に進む。これに対し、出力値Ｖｏｘｓが値（ＶＨｉｌｉｍｉｔ＋γ１）より小さいとき、ＣＰＵはステップ２６１０にて「Ｎｏ」と判定してステップ２６３０に進み、触媒リッチ状態フラグＸＣＣＲＯｒｉｃｈの値を「０」に設定する。その後、ＣＰＵはステップ２６４０に進む。
ＣＰＵはステップ２６４０に進んだとき、下流側空燃比センサ５６の出力値Ｖｏｘｓが「ストイキ下限値ＶＬｏｌｉｍｉｔから「０以上の微小な値γ２」を減じた値（ＶＬｏｌｉｍｉｔ−γ２）以下であるか否かを判定する。値（ＶＬｏｌｉｍｉｔ−γ２）は最小出力値Ｖｍｉｎ以上の値であり且つストイキ下限値ＶＬｏｌｉｍｉｔ以下の値である。よって、値（ＶＬｏｌｉｍｉｔ−γ２）は、最小出力値Ｖｍｉｎであってもよく、ストイキ下限値ＶＬｏｌｉｍｉｔであってもよい。なお、本例において、値（ＶＬｏｌｉｍｉｔ−γ２）は、前記第２閾値を含む所定範囲内の値（Ｖｍｉｎ＋α２）に設定されている。
触媒４３の酸素吸蔵量ＯＳＡが実質的に最大酸素吸蔵量Ｃｍａｘであると（即ち、触媒４３の状態が酸素過剰状態であると）、触媒流出ガスに未燃物は含まれなくなるので、出力値Ｖｏｘｓは値（ＶＬｏｌｉｍｉｔ−γ２）以下となる。従って、出力値Ｖｏｘｓが値（ＶＬｏｌｉｍｉｔ−γ２）以下であるとき、ＣＰＵはステップ２６４０にて「Ｙｅｓ」と判定してステップ２６５０に進み、触媒リーン状態フラグ（酸素過剰状態フラグ）ＸＣＣＲＯｌｅａｎの値を「１」に設定する。その後、ＣＰＵはステップ２６９５に進んで本ルーチンを一旦終了する。これに対し、出力値Ｖｏｘｓが値（ＶＬｏｌｉｍｉｔ−γ２）より大きいとき、ＣＰＵはステップ２６４０にて「Ｎｏ」と判定してステップ２６６０に進み、触媒リーン状態フラグＸＣＣＲＯｌｅａｎの値を「０」に設定する。その後、ＣＰＵはステップ２６９５に進んで本ルーチンを一旦終了する。
以上のように、ＣＰＵは下流側空燃比センサ５６の出力値Ｖｏｘｓ（変化速度の大きさ｜ΔＶｏｘｓ｜ではなく、出力値Ｖｏｘｓそのものの大きさ）に基づいて触媒４３の状態を判定し、触媒リッチ状態フラグＸＣＣＲＯｒｉｃｈの値及び触媒リーン状態フラグＸＣＣＲＯｌｅａｎの値を変更する。
＜下流側目標値（サブフィードバック量の比例項の目標値）の変更＞
前述したように、ＣＰＵは図２７に示したルーチンを所定時間が経過する毎に実行するようになっている。従って、所定のタイミングになると、ＣＰＵはステップ２７００から処理を開始してステップ２７１０に進み、上述したサブフィードバック制御条件が成立しているか否かを判定する（図１７のステップ１７１０を参照。）。このとき、サブフィードバック制御条件が成立していなければ、ＣＰＵはステップ２７１０にて「Ｎｏ」と判定し、ステップ２７９５に直接進んで本ルーチンを一旦終了する。
これに対し、サブフィードバック制御条件が成立していると、ＣＰＵはステップ２７１０にて「Ｙｅｓ」と判定してステップ２７２０に進み、触媒リッチ状態フラグＸＣＣＲＯｒｉｃｈの値が「１」であるか否かを判定する。
このとき、触媒リッチ状態フラグＸＣＣＲＯｒｉｃｈの値が「１」であると、ＣＰＵはステップ２７２０にて「Ｙｅｓ」と判定してステップ２７３０に進み、下流側目標値Ｖｏｘｓｒｅｆを「ストイキ上限値ＶＨｉｌｉｍｉｔから正の所定値β１を減じた値（ＶＨｉｌｉｍｉｔ−β１）」に設定する。但し、所定値β１は、値（ＶＨｉｌｉｍｉｔ−β１）が常に中央値Ｖｍｉｄよりも大きくなるように、微小な値に設定されている。その後、ＣＰＵはステップ２７９５に進み、本ルーチンを一旦終了する。
このように、触媒リッチ状態フラグＸＣＣＲＯｒｉｃｈの値が「１」であるとき、即ち、触媒４３の酸素吸蔵量ＯＳＡが実質的に「０」であって、触媒４３の状態が酸素不足状態であるとき、下流側目標値Ｖｏｘｓｒｅｆはストイキ上限値ＶＨｉｌｉｍｉｔよりも僅かに小さく且つ中央値Ｖｍｉｄよりも大きい値（ＶＨｉｌｉｍｉｔ−β１）に設定される（図２８の時刻ｔ１〜ｔ２を参照。）。値（ＶＨｉｌｉｍｉｔ−β１）は第１目標値とも称呼される。
一方、ＣＰＵがステップ２７２０に進んだとき、触媒リッチ状態フラグＸＣＣＲＯｒｉｃｈの値が「０」であると、ＣＰＵはステップ２７２０にて「Ｎｏ」と判定してステップ２７４０に進み、触媒リーン状態フラグＸＣＣＲＯｌｅａｎの値が「１」であるか否かを判定する。
このとき、触媒リーン状態フラグＸＣＣＲＯｌｅａｎの値が「１」であると、ＣＰＵはステップ２７４０にて「Ｙｅｓ」と判定してステップ２７５０に進み、下流側目標値Ｖｏｘｓｒｅｆを「ストイキ下限値ＶＬｏｌｉｍｉｔに正の所定値β２を加えた値（ＶＬｏｌｉｍｉｔ＋β２）」に設定する。但し、所定値β２は、値（ＶＬｏｌｉｍｉｔ＋β２）が常に中央値Ｖｍｉｄよりも小さくなるように、微小な値に設定されている。その後、ＣＰＵはステップ２７９５に進み、本ルーチンを一旦終了する。値（ＶＬｏｌｉｍｉｔ＋β２）は第２目標値とも称呼される。
このように、触媒リーン状態フラグＸＣＣＲＯｌｅａｎの値が「１」であるとき、即ち、触媒４３の酸素吸蔵量ＯＳＡが実質的に最大酸素吸蔵量Ｃｍａｘであって、触媒４３の状態が酸素過剰状態であるとき、下流側目標値Ｖｏｘｓｒｅｆはストイキ下限値ＶＬｏｌｉｍｉｔよりも僅かに大きく且つ中央値Ｖｍｉｄよりも小さい値（ＶＬｏｌｉｍｉｔ＋β２）に設定される（図２９の時刻ｔ１〜ｔ２を参照。）。
これに対し、ＣＰＵがステップ２７４０に進んだとき、触媒リーン状態フラグＸＣＣＲＯｌｅａｎの値が「０」であると、ＣＰＵはそのステップ２７４０にて「Ｎｏ」と判定してステップ２７６０に進み、下流側目標値Ｖｏｘｓｒｅｆを「第１目標値と第２目標値との間の値である第３目標値（本例において、中央値Ｖｍｉｄ）」に設定する。その後、ＣＰＵはステップ２７９５に進んで本ルーチンを一旦終了する。
このように、触媒リッチ状態フラグＸＣＣＲＯｒｉｃｈの値及び触媒リーン状態フラグＸＣＣＲＯｌｅａｎの値が共に「０」であると、下流側目標値Ｖｏｘｓｒｅｆは中央値Ｖｍｉｄに設定される（図２８の時刻ｔ１以前及び時刻ｔ２以降、並びに、図２９の時刻ｔ１以前及び時刻ｔ２を参照。）。
以上、説明したように、第２制御装置は、サブフィードバック量ＤＦｓｕｂの比例項ＳＰを算出する比例項算出手段を備える（図１８、図２６及び図２７のルーチンを参照。）。
そして、この比例項算出手段は、
（Ｃ１）下流側空燃比センサ５６の出力値Ｖｏｘｓが第１閾値を含む所定範囲内の値（ＶＨｉｌｉｍｉｔ＋γ１、第３閾値とも言う。）よりも大きい場合、目標値Ｖｏｘｓｒｅｆを「前記第１閾値と中央値Ｖｍｉｄとの間の値（＝第１目標値、ＶＨｉｌｉｍｉｔ−β１）」に設定する（図２６のステップ２６１０、ステップ２６２０、図２７のステップ２７２０及びステップ２７３０を参照。）。
これによれば、下流側空燃比センサ５６の出力値Ｖｏｘｓが第１閾値を含む所定範囲内の値（ＶＨｉｌｉｍｉｔ＋γ１）よりも大きい場合、目標値Ｖｏｘｓｒｅｆが「第１閾値と中央値との間の値、即ち、第１目標値（ＶＨｉｌｉｍｉｔ−β１）」に設定されるので、「第１閾値と目標値（第１目標値）との差の大きさ（即ち、上記第１ゲインＫｐＳ１が乗じられる偏差（Ｖｏｘｓｒｅｆ−ＶＨｉｌｉｍｉｔ）の大きさ」が過大とならない。従って、比例項ＳＰを「下流側空燃比センサ５６の出力値Ｖｏｘｓを第１閾値（実際には、ストイキ上限値ＶＨｉｌｉｍｉｔ）以下に移行させるために必要ではあるが過大ではない値」に設定することができる。
更に、この比例項算出手段は、
（Ｃ２）下流側空燃比センサ５６の出力値Ｖｏｘｓが第２閾値を含む所定範囲内の値（ＶＬｏｌｉｍｉｔ−γ２、第４閾値とも言う。）よりも小さい場合、目標値Ｖｏｘｓｒｅｆを「前記第２閾値と中央値Ｖｍｉｄとの間の値である第２目標値（ＶＬｏｌｉｍｉｔ＋β２）」に設定する（図２６のステップ２６４０、ステップ２６５０、図２７のステップ２７４０及びステップ２７５０を参照。）。
これによれば、下流側空燃比センサ５６の出力値Ｖｏｘｓが第２閾値を含む所定範囲内の値（ＶＬｏｌｉｍｉｔ−γ２）よりも小さい場合、目標値Ｖｏｘｓｒｅｆが「第２閾値と中央値との間の値、即ち、第２目標値（ＶＬｏｌｉｍｉｔ＋β２）」に設定されるので、「第２閾値と目標値（第２目標値）との差の大きさ（即ち、上記第２ゲインＫｐＳ２が乗じられる偏差（Ｖｏｘｓｒｅｆ−ＶＬｏｌｉｍｉｔ）の大きさ」が過大とならない。従って、比例項ＳＰを「下流側空燃比センサ５６の出力値Ｖｏｘｓを第２閾値（実際には、ストイキ下限値ＶＬｏｌｉｍｉｔ）以上に移行させるために必要ではあるが過大ではない値」に設定することができる。
更に、この比例項算出手段は、
（Ｃ３）下流側空燃比センサ５６の出力値Ｖｏｘｓが第１閾値を含む所定範囲内の値（ＶＨｉｌｉｍｉｔ＋γ１）と前記第２閾値を含む所定範囲内の値（ＶＬｏｌｉｍｉｔ−γ２）との間にある場合、目標値Ｖｏｘｓｒｅｆを「前記第１目標値と前記第２目標値との間の値」である「第３目標値（本例においては中央値Ｖｍｉｄ）」に設定する（ステップ２７２０、ステップ２７４０及びステップ２７６０を参照。）。
これによれば、下流側空燃比センサ５６の出力値Ｖｏｘｓが前記第１閾値を含む所定範囲内の値と前記第２閾値を含む所定範囲内の値との間にある場合、目標値Ｖｏｘｓｒｅｆが中央値Ｖｍｉｄに設定されるので、比例項ＳＰを「下流側空燃比センサ５６の出力値Ｖｏｘｓを前記第１閾値と前記第２閾値との間に維持するために適切な値」に設定することができる。
３．第３実施形態
次に、本発明の第３実施形態に係る内燃機関の空燃比制御装置（以下、「第３制御装置」とも称呼する。）について説明する。第３制御装置は、触媒４３の状態が「酸素不足状態」である場合にメインフィードバック量ＤＦｍａｉｎが基本燃料噴射量Ｆｂａｓｅを増大させる値であるときメインフィードバック量ＤＦｍａｉｎを０に設定する点、及び、触媒４３の状態が「酸素過剰状態」である場合にメインフィードバック量ＤＦｍａｉｎが基本燃料噴射量Ｆｂａｓｅを減少させる値であるときメインフィードバック量ＤＦｍａｉｎを０に設定する点、において第１制御装置又は第２制御装置と相違している。従って、以下、この相違点を中心として説明を加える。
＜触媒状態の判定＞
第３制御装置のＣＰＵは、第２制御装置のＣＰＵと同様、第１制御装置のＣＰＵが実行するルーチンに加え、更に、図２６にフローチャートにより示した「触媒リッチ・リーン状態判定ルーチン」を、所定時間が経過する毎に実行するようになっている。従って、第３制御装置のＣＰＵは、下流側空燃比センサ５６の出力値Ｖｏｘｓが第１閾値（ＶＨｉｌｉｍｉ＋γ１）より大きいとき、触媒４３の状態が酸素不足状態であると判定し、触媒リッチ状態フラグＸＣＣＲＯｒｉｃｈの値を「１」に設定する。更に、第３制御装置のＣＰＵは、下流側空燃比センサ５６の出力値Ｖｏｘｓが第２閾値（ＶＬｏｌｉｍｉｔ−γ２）より小さいとき、触媒４３の状態が酸素過剰状態であると判定し、触媒リーン状態フラグＸＣＣＲＯｌｅａｎの値を「１」に設定する。
＜メインフィードバック量ＤＦｍａｉｎの補正（制限）＞
更に、第３制御装置のＣＰＵは、図３０にフローチャートにより示した「メインフィードバック量の補正ルーチン」を、所定時間が経過する毎に実行するようになっている。
従って、所定のタイミングになると、ＣＰＵは図３０のステップ３０００から処理を開始してステップ３０１０に進み、メインフィードバック量ＤＦｍａｉｎが「０」より大きいか否かを判定する。換言すると、ＣＰＵは、ステップ３０１０にてメインフィードバック量ＤＦｍａｉｎが「触媒流入ガスの空燃比（＝機関の空燃比）をリッチ空燃比に移行させる値」となっているか否かを判定する。
メインフィードバック量ＤＦｍａｉｎが「０」より大きいと、ＣＰＵはステップ３０１０にて「Ｙｅｓ」と判定してステップ３０２０に進み、触媒リッチ状態フラグＸＣＣＲＯｒｉｃｈの値が「１」であるか否かを判定する。
このとき、触媒リッチ状態フラグＸＣＣＲＯｒｉｃｈの値が「１」であると、ＣＰＵはステップ３０２０にて「Ｙｅｓ」と判定してステップ３０３０に進み、メインフィードバック量ＤＦｍａｉｎを「０」に設定する。これにより、メインフィードバック量ＤＦｍａｉｎは基本燃料噴射量Ｆｂａｓｅを増量補正も減量補正も行わない値になる。その後、ＣＰＵはステップ３０９５に進んで本ルーチンを一旦終了する。
一方、ＣＰＵがステップ３０２０に進んだとき、触媒リッチ状態フラグＸＣＣＲＯｒｉｃｈの値が「０」であると、ＣＰＵはステップ３０２０にて「Ｎｏ」と判定し、ステップ３０９５に直接進んで本ルーチンを一旦終了する。
これに対し、ＣＰＵがステップ３０１０に進んだとき、メインフィードバック量ＤＦｍａｉｎが「０」以下であると、ＣＰＵはステップ３０１０にて「Ｎｏ」と判定してステップ３０４０に進み、触媒リーン状態フラグＸＣＣＲＯｌｅａｎの値が「１」であるか否かを判定する。
このとき、触媒リーン状態フラグＸＣＣＲＯｌｅａｎの値が「１」であると、ＣＰＵはステップ３０４０にて「Ｙｅｓ」と判定してステップ３０５０に進み、メインフィードバック量ＤＦｍａｉｎを「０」に設定する。これにより、メインフィードバック量ＤＦｍａｉｎは基本燃料噴射量Ｆｂａｓｅを増量補正も減量補正も行わない値になる。その後、ＣＰＵはステップ３０９５に進んで本ルーチンを一旦終了する。
一方、ＣＰＵがステップ３０４０に進んだとき、触媒リーン状態フラグＸＣＣＲＯｌｅａｎの値が「０」であると、ＣＰＵはステップ３０４０にて「Ｎｏ」と判定し、ステップ３０９５に直接進んで本ルーチンを一旦終了する。
以上、説明したように、第３制御装置のメインフィードバック量算出手段は、
下流側空燃比センサ５６の出力値Ｖｏｘｓが第１閾値を含む所定範囲内の値（ＶＨｉｌｉｍｉｔ＋γ１）よりも大きい場合にメインフィードバック量ＤＦｍａｉｎが基本燃料噴射量Ｆｂａｓｅを増大させる値であるときメインフィードバック量ＤＦｍａｉｎを０に設定し（図３０のステップ３０１０乃至ステップ３０３０を参照。）、
下流側空燃比センサ５６の出力値Ｖｏｘｓが第２閾値を含む所定範囲内の値（ＶＬｏｌｉｍｉｔ−γ２）よりも小さい場合にメインフィードバック量ＤＦｍａｉｎが基本燃料噴射量Ｆｂａｓｅを減少させる値であるときメインフィードバック量ＤＦｍａｉｎを０に設定する（図３０のステップ３０１０、ステップ３０４０及びステップ３０５０を参照。）、
ように構成されている。
前述したように、下流側空燃比センサ５６の出力値Ｖｏｘｓが第１閾値を含む所定範囲内の値（ＶＨｉｌｉｍｉｔ＋γ１）よりも大きい場合、触媒４３の酸素吸蔵量ＯＳＡは「０」又は実質的に「０」である。従って、触媒流入ガス要求空燃比は理論空燃比よりもリーン側であるから、メインフィードバック量ＤＦｍａｉｎが基本燃料噴射量Ｆｂａｓｅを増量補正することは触媒４３にとって好ましくない。そこで、第３制御装置は、そのような場合、メインフィードバック量ＤＦｍａｉｎを０に設定する。その結果、「メインフィードバック量ＤＦｍａｉｎが触媒４３にとって不都合な空燃比のガスを供給するように作用すること」を回避することができる。
同様に、下流側空燃比センサ５６の出力値Ｖｏｘｓが第２閾値を含む所定範囲内の値（ＶＬｏｌｉｍｉｔ−γ２）よりも小さい場合、触媒４３の酸素吸蔵量ＯＳＡは最大酸素吸蔵量Ｃｍａｘ又は実質的に最大酸素吸蔵量Ｃｍａｘである。従って、触媒流入ガス要求空燃比は理論空燃比よりもリッチ側であるから、メインフィードバック量ＤＦｍａｉｎが基本燃料噴射量Ｆｂａｓｅを減量補正することは触媒４３にとって好ましくない。そこで、第３制御装置は、そのような場合、メインフィードバック量ＤＦｍａｉｎを０に設定する。その結果、「メインフィードバック量ＤＦｍａｉｎが触媒４３にとって不都合な空燃比のガスを供給するように作用すること」を回避することができる。
４．第４実施形態
次に、本発明の第４実施形態に係る内燃機関の空燃比制御装置（以下、「第４制御装置」とも称呼する。）について説明する。第４制御装置は、触媒被毒対策制御を行う点、において第１乃至第３制御装置と相違している。従って、以下、この相違点を中心として説明を加える。
触媒被毒（触媒のリッチ被毒及び触媒のリーン被毒）が発生すると、最大酸素吸蔵量の低下し、それに伴って触媒の排気浄化効率が低下する。
触媒４３のリッチ被毒は、触媒流入ガスの空燃比が理論空燃比よりもリッチ側の空燃比である状態が長時間継続したとき、触媒４３が担持する貴金属の周囲にＨＣが付着することによって発生する。このリッチ被毒は触媒４３の浄化効率の低下をもたらす。リッチ被毒は、理論空燃比に対して大きくリーン側に偏移した空燃比のガスを触媒４３に所定時間に渡って供給することにより解消することができる。
触媒４３のリーン被毒は、触媒流入ガスの空燃比が理論空燃比よりもリーン側の空燃比である状態が長時間継続したとき、触媒４３が担持する貴金属が酸化して表面積が低下することによって発生する。このリーン被毒も触媒４３の浄化効率の低下をもたらす。リーン被毒は、理論空燃比に対して大きくリッチ側に偏移した空燃比のガスを触媒に所定時間に渡って供給することにより解消することができる。
＜触媒被毒対策制御（触媒機能回復制御）＞
実際には、第４制御装置のＣＰＵは、図３１にフローチャートにより示した「触媒被毒対策制御開始ルーチン」と、図３２にフローチャートにより示した「触媒被毒対策制御終了ルーチン」と、を所定時間が経過する毎に実行するようになっている。
従って、所定のタイミングになると、ＣＰＵは図３１のステップ３１００から処理を開始してステップ３１０５に進み、上述したサブフィードバック制御条件が成立しているか否かを判定する。なお、このステップ３１０５にて判定されるサブフィードバック制御条件は、図１７のステップ１７１０における条件（上記（Ｂ１）〜（Ｂ３）に記載した条件）に加え、後述する「強制リーンフラグＸＥＮｌｅａｎの値及び強制リッチフラグＸＥＮｒｉｃｈの値が、何れも「１」でないこと」という条件が追加されている。この強制リーンフラグＸＥＮｌｅａｎ及び強制リッチフラグＸＥＮｒｉｃｈは、何れも上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
いま、サブフィードバック制御条件が成立していないと仮定する。この場合、ＣＰＵはステップ３１０５にて「Ｎｏ」と判定し、ステップ３１９５に直接進んで本ルーチンを一旦終了する。
これに対し、サブフィードバック制御条件が成立すると、ＣＰＵはステップ３１０５にて「Ｙｅｓ」と判定してステップ３１１０に進み、メインフィードバック量ＤＦｍａｉｎとサブフィードバック量ＤＦｓｕｂとの和である空燃比補正量（ＤＦｍａｉｎ＋ＤＦｓｕｂ）が「０」以上であるか否かを判定する。換言すると、ＣＰＵはステップ３１１０にて、空燃比補正量（ＤＦｍａｉｎ＋ＤＦｓｕｂ）が基本燃料噴射量Ｆｂａｓｅを増加させる値、即ち、触媒流入ガスの空燃比（＝機関の空燃比）をリッチ空燃比に移行させる値となっているか否かを判定する。
このとき、空燃比補正量（ＤＦｍａｉｎ＋ＤＦｓｕｂ）が「０」より小さいと、ＣＰＵはステップ３１１０にて「Ｎｏ」と判定してステップ３１４０に進み、増量補正量積算値ΣＲｉｃｈを「０」に設定する。その後、ＣＰＵはステップ３１４５以降の処理を実行する。なお、ステップ３１４５以降の処理については後述する。
いま、空燃比補正量（ＤＦｍａｉｎ＋ＤＦｓｕｂ）が「０」以上となっていると仮定して説明を続ける。この場合、ＣＰＵはステップ３１１０にて「Ｙｅｓ」と判定してステップ３１１５に進み、減量補正量積算値ΣＬｅａｎを「０」に設定する。
次に、ＣＰＵはステップ３１２０に進み、空燃比補正量（ＤＦｍａｉｎ＋ＤＦｓｕｂ）の積算値を「増量補正量積算値ΣＲｉｃｈ」として求める。即ち、ＣＰＵは、下記の（１４）式に従って、「現時点における増量補正量積算値ΣＲｉｃｈ」に「現時点における空燃比補正量（ＤＦｍａｉｎ＋ＤＦｓｕｂ）」を加えることにより、増量補正量積算値ΣＲｉｃｈを更新する。なお、（１４）式において、ΣＲｉｃｈ（ｎ＋１）は更新後の増量補正量積算値ΣＲｉｃｈであり、ΣＲｉｃｈ（ｎ）は更新前の増量補正量積算値ΣＲｉｃｈである。
ΣＲｉｃｈ（ｎ＋１）＝ΣＲｉｃｈ（ｎ）＋（ＤＦｍａｉｎ＋ＤＦｓｕｂ）  …（１４）
前述したように、空燃比補正量（ＤＦｍａｉｎ＋ＤＦｓｕｂ）が「０」より小さいと、ステップ３１４０において増量補正量積算値ΣＲｉｃｈは「０」に設定される。従って、増量補正量積算値ΣＲｉｃｈは、空燃比補正量（ＤＦｍａｉｎ＋ＤＦｓｕｂ）が「０」以上である状態が継続している場合における空燃比補正量（ＤＦｍａｉｎ＋ＤＦｓｕｂ）の積算値となる。更に、空燃比補正量（ＤＦｍａｉｎ＋ＤＦｓｕｂ）は基本燃料噴射量Ｆｂａｓｅに加えら得れる値であるから、増量補正量積算値ΣＲｉｃｈは「空燃比補正量（ＤＦｍａｉｎ＋ＤＦｓｕｂ）によって基本燃料噴射量Ｆｂａｓｅが増大させられる量（増量量）」の積算値となる。
次に、ＣＰＵはステップ３１２５に進み、ステップ３１２０にて更新された増量補正量積算値ΣＲｉｃｈが「所定の増量閾値ΣＲｉｃｈｔｈ」よりも大きいか否かを判定する。このとき、増量補正量積算値ΣＲｉｃｈが「所定の増量閾値ΣＲｉｃｈｔｈ」以下であると、ＣＰＵはステップ３１２５にて「Ｎｏ」と判定し、ステップ３１９５に直接進んで本ルーチンを一旦終了する。
これに対し、増量補正量積算値ΣＲｉｃｈが「所定の増量閾値ΣＲｉｃｈｔｈ」よりも大きくなったと仮定する。この場合、ＣＰＵはステップ３１２５にて「Ｙｅｓ」と判定してステップ３１３０に進み、強制リーンフラグＸＥＮｌｅａｎの値を「１」に設定する。その後、ＣＰＵはステップ３１３５にて増量補正量積算値ΣＲｉｃｈを「０」に設定し、ステップ３１９５に進んで本ルーチンを一旦終了する。
このようにして強制リーンフラグＸＥＮｌｅａｎの値が「１」に設定されると、ＣＰＵが図１２のステップ１２１０に進んだときそのステップ１２１０にて「Ｎｏ」と判定してステップ１２２０に進み、そのステップ１２２０にて「Ｙｅｓ」と判定してステップ１２２５に進む。そして、ＣＰＵはそのステップ１２２５にて上流側目標空燃比ａｂｙｆｒを理論空燃比よりもリーン側の空燃比ＡＦｌｅａｎ（例えば、１５．０）に設定する。更に、ＣＰＵは図１２のステップ１２３０にてメインフィードバック量ＤＦｍａｉｎの値を「０」に設定するとともに、ステップ１２３５にてサブフィードバック量ＤＦｓｕｂの値を「０」に設定する。この結果、ＣＰＵがステップ１２４０以降の処理を実行すると、機関の空燃比（従って、触媒流入ガスの空燃比）はリーン空燃比ＡＦｌｅａｎに制御される。
一方、ＣＰＵは、所定のタイミングになると、図３２のステップ３２００から処理を開始してステップ３２１０に進み、現時点が「強制リーンフラグＸＥＮｌｅａｎの値が「０」から「１」に変更されてから第１の触媒回復時間が経過した直後の時点である」か否かを判定する。
前述の仮定に従えば、現時点は「強制リーンフラグＸＥＮｌｅａｎの値が「０」から「１」に変更された直後」である。即ち、現時点は第１の触媒回復時間が経過した直後の時点ではない。よって、ＣＰＵはステップ３２１０にて「Ｎｏ」と判定し、ステップ３２３０に直接進む。ステップ３２３０以降の処理については後述する。
その後、この状態が継続すると、強制リーンフラグＸＥＮｌｅａｎの値が「０」から「１」に変更されてから第１の触媒回復時間が経過する。このとき、ＣＰＵが図３２のステップ３２１０に進むと、ＣＰＵはそのステップ３２１０にて「Ｙｅｓ」と判定し、ステップ３２２０に進んで強制リーンフラグＸＥＮｌｅａｎの値を「０」に設定する。その後、ＣＰＵはステップ３２３０に進む。
以上の処理により、強制リーンフラグＸＥＮｌｅａｎの値は第１の触媒回復時間だけ「１」に維持される。従って、増量補正量積算値ΣＲｉｃｈが「所定の増量閾値ΣＲｉｃｈｔｈ」よりも大きくなった時点から第１の触媒回復時間が経過する時点までの期間、機関の空燃比（従って、触媒流入ガスの空燃比）はリーン空燃比ＡＦｌｅａｎに制御される。
このように、ＣＰＵは、「メインフィードバック量ＤＦｍａｉｎとサブフィードバック量ＤＦｓｕｂとからなる基本燃料噴射量Ｆｂａｓｅの補正量、即ち、フィードバック量の全体値である空燃比補正量（ＤＦｍａｉｎ＋ＤＦｓｕｂ）」が基本燃料噴射量Ｆｂａｓｅを増大させる値である状態が継続している場合（ステップ３１１０にて「Ｙｅｓ」と判定される場合）、増量補正量積算値ΣＲｉｃｈが「所定の増量閾値ΣＲｉｃｈｔｈ」に到達したとき、触媒４３のリッチ被毒が発生する可能性が高いと判断し、「機関に供給される混合気の空燃比」を所定時間（第１の触媒回復時間）だけ「理論空燃比よりもリーン側の空燃比」に制御する（図３１のステップ３１２５及びステップ３１３０、図３２のステップ３２１０及びステップ３２２０を参照。）。この結果、触媒４３のリッチ被毒が解消されるので、「触媒４３のリッチ被毒に起因して触媒４３の浄化効率が低下すること」を回避することができる。
次に、サブフィードバック制御条件が成立しているとともに、空燃比補正量（ＤＦｍａｉｎ＋ＤＦｓｕｂ）が「０」よりも小さい値になっていると仮定して説明を続ける。この場合、ＣＰＵはステップ３１０５にて「Ｙｅｓ」と判定するとともに、ステップ３１１０にて「Ｎｏ」と判定してステップ３１４０に進み、増量補正量積算値ΣＲｉｃｈを「０」に設定する。
次に、ＣＰＵはステップ３１４５に進み、空燃比補正量（ＤＦｍａｉｎ＋ＤＦｓｕｂ）の絶対値の積算値を「減量補正量積算値ΣＬｅａｎ」として求める。即ち、ＣＰＵは、下記の（１５）式に従って、「現時点における減量補正量積算値ΣＬｅａｎ」に「現時点における空燃比補正量（ＤＦｍａｉｎ＋ＤＦｓｕｂ）の絶対値｜ＤＦｍａｉｎ＋ＤＦｓｕｂ｜」を加えることにより、減量補正量積算値ΣＬｅａｎを更新する。なお、（１５）式において、ΣＬｅａｎ（ｎ＋１）は更新後の減量補正量積算値である、ΣＬｅａｎ（ｎ）は更新前の減量補正量積算値ΣＬｅａｎである。
ΣＬｅａｎ（ｎ＋１）＝ΣＬｅａｎ（ｎ）＋｜ＤＦｍａｉｎ＋ＤＦｓｕｂ｜  …（１５）
前述したように、空燃比補正量（ＤＦｍａｉｎ＋ＤＦｓｕｂ）が「０」以上であると、ステップ３１１５において減量補正量積算値ΣＬｅａｎは「０」に設定される。従って、減量補正量積算値ΣＬｅａｎは、空燃比補正量（ＤＦｍａｉｎ＋ＤＦｓｕｂ）が「０」より小さい状態が継続している場合における空燃比補正量（ＤＦｍａｉｎ＋ＤＦｓｕｂ）の絶対値の積算値となる。更に、空燃比補正量（ＤＦｍａｉｎ＋ＤＦｓｕｂ）は基本燃料噴射量Ｆｂａｓｅに加えら得れる値であるから、減量補正量積算値ΣＬｅａｎは「空燃比補正量（ＤＦｍａｉｎ＋ＤＦｓｕｂ）によって基本燃料噴射量Ｆｂａｓｅが減少させられる量（減量量）」の積算値となる。
次に、ＣＰＵはステップ３１５０に進み、ステップ３１４５にて更新された減量補正量積算値ΣＬｅａｎが「所定の減量閾値ΣＬｅａｎｔｈ」よりも大きいか否かを判定する。このとき、減量補正量積算値ΣＬｅａｎが「所定の減量閾値ΣＬｅａｎｔｈ」以下であると、ＣＰＵはステップ３１５０にて「Ｎｏ」と判定し、ステップ３１９５に直接進んで本ルーチンを一旦終了する。
これに対し、減量補正量積算値ΣＬｅａｎが「所定の減量閾値ΣＬｅａｎｔｈ」よりも大きくなったと仮定する。この場合、ＣＰＵはステップ３１５０にて「Ｙｅｓ」と判定してステップ３１５５に進み、強制リッチフラグＸＥＮｒｉｃｈの値を「１」に設定する。その後、ＣＰＵはステップ３１６０にて減量補正量積算値ΣＬｅａｎを「０」に設定し、ステップ３１９５に進んで本ルーチンを一旦終了する。
このようにして強制リッチフラグＸＥＮｒｉｃｈの値が「１」に設定されると、ＣＰＵが図１２のステップ１２１０に進んだとき、そのステップ１２１０にて「Ｙｅｓ」と判定してステップ１２１５に進み、上流側目標空燃比ａｂｙｆｒを理論空燃比よりもリッチ側の空燃比ＡＦｒｉｃｈ（例えば、１４．２）に設定する。更に、ＣＰＵは図１２のステップ１２３０にてメインフィードバック量ＤＦｍａｉｎの値を「０」に設定するとともに、ステップ１２３５にてサブフィードバック量ＤＦｓｕｂの値を「０」に設定する。この結果、ＣＰＵがステップ１２４０以降の処理を実行すると、機関の空燃比（従って、触媒流入ガスの空燃比）はリッチ空燃比ＡＦｒｉｃｈに制御される。
一方、ＣＰＵは、所定のタイミングになると、図３２のステップ３２００から処理を開始してステップ３２１０に進み、そのステップ３２１０にて「Ｎｏ」と判定してステップ３２３０に直接進む。そして、ＣＰＵは、図３２のステップ３２３０にて、現時点が「強制リッチフラグＸＥＮｒｉｃｈの値が「０」から「１」に変更されてから第２の触媒回復時間が経過した直後の時点である」か否かを判定する。
前述の仮定に従えば、現時点は「強制リッチフラグＸＥＮｒｉｃｈの値が「０」から「１」に変更された直後」である。即ち、現時点は第２の触媒回復時間が経過した直後の時点ではない。よって、ＣＰＵはステップ３２３０にて「Ｎｏ」と判定し、ステップ３２９５に直接進んで本ルーチンを一旦終了する。
その後、この状態が継続すると、強制リッチフラグＸＥＮｒｉｃｈの値が「０」から「１」に変更されてから第２の触媒回復時間が経過する。このとき、ＣＰＵが図３２のステップ３２１０に進むと、ＣＰＵはそのステップ３２１０にて「Ｎｏ」と判定してステップ３２３０に直接進む。そして、ＣＰＵは、そのステップ３２３０にて「Ｙｅｓ」と判定してステップ３２４０に進み、強制リッチフラグＸＥＮｒｉｃｈの値を「０」に設定する。その後、ＣＰＵはステップ３２９５に進んで本ルーチンを一旦終了する。
以上の処理により、強制リッチフラグＸＥＮｒｉｃｈの値は第２の触媒回復時間だけ「１」に維持される。従って、減量補正量積算値ΣＬｅａｎが「所定の減量閾値ΣＬｅａｎｔｈ」よりも大きくなった時点から第２の触媒回復時間が経過する時点までの期間、機関の空燃比（従って、触媒流入ガスの空燃比）はリッチ空燃比ＡＦｒｉｃｈに制御される。
このように、ＣＰＵは、空燃比補正量（ＤＦｍａｉｎ＋ＤＦｓｕｂ）が基本燃料噴射量Ｆｂａｓｅを減少させる値である状態が継続している場合（ステップ３１１０にて「Ｎｏ」と判定される場合）、減量補正量積算値ΣＬｅａｎが「所定の減量閾値ΣＬｅａｎｔｈ」に到達したとき、触媒４３のリーン被毒が発生する可能性が高いと判断し、「機関に供給される混合気の空燃比」を所定時間（第２の触媒回復時間）だけ「理論空燃比よりもリッチ側の空燃比」に制御する（図３１のステップ３１５５及びステップ３１５５、図３２のステップ３２３０及びステップ３２４０を参照。）。この結果、触媒４３のリーン被毒が解消されるので、「触媒４３のリーン被毒に起因して触媒４３の浄化効率が低下すること」を回避することができる。
５．第５実施形態
次に、本発明の第５実施形態に係る内燃機関の空燃比制御装置（以下、「第５制御装置」とも称呼する。）について説明する。第５制御装置は、下流側空燃比センサ５６の出力値Ｖｏｘｓが第１閾値であるストイキ上限値ＶＨｌｉｌｉｍｉｔと第２閾値であるストイキ下限値ＶＬｏｌｉｍｉｔとの間にある場合、上記第１乃至第４制御装置と同様にサブフィードバック量ＤＦｓｕｂを求め、サブフィードバック制御を実行する。
但し、第５制御装置は、そのようなサブフィードバック制御中において、下流側空燃比センサ５６の出力値Ｖｏｘｓの周波数（出力値Ｖｏｘｓが中央値Ｖｍｉｄを中心として変動するときの周波数）が所定の周波数閾値以下となった場合、触媒４３の酸素吸蔵量ＯＳＡを「酸素吸蔵量下限値ＯＳＡＬｏｔｈと酸素吸蔵量上限値ＯＳＡＨｉｔｈとの間」に制御する空燃比フィードバック制御（酸素吸蔵量フィードバック制御）を行う。第５制御装置は、その他の点において、第１乃至第４制御装置の何れかと同様に空燃比制御を実行する。従って、以下、この相違点を中心として説明する。
第５制御装置のＣＰＵは、図１７のステップ１７２０に進んだとき、図１８に代わる図３３にフローチャートにより示した「サブフィードバック量の比例項算出ルーチン」を実行するようになっている。図３３に示したステップのうち図１８に示したステップと同一のステップには同一の符号が付されている。これらのステップの詳細な説明は省略される。
図３３に示したルーチンにおいては、ステップ３３１０とステップ３３２０とが図１８に示したルーチンに対し追加されている。具体的に述べると、ＣＰＵは、下流側空燃比センサ５６の出力値Ｖｏｘｓが「第１閾値としてのストイキ上限値ＶＨｉｌｉｍｉｔ」と「第２閾値としてのストイキ下限値ＶＬｏｌｉｍｉｔ」との間にあるとき、ステップ１８１０、ステップ１８４０を経由してステップ３３１０に進む。そして、ＣＰＵはそのステップ３３１０にて、酸素吸蔵量制御フラグＸＯＳＡｃｏｎｔの値が「１」であるか否かを判定する。酸素吸蔵量制御フラグＸＯＳＡｃｏｎｔの値は、上述したイニシャルルーチンにおいて「０」に設定されるとともに、後述する酸素吸蔵量フィードバック制御が実行されるとき「１」に設定される。
いま、酸素吸蔵量制御フラグＸＯＳＡｃｏｎｔの値が「０」であると仮定して説明を続ける。この場合、ＣＰＵはステップ３３１０にて「Ｙｅｓ」と判定してステップ１８６０に進み、サブフィードバック量ＤＦｓｕｂの比例項ＳＰを上記（１３）式に従って算出する。その後、ＣＰＵは上述したステップ１８３０の処理を行い、ステップ１８９５に進んで本ルーチンを一旦終了する。
一方、ＣＰＵは図３４にフローチャートにより示した「酸素吸蔵量フィードバック制御開始判定ルーチン」を所定時間が経過する毎に実行するようになっている。従って、所定のタイミングになると、ＣＰＵは図３４のステップ３４００から処理を開始してステップ３４０５に進み、酸素吸蔵量制御フラグＸＯＳＡｃｏｎｔの値が「０」であるか否かを判定する。
前述した仮定に従うと、現時点において酸素吸蔵量制御フラグＸＯＳＡｃｏｎｔの値は「０」である。従って、ＣＰＵはステップ３４０５にて「Ｙｅｓ」と判定してステップ３４１０に進み、下流側空燃比センサ５６の出力値Ｖｏｘｓがストイキ上限値ＶＨｉｌｉｍｉｔ以下であるか否かを判定する。
更に、いま、下流側空燃比センサ５６の出力値Ｖｏｘｓの値が「第２閾値としてのストイキ下限値ＶＬｏｌｉｍｉｔ」以上であり、且つ、「第１閾値としてのストイキ上限値ＶＨｉｌｉｍｉｔ」以下であると仮定する。この場合、ＣＰＵはステップ３４１０にて「Ｙｅｓ」と判定するとともに、「出力値Ｖｏｘｓがストイキ下限値ＶＬｏｌｉｍｉｔ以上であるか否かを判定する」ステップ３４１５にても「Ｙｅｓ」と判定する。
そして、ＣＰＵはステップ３４２０にて、現時点が「出力値Ｖｏｘｓが中央値Ｖｍｉｄよりも小さい値から中央値Ｖｍｉｄよりも大きい値へと変化した直後の時点」であるか否かを判定する。このとき、現時点が「出力値Ｖｏｘｓが中央値Ｖｍｉｄを横切った直後の時点」でなければ、ＣＰＵはステップ４３２０にて「Ｎｏ」と判定し、ステップ３４９５に直接進んで本ルーチンを一旦終了する。
これに対し、現時点が「出力値Ｖｏｘｓが中央値Ｖｍｉｄよりも小さい値から中央値Ｖｍｉｄよりも大きい値へと変化した直後の時点」であると、ＣＰＵはステップ３４２０にて「Ｙｅｓ」と判定してステップ３４２５に進み、出力値Ｖｏｘｓの周波数Ｆｖを取得する。この周波数Ｆｖは、出力値Ｖｏｘｓの変動周期の逆数である。即ち、周波数Ｆｖは、出力値Ｖｏｘｓが中央値Ｖｍｉｄよりも小さい値から中央値Ｖｍｉｄよりも大きい値へと変化した時点ｔａから、その後、出力値Ｖｏｘｓが中央値Ｖｍｉｄよりも小さい値となり、更に、出力値Ｖｏｘｓが再び中央値Ｖｍｉｄよりも小さい値から中央値Ｖｍｉｄよりも大きい値へと再び変化した時点ｔｂまでの周期Ｔ（Ｔ＝ｔｂ−ｔａ）の逆数である。
次いで、ＣＰＵはステップ３４３０に進み、周波数Ｆｖの積算値ΣＦｖを求める。即ち、ＣＰＵはその時点までの積算値ΣＦｖに上記ステップ３４２５にて得られた周波数Ｆｖを加え、新たな積算値ΣＦｖを取得する。
次に、ＣＰＵはステップ３４３５にてカウンタＣＦｖの値を「１」だけ増大する。そして、ＣＰＵはステップ３４４０にてカウンタＣＦｖがカウンタ閾値ＣＦｖｔｈ以上であるか否かを判定する。このとき、カウンタＣＦｖがカウンタ閾値ＣＦｖｔｈ以上でなければ、ＣＰＵはステップ３４４０にて「Ｎｏ」と判定してステップ３４９５に直接進んで本ルーチンを一旦終了する。なお、カウンタ閾値ＣＦｖｔｈは「１」であってもよい。
これに対し、カウンタＣＦｖがカウンタ閾値ＣＦｖｔｈ以上であると、ＣＰＵはステップ３４４０にて「Ｙｅｓ」と判定してステップ３４４５に進み、積算値ΣＦｖをカウンタＣＦｖの値で除することにより、周波数Ｆｖの平均値ＦｖＡｖｅを求める。
そして、ＣＰＵはステップ３４５０に進み、周波数平均値ＦｖＡｖｅが閾値周波数Ｆｖｔｈ以下であるか否かを判定する。即ち、ＣＰＵは、出力値Ｖｏｘｓの変動が緩やかであるか否かを判定する。このとき、平均値ＦｖＡｖｅが閾値周波数Ｆｖｔｈよりも大きいと、ＣＰＵはステップ３４５０にて「Ｎｏ」と判定してステップ３４９５に直接進んで本ルーチンを一旦終了する。
これに対し、平均値ＦｖＡｖｅが閾値周波数Ｆｖｔｈ以下であると、ＣＰＵはステップ３４５０にて「Ｙｅｓ」と判定してステップ３４５５に進み、酸素吸蔵量制御フラグＸＯＳＡｃｏｎｔの値を「１」に設定する。そして、ＣＰＵはステップ３４９５に進んで本ルーチンを一旦終了する。
なお、ＣＰＵが本ルーチンを実行した際、下流側空燃比センサ５６の出力値Ｖｏｘｓの値が「第１閾値としてのストイキ上限値ＶＨｉｌｉｍｉｔ」よりも大きいとき、ＣＰＵはステップ３４１０にて「Ｎｏ」と判定してステップ３４６０に進み、積算値ΣＦｖを「０」に設定する。そして、ＣＰＵはステップ３４６５に進んでカウンタＣＦｖを「０」に設定し、その後、ステップ３４９５に直接進んで本ルーチンを一旦終了する。
また、ＣＰＵが本ルーチンを実行した際、下流側空燃比センサ５６の出力値Ｖｏｘｓの値が「第２閾値としてのストイキ下限値ＶＬｏｌｉｍｉｔ」よりも小さいとき、ＣＰＵはステップ３４１５にて「Ｎｏ」と判定し、上記ステップ３４６０及び上記ステップ３４６５の処理を実行し、その後、ステップ３４９５に直接進んで本ルーチンを一旦終了する。
加えて、ＣＰＵは、所定時間が経過する毎に図３５にフローチャートにより示した「酸素吸蔵量フィードバック制御ルーチン」を実行するようになっている。従って、所定のタイミングになると、ＣＰＵは図３５のステップ３５００から処理を開始してステップ３５０５に進み、酸素吸蔵量制御フラグＸＯＳＡｃｏｎｔの値が「１」であるか否かを判定する。
このとき、酸素吸蔵量制御フラグＸＯＳＡｃｏｎｔの値が「０」であると、ＣＰＵはステップ３５０５にて「Ｎｏ」と判定し、ステップ３５９５に直接進んで本ルーチンを一旦終了する。
これに対し、上述した図２４のステップ３４５５において酸素吸蔵量制御フラグＸＯＳＡｃｏｎｔの値が「１」に設定されると、ＣＰＵはステップ３５０５にて「Ｙｅｓ」と判定してステップ３５１０に進み、現時点が「酸素吸蔵量制御フラグＸＯＳＡｃｏｎｔの値が「０」から「１」へと変化した直後の時点」であるか否かを判定する。
このとき、「酸素吸蔵量制御フラグＸＯＳＡｃｏｎｔの値が「０」から「１」へと変化した直後の時点」でなければ、ＣＰＵはそのステップ３５１０にて「Ｎｏ」と判定し、ステップ３５２５に直接進む。
いま、現時点が「上述した図２４のステップ３４５５において酸素吸蔵量制御フラグＸＯＳＡｃｏｎｔの値が「１」に設定された時点」の直後であると仮定する。この場合、ＣＰＵはステップ３５１０にて「Ｙｅｓ」と判定してステップ３５１５に進み、酸素吸蔵量ＯＳＡの値（相対的な推定値）を「０」に設定する。次に、ＣＰＵはステップ３５２０に進み、酸素吸蔵量調整用リッチフラグＸＯＳＡｒｉｃｈの値を「１」に設定する。その後、ＣＰＵはステップ３５２５に進む。
このようにして酸素吸蔵量調整用リッチフラグＸＯＳＡｒｉｃｈの値が「１」に設定されると、ＣＰＵが図１２のステップ１２１０に進んだとき、そのステップ１２１０にて「Ｙｅｓ」と判定してステップ１２１５に進み、上流側目標空燃比ａｂｙｆｒを理論空燃比よりもリッチ側の空燃比ＡＦｒｉｃｈ（例えば、１４．２）に設定する。更に、ＣＰＵは図１２のステップ１２３０にてメインフィードバック量ＤＦｍａｉｎの値を「０」に設定するとともに、ステップ１２３５にてサブフィードバック量ＤＦｓｕｂの値を「０」に設定する。この結果、ＣＰＵがステップ１２４０以降の処理を実行すると、機関の空燃比（従って、触媒流入ガスの空燃比）はリッチ空燃比ＡＦｒｉｃｈに制御される。このため、触媒流入ガスには過剰な未燃物が含まれるので、酸素吸蔵量ＯＳＡは次第に減少する。
ＣＰＵはステップ３５２５にて、下記の（１６）式に従って、酸素吸蔵量ＯＳＡの変化量ΔＯＳＡを算出する。この（１６）式において、値「０．２３」は大気中に含まれる酸素の重量割合である。ｍｆは所定時間（本ルーチンが実行される周期ｔｓａｍ）内の燃料噴射量Ｆｉの合計量である。ｓｔｏｉｃｈは理論空燃比（例えば、１４．６）である。ａｂｙｆｓは所定時間ｔｓａｍにおいて上流側空燃比センサ５５により測定された検出上流側空燃比である。なお、ａｂｙｆｓは前記所定時間ｔｓａｍ内において上流側空燃比センサ５５により検出された上流側空燃比ａｂｙｆｓの平均値としてもよい。
ΔＯＳＡ＝０．２３・（ａｂｙｆｓ−ｓｔｏｉｃｈ）・ｍｆ  …（１６）
次に、ＣＰＵはステップ３５３０に進み、その時点における酸素吸蔵量ＯＳＡに、上記ステップ３５２５にて求められた酸素吸蔵量ＯＳＡの変化量ΔＯＳＡを加えることにより、最新の酸素吸蔵量ＯＳＡを算出する。
その後、ＣＰＵはステップ３５３５に進み、酸素吸蔵量調整用リッチフラグＸＯＳＡｒｉｃｈの値が「１」であるか否かを判定する。現時点においては、上記ステップ３５２０にて酸素吸蔵量調整用リッチフラグＸＯＳＡｒｉｃｈの値は「１」に設定されている。従って、ＣＰＵはステップ３５３５にて「Ｙｅｓ」と判定してステップ３５４０に進み、ステップ３５３０にて算出した酸素吸蔵量ＯＳＡが酸素吸蔵量下限値ＯＳＡＬｏｔｈ以下であるか否かを判定する。酸素吸蔵量下限値ＯＳＡＬｏｔｈは「０」より小さく、且つ、その絶対値は最大酸素吸蔵量Ｃｍａｘの絶対値の１／２よりも小さい値に選択されている。このとき、酸素吸蔵量ＯＳＡが酸素吸蔵量下限値ＯＳＡＬｏｔｈよりも大きいと、ＣＰＵはステップ３５４０にて「Ｎｏ」と判定し、ステップ３５９５に直接進んで本ルーチンを一旦終了する。
その後、この状態が継続すると、機関の空燃比はリッチ空燃比ＡＦｒｉｃｈに制御され続けるので、酸素吸蔵量ＯＳＡは次第に減少して酸素吸蔵量下限値ＯＳＡＬｏｔｈ以下となる。このとき、ＣＰＵがステップ３５４０の処理を実行すると、ＣＰＵはそのステップ３５４０にて「Ｙｅｓ」と判定し、ステップ３５４５にて酸素吸蔵量調整用リッチフラグＸＯＳＡｒｉｃｈの値を「０」に設定する。更に、ＣＰＵはステップ３５５０に進み、酸素吸蔵量調整用リーンフラグＸＯＳＡｌｅａｎの値を「１」に設定し、ステップ３５９５に進んで本ルーチンを一旦終了する。
この結果、ＣＰＵは図１２のステップ１２１０に進んだときそのステップ１２１０にて「Ｎｏ」と判定してステップ１２２０に進み、そのステップ１２２０にて「Ｙｅｓ」と判定してステップ１２２５に進むようになる。そして、ＣＰＵはそのステップ１２２５にて上流側目標空燃比ａｂｙｆｒを理論空燃比よりもリーン側の空燃比ＡＦｌｅａｎ（例えば、１５．０）に設定する。更に、ＣＰＵは図１２のステップ１２３０にてメインフィードバック量ＤＦｍａｉｎの値を「０」に設定するとともに、ステップ１２３５にてサブフィードバック量ＤＦｓｕｂの値を「０」に設定する。この結果、ＣＰＵがステップ１２４０以降の処理を実行すると、機関の空燃比（従って、触媒流入ガスの空燃比）はリーン空燃比ＡＦｌｅａｎに制御される。このため、触媒流入ガスには過剰な酸素が含まれるので、酸素吸蔵量ＯＳＡは次第に増大する。
更に、所定時間が経過してＣＰＵが図３５のルーチンの処理を開始すると、ＣＰＵはステップ３５０５、ステップ３５１０、ステップ３５２５及びステップ３５３０の処理を実行し、ステップ３５３５にて「Ｎｏ」と判定してステップ３５５５に進む。
ＣＰＵはステップ３５５５にて、酸素吸蔵量調整用リーンフラグＸＯＳＡｌｅａｎの値が「１」であるか否かを判定する。現時点においては、ステップ３５５０にて酸素吸蔵量調整用リーンフラグＸＯＳＡｌｅａｎの値は「１」に設定されている。従って、ＣＰＵはステップ３５５５にて「Ｙｅｓ」と判定してステップ３５６０に進み、ステップ３５３０にて算出した酸素吸蔵量ＯＳＡが酸素吸蔵量上限値ＯＳＡＨｉｔｈ以上であるか否かを判定する。酸素吸蔵量上限値ＯＳＡＨｉｔｈは、酸素吸蔵量下限値ＯＳＡＬｏｔｈよりも所定量だけ大きい値に設定されている。酸素吸蔵量上限値ＯＳＡＨｉｔｈは、「０」より大きく、且つ、最大酸素吸蔵量Ｃｍａｘの絶対値の１／２よりも小さい値に選択されている。
このとき、酸素吸蔵量ＯＳＡが酸素吸蔵量上限値ＯＳＡＨｉｔｈよりも小さいと、ＣＰＵはステップ３５６０にて「Ｎｏ」と判定し、ステップ３５９５に直接進んで本ルーチンを一旦終了する。
その後、この状態が継続すると、機関の空燃比はリーン空燃比ＡＦｌｅａｎに制御され続けるので、酸素吸蔵量ＯＳＡは次第に増大して酸素吸蔵量上限値ＯＳＡＨｉｔｈ以上となる。このとき、ＣＰＵがステップ３５６０の処理を実行すると、ＣＰＵはそのステップ３５６０にて「Ｙｅｓ」と判定し、ステップ３５６５にて酸素吸蔵量調整用リッチフラグＸＯＳＡｒｉｃｈの値を「１」に設定する。更に、ＣＰＵはステップ３５７０に進み、酸素吸蔵量調整用リーンフラグＸＯＳＡｌｅａｎの値を「０」に設定し、ステップ３５９５に進んで本ルーチンを一旦終了する。これにより、機関の空燃比は再びリッチ空燃比ＡＦｒｉｃｈに制御される。
以上に説明したように、酸素吸蔵量ＯＳＡが酸素吸蔵量下限値ＯＳＡＬｏｔｈ以下となると機関の空燃比はリーン空燃比ＡＦｌｅａｎに設定され、それにより、酸素吸蔵量ＯＳＡが増大せしめられる。更に、酸素吸蔵量ＯＳＡが酸素吸蔵量上限値ＯＳＡＨｉｔｈ以上となると、機関の空燃比はリッチ空燃比ＡＦｒｉｃｈに設定され、それにより、酸素吸蔵量ＯＳＡが減少せしめられる。即ち、酸素吸蔵量のフィードバック制御が実行される。
加えて、ＣＰＵは、所定時間が経過する毎に図３６にフローチャートにより示した「酸素吸蔵量フィードバック制御終了判定ルーチン」を実行するようになっている。従って、所定のタイミングになると、ＣＰＵは図３６のステップ３６００から処理を開始してステップ３６１０に進み、酸素吸蔵量制御フラグＸＯＳＡｃｏｎｔの値が「１」であるか否かを判定する。このとき、酸素吸蔵量制御フラグＸＯＳＡｃｏｎｔの値が「０」であると、ＣＰＵはステップ３６１０にて「Ｎｏ」と判定し、ステップ３６９５に直接進んで本ルーチンを一旦終了する。
これに対し、現時点において酸素吸蔵量フィードバック制御が実行されていて、酸素吸蔵量制御フラグＸＯＳＡｃｏｎｔの値が「１」であると、ＣＰＵはステップ３６１０にて「Ｙｅｓ」と判定してステップ３６２０に進み、下流側空燃比センサ５６の出力値Ｖｏｘｓが「第１閾値としてのストイキ上限値ＶＨｉｌｉｍｉｔ」よりも大きいか否かを判定する。
このとき、出力値Ｖｏｘｓが「第１閾値としてのストイキ上限値ＶＨｉｌｉｍｉｔ」よりも大きいと、ＣＰＵはステップ３６２０にて「Ｙｅｓ」と判定してステップ３６３０に進み、酸素吸蔵量制御フラグＸＯＳＡｃｏｎｔ、酸素吸蔵量調整用リーンフラグＸＯＳＡｌｅａｎ及び酸素吸蔵量調整用リッチフラグＸＯＳＡｒｉｃｈの各値を「０」に設定する。
これにより、ＣＰＵが図１２に示したルーチンを実行するとき、ＣＰＵはステップ１２１０及びステップ１２２０の両ステップにて「Ｎｏ」と判定してステップ１２４０に直接進むようになる。この結果、上流側目標空燃比ａｂｙｆｒは理論空燃比ｓｔｏｉｃｈに設定される（ステップ１２０５を参照。）。更に、ステップ１２３０及びステップ１２３５の処理が行われないので、上流側空燃比センサ５５の出力値Ｖａｂｙｆｓに基づくメインフィードバック量ＤＦｍａｉｎによる制御と、下流側空燃比センサ５６の出力値Ｖｏｘｓに基づくサブフィードバック量ＤＦｓｕｂによる制御と、が再開される。
これにより、ＣＰＵがその後において図３３のステップ３３１０に進んだとき、そのステップ３３１０にて「Ｎｏ」と判定してステップ１８６０に進むようになる。従って、酸素吸蔵量フィードバック制御は中止させられる。
一方、ＣＰＵがステップ３６２０に進んだとき、下流側空燃比センサ５６の出力値Ｖｏｘｓが「第１閾値としてのストイキ上限値ＶＨｉｌｉｍｉｔ」以下であると、ＣＰＵはそのステップ３６２０にて「Ｎｏ」と判定してステップ３６４０に進み、下流側空燃比センサ５６の出力値Ｖｏｘｓが「第２閾値としてのストイキ下限値ＶＬｏｌｉｍｉｔ」よりも小さいか否かを判定する。
このとき、出力値Ｖｏｘｓが「第２閾値としてのストイキ下限値ＶＬｏｌｉｍｉｔ」よりも小さいと、ＣＰＵはステップ３６４０にて「Ｙｅｓ」と判定してステップ３６３０に進み、酸素吸蔵量制御フラグＸＯＳＡｃｏｎｔ、酸素吸蔵量調整用リーンフラグＸＯＳＡｌｅａｎ及び酸素吸蔵量調整用リッチフラグＸＯＳＡｒｉｃｈの各値を「０」に設定する。
従って、この場合においても、上流側目標空燃比ａｂｙｆｒは理論空燃比ｓｔｏｉｃｈに設定され、メインフィードバック量ＤＦｍａｉｎによる制御と、サブフィードバック量ＤＦｓｕｂによる制御と、が再開される。
一方、ＣＰＵがステップ３６４０に進んだとき、下流側空燃比センサ５６の出力値Ｖｏｘｓが「第２閾値としてのストイキ下限値ＶＬｏｌｉｍｉｔ」以上であると、ＣＰＵはそのステップ３６４０にて「Ｎｏ」と判定し、ステップ３６９５に進んで本ルーチンを一旦終了する。従って、この場合、酸素吸蔵量制御フラグＸＯＳＡｃｏｎｔ、酸素吸蔵量調整用リーンフラグＸＯＳＡｌｅａｎ及び酸素吸蔵量調整用リッチフラグＸＯＳＡｒｉｃｈは変更されないので、それまでの酸素吸蔵量フィードバック制御が継続して実行される。
なお、ステップ３６３０の処理により、酸素吸蔵量制御フラグＸＯＳＡｃｏｎｔの値が「０」に設定された後、ＣＰＵが図３３のステップ３３１０に進むと、ＣＰＵはそのステップ３３１０にて「Ｎｏ」と判定してステップ１８６０に進むようになる。
以上、説明したように、第５制御装置は、酸素吸蔵量フィードバック制御を実行する空燃比制御手段を備えている。
即ち、その空燃比制御手段は、
下流側空燃比センサ５６の出力値Ｖｏｘｓが「前記第１閾値（ストイキ上限値ＶＨｉｌｉｍｉｔ）よりも小さく且つ前記第２閾値（ストイキ下限値ＶＬｏｌｉｍｉｔ）よりも大きい値」となっていて「前記通常空燃比フィードバック制御が実行されている期間」における「同出力値の変動周波数（平均値ＦｖＡｖｅ）」を取得する。
そして、空燃比制御手段は、
取得した変動周波数（平均値ＦｖＡｖｅ）が所定の閾値周波数Ｆｖｔｈ以下となった場合（図３４のステップ３４５０を参照。）、「前記通常空燃比フィードバック制御」に代え、前記触媒の酸素吸蔵量ＯＳＡ（酸素吸蔵量のある時点における値からの相対値）を推定するとともに、その推定した酸素吸蔵量が「酸素吸蔵量下限値と酸素吸蔵量上限値との間」になるように機関１０に供給される混合気の空燃比を制御する（図３４のステップ３４５５及び図３５のルーチンを参照。）。
この結果、エミッションが悪化しない範囲において「触媒流入ガスの空燃比」が理論空燃比を中心として大きく変動させられるので、触媒４３のリッチ被毒又はリーン被毒が解消され易くなり、触媒４３の浄化効率を改善することができる。
更に、上記空燃比制御手段は、
酸素吸蔵量フィードバック制御が実行されている期間に、下流側空燃比センサ５６の出力値Ｖｏｘｓが「前記第１閾値以上となるか又は前記第２閾値以下となった場合」、前記酸素吸蔵量フィードバック制御を終了するとともに、「前記下流側空燃比センサの出力値に基づいた前記機関に供給される混合気の空燃比の制御」を再開するように構成されている（図３６のルーチンを参照。）。
従って、酸素吸蔵量フィードバック制御を実行することによって、酸素吸蔵量が「０」又は最大酸素吸蔵量Ｃｍａｘに近づいた場合であっても、エミッションが悪化することを回避することができる。
以上、説明したように、本発明による内燃機関の空燃比制御装置の各実施形態は、下流側空燃比センサ５６の出力値Ｖｏｘｓとその変化速度ΔＶｏｘｓとを用いて触媒４３の状態（酸素吸蔵状態）を推定し、その推定した状態に応じて触媒流入ガスの空燃比を制御している。従って、触媒流入ガスの実際の空燃比が「触媒流入ガス要求空燃比」に応じた値となるので、エミッションを一層良好にすることができる。
なお、本発明は上記実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、各実施形態の変形例に係るＣＰＵは、図２６のルーチンに代わる「図３７に示した触媒リッチ・リーン状態判定ルーチン」を所定時間が経過する毎に実行することにより、触媒４３の状態を以下のように判定してもよい。
即ち、ＣＰＵは、ステップ３７１０にて下流側空燃比センサ５６の出力値Ｖｏｘｓの変化速度ΔＶｏｘｓが負であるか否かを判定し、変化速度ΔＶｏｘｓが負である場合にはステップ３７２０にてその変化速度の大きさ｜ΔＶｏｘｓ｜が所定の変化速度閾値ΔＶｔｈ以上であるか否かを判定する。そして、変化速度の大きさ｜ΔＶｏｘｓ｜が所定の変化速度閾値ΔＶｔｈ以上である場合、触媒４３が「酸素過剰状態にある」と判定し、ステップ３７３０にて触媒リーン状態フラグ（酸素過剰状態フラグ）ＸＣＣＲＯｌｅａｎの値を「１」に設定する。このとき、ＣＰＵはステップ３７４０にて触媒リッチ状態フラグ（酸素不足状態フラグ）ＸＣＣＲＯｒｉｃｈの値を「０」に設定する。
更に、ＣＰＵは、ステップ３７５０にて下流側空燃比センサ５６の出力値Ｖｏｘｓの変化速度ΔＶｏｘｓが正であるか否かを判定し、変化速度ΔＶｏｘｓが正である場合にはステップ３７６０にてその変化速度の大きさ｜ΔＶｏｘｓ｜が所定の変化速度閾値ΔＶｔｈ以上であるか否かを判定する。そして、変化速度の大きさ｜ΔＶｏｘｓ｜が所定の変化速度閾値ΔＶｔｈ以上である場合、触媒４３が「酸素不足状態にある」と判定し、ステップ３７７０にて触媒リッチ状態フラグＸＣＣＲＯｒｉｃｈの値を「１」に設定する。このとき、ＣＰＵはステップ３７８０にて
触媒リーン状態フラグＸＣＣＲＯｌｅａｎの値を「０」に設定する。
このように、各実施形態の変形例は、下流側空燃比センサ５６の出力値Ｖｏｘｓの変化速度ΔＶｏｘｓが負であり且つその変化速度の大きさ｜ΔＶｏｘｓ｜が所定の変化速度閾値ΔＶｔｈ以上であるとき、触媒４３が酸素不足状態にあると判定するように構成されてもよい。更に、各実施形態の変形例は、下流側空燃比センサ５６の出力値Ｖｏｘｓの変化速度ΔＶｏｘｓが正であり且つその変化速度の大きさ｜ΔＶｏｘｓ｜が所定の変化速度閾値ΔＶｔｈ以上であるとき、触媒４３が酸素過剰状態にあると判定するように構成されてもよい。
更に、各実施形態の他の変形例に係るＣＰＵは、図２６のルーチンに代わる「図３８に示した触媒リッチ・リーン状態判定ルーチン」を所定時間が経過する毎に実行することにより、触媒４３の状態を以下のように判定してもよい。なお、図３８に示したステップのうち図３７に示したステップと同一のステップには同一の符号が付されている。これらのステップの詳細な説明は省略される。
図３８に示したルーチンは、図３７に示したステップ３７２０及びステップ３７６０を、ステップ３８２０及びステップ３８６０にそれぞれ置換したルーチンである。ステップ３８２０において、ＣＰＵは変化速度の大きさ｜ΔＶｏｘｓ｜が触媒リーン判定用変化速度閾値ΔＶｔｈＬ（Ｖｏｘｓ）以上であるか否かを判定する。この触媒リーン判定用変化速度閾値ΔＶｔｈＬ（Ｖｏｘｓ）は、ステップ３８２０の近傍に図示したように、出力値Ｖｏｘｓの大きさ｜Ｖｏｘｓ｜（＝Ｖｏｘｓ）が大きくなるほど大きくなるように設定される。
これは、出力値Ｖｏｘｓが大きいほど触媒４３の酸素吸蔵量ＯＳＡが小さい可能性が高いので、出力値Ｖｏｘｓが大きい場合には変化速度の大きさ｜ΔＶｏｘｓ｜が相当に大きくならない限り、触媒４３が酸素過剰状態にあるとは判定しないようにするためである。
このように、ＣＰＵは、下流側空燃比センサ５６の出力値Ｖｏｘｓの変化速度ΔＶｏｘｓが負であり且つその変化速度の大きさ｜ΔＶｏｘｓ｜が「出力値Ｖｏｘｓが大きいほど大きくなる触媒リーン判定用変化速度閾値ΔＶｔｈＬ以上であるとき、触媒４３が酸素過剰状態にあると判定するように構成されてもよい。
更に、ステップ３８６０において、ＣＰＵは変化速度の大きさ｜ΔＶｏｘｓ｜が触媒リッチ判定用変化速度閾値ΔＶｔｈＲ（Ｖｏｘｓ）以上であるか否かを判定する。この触媒リッチ判定用変化速度閾値ΔＶｔｈＲ（Ｖｏｘｓ）は、ステップ３８６０の近傍に図示したように、出力値Ｖｏｘｓの大きさ｜Ｖｏｘｓ｜（＝Ｖｏｘｓ）が大きくなるほど小さくなるように設定される。
これは、出力値Ｖｏｘｓが小さいほど触媒４３の酸素吸蔵量ＯＳＡが大きい可能性が高いので、出力値Ｖｏｘｓが小さい場合には変化速度の大きさ｜ΔＶｏｘｓ｜が相当に大きくならない限り、触媒４３が酸素不足状態にあるとは判定しないようにするためである。
このように、ＣＰＵは、下流側空燃比センサ５６の出力値Ｖｏｘｓの変化速度ΔＶｏｘｓが正であり且つその変化速度の大きさ｜ΔＶｏｘｓ｜が「出力値Ｖｏｘｓが大きいほど小さくなる触媒リッチ判定用変化速度閾値ΔＶｔｈＲ以上であるとき、触媒４３が酸素不足状態にあると判定するように構成されてもよい。
即ち、本発明の実施形態及び変形例に係る空燃比制御装置は、
下流側空燃比センサ５６の出力値Ｖｏｘｓと下流側空燃比センサ５６の出力値Ｖｏｘｓの変化速度のΔＶｏｘｓとに基づいて触媒４３の酸素吸蔵状態を推定し、その推定した状態に基づいて、同触媒の酸素吸蔵量が「０」より大きい第１酸素吸蔵量から同第１酸素吸蔵量よりも大きく且つ同触媒の最大酸素吸蔵量よりも小さい第２酸素吸蔵量までの間にて変化するように同触媒に流入するガスの空燃比を制御する装置である。
【図１】
2010134209.tif 000003
【図２】
2010134209.tif 000004
【図３】
2010134209.tif 000005
【図４】
2010134209.tif 000006
【図５】
2010134209.tif 000007
【図６】
2010134209.tif 000008
【図７】
2010134209.tif 000009
【図８】
2010134209.tif 000010
【図９】
2010134209.tif 000011
【図１０】
2010134209.tif 000012
【図１１】
2010134209.tif 000013
【図１２】
2010134209.tif 000014
【図１３】
2010134209.tif 000015
【図１４】
2010134209.tif 000016
【図１５】
2010134209.tif 000017
【図１６】
2010134209.tif 000018
【図１７】
2010134209.tif 000019
【図１８】
2010134209.tif 000020
【図１９】
2010134209.tif 000021
【図２０】
2010134209.tif 000022
【図２１】
2010134209.tif 000023
【図２２】
2010134209.tif 000024
【図２３】
2010134209.tif 000025
【図２４】
2010134209.tif 000026
【図２５】
2010134209.tif 000027
【図２６】
2010134209.tif 000028
【図２７】
2010134209.tif 000029
【図２８】
2010134209.tif 000030
【図２９】
2010134209.tif 000031
【図３０】
2010134209.tif 000032
【図３１】
2010134209.tif 000033
【図３２】
2010134209.tif 000034
【図３３】
2010134209.tif 000035
【図３４】
2010134209.tif 000036
【図３５】
2010134209.tif 000037
【図３６】
2010134209.tif 000038
【図３７】
2010134209.tif 000039
【図３８】
2010134209.tif 000040
【図３９】
2010134209.tif 000041
【手続補正書】
【提出日】平成23年2月21日(2011.2.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
排気通路に触媒が配設された内燃機関に適用され、
前記排気通路の前記触媒よりも下流に配設され且つ同触媒から流出したガスである触媒流出ガスに含まれる酸素の量が同触媒流出ガスに含まれる未燃物を酸化するために必要な量よりも少ないときに最大出力値を出力するとともに同触媒流出ガスに含まれる酸素の量が同触媒流出ガスに含まれる未燃物を酸化するために必要な量よりも多いときに最小出力値を出力する濃淡電池型酸素濃度センサである下流側空燃比センサと、
前記下流側空燃比センサの出力値に基づいて前記触媒に流入するガスである触媒流入ガスの空燃比を変更するように前記機関に供給される混合気の空燃比を制御する空燃比制御手段と、
を備えた内燃機関の空燃比制御装置において、
前記空燃比制御手段は、
前記下流側空燃比センサの出力値が減少していて同出力値の変化速度の大きさが第１変化速度閾値以上である場合、前記出力値が前記最大出力値と前記最小出力値との中央の値である中央値よりも大きいときであっても前記触媒流入ガスの空燃比が理論空燃比よりもリッチ側の空燃比となるように、且つ、前記下流側空燃比センサの出力値が増大していて同出力値の変化速度の大きさが第２変化速度閾値以上である場合、前記出力値が前記中央値よりも小さいときであっても前記触媒流入ガスの空燃比が理論空燃比よりもリーン側の空燃比となるように、前記機関に供給される混合気の空燃比を制御する通常空燃比フィードバック制御を実行するように構成された空燃比制御装置。
【請求項２】
請求の範囲１に記載の内燃機関の空燃比制御装置において、
前記空燃比制御手段は、
前記下流側空燃比センサの出力値が所定の第１閾値よりも小さく且つ同第１閾値よりも小さい所定の第２閾値よりも大きいとき前記通常空燃比フィードバック制御を実行するように構成され、
前記第１閾値は、前記最大出力値と前記最小出力値との中央の値である中央値と前記最大出力値との間の値であって且つ同中央値よりも同最大出力値に近い値に設定され、
前記第２閾値は、前記中央値と前記最小出力値との間の値であって且つ同中央値よりも同最小出力値に近い値に設定された、
空燃比制御装置。
【請求項３】
請求の範囲２に記載の内燃機関の空燃比制御装置において、
前記第１閾値は、前記触媒流入ガスの空燃比が理論空燃比よりもリーン側の空燃比であり且つ前記触媒の酸素吸蔵量が増大している場合であって、前記触媒流出ガスの空燃比が理論空燃比であるときの前記下流側空燃比センサの出力値に等しくなるように設定され、
前記第２閾値は、前記触媒流入ガスの空燃比が理論空燃比よりもリッチ側の空燃比であり且つ前記触媒の酸素吸蔵量が減少している場合であって、前記触媒流出ガスの空燃比が理論空燃比であるときの前記下流側空燃比センサの出力値に等しくなるように設定された、
空燃比制御装置。
【請求項４】
請求の範囲２又は請求の範囲３に記載の空燃比制御装置において、
前記空燃比制御手段は、
前記下流側空燃比センサの出力値が前記第１閾値を含む所定範囲内の値以上である場合、前記触媒流入ガスの空燃比が理論空燃比よりもリーン側の空燃比となるように前記機関に供給される混合気の空燃比を制御する空燃比制御装置。
【請求項５】
請求の範囲２又は請求の範囲３に記載の空燃比制御装置において、
前記空燃比制御手段は、
前記下流側空燃比センサの出力値が前記第２閾値を含む所定範囲内の値以下である場合、前記触媒流入ガスの空燃比が理論空燃比よりもリッチ側の空燃比となるように前記機関に供給される混合気の空燃比を制御する空燃比制御装置。
【請求項６】
請求の範囲２又は請求の範囲３に記載の空燃比制御装置において、
前記空燃比制御手段は、
前記下流側空燃比センサの出力値が前記第１閾値を含む所定範囲内の値以上である場合、前記触媒流入ガスの空燃比が理論空燃比よりもリーン側の空燃比となるように前記機関に供給される混合気の空燃比を制御し、且つ、
前記下流側空燃比センサの出力値が前記第２閾値を含む所定範囲内の値以下である場合、前記触媒流入ガスの空燃比が理論空燃比よりもリッチ側の空燃比となるように前記機関に供給される混合気の空燃比を制御する空燃比制御装置。
【請求項７】
請求の範囲１乃至請求の範囲６の何れか一項に記載の空燃比制御装置において、
前記空燃比制御手段は、
前記機関に吸入される吸入空気量を取得するとともに同取得された吸入空気量に基づいて前記機関に供給される混合気の空燃比を理論空燃比に一致させるための基本燃料噴射量を算出する基本燃料噴射量算出手段と、
前記基本燃料噴射量を補正するためのフィードバック量であるサブフィードバック量を前記下流側空燃比センサの出力値に基づいて算出するサブフィードバック量算出手段と、
前記基本燃料噴射量を前記サブフィードバック量により補正することにより得られる量の燃料を前記機関に噴射供給する燃料噴射手段と、
を備え、
前記サブフィードバック量算出手段は、
前記通常空燃比フィードバック制御を実行するために、前記下流側空燃比センサの出力値が減少している場合に前記サブフィードバック量が前記基本燃料噴射量を同出力値の変化速度の大きさが大きいほどより増大させる値となり、且つ、前記下流側空燃比センサの出力値が増大している場合に前記サブフィードバック量が前記基本燃料噴射量を同出力値の変化速度の大きさが大きいほどより減少させる値となるように、前記サブフィードバック量を算出するように構成された、
空燃比制御装置。
【請求項８】
請求の範囲６に記載の内燃機関の空燃比制御装置において、
前記空燃比制御手段は、
前記機関に吸入される吸入空気量を取得するとともに同取得された吸入空気量に基づいて前記機関に供給される混合気の空燃比を理論空燃比に一致させるための基本燃料噴射量を算出する基本燃料噴射量算出手段と、
前記基本燃料噴射量を補正するためのフィードバック量であるサブフィードバック量を前記下流側空燃比センサの出力値に基づいて算出するサブフィードバック量算出手段と、
前記基本燃料噴射量を前記サブフィードバック量により補正することにより得られる量の燃料を前記機関に噴射供給する燃料噴射手段と、
を備え、
前記サブフィードバック量算出手段は、前記通常空燃比フィードバック制御を実行するために、前記下流側空燃比センサの出力値が減少している場合に前記基本燃料噴射量を同出力値の変化速度の大きさが大きいほどより増大させ且つ前記下流側空燃比センサの出力値が増大している場合に前記基本燃料噴射量を同出力値の変化速度の大きさが大きいほどより減少させるサブフィードバック量の微分項を、同出力値の変化速度に所定の微分ゲインｋｄを乗じることにより算出する微分項算出手段、
を含む空燃比制御装置。
【請求項９】
請求の範囲８に記載の内燃機関の空燃比制御装置において、
前記サブフィードバック量算出手段は、
前記下流側空燃比センサの出力値が前記第１閾値以上である場合、前記第１閾値と前記下流側空燃比センサの出力値との差にリーン制御用ゲインＫｐＬを乗じた値と、前記第１閾値と前記第２閾値との間に設定された所定の目標値と前記第１閾値との差に第１ゲインＫｐＳ１を乗じた値と、の和を、前記基本燃料噴射量を減少させることによって前記機関に供給される混合気の空燃比を理論空燃比よりもリーン側の空燃比に制御するための前記サブフィードバック量の比例項として算出し、
前記下流側空燃比センサの出力値が前記第２閾値以下である場合、前記第２閾値と前記下流側空燃比センサの出力値との差にリッチ制御用ゲインＫｐＲを乗じた値と、前記目標値と前記第２閾値との差に第２ゲインＫｐＳ２を乗じた値と、の和を、前記基本燃料噴射量を増大させることによって前記機関に供給される混合気の空燃比を理論空燃比よりもリッチ側の空燃比に制御するための前記サブフィードバック量の比例項として算出し、
前記下流側空燃比センサ出力値が前記第１閾値と前記第２閾値との間にある場合、前記目標値と前記下流側空燃比センサの出力値との差に第３ゲインＫｐＳ３を乗じた値を前記サブフィードバック量の比例項として算出する比例項算出手段、
を含む空燃比制御装置。
【請求項１０】
請求の範囲９に記載の内燃機関の空燃比制御装置において、
前記比例項算出手段は、
前記下流側空燃比センサの出力値が前記第１閾値を含む所定範囲内の値よりも大きい場合、前記目標値を前記第１閾値と前記中央値との間の値である第１目標値に設定し、
前記下流側空燃比センサの出力値が前記第２閾値を含む所定範囲内の値よりも小さい場合、前記目標値を前記第２閾値と前記中央値との間の値である第２目標値に設定し、
前記下流側空燃比センサの出力値が前記第１閾値を含む所定範囲内の値と前記第２閾値を含む所定範囲内の値との間にある場合、前記目標値を前記第１目標値と前記第２目標値との間の値である第３目標値に設定するように構成された、
空燃比制御装置。
【請求項１１】
請求の範囲９又は請求の範囲１０に記載の内燃機関の空燃比制御装置において
前記比例項算出手段は、
前記下流側空燃比センサの出力値の変化速度の大きさが大きいほど前記比例項の大きさをより小さくするように構成された空燃比制御装置。
【請求項１２】
請求の範囲１乃至請求の範囲６の何れか一項に記載の内燃機関の空燃比制御装置において、
前記空燃比制御手段は、
前記機関に吸入される吸入空気量を取得するとともに同取得された吸入空気量に基づいて前記機関に供給される混合気の空燃比を理論空燃比に一致させるための基本燃料噴射量を算出する基本燃料噴射量算出手段と、
前記排気通路であって前記触媒よりも上流に配設されるとともにその配設部位を流れるガスの空燃比に応じた出力値を出力する上流側空燃比センサと、
前記上流側空燃比センサの出力値により表される上流側空燃比が理論空燃比に一致するように前記基本燃料噴射量を補正するメインフィードバック量を算出するメインフィードバック量算出手段と、
前記下流側空燃比センサの出力値が減少している場合に前記基本燃料噴射量を増大させるように前記基本燃料噴射量を補正し且つ前記下流側空燃比センサの出力値が増大している場合に前記基本燃料噴射量を減少させるように前記基本燃料噴射量を補正するサブフィードバック量を算出するサブフィードバック量算出手段と、
前記基本燃料噴射量を前記メインフィードバック量及び前記サブフィードバック量からなる空燃比補正量により補正することにより得られる量の燃料を前記機関に噴射供給する燃料噴射手段と、
を備え、
前記メインフィードバック量算出手段は、
前記下流側空燃比センサの出力値が減少している場合に前記メインフィードバック量が前記基本燃料噴射量を減少させる値になっているとき前記メインフィードバック量の大きさを小さくするか又は０に設定し、
前記下流側空燃比センサの出力値が増大している場合に前記メインフィードバック量が前記基本燃料噴射量を増大させる値になっているとき前記メインフィードバック量の大きさを小さくするか又は０に設定する、
ように構成された空燃比制御装置。
【請求項１３】
請求の範囲６に記載の内燃機関の空燃比制御装置において、
前記空燃比制御手段は、
前記機関に吸入される吸入空気量を取得するとともに同取得された吸入空気量に基づいて前記機関に供給される混合気の空燃比を理論空燃比に一致させるための基本燃料噴射量を算出する基本燃料噴射量算出手段と、
前記排気通路であって前記触媒よりも上流に配設されるとともにその配設部位を流れるガスの空燃比に応じた出力値を出力する上流側空燃比センサと、
前記上流側空燃比センサの出力値により表される上流側空燃比が理論空燃比に一致するように前記基本燃料噴射量を補正するメインフィードバック量を算出するメインフィードバック量算出手段と、
前記下流側空燃比センサの出力値が減少している場合に前記基本燃料噴射量を増大させるように前記基本燃料噴射量を補正し且つ前記下流側空燃比センサの出力値が増大している場合に前記基本燃料噴射量を減少させるように前記基本燃料噴射量を補正するサブフィードバック量を算出するサブフィードバック量算出手段と、
前記基本燃料噴射量を前記メインフィードバック量及び前記サブフィードバック量からなる空燃比補正量により補正することにより得られる量の燃料を前記機関に噴射供給する燃料噴射手段と、
を備え、
前記メインフィードバック量算出手段は、
前記下流側空燃比センサの出力値が前記第１閾値を含む所定範囲内の値以上である場合に前記メインフィードバック量が前記基本燃料噴射量を増大させる値であるとき同メインフィードバック量を０に設定し、
前記下流側空燃比センサの出力値が前記第２閾値を含む所定範囲内の値以下である場合に前記メインフィードバック量が前記基本燃料噴射量を減少させる値であるとき同メインフィードバック量を０に設定する、
ように構成された空燃比制御装置。
【請求項１４】
請求の範囲２、請求の範囲３、請求の範囲４、請求の範囲６、請求の範囲８、請求の範囲９、請求の範囲１０、請求の範囲１１及び請求の範囲１３の何れか一項に記載の内燃機関の空燃比制御装置において、
前記空燃比制御手段は、
前記下流側空燃比センサの出力値が前記最大出力値となっているときに前記触媒流入ガスの空燃比を理論空燃比よりもリーン側の所定リーン空燃比に制御し、その状態において前記下流側空燃比センサの出力値が前記最小出力値又は前記最小出力値に所定値を加えた値に到達するまでの期間において同下流側空燃比センサの出力値の変化速度の大きさが最小となった時点における同下流側空燃比センサの出力値を前記第１閾値として取得するストイキ上限値取得手段を含む空燃比制御装置。
【請求項１５】
請求の範囲２、請求の範囲３、請求の範囲５、請求の範囲６、請求の範囲８、請求の範囲９、請求の範囲１０、請求の範囲１１、請求の範囲１３及び請求の範囲１４の何れか一項に記載の内燃機関の空燃比制御装置において、
前記空燃比制御手段は、
前記下流側空燃比センサの出力値が前記最小出力値となっているときに前記触媒流入ガスの空燃比を理論空燃比よりもリッチ側の所定リッチ空燃比に制御し、その状態において前記下流側空燃比センサの出力値が前記最大出力値又は前記最大出力値から所定値を減じた値に到達するまでの期間において同下流側空燃比センサの出力値の変化速度の大きさが最小となった時点における同下流側空燃比センサの出力値を前記第２閾値として取得するストイキ下限値取得手段を含む空燃比制御装置。
【請求項１６】
請求の範囲１乃至請求の範囲６の何れか一項に記載の内燃機関の空燃比制御装置において、
前記空燃比制御手段は、
前記機関に吸入される吸入空気量を取得するとともに同取得された吸入空気量に基づいて前記機関に供給される混合気の空燃比を理論空燃比に一致させるための基本燃料噴射量を算出する基本燃料噴射量算出手段と、
前記排気通路であって前記触媒よりも上流に配設されるとともにその配設部位を流れるガスの空燃比に応じた出力値を出力する上流側空燃比センサと、
前記上流側空燃比センサの出力値により表される上流側空燃比が理論空燃比に一致するように前記基本燃料噴射量を補正するメインフィードバック量を算出するメインフィードバック量算出手段と、
前記下流側空燃比センサの出力値が減少している場合に前記基本燃料噴射量を増大させるように前記基本燃料噴射量を補正し且つ前記下流側空燃比センサの出力値が増大している場合に前記基本燃料噴射量を減少させるように前記基本燃料噴射量を補正するサブフィードバック量を算出するサブフィードバック量算出手段と、
前記基本燃料噴射量を前記メインフィードバック量及び前記サブフィードバック量からなる空燃比補正量により補正することにより得られる量の燃料を前記機関に噴射供給する燃料噴射手段と、
前記空燃比補正量が前記基本燃料噴射量を増大させる値である状態が継続している場合に同空燃比補正量によって同基本燃料噴射量が増大させられる量の積算値を求め、同求めた積算値の大きさが所定の増量閾値に到達したとき、同空燃比補正量に関わらず、前記機関に供給される混合気の空燃比が所定の第１の触媒回復時間だけ理論空燃比よりもリーン側の空燃比となるように前記燃料噴射手段から噴射供給される燃料の量を制御する触媒機能回復手段、
を含む空燃比制御装置。
【請求項１７】
請求の範囲１乃至請求の範囲６の何れか一項に記載の内燃機関の空燃比制御装置において、
前記空燃比制御手段は、
前記機関に吸入される吸入空気量を取得するとともに同取得された吸入空気量に基づいて前記機関に供給される混合気の空燃比を理論空燃比に一致させるための基本燃料噴射量を算出する基本燃料噴射量算出手段と、
前記排気通路であって前記触媒よりも上流に配設されるとともにその配設部位を流れるガスの空燃比に応じた出力値を出力する上流側空燃比センサと、
前記上流側空燃比センサの出力値により表される上流側空燃比が理論空燃比に一致するように前記基本燃料噴射量を補正するメインフィードバック量を算出するメインフィードバック量算出手段と、
前記下流側空燃比センサの出力値が減少している場合に前記基本燃料噴射量を増大させるように前記基本燃料噴射量を補正し且つ前記下流側空燃比センサの出力値が増大している場合に前記基本燃料噴射量を減少させるように前記基本燃料噴射量を補正するサブフィードバック量を算出するサブフィードバック量算出手段と、
前記基本燃料噴射量を前記メインフィードバック量及び前記サブフィードバック量からなる空燃比補正量により補正することにより得られる量の燃料を前記機関に噴射供給する燃料噴射手段と、
前記空燃比補正量が前記基本燃料噴射量を減少させる値である状態が継続している場合に同空燃比補正量によって同基本燃料噴射量が減少させられる量の積算値を求め、同求めた積算値の大きさが所定の減量閾値に到達したとき、同空燃比補正量に関わらず、前記機関に供給される混合気の空燃比が所定の第２の触媒回復時間だけ理論空燃比よりもリッチ側の空燃比となるように前記燃料噴射手段から噴射供給される燃料の量を制御する触媒機能回復手段、
を含む空燃比制御装置。
【請求項１８】
請求の範囲６に記載の内燃機関の空燃比制御装置において、
前記空燃比制御手段は、
前記下流側空燃比センサの出力値が前記第１閾値よりも小さく且つ前記第２閾値よりも大きい値となっていて前記通常空燃比フィードバック制御が実行されている期間における同出力値の変動周波数を取得するとともに同取得した変動周波数が所定の閾値周波数以下となった場合、前記通常空燃比フィードバック制御に代え、前記触媒の酸素吸蔵量を推定するとともに同推定した酸素吸蔵量が所定の酸素吸蔵量下限値と同酸素吸蔵量下限値よりも大きい所定の酸素吸蔵量上限値との間になるように、同推定した酸素吸蔵量に基づいて前記機関に供給される混合気の空燃比を制御する酸素吸蔵量フィードバック制御を実行するように構成された、
空燃比制御装置。
【請求項１９】
請求の範囲１８に記載の内燃機関の空燃比制御装置において、
前記空燃比制御手段は、
前記酸素吸蔵量フィードバック制御が実行されている期間に、前記下流側空燃比センサの出力値が前記第１閾値以上となるか又は前記第２閾値以下となった場合、前記酸素吸蔵量フィードバック制御を終了するとともに、前記下流側空燃比センサの出力値に基づいた前記機関に供給される混合気の空燃比の制御を再開するように構成された、
空燃比制御装置。
【国際調査報告】
2010134209.tif 000042
2010134209.tif 000043
2010134209.tif 000044
2010134209.tif 000045