(57)【要約】【課題】ドライバビリティおよび排ガスの悪化を抑えることのできる内燃機関の空燃比制御装置を得る。【解決手段】排ガスを浄化する触媒１０９の上流側に設けられて上流側排ガス中の空燃比を検出する上流側Ｏ２センサ１１０の出力値が所定の電圧以上となるタイミングでフィードバック制御定数の増大量を小さくし、上流側Ｏ２センサ１１０の出力値が所定の電圧以下となるタイミングでフィードバック制御定数の減少量を小さくする。【選択図】図２
2015206273.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関の排気系に設置されて前記内燃機関からの排ガスを浄化する触媒の上流側に設けられ、上流側排ガス中の空燃比を検出する空燃比検出手段と、
前記内燃機関の運転条件を検出する運転状態検出手段と、
前記空燃比検出手段の出力値および前記運転状態検出手段の所定のフィードバック制御定数に応じて前記内燃機関に供給する空燃比を調整して、前記空燃比を周期的にリッチ方向およびリーン方向に振動させる空燃比フィードバック制御手段と、
を備えた内燃機関の空燃比制御装置であって、
前記空燃比フィードバック制御手段は、
前記空燃比検出手段の出力値が所定の電圧以上となるタイミングで前記フィードバック制御定数の増大量を小さくし、前記空燃比検出手段の出力値が所定の電圧以下となるタイミングで前記フィードバック制御定数の減少量を小さくすることを特徴とする内燃機関の空燃比制御装置。
【請求項２】
前記所定の電圧は、前記空燃比検出手段の理論空燃比に相当する電圧に設定することを特徴とする請求項１に記載の内燃機関の空燃比制御装置。
【請求項３】
前記空燃比の振動が前記リーン方向から前記リッチ方向に移行した後、前記フィードバック制御定数の増大量を小さくするまでの制御期間、あるいは、前記空燃比の振動が前記リッチ方向から前記リーン方向に移行した後、前記フィードバック制御定数の減少量を小さくするまでの制御期間を計測する制御期間計測手段を備え、
前記制御期間が所定期間より長い場合において、前記空燃比フィードバック制御手段による空燃比の振動処理の実行を中止することを特徴とする請求項１または２に記載の内燃機関の空燃比制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、内燃機関の空燃比制御装置に関し、特には内燃機関に供給される空燃比を周期的にリッチ方向およびリーン方向に振動させる空燃比フィードバック制御手段を備えた内燃機関の空燃比制御装置に関するものである。
【背景技術】
【０００２】
一般的に、内燃機関の排気通路には、排ガス中の有害成分ＨＣ、ＣＯ、ＮＯｘを同時に浄化する３元触媒（以下、触媒という。）が設置されている。この種の触媒においては、理論空燃比付近で有害成分ＨＣ、ＣＯ、ＮＯｘのいずれについても浄化率が高くなる。従って、内燃機関の制御装置においては、通常、触媒の上流側にＯ２センサを設け、空燃比が理論空燃比付近となるように燃料噴射量を調整して、空燃比をフィードバック制御している。
【０００３】
また、触媒には、一次フィルタのように作用する酸素吸蔵能力が付加されており、上流側空燃比（上流側Ｏ２センサの出力値に対応）の理論空燃比からの一時的な変動を吸収するようになっている。即ち、触媒は、上流側空燃比（以下、上流側Ａ／Ｆという。）が理論空燃比よりもリーン側の場合には、排ガス中の酸素を取り込んで蓄積し、逆にリッチ側の場合には、触媒中に蓄積されている酸素を放出する。これにより、上流側Ａ／Ｆの一時的な変動は、触媒内でフィルタ処理され、触媒下流側の空燃比（以下、下流側Ａ／Ｆという。)には表れにくくなる。
【０００４】
また、触媒の酸素吸蔵量の最大値は、触媒の製造時に添付される触媒吸蔵能力を有する物質の量によって決定し、酸素吸蔵量が触媒の最大酸素吸蔵量または最小酸素吸蔵量（＝０）に到達すると、もはや上流側Ａ／Ｆの変動を吸収することができなくなるので、触媒内の空燃比が理論空燃比から外れて、触媒の浄化能力は低下する。このとき、触媒の下流側での空燃比が理論空燃比から大きく外れるので、触媒の酸素吸蔵量が最大値または最小値（＝０）に到達したことを検出することができる。
【０００５】
また、触媒は、高温の排ガスにさらされることになるが、車両用の内燃機関において通常考えられる使用条件では、触媒の浄化機能が急激に低下しないように設計されている。しかし、使用中に何らかの原因（例えば失火した場合に発生する触媒内燃焼等）で、触媒の酸素吸蔵能力が著しく低下する場合があり、また、通常の使用条件下でも、例えば走行距離が数万キロにも達してくると、経年劣化により徐々に酸素吸蔵能力は低下していく。
【０００６】
また、正常触媒時および劣化触媒時の各挙動を示す図３０、図３１のタイミングチャートから明らかなように、触媒が劣化して酸素吸蔵量ＯＳＣが減少してくると、上流側Ｏ２センサの出力値Ｖ１（上流側Ａ／Ｆ）の変動が触媒で吸収できなくなり、下流Ｏ２センサの出力値Ｖ２（下流側Ａ／Ｆ）の変動が増加してくることが知られている。なお、図３０は正常触媒時での各挙動、図３１は劣化触媒時での各挙動を示し、それぞれの図において（ａ）は上流側Ａ／Ｆ、（ｂ）は上流側Ｏ２センサの出力値Ｖ１、（ｃ）は推定酸素吸蔵量、（ｄ）は下流側Ｏ２センサの出力値Ｖ２の挙動を示している。
【０００７】
そこで、従来から、上流側Ｏ２センサの出力値Ｖ１の変動と、下流側Ｏ２センサの出力値Ｖ２の変動とを比較することにより、触媒の劣化を診断する内燃機関の空燃比制御装置が提案されている（例えば、特許文献１参照）。
【０００８】
また、近年では、地球環境への意識の向上から排ガス規制が強化され、より軽微な触媒劣化（最大酸素吸蔵量の減少）を検出することが求められている。また、年々、酸素吸蔵能力を持つ物質の耐熱性が向上しつつあるので、触媒への添加量を増加させることができるようになり、劣化検出が必要な触媒の最大酸素吸蔵量は増加している。
【０００９】
そこで、図３２のタイミングチャートに示すように、上流側Ｏ２センサの出力値Ｖ１のリッチ方向、リーン方向への空燃比振動の周期および振動幅を増加させることにより、触媒の酸素吸蔵量の振動幅を増大させて、触媒の軽微な劣化を検出する内燃機関の空燃比制御装置も提案されている。なお、図３２において（ａ）は上流側Ａ／Ｆ、（ｂ）は上流側Ｏ２センサの出力値Ｖ１、（ｃ）は推定酸素吸蔵量、（ｄ）は下流側Ｏ２センサの出力値Ｖ２の挙動を示している。（例えば、特許文献２、特許文献３参照）。
【００１０】
また、前記特許文献１から３に開示された内燃機関の空燃比制御装置においては、最大酸素吸蔵量の変化に応じて、空燃比振動の変動幅または周期を大きく変化させる必要があることから、空燃比の制御性や排ガス性能、空燃比フィードバック性能、トルク変動の増加などの各種性能が悪化する課題があり、その課題の解決手段として、平均空燃比振動手段を備え、この平均空燃比振動手段は、空燃比フィードバック制御手段によって周期的に振動する空燃比の平均空燃比を所定周期でリッチ方向およびリーン方向に振動させるために、平均空燃比の所定のリッチ期間および所定のリーン期間を交互に設定する手段と、平均空燃比が、リッチ期間にリッチ方向に所定の振動幅を持ち、リーン期間にリーン方向に所定の振動幅を持つようにリッチ期間およびリーン期間に対応してフィードバック制御定数を設定する手段を設け、空燃比フィードバック性能およびトルク変動を重視した空燃比振動の周期または振動幅の設定を変更することなく、酸素吸蔵量の振動幅を、触媒劣化に適応するために自由に変更することのできる内燃機関の空燃比制御装置が提案されている（例えば、特許文献４参照）。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特公平６−３９９３２号公報
【特許文献２】特開平６−２６３３０号公報
【特許文献３】特開平７−２５９６００号公報
【特許文献４】特開２００８−１５７１３３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
従来の内燃機関の空燃比制御装置では、例えば特許文献４に参照されるように、リッチ期間ではリッチ方向にて所定の振動幅で制御し、リーン期間ではリーン方向にて所定の振動幅で制御する際、所定期間に到達するまで、空燃比補正係数が加算あるいは減算され続けることから、上流側Ａ／Ｆが理論空燃比から大きく外れた領域での制御となり、ドライバビリティおよび排ガスの悪化を抑えることができない課題があった。
【００１３】
この発明は、前記課題に鑑みてなされたもので、ドライバビリティおよび排ガスの悪化を抑えることのできる内燃機関の空燃比制御装置を得ることを目的とする。
【課題を解決するための手段】
【００１４】
この発明による内燃機関の空燃比制御装置は、内燃機関の排気系に設置されて前記内燃機関からの排ガスを浄化する触媒の上流側に設けられ、上流側排ガス中の空燃比を検出する空燃比検出手段と、前記内燃機関の運転条件を検出する運転状態検出手段と、前記空燃比検出手段の出力値および前記運転状態検出手段の所定のフィードバック制御定数に応じて前記内燃機関に供給する空燃比を調整して、前記空燃比を周期的にリッチ方向およびリーン方向に振動させる空燃比フィードバック制御手段と、を備えた内燃機関の空燃比制御装置であって、前記空燃比フィードバック制御手段は、前記空燃比検出手段の出力値が所定の電圧以上となるタイミングで前記フィードバック制御定数の増大量を小さくし、前記空燃比検出手段の出力値が所定の電圧以下となるタイミングで前記フィードバック制御定数の減少量を小さくするものである。
【発明の効果】
【００１５】
この発明によれば、フィードバック制御中の上流側Ａ／Ｆの理論空燃比からの大きく外れた領域での制御を抑えられ、ドライバリティおよび排ガスの悪化を抑えることができる。
【図面の簡単な説明】
【００１６】
【図１】この発明の実施の形態１に係る内燃機関の空燃比制御装置を概略的に示す構成図である。
【図２】図１に示す制御回路の基本構成を示す機能ブロック図である。
【図３Ａ】図２に示す第１の空燃比フィードバック制御手段による演算処理動作を示すフローチャートである。
【図３Ｂ】図２に示す第１の空燃比フィードバック制御手段による演算処理動作を示すフローチャートである。
【図４】図２に示す第１の空燃比フィードバック制御手段の動作を補足説明するためのタイミングチャートである。
【図５】運転条件に応じて可変設定される一般的な目標空燃比の制御領域を示す説明図である。
【図６Ａ】図２に示す平均空燃比振動手段の演算処理動作を示すフローチャートである。
【図６Ｂ】図２に示す平均空燃比振動手段の演算処理動作を示すフローチャートである。
【図７】一般的なλ型センサを用いた場合の下流側Ｏ２センサの出力特性を示す説明図である。
【図８】一般的なリッチ／リーン判定閾値のヒステリシス幅を示す説明図である。
【図９】この発明の実施の形態１に係る内燃機関の空燃比制御装置により吸入吸気量に応じて設定されるリッチ方向の振動周期の特性を示す説明図である。
【図１０】この発明の実施の形態１に係る内燃機関の空燃比制御装置により吸入吸気量に応じて設定されるリッチ方向の振動幅の特性を示す説明図である。
【図１１】この発明の実施の形態１に係る内燃機関の空燃比制御装置により吸入吸気量に応じて設定されるリーン方向の振動周期の特性を示す説明図である。
【図１２】この発明の実施の形態１に係る内燃機関の空燃比制御装置により吸入吸気量に応じて設定されるリーン方向の振動幅の特性を示す説明図である。
【図１３】この発明の実施の形態１に係る内燃機関の空燃比制御装置により振動回数に応じて設定される周期補正係数および振動幅補正係数をテーブルで示す説明図である。
【図１４】図２に示す平均空燃比振動手段の動作を補足説明するためのタイミングチャートである。
【図１５】この発明の実施の形態１に係る内燃機関の空燃比制御装置により振動回数に応じて設定される周期補正係数および振動幅補正係数の他の例をテーブルで示す説明図である。
【図１６】図１５の周期補正係数および振動幅補正係数に基づく平均空燃比振動手段の動作を補足説明するためのタイミングチャートである。
【図１７】図２内の平均空燃比振動手段の動作を補足説明するためのタイミングチャートである。
【図１８】図２に示す平均空燃比振動手段による制御定数の設定演算処理を示すフローチャートである。
【図１９】図２に示す最大酸素吸蔵量演算手段による演算処理動作を示すフローチャートである。
【図２０】この発明の実施の形態１に係る内燃機関の空燃比制御装置により触媒温度に応じて設定される温度補正係数の１次元マップを示す説明図である。
【図２１】この発明の実施の形態１に係る内燃機関の空燃比制御装置により触媒劣化度に応じて設定される劣化補正係数の１次元マップを示す説明図である。
【図２２】図２に示す最大酸素吸蔵量演算手段による触媒劣化度の演算処理動作を示すフローチャートである。
【図２３】図２に示す触媒劣化診断手段の動作を補足説明するためのタイミングチャートである。
【図２４Ａ】図２に示す触媒劣化診断手段の演算処理動作を示すフローチャートである。
【図２４Ｂ】図２に示す触媒劣化診断手段の演算処理動作を示すフローチャートである。
【図２５】図２に示す触媒劣化診断手段の動作を補足説明するためのタイミングチャートである。
【図２６】図２に示す第２の空燃比フィードバック制御手段による演算処理動作を示すフローチャートである。
【図２７】この発明の実施の形態１に係る内燃機関の空燃比制御装置により偏差に応じて設定される目標平均空燃比の積分演算用の更新量の１次元マップを示す図である。
【図２８】この発明の実施の形態１による効果を説明するための、従来の内燃機関の空燃比制御装置による軽微劣化触媒時の処理動作を示すタイミングチャートである。
【図２９】この発明の実施の形態１に係る内燃機関の空燃比制御装置による効果を説明するための軽微劣化触媒時の処理動作を示すタイミングチャートである。
【図３０】従来の内燃機関の空燃比制御装置による正常触媒時の処理動作を示すタイミングチャートである。
【図３１】従来の内燃機関の空燃比制御装置による劣化触媒時の処理動作を示すタイミングチャートである。
【図３２】従来の内燃機関の空燃比制御装置による軽微劣化触媒時の処理動作を示すタイミングチャートである。
【発明を実施するための形態】
【００１７】
以下、この発明に係る内燃機関の空燃比制御装置の好適な実施の形態について、図面を参照して詳細に説明する。
【００１８】
実施の形態１．
図１は、この発明の実施の形態１に係る内燃機関の空燃比制御装置の全体を周辺装置とともに示す構成図である。図１において、内燃機関１０１には、吸気系として、エアクリーナ１０２、スロットルバルブ１０３およびサージタンク１０４を有する吸気管１０５が設けられている。
【００１９】
吸気管１０５には、吸入空気量Ｑａを検出するエアフローセンサ１０６と、燃料を噴射するインジェクタ１０７と、スロットルバルブ１０３のスロットル開度θを検出するスロットルセンサ１１７と、アイドリング時を検出するアイドルスイッチ１１８とが設けられている。アイドルスイッチ１１８は、アイドリング開度（スロットル開度θが全閉状態）時にオンとなるアイドル信号ＤＬを生成する。
【００２０】
また、内燃機関１０１には、排気系として、排気管１０８が設けられている。排気管１０８内には、排気ガス中の有害成分を浄化するための三元触媒（以下、触媒という。）１０９が配置されるとともに、触媒１０９の上流側に配置された空燃比検出手段であるＯ２センサ（以下、上流側Ｏ２センサという。）１１０と、触媒１０９の下流側に配置された空燃比検出手段であるλＯ２センサ（以下、下流側Ｏ２センサという。）１１１が設けられている。なお、ここでは、上流側Ｏ２センサ１１０に、λＯ２センサを用いた場合を例にして説明する。
【００２１】
内燃機関制御ユニット（以下、ＥＣＵという。）１１２は、マイクロコンピュータにより構成されており、中央処理装置（以下、ＣＰＵという。）１１３と、リードオンリメモリ（以下、ＲＯＭという。）１１４と、ランダムアクセスメモリ（以下、ＲＡＭという。）１１５と、入出力インタフェース（以下、Ｉ／Ｏという。）１１６と、駆動回路１２２と、バックアップＲＡＭ１２４を有する。
【００２２】
内燃機関１０１には、冷却水温ＷＴを検出する水温センサ１１９と、クランク角位置に対応したクランク角信号ＣＡを生成するクランク角センサ１２０と、カム角位置に対応したカム角信号を生成するカム角センサ１２１とが設けられている。
【００２３】
なお、水温センサ１１９、クランク角センサ１２０およびカム角センサ１２１は、他のセンサ手段（エアフローセンサ１０６、上流側Ｏ２センサ１１０、下流側Ｏ２センサ１１１、スロットルセンサ１１７、アイドルスイッチ１１８、など）とともに、内燃機関１０１の運転状態を検出する運転状態検出手段を構成しており、それぞれの検出信号は、運転状態情報としてＥＣＵ１１２に入力されている。
【００２４】
図１に示す内燃機関１０１において、エアクリーナ１０２により清浄化された吸気は、スロットルバルブ１０３により負荷に応じた吸気量に制御され、サージタンク１０４および吸気管１０５を介して内燃機関１０１の各気筒に吸入される。このとき、内燃機関１０１への吸入空気量Ｑａは、エアフローセンサ１０６により検出される。また、内燃機関１０１の各気筒に対する燃料は、インジェクタ１０７を介して吸気管１０５内に噴射される。なお、吸入空気量Ｑａはエアフローセンサ１０６で検出する代わりに、内燃機関１０１の動作点およびサージタンク１０４内の圧力を基に推定してもかまわない。
【００２５】
内燃機関１０１の各気筒に吸入された混合気（空気および燃料）は、燃焼行程を経て排気ガスとなり、排気ガスは、排気管１０８中に配置された触媒１０９を通過することにより、有害成分が浄化されて大気中に排気される。
【００２６】
このとき、触媒１０９の上流側に設けられた上流側Ｏ２センサ１１０は、排気ガス中の酸素濃度λＯ２を検出して排気ガスの雰囲気がリッチであるかリーンであるかを検出する。また、触媒１０９の下流側に設けられた下流側Ｏ２センサ１１１は、排気ガス中の酸素濃度λＯ２を検出する。上流側Ｏ２センサ１１０、下流側Ｏ２センサ１１１は、排気ガス中の空燃比に応じた電気信号（電圧信号）を出力値Ｖ１、Ｖ２として生成する。
【００２７】
ＥＣＵ１１２において、各種の運転状態情報（吸入空気量Ｑａ、スロットル開度θ、アイドル信号ＤＬ、冷却水温ＷＴ、空燃比Ａ／Ｆ、酸素濃度λＯ２、クランク角信号ＣＡ、カム角センサ１２１からのカム角信号など）は、Ｉ／Ｏ１１６を介して、ＣＰＵ１１３に取り込まれる。
【００２８】
ＥＣＵ１１２は、空燃比フィードバック制御系を構成しており、触媒１０９の前後（上流側および下流側）に配設された各センサ１１０、１１１からの触媒上流の酸素濃度λＯ２および触媒下流の酸素濃度λＯ２に基づいて、インジェクタ１０７の駆動信号を生成し、所要量の燃料を噴射させるようになっている。
【００２９】
なお、ＥＣＵ１１２は、内燃機関１０１を最適に制御させる装置と共に、触媒１０９の劣化検出装置としても機能する。また、ＥＣＵ１１２内の駆動回路１２２は、インジェクタ１０７のみならず、内燃機関１０１に関連する各種アクチュエータ、例えばＩＳＣバルブ（図示せず）などを駆動している。
【００３０】
即ち、ＥＣＵ１１２は、空燃比制御の他に、点火時期制御、アイドル回転数制御などの各種制御を行うとともに、自己診断機能として、排気ガス悪化の要因となる各種コンポーネントの故障などを検出する。検出した情報に応じて、Ｉ／Ｏ１１６を介して警告ランプ１２３を点灯させる。
【００３１】
また、ＲＯＭ１１４には、触媒１０９の酸素変化量の制御ルーチンのみならず、触媒１０９の劣化検出ルーチンなどの制御プログラムが格納されており、さらに、これらの制御処理に必要なマップなども格納されている。
【００３２】
図２は、図１内のＥＣＵ１１２の基本構成を示す機能ブロック図であり、図２内の各手段は主としてＣＰＵ１１３により構成されている。前述のように、ＥＣＵ１１２には、上流側Ｏ２センサ１１０の出力値Ｖ１（触媒１０９の上流側排気ガス中の空燃比）と、下流側Ｏ２センサ１１１の出力値Ｖ２（触媒１０９の下流側排気ガス中の空燃比）と、他の各種センサからの検出情報が入力されている。
【００３３】
図２において、ＥＣＵ１１２は、第１の空燃比フィードバック制御手段２０１と、第２の空燃比フィードバック制御手段２０２と、平均空燃比振動手段２０３と、最大酸素吸蔵量演算手段２０４と、触媒劣化振動手段２０５とを備えており、第１の空燃比フィードバック制御手段２０１には、上流側Ｏ２センサ１１０の出力値Ｖ１が入力されている。
【００３４】
第２の空燃比フィードバック制御手段２０２、平均空燃比振動手段２０３および触媒劣化振動手段２０５には、下流側Ｏ２センサ１１１の出力値Ｖ２が入力され、最大酸素吸蔵量演算手段２０４には、他の各種センサからの検出情報が入力されている。
【００３５】
第１の空燃比フィードバック制御手段２０１は、上流側Ｏ２センサ１１０の出力値Ｖ１および所定のフィードバック制御定数（以下、制御定数という。）に応じて、インジェクタ１０７の駆動回路１２２を制御することにより、内燃機関１０１に供給する空燃比を調整して、空燃比を周期的にリッチ方向およびリーン方向に振動させる。
【００３６】
また、第１の空燃比フィードバック制御手段２０１は、第１の空燃比フィードバック制御手段２０１の制御ゲインを変更する制御ゲイン変更手段２０７を含み、制御ゲイン変更手段２０７は、上流側Ｏ２センサ１１０の出力値Ｖ１に応じて制御ゲインを変更する。
【００３７】
また、第１の空燃比フィードバック制御手段２０１は、第１の空燃比フィードバック制御手段２０１の制御期間を計測する制御期間計測手段２０８を含んでいる。制御期間計測手段２０８は、空燃比の振動がリーン期間からリッチ期間に移行してから制御定数の増大量を小さい値に切り替えるまでの期間、あるいは、空燃比の振動がリッチ期間からリーン期間に移行してから制御定数の減少量を小さい値に切り替えるまでの期間を計測する。
【００３８】
平均空燃比振動手段２０３は、触媒１０９の酸素吸蔵量（後述する推定酸素吸蔵量ＯＳＣ）に基づいて、周期的に振動する空燃比を平均化した平均空燃比がリッチ方向およびリーン方向に振動するように、第１の空燃比フィードバック制御手段２０１内で用いられる制御定数を操作する。
【００３９】
平均空燃比振動手段２０３は、具体的には、平均空燃比に対する目標平均空燃比ＡＦＡＶＥｏｂｊに応じて制御定数を設定し、目標平均空燃比ＡＦＡＶＥｏｂｊをリッチ方向お
よびリーン方向に周期的に振動させる。
【００４０】
また、例えば、平均空燃比振動手段２０３は、触媒１０９の酸素吸蔵量の振動幅ΔＯＳＣが、触媒１０９の最大酸素吸蔵量ＯＳＣｍａｘの範囲内であって、かつ内燃機関１０１の運転条件に応じて設定された所定振動幅となるように、平均空燃比の振動幅または振動周期を、内燃機関１０１の運転条件に応じて設定する。
【００４１】
または、平均空燃比振動手段２０３は、触媒１０９の酸素吸蔵量の振動幅ΔＯＳＣが、触媒１０９が劣化する前の最大酸素吸蔵量ＯＳＣｍａｘの範囲内であって、かつ劣化診断が必要な劣化触媒の最大酸素吸蔵量の範囲外となるように、平均空燃比の振動幅または振動周期を、内燃機関１０１の運転条件に応じて設定する。
【００４２】
平均空燃比振動手段２０３は、平均空燃比の振動開始時の最初の振動周期を、最終的に設定される振動周期の半分に設定し、平均空燃比の振動開始時の最初の振動幅を、最終的に設定される振動幅の半分に設定する。また、平均空燃比振動手段２０３は、内燃機関１０１の過渡運転中または過渡運転後の所定期間において、平均空燃比の振動処理の実行を中止する。
【００４３】
平均空燃比振動手段２０３は、平均空燃比を所定周期でリッチ方向とリーン方向とに振動させ、平均空燃比がリッチ方向に設定されているときに、下流側Ｏ２センサ１１１の出力値Ｖ２がリッチ方向に反転した場合には、平均空燃比のリッチ方向への設定周期を終了して、平均空燃比をリーン方向に強制的に反転させる。また、平均空燃比振動手段２０３は、平均空燃比がリーン方向に設定されているときに、下流側Ｏ２センサ１１１の出力値Ｖ２がリーン方向に反転した場合には、平均空燃比のリーン方向への設定周期を終了して、平均空燃比をリッチ方向に強制的に反転させる。
【００４４】
また、平均空燃比振動手段２０３は、推定酸素吸蔵量ＯＳＣに基づいて平均空燃比をリッチ方向とリーン方向とに振動させ、平均空燃比がリッチ方向に設定されているときに、下流側Ｏ２センサ１１１の出力値Ｖ２がリッチ方向に反転した場合には、推定酸素吸蔵量ＯＳＣを触媒１０９の酸素吸蔵量の振動範囲の下限値にリセットするとともに、平均空燃比をリーン方向に強制的に反転させる。
【００４５】
また、平均空燃比振動手段２０３は、平均空燃比がリーン方向に設定されているときに、下流側Ｏ２センサ１１１の出力値Ｖ２がリーン方向に反転した場合には、推定酸素吸蔵量ＯＳＣを触媒１０９の酸素吸蔵量の振動範囲の上限値にリセットするとともに、平均空燃比をリッチ方向に強制的に反転させる。
さらに、平均空燃比振動手段２０３は、触媒劣化診断手段２０５による触媒１０９の劣化診断時と劣化診断時以外とで、触媒１０９の酸素吸蔵量の振動幅ΔＯＳＣが変化するように、平均空燃比の振動幅または振動周期を変更する。
【００４６】
第２の空燃比フィードバック制御手段２０２は、平均空燃比振動手段２０３により振動する平均空燃比の振動中心（中心空燃比）ＡＦＣＮＴを、下流側Ｏ２センサ１１１の出力値Ｖ２に基づいて補正する。
【００４７】
また、第２の空燃比フィードバック制御手段２０２は、第２の空燃比フィードバック制御手段２０２の制御ゲインを変更する制御ゲイン変更手段２０６を含み、制御ゲイン変更手段２０６は、平均空燃比振動手段２０３による平均空燃比の振動処理の実行中においては、制御ゲインを変更する。
【００４８】
触媒劣化診断手段２０５は、最大酸素吸蔵量演算手段２０４により演算された最大酸素吸蔵量ＯＳＣｍａｘに基づいて、触媒１０９の劣化の有無を診断する。また、触媒劣化診断手段２０５は、平均空燃比振動手段２０３による平均空燃比の振動処理の実行中に、少なくとも下流側Ｏ２センサ１１１の出力値Ｖ２により触媒１０９の劣化を診断する。触媒劣化診断手段２０５による診断結果は、警報ランプ１２３などの警報駆動手段に入力される。
【００４９】
次に、図３Ａ、図３Ｂのフローチャートを参照しながら、図２内の第１の空燃比フィードバック制御手段２０１による演算処理動作と、図２内の第１の空燃比フィードバック制御手段２０１の制御ゲイン変更手段２０７による演算処理動作と、図２内の第１の空燃比フィードバック制御手段２０１の制御期間計測手段２０８による演算処理動作について説明する。図３Ａ、図３Ｂの演算処理ルーチンは、上流側Ｏ２センサ１１０の出力値Ｖ１に基づく燃料補正係数ＦＡＦの演算制御手順を示しており、所定期間（例えば、５ｍｓｅｃ）ごとに第１の空燃比フィードバック制御手段２０１により実行される。
【００５０】
図３Ａ、図３Ｂにおいて、各判定処理からの分岐部の符号「Ｙ」、「Ｎ」は、それぞれ「ＹＥＳ」、「ＮＯ」を示している。まず、上流側Ｏ２センサ１１０の出力値Ｖ１をＡ／Ｄ変換して取り込み（ステップ４０１）、上流側Ｏ２センサ１１０による空燃比のフィードバックＦ／Ｂ（閉ループ）条件が成立しているか否かを判定する（ステップ４０２）。
【００５１】
このとき、理論空燃比制御以外の空燃比制御条件（例えば、機関始動中、低水温時のリッチ化制御中、高負荷パワー増量のリッチ化制御中、燃費向上のためのリーン化制御中、始動後のリーン化制御中、燃料カット中）の成立時や、上流側Ｏ２センサ１１０の不活性状態時または故障時などの場合は、いずれも閉ループ条件が不成立状態と判定され、その他の場合は、閉ループ条件が成立状態と判定される。
【００５２】
ステップ４０２において、閉ループ条件が不成立（即ち、ＮＯ）と判定されれば、燃料補正係数ＦＡＦを「１．０」に設定して（ステップ４４１）、ディレイカウンタＣＤＬＹを「０」にリセットし（ステップ４４２）、遅延後空燃比フラグＦ１が反転してから上流側Ｏ２センサ１１０の出力値Ｖ１が所定電圧以上あるいは所定電圧以下になるまでの制御期間を計測するカウンタＴＡＦを「０」にリセットする（ステップ４４３）。なお、燃料補正係数ＦＡＦは、閉ループ制御の終了直前の値または学習値（ＥＣＵ１１２内のバックアップＲＡＭ１２４内の記憶値）としてもよい。
【００５３】
続いて、上流側Ｏ２センサ１１０の出力値Ｖ１が比較電圧ＶＲ１以下（リーン）であるか否かを判定し（ステップ４４４）、上流側Ａ／Ｆがリーン状態（Ｖ１≦ＶＲ１）（即ち、ＹＥＳ）と判定されれば、遅延前空燃比フラグＦ０を「０」（リーン）に設定するとともに（ステップ４４５）、遅延後空燃比フラグＦ１を「０」（リーン）に設定して（ステップ４４６）、図３の処理ルーチンを抜け出る（ステップ４４９）。なお、比較電圧ＶＲ１は、リーン判定用の基準電圧（例えば、０．４５Ｖ程度）に設定される。
【００５４】
また、ステップ４４４においてＶ１＞ＶＲ１（即ち、ＮＯ）と判定されれば、上流側Ａ／Ｆがリッチ状態なので、遅延前空燃比フラグＦ０を「１」（リッチ）に設定するとともに（ステップ４４７）、遅延後空燃比フラグＦ１を「１」（リッチ）に設定して（ステップ４４８）、図３Ａ、図３Ｂの処理ルーチンを抜け出る（ステップ４４９）。以上のステップ４４１〜４４８により、空燃比の閉ループ条件が不成立時での初期値が設定される。
【００５５】
一方、ステップ４０２において、閉ループ（フィードバック）条件が成立（即ち、ＹＥＳ）と判定されれば、続いて、上流側Ｏ２センサ１１０の出力値Ｖ１が比較電圧ＶＲ１（例えば、０．４５Ｖ）以下か否か、つまり、触媒１０９の上流側Ａ／Ｆが比較電圧ＶＲ１に対してリッチ状態かリーン状態かを判定する（ステップ４０３）。
【００５６】
ステップ４０３において、Ｖ１≦ＶＲ１（即ち、ＹＥＳ）と判定されれば、上流側Ａ／Ｆがリーン状態であると見なし、続いて、ディレイカウンタＣＤＬＹが最大値ＴＤＲ以上であるか否かを判定する（ステップ４０４）。なお、最大値ＴＤＲは、上流側Ｏ２センサ１１０の出力値Ｖ１がリーンからリッチに変化しても、リーン状態であるとの判定を保持するための「リッチ遅延期間」に対応し、正の値で定義される。
【００５７】
ステップ４０４において、ＣＤＬＹ≧ＴＤＲ（即ち、ＹＥＳ）と判定されれば、ディレイカウンタＣＤＬＹを「０」にリセットするとともに（ステップ４０５）、遅延前空燃比フラグＦ０を「０」（リーン）に設定して（ステップ４０６）、ステップ４１６に進む。ステップ４１６については後述する。
【００５８】
また、ステップ４０４において、ＣＤＬＹ＜ＴＤＲ（即ち、ＮＯ）と判定されれば、続いて、遅延前空燃比フラグＦ０が「０」（リーン）であるか否かを判定し（ステップ４０７）、Ｆ０＝０（リーン）（即ち、ＹＥＳ）と判定されれば、ディレイカウンタＣＤＬＹを「１」だけ減算して（ステップ４０８）、ステップ４１６に進む。また、ステップ４０７において、Ｆ０＝１（リッチ）（即ち、ＮＯ）と判定されれば、ディレイカウンタＣＤＬＹを「１」だけ加算して（ステップ４０９）、ステップ４１６に進む。
【００５９】
一方、ステップ４０３において、Ｖ１＞ＶＲ１（即ち、ＮＯ）と判定されれば、上流側Ａ／Ｆがリッチ状態であると見なし、続いて、ディレイカウンタＣＤＬＹが最小値ＴＤＬ以下であるか否かを判定する（ステップ４１０）。なお、最小値ＴＤＬは、上流側Ｏ２センサ１１０の出力値Ｖ１がリッチからリーンに変化しても、リッチ状態であるとの判定を保持するための「リーン遅延期間」に対応し、負の値で定義される。
【００６０】
ステップ４１０において、ＣＤＬＹ≦ＴＤＬ（即ち、ＹＥＳ）と判定されれば、ディレイカウンタＣＤＬＹを「０」にリセットするとともに（ステップ４１１）、遅延前空燃比フラグＦ０を「１」（リッチ）に設定して（ステップ４１２）、ステップ４１６に進む。
【００６１】
また、ステップ４１０において、ＣＤＬＹ＞ＴＤＬ（即ち、ＮＯ）と判定されれば、続いて、遅延前空燃比フラグＦ０が「０」（リーン）であるか否かを判定し（ステップ４１３）、Ｆ０＝０（即ち、ＹＥＳ）と判定されれば、ディレイカウンタＣＤＬＹを「１」だけ減算して（ステップ４１４）、ステップ４１６に進む。
【００６２】
また、ステップ４１３において、Ｆ０＝１（リッチ）（即ち、ＮＯ）と判定されれば、ディレイカウンタＣＤＬＹを「１」だけ加算して（ステップ４１５）、ステップ４１６に進む。
【００６３】
ステップ４１６においては、ディレイカウンタＣＤＬＹが最小値ＴＤＬ以下であるか否かを判定し、ＣＤＬＹ＞ＴＤＬ（即ち、ＮＯ）と判定されれば、ステップ４１９に進む。ステップ４１９については後述する。
【００６４】
また、ステップ４１６において、ＣＤＬＹ≦ＴＤＬ（即ち、ＹＥＳ）と判定されれば、ディレイカウンタＣＤＬＹを最小値ＴＤＬに設定し（ステップ４１７）、遅延後空燃比フラグＦ１を「０」（リーン）に設定する（ステップ４１８）。つまり、ディレイカウンタＣＤＬＹが最小値ＴＤＬに到達した場合には、最小値ＴＤＬでガードするとともに、遅延後空燃比フラグＦ１を「０」（リーン）とする。
【００６５】
続いて、ディレイカウンタＣＤＬＹが最大値ＴＤＲ以上であるか否かを判定し（ステップ４１９）、ＣＤＬＹ＜ＴＤＲ（即ち、ＮＯ）と判定されれば、ステップ４２２に進む。
ステップ４２２については後述する。
【００６６】
また、ステップ４１９において、ＣＤＬＹ≧ＴＤＲ（即ち、ＹＥＳ）と判定されれば、ディレイカウンタＣＤＬＹを最大値ＴＤＲに設定するとともに（ステップ４２０）、遅延後空燃比フラグＦ１を「１」（リッチ）に設定して（ステップ４２１）、ステップ４２２に進む。つまり、ディレイカウンタＣＤＬＹが最大値ＴＤＲに到達した場合には、ディレイカウンタＣＤＬＹを最大値ＴＤＲでガードするとともに、遅延後空燃比フラグＦ１を「１」（リッチ）とする。
【００６７】
ステップ４２２においては、燃料補正係数ＦＡＦのスキップ増減処理（または、積分処理）の実行に先だって、まず、遅延処理後の空燃比が反転したか否かを、遅延後空燃比フラグＦ１の符号が反転したか否かにより判定する。
【００６８】
ステップ４２２において、遅延後空燃比フラグＦ１の符号（空燃比）が反転している（即ち、ＹＥＳ）と判定されれば、続いて、カウンタＴＡＦを「０」にリセットし（ステップ４２３）、リッチからリーンへの反転か、またはリーンからリッチへの反転かを、遅延後空燃比フラグＦ１の値が「０」であるか否かにより判定する（ステップ４２４）。
【００６９】
ステップ４２４において、Ｆ１＝０（即ち、ＹＥＳ）と判定されれば、リッチからリーンへの反転であるので、燃料補正係数ＦＡＦを「ＦＡＦ＋ＲＳＲ」として、定数ＲＳＲだけスキップ的に増大させ（ステップ４２５）、ステップ４３６に進む。ステップ４３６については後述する。
【００７０】
また、ステップ４２４において、Ｆ１＝１（即ち、ＮＯ）と判定されれば、リーンからリッチへの反転であるので、燃料補正係数ＦＡＦを「ＦＡＦ−ＲＳＬ」として、定数ＲＳＬだけスキップ的に減少させ（ステップ４２６）、ステップ４３６に進む。
【００７１】
一方、ステップ４２２において、遅延後空燃比フラグＦ１の符号（空燃比）が反転していない（即ち、ＮＯ）と判定されれば、続いて、遅延後空燃比フラグＦ１が「０」（リーン）であるか否かを判定し（ステップ４２７）、Ｆ１＝０（即ち、ＹＥＳ）と判定されれば、リーン状態であるので、ステップ４２８に進む。
【００７２】
ステップ４２８においては、上流側Ｏ２センサ１１０の出力値Ｖ１が所定電圧ＶＲ以下であるか否かを判定し、Ｖ１≦ＶＲ（即ち、ＹＥＳ）と判定されれば、燃料補正係数ＦＡＦを「ＦＡＦ＋ＫＩＲ」として、定数ＫＩＲ（＜ＲＳＲ）だけ増大させるとともに（ステップ４２９）、カウンタＴＡＦに「１」だけ加算して（４３０）、ステップ４３６に進む。
【００７３】
一方、ステップ４２８において、Ｖ１＞ＶＲ（即ち、ＮＯ）と判定されれば、定数ＫＩＲ２（＜ＫＩＲ）を用いて燃料補正係数ＦＡＦを「ＦＡＦ＋ＫＩＲ２」として増大させるとともに（ステップ４３１）、ステップ４３６に進む。
【００７４】
つまり、ステップ４３１において、燃料補正係数ＦＡＦの増大量に、定数ＫＩＲより小さい定数ＫＩＲ２を使用することにより、燃料補正係数ＦＡＦがリッチ方向にある程度進んだ後のＡ／Ｆ制御幅を抑えることができ、それに伴うドライバビリティおよび排ガスの悪化を抑えることができる。なお、ステップ４３１で使用する増大量「ＫＩＲ２」を「０」とし、燃料補正係数ＦＡＦがリッチ方向にある程度進んだ後の燃料補正係数ＦＡＦを増大させない設定にさせても構わない。
【００７５】
また、ステップ４２８において、燃料補正係数ＦＡＦの増大量の切り替えを行う所定電圧ＶＲを、上流側Ｏ２センサ１１０の理論空燃比相当電圧ＶＲ３に設定することで、触媒上流雰囲気がリーン状態の場合は、大きい増大量「ＫＩＲ」とし、触媒上流雰囲気がリッチ状態の場合は、小さい増大量「ＫＩＲ２」とすることができる。後述するステップ４３２におけるリーン状態での操作と組み合わせることで、空燃比の振動を確実にリッチ状態とリーン状態の間で実施することが可能となり、加減速等でＡ／Ｆ制御幅が大きくなる傾向となった場合や、劣化触媒時の酸素吸蔵量低下時に排ガス悪化を抑える効果が得られる。
【００７６】
ステップ４２７において、Ｆ１＝１（即ち、ＮＯ）と判定されれば、リッチ状態であるので、ステップ４３２に進む。
【００７７】
ステップ４３２においては、上流側Ｏ２センサ１１０の出力値Ｖ１が所定電圧ＶＬ以上であるか否かを判定し、Ｖ１≧ＶＬ（即ち、ＹＥＳ）と判定されれば、燃料補正係数ＦＡＦを「ＦＡＦ−ＫＩＬ」として、定数ＫＩＬ（＜ＲＳＬ）だけ減少させるとともに（ステップ４３３）、カウンタＴＡＦに「１」だけ加算して（ステップ４３４）、ステップ４３６に進む。
【００７８】
一方、ステップ４３２において、Ｖ１＜ＶＬ（即ち、ＮＯ）と判定されれば、定数ＫＩＬ２（＜ＫＩＬ）を用いて燃料補正係数ＦＡＦを「ＦＡＦ−ＫＩＬ２」として減少させるとともに（ステップ４３５）、ステップ４３６に進む。
【００７９】
つまり、ステップ４３５において、燃料補正係数ＦＡＦの減少量に、定数ＫＩＬより小さい定数ＫＩＬ２を使用することにより、燃料補正係数ＦＡＦがリーン方向にある程度進んだ後のＡ／Ｆ制御幅を抑えることができ、それに伴うドライバビリティおよび排ガスの悪化を抑えることができる。なお、ステップ４３５で使用する減少量「ＫＩＬ２」を「０」とし、燃料補正係数ＦＡＦがリーン方向にある程度進んだ後の燃料補正係数ＦＡＦを減少させない設定にさせても構わない。
【００８０】
また、ステップ４３２において、燃料補正係数ＦＡＦの減少量の切り替えを行う所定電圧ＶＬを、上流側Ｏ２センサ１１０の理論空燃比相当電圧ＶＲ３に設定することで、触媒上流雰囲気がリッチ状態の場合は、大きい減少量「ＫＩＬ」とし、触媒上流雰囲気がリーン状態の場合は、小さい減少量「ＫＩＬ２」とすることができる。ステップ４２８におけるリッチ状態での操作と組み合わせることで、空燃比の振動を確実にリッチ状態とリーン状態の間で実施することが可能となり、加減速等でＡ／Ｆ制御幅が大きくなる傾向となった場合や、劣化触媒時酸素吸蔵量の低下時に排ガス悪化を抑える効果が得られる。
【００８１】
なお、積分定数ＫＩＲ、ＫＩＲ２、ＫＩＬ、ＫＩＬ２は、スキップ定数ＲＳＲ、ＲＳＬと比べて、十分小さい値に設定されている。従って、ステップ４２９、４３１においては、リーン状態（Ｆ１＝０）での燃料噴射量を徐々に増大させ、ステップ４３３、４３５においては、リッチ状態（Ｆ１＝１）での燃料噴射量を徐々に減少させることになる。
【００８２】
ステップ４３６においては、カウンタＴＡＦがカウンタ上限ＴＡＦＨよりも小さいか否かを判定し、ＴＡＦ＜ＴＡＦＨ（即ち、ＹＥＳ）と判定されれば、ステップ４３７に進む。
【００８３】
一方、ステップ４３６において、ＴＡＦ≧ＴＡＦＨ（即ち、ＮＯ）と判定されれば、ステップ４４１に進むことで、空燃比の振動処理の実行を中止する。
【００８４】
つまり、Ｏ２センサの劣化による応答遅れ等の原因で上流側Ｏ２センサ１１０の挙動が遅延し、ステップ４２８においてＶ１＞ＶＲとなる期間、あるいはステップ４３２においてＶ１＜ＶＬとなる期間が長くなった場合は、燃料補正係数ＦＡＦのＡ／Ｆ制御幅が大きくなりすぎたと判断し、空燃比の振動処理の実行を中止する。その効果として、劣化触媒の診断時における正常触媒を劣化触媒と誤検出する可能性を低減させることができる。
【００８５】
ステップ４３７においては、燃料補正係数ＦＡＦが「０．８」よりも小さいか否かを判定し、ＦＡＦ＜０．８（即ち、ＹＥＳ）と判定されれば、燃料補正係数ＦＡＦを「０．８」に設定して（ステップ４３８）、ステップ４３９に進む。
【００８６】
一方、ステップ４３７において、ＦＡＦ≧０．８（即ち、ＮＯ）と判定されれば、続いて、燃料補正係数ＦＡＦが「１．２」よりも大きいか否かを判定し（ステップ４３９）、ＦＡＦ＞１．２（即ち、ＹＥＳ）と判定されれば、燃料補正係数ＦＡＦを「１．２」に設定して（ステップ４４０）、図３Ａ、図３Ｂの処理ルーチンを抜け出る（ステップ４４９）。また、ステップ４３９において、ＦＡＦ≦１．２（即ち、ＮＯ）と判定されれば、直ちに、図３Ａ、図３Ｂの処理ルーチンを抜け出る（ステップ４４９）。
【００８７】
つまり、ステップ４２５、４２６、４２９、４３１、４３３、４３５で演算された燃料補正係数ＦＡＦは、ステップ４３７、４３８において、「０．８」（最小値）でガードされ、また、ステップ４３９、４４０において、「１．２」（最大値）でガードされる。これにより、何らかの原因で燃料補正係数ＦＡＦが大きく、または小さくなり過ぎた場合には、最大値（例えば、１．２）または最小値（例えば、０．８）で内燃機関１０１の空燃比を制御して、オーバリッチまたはオーバリーンになるのを防ぐ。
【００８８】
以上で図３Ａ、図３Ｂの演算処理は終了し、ステップ４０１からステップ４４９により演算された燃料補正係数ＦＡＦは、ＥＣＵ１１２内のＲＡＭ１１５に格納される。
【００８９】
次に、図４のタイミングチャートを参照しながら、図３Ａ、図３Ｂに示した演算処理動作について補足説明する。
図４（ａ）のタイミングチャートは従来の内燃機関の空燃比制御装置（例えば、特許文献４）における演算処理動作であり、図４（ｂ）のタイミングチャートは、実施の形態１に係る内燃機関の空燃比制御装置における燃料補正係数ＦＡＦの増加量をＫＩＲ２、減少量をＫＩＬ２に切り替えるタイミングを、上流側Ｏ２センサ１１０の出力値Ｖ１が所定電圧ＶＲ、ＶＬとなるタイミングとした場合であり、図４（ｃ）のタイミングチャートは、実施の形態１に係る内燃機関の空燃比制御装置における燃料補正係数ＦＡＦの増加量をＫＩＲ２、減少量をＫＩＬ２に切り替えるタイミングを、上流側Ｏ２センサ１１０の出力値Ｖ１が理論空燃比相当電圧ＶＲ３となるタイミングとし、さらにＫＩＲ２、ＫＩＬ２の値を共に「０」とした場合である。
【００９０】
図４（ａ）（ｂ）（ｃ）において、上流側Ｏ２センサ１１０の出力値Ｖ１に基づいて遅延処理前の空燃比信号（リッチ、リーン判定の比較結果）が得られると、遅延処理前の空燃比信号に応答する遅延前空燃比フラグＦ０は、リッチ状態またはリーン状態に変化する。
【００９１】
ディレイカウンタＣＤＬＹは、最大値ＴＤＲと最小値ＴＤＬとの間の範囲内で、遅延前空燃比フラグＦ０（遅延処理前の空燃比信号に対応）のリッチ状態に応答してカウントアップされ、逆に、リーン状態に応答してカウントダウンされる。これにより、遅延後空燃比フラグＦ１は、遅延処理された空燃比信号を示すようになる。
【００９２】
例えば、時刻ｔ１において、遅延処理前の空燃比信号（出力値Ｖ１の比較結果）がリーンからリッチに反転しても、遅延処理された空燃比信号（遅延後空燃比フラグＦ１）は、リッチ遅延期間τＤＲだけリーンに保持された後の時刻ｔ２において、リッチに変化する。
【００９３】
同様に、時刻ｔ３において、遅延処理前の空燃比信号（上流側Ａ／Ｆ）がリッチからリーンに変化しても、遅延処理後の空燃比信号（遅延後空燃比フラグＦ１）は、リーン遅延期間τＤＬだけリッチに保持された後の時刻ｔ４において、リーンに変化する。
【００９４】
しかし、例えば時刻ｔ９の後（リッチ遅延処理の開始後）に、時刻ｔ１０、ｔ１１に示すように、遅延処理前の空燃比信号（比較結果）が、リッチ遅延期間τＤＲよりも短い期間で反転しても、ディレイカウンタＣＤＬＹがリッチ遅延期間τＤＲに到達するまでの遅延処理中（時刻ｔ９〜ｔ１２）においては、遅延前空燃比フラグＦ０が反転することはない。
【００９５】
つまり、遅延前空燃比フラグＦ０は、上流側Ｏ２センサ１１０の出力値Ｖ１の微小変動に起因した一時的な比較結果（遅延処理後の空燃比信号）の変動に影響されないので、比較結果（遅延処理前の空燃比信号）に比べて安定した波形となる。このように、遅延処理を実行することにより、安定した遅延前空燃比フラグＦ０および遅延処理後の空燃比信号（遅延後空燃比フラグＦ１）が得られ、遅延後空燃比フラグＦ１に基づいて、適切な燃料補正係数ＦＡＦが得られる。
【００９６】
図４（ａ）の燃料補正係数ＦＡＦの波形において、増大方向および減少方向の傾きは、それぞれ、積分定数ＫＩＲ、ＫＩＬに相当し、スキップ増減量はＲＳＲ、ＲＳＬに相当する。
【００９７】
図４（ｂ）の燃料補正係数ＦＡＦの波形において、上流側Ｏ２センサ１１０の出力値がＶＲとなったタイミングまでの増大方向の傾きは積分定数ＫＩＲに相当し、上流側Ｏ２センサ１１０の出力値がＶＲとなったタイミング以降の増大方向の傾きは積分定数ＫＩＲ２に相当する。また、上流側Ｏ２センサ１１０の出力値がＶＬとなったタイミングまでの減少方向の傾きは積分定数ＫＩＬに相当し、上流側Ｏ２センサ１１０の出力値がＶＬとなったタイミング以降の減少方向の傾きは積分定数ＫＩＬ２に相当する。また、燃料補正係数ＦＡＦに積分定数ＫＩＲおよびＫＩＬが使用される期間はカウンタＴＡＦの積算が実施され、カウンタＴＡＦがＴＡＦＨ以上となった場合は、空燃比の振動処理の実行を中止する。
【００９８】
図４（ｃ）の燃料補正係数ＦＡＦの波形において、上流側Ｏ２センサ１１０の出力値がＶＲ３となったタイミングまでの増大方向の傾きは積分定数ＫＩＲに相当し、上流側Ｏ２センサ１１０の出力値がＶＲ３となったタイミング以降の増大方向の傾きは積分定数ＫＩＲ２（図４（ｃ）では「０」）に相当する。また、上流側Ｏ２センサ１１０の出力値がＶＲ３となったタイミングまでの減少方向の傾きは積分定数ＫＩＬに相当し、上流側Ｏ２センサ１１０の出力値がＶＲ３となったタイミング以降の減少方向の傾きは積分定数ＫＩＬ２（図４（ｃ）では「０」）に相当する。また、燃料補正係数ＦＡＦに積分定数ＫＩＲおよびＫＩＬが使用される期間はカウンタＴＡＦの積算が実施され、カウンタＴＡＦがＴＡＦＨ以上となった場合は、空燃比の振動処理の実行を中止する。
【００９９】
以下、ＥＣＵ１１２内の駆動回路１２２は、第１の空燃比フィードバック制御手段２０１で演算された燃料補正係数ＦＡＦと、基本燃料量Ｑｆｕｅｌ０とに応じて、空燃比が目標空燃比Ａ／Ｆｏと一致するようにインジェクタ１０７を駆動するために、内燃機関１０１に供給する燃料供給量Ｑｆｕｅｌを、以下の式（１）のように調整する。
Ｑｆｕｅｌ１＝Ｑｆｕｅｌ０×ＦＡＦ  ・・・（１）
【０１００】
ただし、式（１）において、基本燃料量Ｑｆｕｅｌ０は、内燃機関１０１に供給される
空気量Ｑａｃｙｌと、目標空燃比Ａ／Ｆｏとを用いて、以下の式（２）のように演算される。
Ｑｆｕｅｌ０＝Ｑａｃｙｌ／（Ａ／Ｆｏ）  ・・・（２）
【０１０１】
式（２）において、内燃機関１０１への空気量Ｑａｃｙｌは、エアフローセンサ１０６から検出される吸入空気量Ｑａに基づいて演算される。また、エアフローセンサ１０６を用いない場合には、吸気通路１０５内のスロットル弁下流側に設けられた圧力センサ（図示せず）の出力信号に基づいて吸入空気量Ｑａを演算してもよく、エンジン回転速度Ｎｅまたはスロットル弁のスロットル開度などに基づいて演算してもよい。
【０１０２】
また、目標空燃比Ａ／Ｆｏは、図５に示すような、エンジン回転速度Ｎｅと負荷との２次元マップで領域設定された値に設定される。即ち、目標空燃比Ａ／Ｆｏは、理論空燃比（Ａ／Ｆ≒１４．５３）制御時においては、平均空燃比振動手段２０３により演算される目標平均空燃比として、フィードフォワード的に反映させた値に設定される。
【０１０３】
これにより、目標値が変化した場合のフィードバック追従遅れを改善するとともに、燃料補正係数ＦＡＦを「１．０」の中心付近の値に維持することができる。また、このとき、燃料補正係数ＦＡＦに基づき、第１の空燃比フィードバック制御手段２０１に関連する構成要素の経時変化および生産バラツキを吸収するように学習制御が行われるので、フィードフォワード補正により燃料補正係数ＦＡＦが安定している方が、学習制御の精度が向上する。
【０１０４】
次に、図６Ａ、図６Ｂのフローチャートとともに、図７〜図１３および図１５の説明図、ならびに図１４、図１６および図１７のタイミングチャートを参照しながら、図２内の平均空燃比振動手段２０３による演算処理動作について説明する。図６Ａ、図６Ｂの演算処理ルーチンは、所定期間（例えば、５ｍｓｅｃ）ごとに実行される。
【０１０５】
図６Ａ、図６Ｂにおいて、まず、下流側Ｏ２センサ１１１の出力値Ｖ２のリッチ／リーン反転を判定する（ステップ７０１）。下流側Ｏ２センサ１１１は、２値的出力特性を有するλ型センサからなり、図７に示すように、センサ雰囲気の空燃比変化に対し、理論空燃比の付近において出力値Ｖ２（電圧値）が急激に変化する。図７の特性を有するλ型センサは、理論空燃比付近の空燃比に対する検出分解能が非常に高く、かつ検出精度も良い。
【０１０６】
つまり、ステップ７０１においては、図８に示すように、判定閾値（一点鎖線）を基準として、下流側Ｏ２センサ１１１の出力値Ｖ２がリッチまたはリーン側にあるかを判定するとともに、リッチまたはリーンの判定結果が反転したか否かを判定する。
【０１０７】
ステップ７０１において、リーンからリッチへの反転が判定されたときには、下流側Ｏ２センサ１１１の反転フラグＦＲＯ２を「１」（リッチ反転を示す値）に設定し、リッチからリーンへの反転が判定されたときには、反転フラグＦＲＯ２を「２」（リーン反転を示す値）に設定し、いずれの反転も判定されないときには、反転フラグＦＲＯ２を「０」（非反転を示す値）に設定する。
【０１０８】
なお、図８に示す判定閾値（一点鎖線）は、単にエンジン回転速度Ｎｅや負荷などの運転条件に応じた所定電圧に設定されてもよく、第２の空燃比フィードバック制御手段２０２に関連した下流側Ｏ２センサ１１１の後述する目標電圧ＶＲ２に設定されてもよい。下流側Ｏ２センサ１１１の出力値Ｖ２は目標電圧ＶＲ２付近に制御されるので、判定閾値を目標電圧ＶＲ２に設定した場合には、下流側Ｏ２センサ１１１のリッチ方向またはリーン方向への変動の検出精度が向上する。
【０１０９】
また、下流側Ｏ２センサ１１１の目標電圧ＶＲ２にフィルタ処理（または、平均化などのなまし処理）を施した値を、判定閾値として設定してもよい。これにより、下流側Ｏ２センサ１１１の出力値Ｖ２が変化しない状態で目標電圧ＶＲ２が急変しても、リッチ／リーン反転を誤判定する可能性を軽減することができる。
【０１１０】
また、下流側Ｏ２センサ１１１の出力値Ｖ２にフィルタ処理（または、平均化などのなまし処理）を施した値を、判定閾値として設定してもよい。これにより、下流側Ｏ２センサ１１１の出力値Ｖ２が、固定閾値からシフトした状態でリッチ方向またはリーン方向に変動しても、リッチ／リーン反転を確実に検出することができる。
【０１１１】
また、判定閾値と比較される出力値Ｖ２の代わりに、出力値Ｖ２にフィルタ処理（または、平均化などのなまし処理）を施した値を用いてもよい。これにより、出力値Ｖ２の高周波成分に起因した誤判定を防止することができる。
【０１１２】
また、このとき、下流側Ｏ２センサ１１１の出力値Ｖ２に対するフィルタ処理（または、平均化などのなまし処理）を調整して、上流側Ｏ２センサ１１０の出力値Ｖ１の変動周期の影響を低減するようにしてもよい。これにより、触媒１０９の大幅劣化によって、下流側Ｏ２センサ１１１の出力値Ｖ２の変動が、上流側Ｏ２センサ１１０の出力値Ｖ１の変動に近づいた場合でも、高い周波数でリッチ／リーン反転の判定が行われて制御系の挙動が不安定になる問題を回避することができる。
【０１１３】
さらに、図８に示すように、リッチまたはリーンの判定において、リッチからリーンへの判定閾値と、リーンからリッチへの判定閾値との間に、判定閾値を中心としたヒステリシス（または、不感帯）を設定し、ヒステリシス（または、不感帯）の幅を調整してもよい。これにより、出力値Ｖ２の微小変動による判定結果のチャタリングを防止するとともに、反転判定用の出力値Ｖ２の変動幅を調整することができる。
【０１１４】
図６Ａ、図６Ｂに戻り、平均空燃比振動手段２０３は、ステップ７０１に続いて、振動条件フラグＦＰＴが「１」に設定されているか否かにより、平均空燃比の振動条件が成立しているか否かを判定する（ステップ７０２）。
【０１１５】
ステップ７０２における振動条件は、触媒１０９が安定している状態と、内燃機関１０１があらかじめ設計した運転条件下にある状態とを含み、例えば、第１の空燃比フィードバック制御手段２０１による理論空燃比制御が実行中の場合、エンジン回転速度Ｎｅ、負荷、吸入空気量Ｑａなどの運転条件が所定範囲内を示す場合、内燃機関１０１の始動後から所定期間以上経過した場合、冷却水温ＴＨＷが所定温度以上の場合、アイドル運転以外の場合、過渡運転以外の場合、および過渡運転後所定期間以外の場合などによって判定される。
【０１１６】
過渡運転は、空燃比の変動が増加して、触媒１０９の酸素吸蔵量が急変する条件であり、急な加減速時、燃料カット時、リッチ化制御時、リーン化制御時、第１の空燃比フィードバック制御手段２０１による制御の停止時、第２の空燃比フィードバック制御手段２０２による制御の停止時、第１の空燃比フィードバック制御手段２０１からの燃料補正係数ＦＡＦの大変動時、故障診断のためのアクチュエータ強制駆動時、蒸散ガス導入の急変時、などを含む。
【０１１７】
急な加減速は、例えば単位期間当たりのスロットル開度（または、吸入空気量Ｑａ）の変化量が所定以上を示すことから判定される。また、蒸散ガス導入の急変は、蒸散ガスを導入するバルブ開度の単位期間当たりの変化量が所定以上を示すことから判定される。
【０１１８】
なお、過渡運転後においても、所定期間が経過するまでは、触媒１０９の酸素吸蔵量の変動による影響が残るので、振動処理は実行されない。所定期間は、単に期間設定してもよく、触媒１０９の酸素吸蔵量の変化と比例関係にある吸入空気量Ｑａを用いて、過渡運転後の積算吸入空気量が所定量に到達するまでの期間に設定してもよい。吸入空気量Ｑａに基づいて所定期間の経過を判定することにより、振動開始時期を触媒１０９の酸素吸蔵量の挙動に合わせて、適切に設定することができる。
【０１１９】
ステップ７０２において、振動条件が成立していて、ＦＰＴ＝１（即ち、ＹＥＳ）と判定されれば、ステップ７０３に進む。また、振動条件が成立しておらず、ＦＰＴ＝０（即ち、ＮＯ）と判定されれば、ステップ７２３に進む。ステップ７２３については後述する。
【０１２０】
振動条件の成立時には、ステップ７０３〜７０５により、振動条件成立後の初回振動用の初期値を設定する。まず、振動回数ＰＴＮが「０」であるか否かにより、初回振動であるか否かを判定し（ステップ７０３）、ＰＴＮ＝０（即ち、ＹＥＳ）と判定されれば、初期値として、初回の振動方向フラグＦＲＬを「１」（リッチ方向）に設定するとともに（ステップ７０４）、振動回数ＰＴＮを「１」（初回振動中を示す）に設定し（ステップ７０５）、ステップ７０６に進む。
【０１２１】
一方、ステップ７０３において、ＰＴＮ＞０（即ち、ＮＯ）と判定されれば、初期値の設定処理（ステップ７０４、７０５）を実行せずに、ステップ７０６に進む。なお、ステップ７０４においては、振動方向フラグＦＲＬの初期値として「１」（リッチ方向）に設定したが、「２」（リーン方向）に設定してもよい。
【０１２２】
次に、ステップ７０６〜７０８により、平均空燃比振動のリッチ方向およびリーン方向での周期Ｔｊおよび振動幅ＤＡＦｊをそれぞれ設定する。まず、振動方向フラグＦＲＬが「１」であるか否かにより、振動方向がリッチ方向であるか否かを判定し（ステップ７０６）、リッチ方向（ＦＲＬ＝１）（即ち、ＹＥＳ）と判定されれば、周期Ｔｊおよび振動幅ＤＡＦｊとして、それぞれ、リッチ方向の周期Ｔｒおよび振動幅ＤＡＦｒを設定し（ステップ７０７）、ステップ７０９に進む。ステップ７０９については後述する。
【０１２３】
なお、ステップ７０７において、リッチ方向周期Ｔｒおよびリッチ方向振動幅ＤＡＦｒは、図９および図１０の説明図に示すように、触媒１０９の酸素吸蔵量の振動幅ΔＯＳＣが所定量となるように、それぞれ吸入空気量Ｑａに応じた１次元マップにより設定される。
【０１２４】
一方、ステップ７０６において、振動方向がリーン方向（ＦＲＬ＝２）（即ち、ＮＯ）と判定されれば、周期Ｔｊおよび振動幅ＤＡＦｊとして、それぞれ、リーン方向の周期Ｔｌおよび振動幅ＤＡＦｌを設定し（ステップ７０８）、ステップ７０９に進む。
【０１２５】
なお、ステップ７０８において、リーン方向周期Ｔｌおよびリーン方向の平均空燃比の振動幅ＤＡＦｌは、図９、図１０と同様の図１１、図１２の説明図に示すように、触媒１０９の酸素吸蔵量の振動幅ΔＯＳＣが所定量となるように、それぞれ吸入空気量Ｑａに応じた１次元マップにより設定される。
【０１２６】
酸素吸蔵量の振動幅ΔＯＳＣは、周期Ｔｊ［ｓｅｃ］と、振動幅ＤＡＦｊの絶対値と、吸入空気量Ｑａ［ｇ／ｓｅｃ］と、酸素吸蔵量に変換するための所定係数ＫＯ２とを用いて、以下の式（３）のように表される。
ΔＯＳＣ［ｇ］＝Ｔｊ×｜ＤＡＦｊ｜×Ｑａ×ＫＯ２  ・・・（３）
【０１２７】
ここで、振動幅ΔＯＳＣを所定量とするためには、吸入空気量Ｑａの変化により、振動幅ＤＡＦｊまたは周期Ｔｊを変化させる必要がある。
例えば、振動幅ＤＡＦｊを固定値とした場合には、周期Ｔｊを吸入空気量Ｑａに反比例する値に設定し、周期Ｔｊを固定値とした場合には、振動幅ＤＡＦｊを吸入空気量Ｑａに反比例する値に設定する。
【０１２８】
しかし、実際には、触媒１０９の浄化特性の向上、ドライバビリティの向上、または応答性の向上などを目的として、周期Ｔｊ、振動幅ＤＡＦｊの設定範囲には各種の制約があるので、周期Ｔｊおよび振動幅ＤＡＦｊは、両方とも、所定の酸素吸蔵量の振動幅ΔＯＳＣとなるように、吸入空気量Ｑａに応じて可変設定される。
【０１２９】
また、平均空燃比振動のリッチ方向およびリーン方向の周期Ｔｊ（または、振動幅ＤＡＦｊ）を互いに非対称になるように設定してもよい。例えば、触媒１０９のＮＯｘ浄化特性を向上させるため、またはトルク低下を軽減するために、リーン方向への振動幅ＤＡＦｊの絶対値をリッチ方向への振動幅ＤＡＦｊの絶対値よりも小さく設定し、振動幅ΔＯＳＣが一定となるように、リーン方向への周期Ｔｊをリッチ方向への周期Ｔｊよりも大きく設定してもよい。
【０１３０】
また、酸素吸蔵量の振動幅ΔＯＳＣは、触媒１０９の最大酸素吸蔵量ＯＳＣｍａｘの範囲内となるように設定され、触媒１０９の酸素吸蔵量は、最大酸素吸蔵量ＯＳＣｍａｘと最小酸素吸蔵量（＝０）との間の範囲内となるように設定される。さらに、燃料補正係数ＦＡＦの制御において上流側Ｏ２センサ１１０の電圧を用いて振動幅を抑えることにより、触媒１０９の上流側Ａ／Ｆの変動は、酸素吸蔵量の変化によって確実に吸収され、触媒１０９内の空燃比は理論空燃比付近に保たれるので、触媒１０９の浄化率の大幅な悪化を防止することができる。
【０１３１】
また、最大酸素吸蔵量ＯＳＣｍａｘの範囲内においても、酸素吸蔵量の振動幅ΔＯＳＣは、触媒１０９の浄化特性の向上や、触媒１０９の劣化診断を目的として、各種条件に応じて調整され、所定量に設定される。例えばエンジン回転速度Ｎｅや負荷の違いによって、内燃機関１０１からの排気ガス成分や触媒１０９の温度は変化し、触媒１０９の浄化特性も変化するので、酸素吸蔵量の振動幅ΔＯＳＣをエンジン回転速度Ｎｅまたは負荷に応じて変更する。これにより、さらに触媒１０９の浄化特性を向上させることができる。
【０１３２】
また、劣化診断時の酸素吸蔵量の振動幅ΔＯＳＣは、劣化前の触媒１０９の最大酸素吸蔵量ＯＳＣｍａｘの範囲内で、かつ劣化診断が必要な触媒の最大酸素吸蔵量の範囲外となるように設定される。これにより、劣化診断が必要な触媒が用いられている場合には、下流側Ｏ２センサ１１１の出力値Ｖ２の乱れが大きくなるので、劣化診断における劣化判定精度が向上する。
【０１３３】
図６に戻り、ステップ７０９においては、ステップ７０７、７０８で設定した平均空燃比振動の周期Ｔｊおよび振動幅ＤＡＦｊが、最大酸素吸蔵量演算手段２０４により演算された最大酸素吸蔵量ＯＳＣｍａｘに応じて、それぞれ適応的に補正される。具体的には、周期Ｔｊ、振動幅ＤＡＦｊは、補正係数Ｋｏｓｃｔ、Ｋｏｓｃａｆを用いて、それぞれ、以下の式（４）、式（５）のように補正される。
Ｔｊ＝Ｔｊ（ｎ−１）×Ｋｏｓｃｔ  ・・・（４）
ＤＡＦｊ＝ＤＡＦｊ（ｎ−１）×Ｋｏｓｃａｆ  ・・・（５）
【０１３４】
式（４）、式（５）において、（ｎ−１）は補正前の前回値を示す。なお、周期Ｔｊに対する補正係数Ｋｏｓｃｔ、および、平均空燃比の振動幅ＤＡＦｊに対する補正係数Ｋｏ
ｓｃａｆは、それぞれ最大酸素吸蔵量ＯＳＣｍａｘに応じた１次元マップにより設定される。
【０１３５】
また、各補正係数Ｋｏｓｃｔ、Ｋｏｓｃａｆは、変化後の最大酸素吸蔵量ＯＳＣｍａｘの範囲内であって、かつ酸素吸蔵量の振動幅ΔＯＳＣが維持されるように、最大酸素吸蔵量ＯＳＣｍａｘの減少とともに、酸素吸蔵量の振動幅ΔＯＳＣが減少するように設定される。さらに、燃料補正係数ＦＡＦの制御において上流側Ｏ２センサ１１０の電圧を用いて振動幅を抑えることにより、酸素吸蔵量の振動幅ΔＯＳＣが最大酸素吸蔵量ＯＳＣｍａｘから逸脱して大幅に振り切れることを防止して、大幅な排気ガスの悪化を防止することができる。
【０１３６】
また、ステップ７０９に続いて、周期Ｔｊ、振動幅ＤＡＦｊは、平均空燃比の振動開始後の振動回数ＰＴＮに応じた補正係数Ｋｐｔｎｔ、Ｋｐｔｎａｆが、式（４）、式（５）と同様に乗算されて、さらに補正される（ステップ７１０）。なお、周期Ｔｊに対する補正係数Ｋｐｔｎｔ、および、振動幅ＤＡＦｊに対する補正係数Ｋｐｔｎａｆは、振動回数ＰＴＮに応じて、それぞれ、図１３（ａ）、（ｂ）に示すテーブルにより設定される。
【０１３７】
図１３（ａ）において、周期補正係数Ｋｐｔｎｔは、初回振動（ＰＴＮ＝１）に対する値のみが「０．５」に設定され、他の振動回数ＰＴＮに対しては「１．０」に設定される。また、図１３（ｂ）において、振動幅補正係数Ｋｐｔｎａｆは、振動回数ＰＴＮとは無関係に、すべて「１．０」に設定される。
【０１３８】
図１３（ａ）、（ｂ）のように各補正係数Ｋｐｔｎｔ、Ｋｐｔｎａｆを設定することにより、図１４のタイミングチャートに示すように、酸素吸蔵量の振動幅ΔＯＳＣは、初回振動時のみにおいて最終設定値の半分に設定される。さらに、燃料補正係数ＦＡＦの制御において上流側Ｏ２センサ１１０の電圧を用いて振動幅を抑えることにより、振動幅ΔＯＳＣが所定幅を超過することはない。
【０１３９】
なお、図１３および図１４では、初回振動の周期補正係数Ｋｐｔｎｔを「０．５」に設定した場合を示したが、初回振動の振動幅補正係数Ｋｐｔｎａｆを「０．５」に設定してもよい。また、初回振動時の酸素吸蔵量の振動幅ΔＯＳＣが半分となるように、周期および振動幅の各補正係数Ｋｐｔｎｔ、Ｋｐｔｎａｆの組合せを設定してもよい。
【０１４０】
また、図１５の説明図および図１６のタイミングチャートに示すように、振動回数ＰＴＮの増加とともに、酸素吸蔵量の振動幅ΔＯＳＣが徐々に増加するように、周期および振動幅の各補正係数Ｋｐｔｎｔ、Ｋｐｔｎａｆを設定してもよい。これにより、触媒１０９の状態急変を防止することができ、また、空燃比制御（特に、第２の空燃比フィードバック制御手段２０２による制御）の追従性の不良を防止することができる。
【０１４１】
図６に戻り、ステップ７１０に続いて、ステップ７１１〜７１４において、下流側Ｏ２センサ１１１の出力値Ｖ２のリッチ／リーン反転により、触媒１０９の酸素吸蔵量が最大酸素吸蔵量ＯＳＣｍａｘまたは最小酸素吸蔵量（＝０）の振り切れを検出した場合に、平均空燃比の振動方向を強制的に反転させるための処理を実行する。
【０１４２】
まず、振動方向フラグＦＲＬが「１」であるか否かにより、リッチ方向に振動中であるか否かを判定し（ステップ７１１）、リッチ方向に振動中（ＦＲＬ＝１）（即ち、ＹＥＳ）と判定されれば、続いて、下流側Ｏ２センサ１１１の反転フラグＦＲＯ２が「１」であるか否かにより、下流側Ａ／Ｆがリッチ反転である（下流側Ｏ２センサ１１１の出力値Ｖ２がリーンからリッチへの反転を示す）か否かを判定する（ステップ７１２）。
【０１４３】
ステップ７１２において、下流側Ａ／Ｆがリッチ反転（ＦＲＯ２＝１）（即ち、ＹＥＳ）と判定されれば、振動が反転するように、周期カウンタ（タイマカウンタ）Ｔｍｒを周期Ｔｊにリセットして（ステップ７１４）、ステップ７１５に進む。また、ステップ７１２において、下流側Ａ／Ｆがリッチ反転でなく、ＦＲＯ２≠１（即ち、ＮＯ）と判定されれば、周期カウンタＴｍｒのリセット処理（ステップ７１４）を実行せずに、ステップ７１５に進む。
【０１４４】
一方、ステップ７１１において、リーン方向に振動中（ＦＲＬ＝２）（即ち、ＮＯ）と判定されれば、続いて、下流側Ｏ２センサ１１１の反転フラグＦＲＯ２が「２」であるか否かにより、下流側Ａ／Ｆがリーン反転である（下流側Ｏ２センサ１１１の出力値Ｖ２がリッチからリーンへの反転を示す）か否かを判定する（ステップ７１３）。
【０１４５】
ステップ７１３において、下流側Ａ／Ｆがリーン反転（ＦＲＯ２＝２）（即ち、ＹＥＳ）と判定されれば、振動が反転するように、周期カウンタＴｍｒのリセット処理（ステップ７１４）に進む。また、ステップ７１３において、ＦＲＯ２≠１であって、下流側Ａ／Ｆがリーン反転でない（即ち、ＮＯ）と判定されれば、周期カウンタＴｍｒのリセット処理（ステップ７１４）を実行せずに、ステップ７１５に進む。
【０１４６】
ここで、図１７のタイミングチャートを参照しながら、触媒１０９の酸素吸蔵量の振り切れが発生した場合の挙動について説明する。酸素吸蔵量の振り切れは、外乱に起因した空燃比の乱れによって酸素吸蔵量が急変した場合、触媒１０９の劣化または触媒温度Ｔｍｐｃａｔの低下などによって最大酸素吸蔵量ＯＳＣｍａｘが減少した場合、または、平均空燃比の反転タイミングが遅れた場合などに引き起こされる。
【０１４７】
図１７に示すように、時刻ｔ１４１の直前でリーン方向の空燃比の大きな乱れが生じた場合、触媒１０９の推定酸素吸蔵量ＯＳＣは、大幅にかつ急激に増加し、時刻ｔ１４１において、最大酸素吸蔵量ＯＳＣｍａｘから大幅に振り切れてしまう。
【０１４８】
このとき、仮に強制反転処理を実行しない場合には、点線波形で示すように、周期カウンタＴｍｒの値が反転周期Ｔｊに到達していないことから、リーン方向（ＦＲＬ＝２）への振動を継続し、時刻ｔ１４１〜ｔ１４２の期間にわたって、酸素吸蔵量が振り切れた状態を保持するので、触媒１０９内の空燃比が理論空燃比から逸脱して、排気ガスの浄化状態は著しく悪化する。
【０１４９】
一方、図６のステップ７１４により強制反転処理を実行する際には、時刻ｔ１４１において下流側Ｏ２センサ１１１の出力値Ｖ２が反転し、反転フラグＦＲＯ２が「０」から「２」になり、触媒１０９の推定酸素吸蔵量ＯＳＣの振り切れが検出されるので、これに応答して、実線波形で示すように、周期カウンタＴｍｒを反転周期Ｔｊにリセットして、リッチ方向へ振動を強制的に反転させる。これにより、酸素吸蔵量の振り切れ状態から復帰させることができ、排気ガスの悪化を最小限に抑制することができる。
【０１５０】
次に、強制リセット処理（ステップ７１４）に続いて、ステップ７１５〜７２１において、タイマ処理によるリッチ／リーン周期反転処理を実行する。まず、周期カウンタＴｍｒを所定量Ｄｔｍｒだけ増加させて更新し（ステップ７１５）、周期カウンタＴｍｒが周期Ｔｊを越えたか否かを判定する（ステップ７１６）。なお、所定量Ｄｔｍｒは演算周期５ｍｓｅｃに設定される。
【０１５１】
ステップ７１６において、Ｔｍｒ＞Ｔｊ（即ち、ＹＥＳ）と判定されれば、反転タイミングに到達しているので、周期カウンタＴｍｒを「０」にリセットするとともに（ステップ７１７）、振動回数ＰＴＮを「１」だけ増加させ（ステップ７１８）、続いて、振動方向フラグＦＲＬが「１」であるか否かにより、現在の振動方向がリッチであるか否かを判定する（ステップ７１９）。
【０１５２】
ステップ７１９において、現在の振動方向がリッチ（ＦＲＬ＝１）（即ち、ＹＥＳ）と判定されれば、振動方向フラグＦＲＬを「２」に設定して、リーン方向に反転させ（ステップ７２０）、ステップ７２２に進む。
【０１５３】
また、ステップ７１９において、現在の振動方向がリーン（ＦＲＬ＝２）（即ち、ＮＯ）と判定されれば、振動方向フラグＦＲＬを「１」に設定して、リッチ方向に反転させ（ステップ７２１）、ステップ７２２に進む。
【０１５４】
一方、前記ステップ７１６において、Ｔｍｒ≦Ｔｊ（即ち、ＮＯ）と判定されれば、反転タイミングに到達していないので、ステップ７１７〜７２１を実行せずに、直ちにステップ７２２に進む。
【０１５５】
ステップ７２２においては、振動条件の成立時での目標平均空燃比ＡＦＡＶＥｏｂｊを設定する。このとき、目標平均空燃比ＡＦＡＶＥｏｂｊは、振動中心ＡＦＣＮＴ（第２の空燃比フィードバック制御手段２０２で演算される目標平均空燃比）に振動幅ＤＡＦｊを加えることにより、以下の式（６）のように演算される。
ＡＦＡＶＥｏｂｊ＝ＡＦＣＮＴ＋ＤＡＦｊ  ・・・（６）
【０１５６】
このように、下流側Ｏ２センサ１１１の出力値Ｖ２に基づいて触媒１０９の酸素吸蔵量の状態を検出することにより、最大酸素吸蔵量ＯＳＣｍａｘまたは最小酸素吸蔵量（＝０）を振り切れないように目標平均空燃比ＡＦＡＶＥｏｂｊの振動中心ＡＦＣＮＴを調整することができるので、酸素吸蔵量の振動処理の制御精度をさらに向上させることができる。
【０１５７】
なお、振動中心ＡＦＣＮＴは、運転条件により所定値に設定されてもよい。また、振動中心ＡＦＣＮＴを条件に応じてリーン方向またはリッチ方向にシフトすることにより、触媒１０９の浄化状態を変更してもよい。さらに、前記振動処理を、触媒１０９の劣化診断のみならず、センサなどの故障診断に用いてもよい。
【０１５８】
一方、最初のステップ７０２において、振動条件でない（即ち、ＮＯ）と判定されれば、振動回数ＰＴＮを「０」にリセットするとともに（ステップ７２３）、周期カウンタＴｍｒを「０」にリセットして（ステップ７２４）、振動条件の不成立時での目標平均空燃比ＡＦＡＶＥｏｂｊを、振動中心ＡＦＣＮＴに設定する（ステップ７２５）。
【０１５９】
最後に、ステップ７２２または７２５で設定された目標平均空燃比ＡＦＡＶＥｏｂｊと一致するように、第１の空燃比フィードバック制御手段２０１における制御定数を設定して（ステップ７２６）、平均空燃比振動手段２０３による図６Ａ、図６Ｂの処理ルーチンを終了して抜け出る。
【０１６０】
次に、図６Ｂ内の最終ステップ７２６について具体的に説明する。まず、ステップ７２６で実行される制御定数に基づく平均空燃比の操作処理について説明する。平均空燃比は、第１の空燃比フィードバック制御手段２０１における制御定数（リッチ／リーンスキップ量ＲＳＲ、ＲＳＬ、リッチ／リーン積分定数ＫＩＲ、ＫＩＲ２、ＫＩＬ、ＫＩＬ２、リッチ／リーン遅延期間τＤＲ、τＤＬ、または、上流側Ｏ２センサ１１０の出力値Ｖ１に対する比較電圧ＶＲ１、ＫＩＲとＫＩＲ２の切り替え電圧ＶＲ、ＫＩＬとＫＩＬ２の切り替え電圧ＶＬ）を操作することによって操作される。
【０１６１】
例えば、平均空燃比は、リッチスキップ量ＲＳＲを大きくするか、またはリーンスキップ量ＲＳＬを小さくすると、リッチ側に移行し、リーンスキップ量ＲＳＬを大きくか、またはリッチスキップ量ＲＳＲを小さくすると、リーン側に移行する。つまり、平均空燃比は、リッチスキップ量ＲＳＲおよびリーンスキップ量ＲＳＬを変更することにより制御することができる。
【０１６２】
また、平均空燃比は、リッチ積分定数ＫＩＲ、ＫＩＲ２を大きくするか、またはリーン積分定数ＫＩＬ、ＫＩＬ２を小さくするとリッチ側に移行し、リーン積分定数ＫＩＬ、ＫＩＬ２を大きくするか、またはリッチ積分定数ＫＩＲ、ＫＩＲ２を小さくするとリーン側に移行する。つまり、平均空燃比は、リッチ積分定数ＫＩＲ、ＫＩＲ２およびリーン積分定数ＫＩＬ、ＫＩＬ２を変更することにより制御することができる。
【０１６３】
また、平均空燃比は、リッチ遅延期間τＤＲおよびリーン遅延期間τＤＬを「τＤＲ＞τＤＬ」の関係に設定すれば、リッチ側に移行し、逆に、「τＤＬ＞τＤＲ」の関係に設定すれば、リーン側に移行する。つまり、平均空燃比は、リッチ／リーン遅延期間τＤＲ、τＤＬを変更することにより制御することができる。
【０１６４】
さらに、平均空燃比は、上流側Ｏ２センサ１１０の出力値Ｖ１に対する比較電圧ＶＲ１を大きくすると、リッチ側に移行し、また、比較電圧ＶＲ１を小さくすると、リーン側に移行する。つまり、平均空燃比は、比較電圧ＶＲ１を変更することにより制御することができる。このように、制御定数（遅延期間、スキップ量、積分ゲイン、比較電圧など）を変更することにより、上流側の平均空燃比を制御することができる。
【０１６５】
また、制御定数のうちの２つ以上を同時に操作することにより、平均空燃比の制御性を向上させることができる。ただし、２つ以上の制御定数を操作すると、平均空燃比のリッチ／リーンの操作方向を管理することはできるが、非線形な相互作用により、操作量の管理が困難となる可能性がある。そこで、複数の制御定数の操作に起因した不具合を解消するとともに、自由度を積極的に利用するために、さらに、目標平均空燃比から制御定数の操作量を演算する手段を設け、目標平均空燃比の管理指標に応じて制御定数を設定して、平均空燃比により制御定数の操作を管理する方法も考えられる。
【０１６６】
また、制御定数ごとに平均空燃比を制御するうえで、例えば、平均空燃比の制御精度、操作幅、または制御周期、空燃比振動幅などに関して、利点および不利点があるが、目標平均空燃比の動作点に応じて、各制御定数をきめ細かく設定することにより、それぞれの利点を生かすことができる。
【０１６７】
次に、図１８を参照しながら、平均空燃比振動手段２０３による制御定数の設定演算処理について説明する。
図１８は制御定数の設定演算処理を図式的に示すフローチャートであり、目標平均空燃比に応じて第１の空燃比フィードバック制御手段２０１における制御定数（各スキップ量ＲＳＲ、ＲＳＬ、各積分定数ＫＩＲ、ＫＩＲ２、ＫＩＬ、ＫＩＬ２、各遅延期間τＤＲ、τＤＬ、比較電圧ＶＲ１、切り替え電圧ＶＲ、ＶＬ）を設定する演算ルーチンを示している。図１８の演算ルーチンは、所定期間（例えば、５ｍｓｅｃ）ごとに実行される。
【０１６８】
図１８において、まず、目標平均空燃比ＡＦＡＶＥｏｂｊに応じた１次元マップにより、リッチスキップ量ＲＳＲを演算する（ステップ１５０１）。なお、１次元マップの値は、あらかじめ机上計算または実験に基づいて設定されており、目標平均空燃比ＡＦＡＶＥｏｂの入力値に対応した設定値（マップ検索結果）がリッチスキップ量ＲＳＲとして出力される。
【０１６９】
また、ステップ１５０１における１次元マップは、内燃機関１０１の運転条件ごとに設けられており、運転条件の変化に応じて、１次元マップを切り替えてマップ検索が行われる。運転条件には、第１の空燃比フィードバック制御手段２０１の構成の応答性や特性などに関係する条件（例えば、エンジン回転速度Ｎｅ、負荷、アイドル状態、冷却水温ＴＨＷ、排気温度、上流側Ｏ２センサの温度、ＥＧＲバルブ開度など）が含まれる。また、例えば、運転条件を所定の回転速度、負荷、冷却水温で区分けされた運転領域として設定することができる。
【０１７０】
さらに、リッチスキップ量ＲＳＲの演算マップは、必ずしも１次元マップでなくてもよく、入力値と出力値との関係を表す手段であればよい。例えば、１次元マップに代えて、任意の近似式であってもよく、さらに多くの入力値に対応した高次元のマップや高次関数であってもよい。
【０１７１】
以下、ステップ１５０１と同様の処理方法で、目標平均空燃比ＡＦＡＶＥｏｂｊに応じてスキップ量ＲＳＬを演算し（ステップ１５０２）、目標平均空燃比ＡＦＡＶＥｏｂｊに応じて積分定数ＫＩＲを演算し（ステップ１５０３）、目標平均空燃比ＡＦＡＶＥｏｂｊに応じて積分定数ＫＩＲ２を演算し（ステップ１５０４）、目標平均空燃比ＡＦＡＶＥｏｂｊに応じて積分定数ＫＩＬを演算し（ステップ１５０５）、目標平均空燃比ＡＦＡＶＥｏｂｊに応じて積分定数ＫＩＬ２を演算し（ステップ１５０６）、目標平均空燃比ＡＦＡＶＥｏｂｊに応じて遅延期間τＤＲを演算し（ステップ１５０７）、目標平均空燃比ＡＦＡＶＥｏｂｊに応じて遅延期間τＤＬを演算し（ステップ１５０８）、目標平均空燃比ＡＦＡＶＥｏｂｊに応じて比較電圧ＶＲ１を演算し（ステップ１５０９）、目標平均空燃比ＡＦＡＶＥｏｂｊに応じて切り替え電圧ＶＲを演算し（ステップ１５１０）、目標平均空燃比ＡＦＡＶＥｏｂｊに応じて切り替え電圧ＶＬを演算し（ステップ１５１１）、図１８の処理ルーチンを終了する。
【０１７２】
このように、目標平均空燃比ＡＦＡＶＥｏｂｊに応じて、制御定数（各スキップ量ＲＳＲ、ＲＳＬ、各積分定数ＫＩＲ、ＫＩＲ２、ＫＩＬ、ＫＩＬ２、各遅延期間τＤＲ、τＤＬ、比較電圧ＶＲ１、切り替え電圧ＶＲ、ＶＬ）がそれぞれ演算される。
【０１７３】
ステップ１５０１〜１５１１における各演算マップ上の設定値は、前述のように、触媒１０９の上流側の実際の平均空燃比が、入力値である目標平均空燃比ＡＦＡＶＥｏｂｊと一致するように、あらかじめ机上計算または実験値に基づいて設定されている。また、運転条件により制御定数の設定値を変化させることにより、運転条件にかかわらず、実際の平均空燃比が目標平均空燃比ＡＦＡＶＥｏｂｊと一致するように設定されている。
【０１７４】
次に、図１９のフローチャートとともに、図２０および図２１の説明図を参照しながら、最大酸素吸蔵量演算手段２０４による処理動作について説明する。図１９の演算ルーチンは所定期間（例えば、５ｍｓｅｃ）ごとに実行される。
【０１７５】
図１９において、まず、触媒１０９の最大酸素吸蔵量の初期値ＯＳＣｍａｘ０を設定する（ステップ１６０１）。なお、初期値ＯＳＣｍａｘ０としては、あらかじめ設計した新品時の触媒の最大酸素吸蔵量が設定されてもよい。また、初期値ＯＳＣｍａｘ０として、排気ガス規制で定められた所定距離走行後の耐久触媒の最大酸素吸蔵量を設定してもよく、この場合、確実に排気ガス規制の要件を満たすような初期値ＯＳＣｍａｘ０を設定することができる。さらに、初期値ＯＳＣｍａｘ０として、内燃機関１０１の運転条件（エンジン回転速度Ｎｅ、負荷、吸入空気量Ｑａなど）に基づき、定常状態での最大酸素吸蔵量を設定してもよく、この場合、設定精度が向上する。
【０１７６】
続いて、触媒温度Ｔｍｐｃａｔを演算する（ステップ１６０２）。なお、触媒温度Ｔｍｐｃａｔは、触媒１０９に温度センサを取り付けるか、または触媒１０９の上下流に温度センサを配置して、測定により直接求めてもよい。
【０１７７】
また、触媒温度Ｔｍｐｃａｔを、他の運転条件情報から推定演算で求めてもよい。例えば、触媒温度Ｔｍｐｃａｔは、運転条件（エンジン回転速度Ｎｅ、負荷、吸入空気量Ｑａなど）ごとに設定された定常状態での値をマップ演算で読み出すことにより、定常状態時の値として推定演算することができる。また、内燃機関１０１の過渡時における挙動は、定常状態の触媒温度Ｔｍｐｃａｔにフィルタ処理を加えることにより、推定することができる。
【０１７８】
さらに、始動時の初期触媒温度Ｔｍｐｃａｔ０は、始動時の冷却水温ＴＨＷ、または、前回停止時から今回始動時までの期間間隔などから推定することができる。これにより、内燃機関１０１の始動から触媒１０９が活性化して定常状態になるまでの過渡的な温度挙動のみならず、運転条件の変動による過渡的な温度挙動を求めることができる。
【０１７９】
次に、ステップ１６０２に続いて、触媒温度Ｔｍｐｃａｔに応じて設定された１次元マップ（図２０参照）により、最大酸素吸蔵量ＯＳＣｍａｘの温度補正係数Ｋｔｍｐｃａｔを演算する（ステップ１６０３）。
【０１８０】
温度補正係数Ｋｔｍｐｃａｔは、図２０に示すように、触媒温度Ｔｍｐｃａｔが低いほど、最大酸素吸蔵量ＯＳＣｍａｘが減少するように、小さい値に設定される。また、触媒１０９の酸素吸蔵作用は、３００℃〜４００℃程度の温度領域で急速に活性化する特性を有するので、温度補正係数Ｋｔｍｐｃａｔは、触媒１０９の温度特性を考慮して設定される。
【０１８１】
続いて、下流側Ｏ２センサ１１１の出力値Ｖ２に対して適応的に触媒劣化度Ｃａｔｄｅｔを演算する（ステップ１６０４）。触媒劣化度Ｃａｔｄｅｔは、触媒１０９の劣化が大きいほど大きい値となる。
【０１８２】
続いて、触媒劣化度Ｃａｔｄｅｔに応じて設定された１次元マップ（図２１参照）により最大酸素吸蔵量の劣化補正係数Ｋｃａｔｄｅｔを演算する（ステップ１６０５）。劣化補正係数Ｋｃａｔｄｅｔは、図２１に示すように、触媒劣化度Ｃａｔｄｅｔが大きいほど、最大酸素吸蔵量ＯＳＣｍａｘを減少させるように、小さい値に設定される。
【０１８３】
最後に、温度補正係数Ｋｔｍｐｃａｔおよび劣化補正係数Ｋｃａｔｄｅｔに基づき最大酸素吸蔵量の初期値ＯＳＣｍａｘ０を補正して、以下の式（７）のように最大酸素吸蔵量ＯＳＣｍａｘを演算する（ステップ１６０６）。
ＯＳＣｍａｘ＝ＯＳＣｍａｘ０×Ｋｔｍｐｃａｔ×Ｋｃａｔｄｅｔ  ・・・（７）
【０１８４】
式（７）により、各種運転条件の変化のみならず、触媒１０９の活性途中および過渡時に応じた触媒温度Ｔｍｐｃａｔの変化や、触媒１０９の劣化などの各種条件に応じて変化する最大酸素吸蔵量ＯＳＣｍａｘを演算することができ、触媒１０９の酸素吸蔵量の振動処理の制御精度を向上させることができる。
【０１８５】
次に、図２２のフローチャートを参照しながら、最大酸素吸蔵量演算手段２０４による図１９内の触媒劣化度演算処理（ステップ１６０４）について、さらに詳細に説明する。図２２の演算ルーチンは、所定期間（例えば、５ｍｓｅｃ）ごとに実行される。
【０１８６】
図２２において、まず、触媒劣化度Ｃａｔｄｅｔの初期化条件が成立しているか否かを判定し（ステップ１９０１）、初期化条件が成立している（即ち、ＹＥＳ）と判定されれ
ば、触媒劣化度Ｃａｔｄｅｔを「０」（劣化無し状態）にリセットして（ステップ１９０２）、ステップ１９０３に進む。また、ステップ１９０１において、初期化条件が成立していない（即ち、ＮＯ）と判定されれば、ステップ１９０２を実行せずに、ステップ１９０３に進む。
【０１８７】
触媒劣化度Ｃａｔｄｅｔは、内燃機関１０１の停止時にリセットされないように、ＥＣＵ１１２内のバックアップＲＡＭ１２４（または、ＥＥＰＲＯＭなど）に記録されて保持されているが、バッテリの取り外し後またはＥＥＰＲＯＭの初期化後の最初の電源ＯＮ時において、初期化条件が成立するようになっている。
【０１８８】
また、触媒劣化度Ｃａｔｄｅｔの演算が不可能になった場合（下流側Ｏ２センサ１１１などのセンサ故障が検出された場合など）や、触媒劣化度Ｃａｔｄｅｔの再演算条件が成立した場合、または、外部機器（図示せず）からの通信によりリセット要求があった場合にも、ステップ１９０１において、初期化条件が成立したものと判定される。
【０１８９】
続いて、下流側Ｏ２センサ１１１の出力値Ｖ２のリッチ／リーン反転の判定処理を行う（ステップ１９０３）。ステップ１９０３の判定処理は、平均空燃比振動手段２０３による図６Ａ内のステップ７０１の判定処理と同様に行われる。
【０１９０】
即ち、下流側Ｏ２センサ１１１の出力値Ｖ２がリーンからリッチに反転した場合には、下流側Ｏ２センサ１１１の反転フラグＦＲＯ２ｄｅｔを「１」に設定し、リッチからリーンに反転した場合には、反転フラグＦＲＯ２ｄｅｔを「２」に設定し、反転しなかった場合には反転フラグＦＲＯ２ｄｅｔを「０」に設定する。なお、図８に示すヒステリシスの設定幅、または不感帯の設定幅、出力値Ｖ２のなまし処理の程度は、平均空燃比振動手段２０３の場合とは異なるように設定してもよい。
【０１９１】
次に、ステップ１９０３に続いて、触媒劣化度Ｃａｔｄｅｔの更新条件が成立しているか否かを判定し（ステップ１９０４）、触媒劣化度Ｃａｔｄｅｔの更新条件が成立している（即ち、ＹＥＳ）と判定されれば、ステップ１９０５以下の処理に進む。また、ステップ１９０４において、更新条件が成立していない（即ち、ＮＯ）と判定されれば、ステップ１９０５〜１９１０を実行せずに、図２２の処理ルーチンを終了する。
【０１９２】
なお、触媒劣化度Ｃａｔｄｅｔの更新条件は、触媒１０９が十分活性していると判定可能な条件下および平均空燃比の振動処理が実行中の条件下において成立する。また、触媒１０９の活性状態は、触媒温度Ｔｍｐｃａｔから直接的に判定してもよく、内燃機関１０１の始動後の経過期間や始動後の積算吸入空気量、または、エンジン回転速度Ｎｅや負荷などの所定運転条件に基づいて判定してもよい。さらに、触媒１０９の活性状態を、平均空燃比の振動処理の振動回数ＰＴＮが所定回数以上に達したか否かに基づいて判定してもよい。
【０１９３】
続いて、ステップ１９０５〜１９０９においては、下流側Ｏ２センサ１１１の出力値Ｖ２のリッチ／リーン反転に基づいて、触媒１０９の酸素吸蔵量が最大酸素吸蔵量ＯＳＣｍａｘまたは最小酸素吸蔵量（＝０）からの振り切れを検出し、触媒劣化度Ｃａｔｄｅｔの増減処理が行われる。
【０１９４】
まず、振動方向フラグＦＲＬが「１」であるか否かにより、リッチ方向に振動中か否かを判定し（ステップ１９０５）、リッチ方向に振動中（ＦＲＬ＝１）（即ち、ＹＥＳ）と判定されれば、ステップ１９０６に進む。また、ステップ１９０５において、リーン方向に振動中（ＦＲＬ＝２）（即ち、ＮＯ）と判定されれば、ステップ１９０７に進む。
【０１９５】
ステップ１９０５で、ＦＲＬ＝１（即ち、ＹＥＳ）と判定された場合に実行されるステップ１９０６においては、下流側Ｏ２センサ１１１の反転フラグＦＲＯ２ｄｅｔが「１」であるか否かにより、リッチ反転（下流側Ｏ２センサ１１１の出力値Ｖ２がリーンからリッチに反転した）か否かを判定する。
【０１９６】
ステップ１９０６において、リッチ反転（ＦＲＯ２ｄｅｔ＝１）（即ち、ＹＥＳ）と判定されれば、触媒劣化度Ｃａｔｄｅｔを所定設定値ＸｄｅｔＨだけ増加させて（ステップ１９０８）、以下の式（８）のように更新演算し、ステップ１９１０に進む。
Ｃａｔｄｅｔ＝Ｃａｔｄｅｔ＋ＸｄｅｔＨ  ・・・（８）
【０１９７】
一方、ステップ１９０５で、ＦＲＬ＝２（即ち、ＮＯ）と判定された場合に実行されるステップ１９０７においては、下流側Ｏ２センサ１１１の反転フラグＦＲＯ２ｄｅｔが「２」であるか否かにより、リーン反転（下流側Ｏ２センサ１１１の出力値Ｖ２がリッチからリーンに反転した）か否かを判定する。
【０１９８】
ステップ１９０７において、リーン反転（ＦＲＯ２ｄｅｔ＝２）（即ち、ＹＥＳ）と判定されれば、ステップ１９０８に進み、前記式（８）のように、触媒劣化度Ｃａｔｄｅｔを所定設定値ＸｄｅｔＨだけ増加させる。
【０１９９】
一方、ステップ１９０６において、リーン反転（ＦＲＯ２ｄｅｔ＝２）（即ち、ＮＯ）と判定された場合、または、ステップ１９０７において、リッチ反転（ＦＲＯ２ｄｅｔ＝１）（即ち、ＮＯ）と判定された場合には、触媒劣化度Ｃａｔｄｅｔを所定設定値ＸｄｅｔＬだけ減少させて（ステップ１９０９）、以下の式（９）のように更新演算し、ステップ１９１０に進む。
Ｃａｔｄｅｔ＝Ｃａｔｄｅｔ−ＸｄｅｔＬ  ・・・（９）
【０２００】
なお、式（８）、式（９）内の各所定設定値ＸｄｅｔＨ、ＸｄｅｔＬは、平均空燃比の振動周期を考慮して設定されるとともに、吸入空気量Ｑａに反比例するように、吸入空気量Ｑａに応じて、または運転条件に応じて設定される。
【０２０１】
最後に、ステップ１９１０において、上限値ＭＸｄｅｔと下限値ＭＮｄｅｔとの範囲内の値となるように、以下の式（１０）を用いて、触媒劣化度Ｃａｔｄｅｔの上下限制限処理を行い、図２２の処理ルーチンを終了する。
ＭＮｄｅｔ≦Ｃａｔｄｅｔ≦ＭＸｄｅｔ  ・・・（１０）
【０２０２】
次に、図２３および図２４Ａ、図２４Ｂを参照しながら、触媒劣化診断手段２０５の処理動作について説明する。図２３は触媒１０９の劣化時の挙動を示すタイミングチャートであり、図２４Ａ、図２４Ｂは触媒劣化診断手段２０３の処理動作を示すフローチャートである。図２４Ａ、図２４Ｂの演算ルーチンは、所定期間（例えば、５ｍｓｅｃ）ごとに実行される。
【０２０３】
図２３において、触媒１０９の劣化により最大酸素吸蔵量ＯＳＣｍａｘが減少し、平均空燃比の振動処理による酸素吸蔵量の振動幅が、減少した最大酸素吸蔵量ＯＳＣｍａｘから振り切れるようになると、下流側Ｏ２センサ１１１の出力値Ｖ２のリッチ／リーン反転が増加することにより、触媒劣化度Ｃａｔｄｅｔは増加する。
【０２０４】
図２４Ａ、図２４Ｂにおいて、まず、触媒１０９の劣化診断の初期化条件が成立しているか否かを判定し（ステップ２１０１）、初期化条件が成立している（即ち、ＹＥＳ）と判定されれば、診断回数Ｎｒａｔｉｏを「０」にリセットし（ステップ２１０２）、反転
回数比Ｒｏａの積算値Ｒｏａｓｍを「０」にリセットし（ステップ２１０３）、劣化診断結果Ｆｃａｔｊを「０」（未判定状態）にリセットし（ステップ２１０４）、反転回数比平均値Ｒｏａａｖｅを「０」にリセットし（ステップ２１０５）、続いて、劣化診断条件が成立しているか否かを判定する（ステップ２１０６）。
【０２０５】
また、ステップ２１０１において、初期化条件が成立していない（即ち、ＮＯ）と判定されれば、ステップ２１０２〜２１０５を実行せずに、ステップ２１０６に進む。
【０２０６】
なお、触媒劣化診断手段２０５の情報（触媒劣化度Ｃａｔｄｅｔなど）は、内燃機関１０１の停止時にリセットされないように、バックアップＲＡＭ１２４（または、ＥＥＰＲＯＭなど）に記録されて保持されているが、バッテリの取り外し後またはＥＥＰＲＯＭの初期化後の最初の電源ＯＮ時において、ステップ２１０１の初期化条件が成立するようになっている。
【０２０７】
また、触媒劣化度Ｃａｔｄｅｔの演算が不可能になった場合（下流側Ｏ２センサ１１１などの故障検出時など）や、触媒劣化度Ｃａｔｄｅｔの再演算条件が成立した場合、または外部機器（図示せず）からの通信によりリセット要求があった場合にも、ステップ２１０１において、初期化条件が成立したものと判定される。
【０２０８】
ステップ２１０６において、劣化診断条件が成立している（即ち、ＹＥＳ）と判定されれば、続いて、目標平均空燃比がリッチ／リーンで反転したか否かを判定し（ステップ２１０７）、反転した（即ち、ＹＥＳ）と判定されれば、平均空燃比反転回数Ｎａｆを「１」だけ増加させて（ステップ２１０８）、ステップ２１０９に進む。
【０２０９】
また、ステップ２１０７において、目標平均空燃比が反転していない（即ち、ＮＯ）と判定されれば、ステップ２１０８を実行せずに、ステップ２１０９に進む。
【０２１０】
なお、ステップ２１０７における目標平均空燃比の反転判定は、振動方向フラグＦＲＬが「１」（リッチ）または「２」（リーン）に変化したか否かにより行われる。つまり、前回演算時の振動方向フラグＦＲＬを記憶しておき、今回演算時の振動方向フラグＦＲＬと比較することにより、目標平均空燃比の反転を判定することができる。
【０２１１】
一方、ステップ２１０６において、劣化診断条件が成立していない（即ち、ＮＯ）と判定されれば、平均空燃比反転回数Ｎａｆを「０」にリセットし（ステップ２１３２）、下流側Ｏ２反転回数Ｎｒｏ２を「０」にリセットし（ステップ２１３３）、ディレイ判定フラグＦｒｓｄｌｙを「０」（後述するディレイ処理の非実行を示す）にリセットして（ステップ２１３４）、ステップ２１２７に進む。ステップ２１２７については後述する。
【０２１２】
なお、ステップ２１０６における劣化診断条件は、前述（図２２内のステップ１９０４）の触媒劣化度Ｃａｔｄｅｔの更新条件と同様に、触媒１０９が十分活性していると判定可能な条件下および平均空燃比の振動処理が実行中の条件下において成立する。また、触媒１０９の活性状態は、触媒温度Ｔｍｐｃａｔから直接的に判定してもよく、内燃機関１０１の始動後の経過期間や始動後の積算吸入空気量、または、エンジン回転速度Ｎｅや負荷などの所定運転条件に基づいて判定してもよい。
【０２１３】
さらに、触媒１０９の活性状態を、平均空燃比の振動処理の振動回数ＰＴＮが所定回数以上に達したか否かに基づいて判定してもよい。これにより、振動開始後の不安定な状態を診断することに起因した誤診断を防止して、安定的に振動するようになった時点から診断を開始することができ、診断精度を向上させることができる。
【０２１４】
ステップ２１０８に戻り、続いて、前述（図６Ａ内のステップ７０１、図２２内のステップ１９０３）と同様に、下流側Ｏ２センサ１１１の出力値Ｖ２のリッチ／リーン反転の判定処理を実行する（ステップ２１０９）。
【０２１５】
ステップ２１０９において、出力値Ｖ２がリーンからリッチへの反転が判定された場合には、下流側Ｏ２センサ１１１の反転フラグＦＲＯ２ｒｖを「１」に設定し、リッチからリーンへの反転が判定された場合には、反転フラグＦＲＯ２ｒｖを「２」に設定し、反転が判定されなかった場合には、反転フラグＦＲＯ２ｒｖを「０」に設定する。
【０２１６】
このとき、前述のステップ１９０３（図２２参照）の場合と同様に、図８に示すヒステリシスの設定幅、または不感帯の設定幅、出力値Ｖ２のなまし処理の程度は、平均空燃比振動手段２０３の場合とは異なるように設定してもよい。
【０２１７】
ステップ２１０６〜２１０９は、下流側Ｏ２センサ１１１の出力値Ｖ２のリッチ／リーン反転により、触媒１０９の酸素吸蔵量が、最大酸素吸蔵量ＯＳＣｍａｘまたは最小酸素吸蔵量（＝０）から振り切れたことを検出し、これに応答して触媒劣化度Ｃａｔｄｅｔを増減するための処理である。
【０２１８】
次に、反転フラグＦＲＯ２ｒｖが「１」または「２」であるか否かにより、出力値Ｖ２（下流側Ａ／Ｆ）が反転したか否かを判定し（ステップ２１１０）、反転した（ＦＲＯ２ｒｖ＝１、または、ＦＲＯ２ｒｖ＝２）（即ち、ＹＥＳ）と判定されれば、下流側Ｏ２反転回数Ｎｒｏ２を「１」だけ増加させる（ステップ２１１１）。
【０２１９】
続いて、平均空燃比反転回数Ｎａｆが更新条件判定値Ｘｎａｆ以上であるか否かにより、劣化診断用の判定基準値Ｘｒｏａの更新条件が成立しているか否かを判定し（ステップ２１１２）、判定基準値Ｘｒｏａの更新条件が成立している（Ｎａｆ≧Ｘｎａｆ）（即ち、ＹＥＳ）と判定されれば、判定用平均空燃比反転回数Ｎａｆｊとして、平均空燃比反転回数Ｎａｆを設定することにより、判定用平均空燃比反転回数Ｎａｆｊを更新する（ステップ２１１３）。
【０２２０】
また、次回の判定基準値Ｘｒｏａを演算するための準備として、平均空燃比反転回数Ｎａｆを「０」にリセットするとともに（ステップ２１１４）、平均空燃比が変動してから出力値Ｖ２が変動するまでの期間遅れを考慮したディレイ判定フラグＦｒｓｄｌｙを「１」（ディレイ処理中を示す）にセットし（ステップ２１１５）、ディレイ判定フラグＦｒｓｄｌｙが「１」であるか否かにより、ディレイ処理中であるか否かを判定する（ステップ２１１６）。
【０２２１】
一方、ステップ２１１２において、判定基準値Ｘｒｏａの更新条件が成立してない（Ｎａｆ＜Ｘｎａｆ）（即ち、ＮＯ）と判定されれば、ステップ２１１３〜２１１５を実行せずに、ステップ２１１６に進む。
【０２２２】
ステップ２１１６において、ディレイ処理中である（Ｆｒｓｄｌｙ＝１）（即ち、ＹＥＳ）と判定されれば、以下の式（１１）のように、ディレイタイマＴｒｓｄｌｙを所定値ＤＴｒｓｄｌｙだけ増加させて更新し（ステップ２１１７）、ステップ２１１９に進む。
Ｔｒｓｄｌｙ＝Ｔｒｓｄｌｙ＋ＤＴｒｓｄｌｙ  ・・・（１１）
【０２２３】
式（１１）において、タイマ更新用の所定値ＤＴｒｓｄｌｙは、例えば演算周期５ｍｓｅｃに設定される。
【０２２４】
また、ステップ２１１６において、ディレイ処理中でない（Ｆｒｓｄｌｙ＝０）（即ち、ＮＯ）と判定されれば、ディレイタイマＴｒｓｄｌｙを「０」にリセットして（ステップ２１１８）、ステップ２１１９に進む。
【０２２５】
ステップ２１１９においては、ディレイタイマＴｒｓｄｌｙが所定判定値Ｘｒｓｄｌｙよりも大きいか否かにより、ディレイ期間が経過したか否かを判定し、ディレイ期間が経過していない（Ｔｒｓｄｌｙ≦Ｘｒｓｄｌｙ）（即ち、ＮＯ）と判定されれば、ステップ２１２７に進む。ステップ２１２７については後述する。
【０２２６】
また、ステップ２１１９において、ディレイ期間が経過した（Ｔｒｓｄｌｙ＞Ｘｒｓｄｌｙ）（即ち、ＹＥＳ）と判定されれば、下流側Ｏ２センサ１１１の出力値Ｖ２に基づく劣化診断判定情報の更新条件が成立しているので、以下の更新処理（ステップ２１２０〜２１２６）を実行する。
【０２２７】
なお、所定判定値Ｘｒｓｄｌｙは、平均空燃比の変動により、触媒１０９の下流側Ｏ２センサ１１１の出力値Ｖ２が変動するまでの期間遅れを考慮して設定される。この期間遅れは、インジェクタ１０７から燃料が噴射された時点から、実際に混合気が下流側Ｏ２センサ１１１の設置位置に移動するまでの期間遅れと、触媒１０９の酸素吸蔵作用による期間遅れとを含み、概して吸入空気量Ｑａに反比例する。従って、所定判定値Ｘｒｓｄｌｙは、例えば吸入空気量Ｑａに応じた１次元マップにより設定されている。
【０２２８】
また、ステップ２１１９における更新条件の判定に、ディレイタイマＴｒｓｄｌｙ（タイマ動作）を用いたが、ディレイタイマＴｒｓｄｌｙを用いずに、ディレイ判定フラグＦｒｓｄｌｙが「１」に設定されている期間中（ディレイ処理中）の吸入空気量Ｑａの積算量を演算し、吸入空気量Ｑａの積算量が所定量よりも大きい場合に、更新条件が成立したと判定してもよい。
【０２２９】
ステップ２１１９に続く劣化診断判定情報の更新処理において、まず、判定用下流側Ｏ２反転回数Ｎｒｏ２ｊとして、下流側Ｏ２反転回数Ｎｒｏ２に設定することにより、判定用下流側Ｏ２反転回数Ｎｒｏ２ｊを更新する（ステップ２１２０）。
【０２３０】
また、次回の判定基準値Ｘｒｏａを演算するための準備として、下流側Ｏ２反転回数Ｎｒｏ２を「０」にリセットするとともに（ステップ２１２１）、ディレイ判定フラグＦｒｓｄｌｙを「０」にリセットして（ステップ２１２２）、ディレイ処理を終了する。
【０２３１】
続いて、判定用平均空燃比反転回数Ｎａｆｊと、これに対応する判定用下流側Ｏ２反転回数Ｎｒｏ２ｊとが揃えられたので、以下の式（１２）のように、判定用平均空燃比反転回数Ｎａｆｊと判定用下流側Ｏ２反転回数Ｎｒｏ２ｊとの反転回数比Ｒｏａを更新演算する（ステップ２１２３）。
Ｒｏａ＝Ｎｒｏ２ｊ／Ｎａｆｊ  ・・・（１２）
【０２３２】
続いて、反転回数比Ｒｏａの平均値Ｒｏａａｖｅを更新演算するために、まず、前回の積算値Ｒｏａｓｍに反転回数比Ｒｏａを加算して積算値Ｒｏａｓｍを更新演算し（ステップ２１２４）、診断回数Ｎｒａｔｉｏを「１」だけ増加させた後（ステップ２１２５）、以下の式（１３）のように、反転回数比平均値Ｒｏａａｖｅを更新演算する（ステップ２１２６）。
Ｒｏａａｖｅ＝Ｒｏａｓｍ／Ｎｒａｔｉｏ  ・・・（１３）
【０２３３】
次に、劣化診断結果Ｆｃａｔｊが「０」であるか否かにより、劣化診断処理が未実行であるか否かを判定し（ステップ２１２７）、診断処理が実行済み（Ｆｃａｔｊ＝１、または、Ｆｃａｔｊ＝２）（即ち、ＮＯ）と判定されれば、図２４の処理ルーチンを終了する。
【０２３４】
また、診断処理が未実行である（Ｆｃａｔｊ＝０）（即ち、ＹＥＳ）と判定されれば、続いて、診断回数Ｎｒａｔｉｏが診断実行回数Ｘｎｒと一致するか否かにより、診断条件が成立しているか否かを判定し（ステップ２１２８）、診断条件が成立していない（Ｎｒａｔｉｏ≠Ｘｎｒ）（即ち、ＮＯ）と判定されれば、図２４の処理ルーチンを終了する。
【０２３５】
また、ステップ２１２８において、診断条件が成立している（Ｎｒａｔｉｏ＝Ｘｎｒ）（即ち、ＹＥＳ）と判定されれば、触媒１０９の劣化診断処理を実行し、反転回数比平均値Ｒｏａａｖｅが判定基準値Ｘｒｏａ以上であるか否かにより、触媒劣化の有無を判定する（ステップ２１２９）。
【０２３６】
ステップ２１２９において、触媒１０９が劣化状態である（Ｒｏａａｖｅ≧Ｘｒｏａ）（即ち、ＹＥＳ）と判定されれば、劣化診断結果Ｆｃａｔｊを「２」（劣化を示す）に設定して（ステップ２１３０）、図２４の処理ルーチンを終了する。
【０２３７】
また、ステップ２１２９において、触媒１０９が正常状態である（Ｒｏａａｖｅ＜Ｘｒｏａ）（即ち、ＮＯ）と判定されれば、劣化診断結果Ｆｃａｔｊを「１」（正常を示す）に設定して（ステップ２１３１）、図２４の処理ルーチンを終了する。
【０２３８】
なお、判定基準値Ｘｒｏａは、劣化診断が必要な触媒の最大酸素吸蔵量ＯＳＣｍａｘの減少状態を検出できる値に調整されている。
また、平均空燃比の振動による酸素吸蔵量を、劣化診断が必要な触媒の最大酸素吸蔵量ＯＳＣｍａｘよりも大きい値に設定することにより、劣化診断が必要な触媒を確実に検出することができる。
【０２３９】
さらに、下流側Ｏ２反転回数Ｎｒｏ２（下流側Ｏ２センサ１１１の出力値Ｖ２の反転回数）を、酸素吸蔵量の振動回数（平均空燃比の振動処理の振動回数ＰＴＮ）との比較に基づいて判定することにより、内燃機関１０１の運転条件および運転パターンにより変化する振動周期に起因した劣化診断の判定精度低下を防止することができる。
【０２４０】
ここでは、反転回数平均値Ｒｏａａｖｅを用いて触媒劣化を診断したが、最大酸素吸蔵量演算手段２０４で演算される触媒劣化度Ｃａｔｄｅｔが所定値以上を示す場合に、触媒１０９が劣化していると判定してもよい。
【０２４１】
次に、図２５のタイミングチャートを参照しながら、触媒劣化診断における挙動について説明する。図２５においては、触媒１０９の劣化により最大酸素吸蔵量ＯＳＣｍａｘが減少して、酸素吸蔵量の振動幅が振り切れ始めた場合の各パラメータの挙動を示している。
【０２４２】
図２５において、下流側Ｏ２センサ１１１の出力値Ｖ２の反転が判定された状態でも、平均空燃比が反転していない理由は、触媒劣化診断手段２０５のヒステリシス幅が、平均空燃比振動手段２０３のヒステリシス幅よりも狭く設定されているからである。
【０２４３】
まず、時刻ｔ２２１において、平均空燃比（振動方向フラグＦＲＬ参照）がリッチからリーンに反転すると、平均空燃比反転回数Ｎａｆが更新条件判定値Ｘｎａｆに到達し、ディレイタイマＴｒｓｄｌｙが増加し始める。
【０２４４】
続いて、前述の混合気の移動遅れや酸素吸蔵作用により、時刻ｔ２２１においてリッチからリーンに反転した影響が、期間遅れをもって時刻ｔ２２２の付近から表れ始め、時刻ｔ２２２において、下流側Ｏ２センサ１１１の出力値Ｖ２がリッチ反転する。
【０２４５】
一方、ディレイタイマＴｒｓｄｌｙは、時刻ｔ２２３において、所定判定値Ｘｒｓｄｌｙに到達し、判定用下流側Ｏ２反転回数Ｎｒｏ２ｊを更新する。このように、制御系の遅れを考慮したディレイタイマＴｒｓｄｌｙを設けることにより、平均空燃比の振動に対応した下流側Ｏ２センサ１１１の出力値Ｖ２の変動を精度よく検出することができる。
【０２４６】
次に、図２６のフローチャートおよび図２７の説明図を参照しながら、第２の空燃比フィードバック制御手段２０２による演算処理について説明する。図２６の処理ルーチンは、下流側Ｏ２センサ１１１の出力値Ｖ２に基づく平均空燃比振動の振動中心ＡＦＣＮＴを演算するための手順を示しており、所定期間（例えば、５ｍｓｅｃ）ごとに実行される。
【０２４７】
図２６において、第２の空燃比フィードバック制御手段２０２は、まず、下流側Ｏ２センサ１１１の出力値Ｖ２を読み込み、フィルタ処理（または、平均化処理などのなまし処理）を施し（ステップ２３０１）、処理後の出力値Ｖ２ｆｌｔに基づく制御を可能にする。
【０２４８】
続いて、下流側Ｏ２センサ１１１によるフィードバック領域（閉ループ条件が成立している）か否かを判定する（ステップ２３０２）。ステップ２３０２においては、例えば、理論空燃比制御以外の空燃比制御条件下（内燃機関１０１の始動中、冷却水温ＴＨＷが低温時でのリッチ化制御中、高負荷パワー増量時でのリッチ化制御中、燃費向上時のリーン化制御中、始動後のリーン化制御中、燃料カット中など）、下流側Ｏ２センサ１１１の不活性状態時または故障時などの場合に、閉ループ条件が不成立と判定され、その他の場合には閉ループ条件が成立したと判定される。
【０２４９】
なお、下流側Ｏ２センサ１１１の活性／不活性状態の判定は、始動後から所定期間だけ経過したか否か、または、下流側Ｏ２センサ１１１の出力値Ｖ２のレベルが所定電圧を一度横切ったか否かにより判定することができる。
【０２５０】
ステップ２３０２において、閉ループ条件が成立していない（即ち、ＮＯ）と判定されれば、平均空燃比振動の振動中心（中心空燃比）の初期値ＡＦＣＮＴ０と積分演算値（以下、積分値という。）ＡＦＩを用いて、平均空燃比振動の振動中心ＡＦＣＮＴを、以下の式（１４）のように求め（ステップ２３１３）、図２６の処理ルーチンを終了する。
ＡＦＣＮＴ＝ＡＦＣＮＴ０＋ＡＦＩ  ・・・（１４）
【０２５１】
式（１４）において、初期値ＡＦＣＮＴ０は、例えば「１４．５３」に設定される。また、積分値ＡＦＩは、閉ループ制御が終了する直前の値であり、制御回路１０内のバックアップＲＡＭ１０６に保持されている。初期値ＡＦＣＮＴ０および積分値ＡＦＩは、内燃機関１０１の運転条件（例えば、エンジン回転速度Ｎｅ、負荷、冷却水温ＴＨＷで区分けされた運転領域）ごとに保持された設定値であり、それぞれ、バックアップＲＡＭ１０６内に保持されている。
【０２５２】
一方、ステップ２３０２において、閉ループ条件が成立している（即ち、ＹＥＳ）と判定されれば、下流側Ｏ２センサ１１１の出力値Ｖ２の目標値ＶＲ２を設定する（ステップ２３０３）。
【０２５３】
目標値ＶＲ２は、理論空燃比付近の触媒１０９の浄化ウインドウに対応した下流側Ｏ２センサ１１１の所定出力値（例えば、０．４５Ｖ付近）に設定されてもよく、または、触媒１０９のＮＯｘ浄化率が高くなるような高めの電圧（例えば、０．７５Ｖ付近）や、ＣＯ、ＨＣの浄化率が高くなるような低めの電圧（例えば、０．２Ｖ付近）などに設定されてもよく、さらに、運転条件などに応じて可変変更されてもよい。
【０２５４】
なお、運転条件に応じて目標値ＶＲ２を変更する場合には、変更時のステップ的な変化による空燃比変動を緩和するために、目標値ＶＲ２になまし処理（例えば、１次遅れフィルタ処理）を施してもよい。
【０２５５】
次に、ステップ２３０３に続いて、出力値Ｖ２の目標値ＶＲ２と、フィルタ処理後の出力値Ｖ２ｆｌｔとの偏差ΔＶ２（＝ＶＲ２−Ｖ２ｆｌｔ）を演算し（ステップ２３０４）、偏差ΔＶ２が「０」となるような振動中心ＡＦＣＮＴを設定するために、偏差ΔＶ２に応じたＰＩ制御処理（比例演算および積分演算）を行う（ステップ２３０５〜２３１１）。
【０２５６】
例えば、下流側Ｏ２センサ１１１の出力値Ｖ２が目標値ＶＲ２よりも小さく、リーン側の場合には、上流側の目標平均空燃比ＡＦＡＶＥｏｂｊをリッチ側に設定して、下流側Ｏ２センサ１１１の出力値Ｖ２が目標値ＶＲ２に復帰するように作用させる。
【０２５７】
触媒１０９の上流側の目標平均空燃比ＡＦＡＶＥｏｂｊは、一般的なＰＩ制御器により、目標平均空燃比の初期値ＡＦＡＶＥ０と、積分ゲインＫｉ２に基づく積分操作量Σ｛Ｋｉ２（ΔＶ２）｝と、比例ゲインＫｐ２に基づく比例操作量Ｋｐ２（ΔＶ２）とを用いて、以下の式（１５）のように演算される。
ＡＦＡＶＥｏｂｊ＝ＡＦＡＶＥ０＋Σ｛Ｋｉ２（ΔＶ２）｝＋Ｋｐ２（ΔＶ２）  ・・・（１５）
【０２５８】
式（１５）において、初期値ＡＦＡＶＥ０は、運転条件ごとに設定された理論空燃比に相当する値であり、例えば「１４．５３」に設定される。また、積分ゲインＫｉ２に基づく積分演算は、偏差ΔＶ２を積分しながら出力を生成して比較的ゆっくり動作するので、上流側Ｏ２センサ１１０の特性変動に起因する下流側Ｏ２センサ１１１の出力値Ｖ２の定常的な偏差を解消する効果がある。
【０２５９】
積分ゲインＫｉ２は、大きく設定すればするほど、積分操作量Σ｛Ｋｉ２（ΔＶ２）｝の絶対値が大きくなり、偏差解消用の制御効果は大きくなるが、大きく設定し過ぎると位相遅れが大きくなり、制御系が不安定になってハンチングが生じるので、適切なゲイン設定が必要となる。
【０２６０】
一方、比例ゲインＫｐ２に基づく比例演算は、偏差ΔＶ２に比例した出力を生成して早い応答性を示すので、偏差を早急に復帰させる効果がある。比例ゲインＫｐ２は、大きく設定すればするほど、比例操作量Ｋｐ２（ΔＶ２）（例えば、「Ｋｐ２・ΔＶ２」）の絶対値が大きくなり、復帰速度が早くなるが、大きく設定し過ぎると制御系が不安定になってハンチングを生じるので、適切なゲイン設定が必要となる。
【０２６１】
前記ＰＩ制御処理において、まず、積分値ＡＦＩの更新条件が成立しているか否かを判定する（ステップ２３０５）。積分値ＡＦＩの更新条件は、過渡運転中の場合および過渡運転後の所定期間以外の場合に成立する。
【０２６２】
例えば、過渡運転時においては、上流側Ａ／Ｆが大きく乱れ、同様に下流側Ａ／Ｆも乱れるので、仮に、この状態で積分演算を行うと間違った値を積分し、特に積分演算は比較的ゆっくり動作することから、過渡運転後もしばらくは間違った値を保持して制御性能が悪化する。
【０２６３】
従って、過渡運転時においては、積分演算の更新を一時的に停止して積分値ＡＦＩを保持することにより、前記のような誤った積分演算を防止している。また、過渡運転後も、制御対象の遅れによりしばらくは影響が残るので、過渡運転後の所定期間においても積分値ＡＦＩの更新を禁止する。特に、触媒１０９の遅れが大きいので、過渡運転後の所定期間を、過渡運転後の積算吸入空気量が所定値に到達するまでの期間として設定してもよい。なぜなら、触媒１０９の状態が過渡運転の影響から復帰するまでの速度は、触媒１０９のＯ２吸蔵作用に依存し、吸入空気量Ｑａに比例するからである。
【０２６４】
なお、過渡運転は、急な加減速、燃料カット、リッチ化制御、リーン化制御、第２の空燃比フィードバック制御手段２０２による制御の停止、第１の空燃比フィードバック制御手段２０１による制御の停止、蒸散ガス導入の急変、などを含む。急な加減速は、スロットル開度の単位期間当たりの変化量が所定以上を示す場合、または、吸入空気量Ｑａの単位期間当たりの変化量が所定以上を示す場合などに判定される。また、蒸散ガス導入の急変は、蒸散ガスを導入するバルブ開度の単位期間当たりの変化量が所定以上を示す場合などに判定される。
【０２６５】
ステップ２３０５において、積分値ＡＦＩの更新条件が成立している（即ち、ＹＥＳ）と判定されれば、前回までの積分値ＡＦＩに、積分ゲインＫｉ２に基づく更新量Ｋｉ２（ΔＶ２）を加算し、積分値ＡＦＩを更新演算して（ステップ２３０６）、ステップ２３０８に進む。
【０２６６】
積分値ＡＦＩは、前述のように運転条件ごとにバックアップＲＡＭ１０６に保持されている。更新量Ｋｉ２（ΔＶ２）は、単に「Ｋｉ２・ΔＶ２」と設定されてもよく、または、図２７に示すような１次元マップを用いて、偏差ΔＶ２に応じた値に可変設定（所謂、可変ゲイン設定）してもよい。
【０２６７】
また、積分値ＡＦＩにより補償される上流側Ｏ２センサ１１０の特性変動は、排気温度または排気圧力などの運転条件に応じて変化するので、積分値ＡＦＩは、運転条件が変化するごとに更新設定されるバックアップＲＡＭ１０６内に保持しておき、運転条件ごとに切り替えられる。また、積分値ＡＦＩは、バックアップＲＡＭ１０６内に保持されているので、内燃機関１０１の停止または再始動ごとにリセットされ、制御性能の低下を回避することができる。
【０２６８】
一方、ステップ２３０５において、積分値ＡＦＩの更新条件が成立していない（即ち、ＮＯ）と判定されれば、前回の積分値ＡＦＩのままに設定し、積分値ＡＦＩを更新せずに（ステップ２３０７）、ステップ２３０８に進む。ステップ２３０８においては、積分値ＡＦＩの最小値ＡＦＩｍｉｎおよび最大値ＡＦＩｍａｘを用いて、以下の式（１６）を満たすように、積分値ＡＦＩの上下限制限処理を行う。
ＡＦＩｍｉｎ＜ＡＦＩ＜ＡＦＩｍａｘ  ・・・（１６）
【０２６９】
最小値ＡＦＩｍｉｎおよび最大値ＡＦＩｍａｘは、上流側Ｏ２センサ１１０の特性変動幅（あらかじめ把握可能）を補償できるような適切な制限値に設定される。これにより、過大な空燃比操作を回避することができる。
【０２７０】
続いて、比例演算処理を行い、比例演算値（以下、比例値という。）ＡＦＰとして、比例操作量Ｋｐ２（ΔＶ２）を設定する（ステップ２３０９）。比例値Ｋｐ２（ΔＶ２）は、単に「Ｋｐ２・ΔＶ２」と設定してもよく、積分値ＡＦＩの更新量Ｋｉ２（ΔＶ２）と同様に、図２７に示すような１次元マップを用いて、偏差ΔＶ２に応じて可変設定（可変ゲイン設定）してもよい。
【０２７１】
また、積分ゲインＫｉ２および比例ゲインＫｐ２は、平均空燃比振動手段２０３による平均空燃比の振動処理の有無、または平均空燃比の振動幅に応じて、設定変更されてもよい。この場合、平均空燃比振動手段２０３により下流側Ｏ２センサ１１１の出力値Ｖ２の変動が増加すると、第２の空燃比フィードバック制御手段２０２の制御により、出力値Ｖ２の変動を抑制するように平均空燃比が操作されるので、平均空燃比振動手段２０３と第２の空燃比制御手段２０２とが相互に影響する。つまり、積分ゲインＫｉ２および比例ゲインＫｐ２は、平均空燃比の振動処理中に変更され、相互影響を考慮して設定される。
【０２７２】
また、積分ゲインＫｉ２および比例ゲインＫｐ２は、最大酸素吸蔵量演算手段２０４により演算される最大酸素吸蔵量ＯＳＣｍａｘ、触媒温度Ｔｍｐｃａｔ、触媒劣化度Ｃａｔｄｅｔ、または、触媒劣化診断手段２０５による劣化有無の診断結果に応じて、設定変更されてもよい。この場合、積分ゲインＫｉ２および比例ゲインＫｐ２の変更により、触媒１０９の最大酸素吸蔵量ＯＳＣｍａｘの変化に応じた適切なゲインを設定することができる。
【０２７３】
また、過渡運転条件下（積分値ＡＦＩの更新条件が不成立）における過渡運転後の所定期間では、比例ゲインＫｐ２の絶対値を大きく設定して、外乱で悪化した触媒１０９の浄化状態の復帰速度を速める。一方、過渡運転後の所定期間経過後は、比例ゲインＫｐ２の絶対値を小さく設定して、目標空燃比Ａ／Ｆｏの操作量過大に起因したドライバビリティの悪化を回避する。
【０２７４】
比例演算における過渡運転後の所定期間は、積分演算の場合と同様に、過渡運転後の積算空気量が所定値に到達するまでの期間に制御されてもよい。なぜなら、触媒１０９の状態が過渡運転の影響から復帰するまでの速度は、触媒１０９のＯ２吸蔵作用に依存し、吸入空気量Ｑａに比例するからである。
【０２７５】
従って、過渡運転後の所定期間において、比例ゲインＫｐ２の絶対値を大きく設定することにより、過渡運転による触媒１０９の浄化状態悪化を早く復帰させることができ、また通常運転時のドライバビリティの悪化を回避することができる。
【０２７６】
次に、ステップ２３０９に続いて、過大な空燃比操作を防止するために、比例値ＡＦＰの最小値ＡＦＰｍｉｎおよび最大値ＡＦＰｍａｘを用いて、以下の式（１７）を満たすように、比例値ＡＦＰの上下限制限処理を行う（ステップ２３１０）。
ＡＦＰｍｉｎ＜ＡＦＰ＜ＡＦＰｍａｘ  ・・・（１７）
【０２７７】
続いて、ステップ２３０６〜２３０８で求めた積分値ＡＦＩと、ステップ２３０９、２３１０で求めた比例値ＡＦＰとを合計し、以下の式（１８）により、振動中心ＡＦＣＮＴを演算する（ステップ２３１１）。
ＡＦＣＮＴ＝ＡＦＡＶＥ０＋ＡＦＰ＋ＡＦＩ  ・・・（１８）
【０２７８】
式（１８）のようにＰＩ演算値の合計からなる振動中心ＡＦＣＮＴは、触媒１０９の上流側の目標平均空燃比ＡＦＡＶＥｏｂｊを求める前述の式（１５）に対応する。
【０２７９】
最後に、過大な空燃比操作を回避するために、振動中心ＡＦＣＮＴ（目標平均空燃比ＡＦＡＶＥｏｂｊに対応）の最小値ＡＦＣＮＴｍｉｎおよび最大値ＡＦＣＮＴｍａｘを用いて、以下の式（１９）を満たすように、振動中心ＡＦＣＮＴ（目標平均空燃比ＡＦＡＶＥｏｂｊ）の上下限制限処理を行い（ステップ２３１２）、図２６の処理ルーチンを終了する。
ＡＦＣＮＴｍｉｎ＜ＡＦＣＮＴｏｂｊ＜ＡＦＣＮＴｍａｘ  ・・・（１９）
【０２８０】
以上のように、この発明の実施の形態１に係る内燃機関の空燃比制御装置は、触媒１２の上流側に設けられて上流側排気ガス中の空燃比を検出する上流側Ｏ２センサ１１０と、上流側Ｏ２センサ１１０の出力値Ｖ１および制御定数に応じて内燃機関１０１に供給する空燃比を調整して、空燃比を周期的にリッチ方向およびリーン方向に振動させる第１の空燃比フィードバック制御手段２０１とを備え、第１の空燃比フィードバック制御手段２０１にて、内燃機関１０１に供給する空燃比を調整する際、上流側Ｏ２センサ１１０の出力値Ｖ１が所定の電圧以上となるタイミングにて制御定数の増大量を小さくし、所定電圧以下となるタイミングにて制御定数の減少量を小さくする。
【０２８１】
これにより、内燃機関１０１に供給する空燃比が理論空燃比に対して大きく外れることは無くなり、ドライバビリティおよび排ガス悪化を防止することができる。
【０２８２】
また、内燃機関１０１に供給する空燃比を調整する際、上流側Ｏ２センサ１１０の出力値Ｖ１が理論空燃比相当電圧ＶＲ３以上となるタイミングにて制御定数の増大量を小さくし、上流側Ｏ２センサ１１０の出力値Ｖ１が理論空燃比相当電圧ＶＲ３以下となるタイミングにて制御定数の減少量を小さくすることで、内燃機関１０１に供給する空燃比がリッチまたはリーンに変わったタイミングで制御定数を切り替えることができる。これにより、空燃比の振動を確実にリッチ状態とリーン状態の間で実施することが可能となり、加減速等でＡ／Ｆ制御幅が大きくなる傾向となった場合や、劣化触媒時の酸素吸蔵量低下時に排ガス悪化を抑える効果が得られる。
【０２８３】
また、内燃機関１０１に供給する空燃比を調整する際、上流側Ｏ２センサ１１０の出力値Ｖ１が所定電圧ＶＲまたはＶＬに到達した期間を計測し、燃料補正係数ＦＡＦのＡ／Ｆ制御幅が大きくなりすぎた場合に、その期間が長くなることを利用して空燃比の振動処理の実行を中止させることで、触媒劣化の診断時における正常触媒を劣化触媒と誤検出する可能性を低減できる。
【０２８４】
次に、図２８および図２９のタイミングチャートを参照しながら、前記実施の形態１に係る内燃機関の空燃比制御装置の効果について更に説明する。図２８は従来の内燃機関の空燃比制御装置（例えば特許文献４）の劣化触媒時の挙動であり、図２９は実施の形態１に係る内燃機関の空燃比制御装置の劣化触媒時の挙動を示している。
【０２８５】
図２８および図２９内の最上段の上流側Ａ／Ｆにおいて、実線波形は実空燃比の変動を示し、点線波形は平均空燃比の変動を示している。図２８における実空燃比の振動幅は、図２９の場合と比べ、理論空燃比から大きく外れている状態を示す。平均空燃比を用いることでＡ／Ｆ振動幅を抑えることが期待できる制御であっても、軽微劣化触媒への適応のためには平均空燃比を変動させる必要があり、そのため、理論空燃比から大きく外れることを抑えることができない。従って、下流側Ｏ２センサの出力値Ｖ２の挙動に見られるように、実空燃比の変動幅が大きいことから排ガス変動が発生し、排ガスが悪化する。また、エンジン回転の挙動に見られるように、実空燃比幅の変動が大きいことから回転変動が発生し、ドライバビリティが悪化する。実施の形態１では平均空燃比を用いた場合を用いて説明したが、平均空燃比を用いる場合よりＡ／Ｆ変動幅が大きくなると考えられる平均空燃比を用いない場合においても、同様の問題が発生するため、前述と同様の作用効果を奏する。
【０２８６】
一方、実施の形態１のように、上流側Ａ／Ｆの空燃比振動に使用する燃料補正係数ＦＡＦを上流側Ｏ２センサ１１０の電圧に応じて増加量あるいは減少量を小さくすることで、理論空燃比から大きく外れることは無くなる。そのため、下流側Ｏ２センサ１１１の出力値Ｖ２の挙動に見られるように、実空燃比の変動幅が小さくなることから排ガス変動を抑
えられ、排ガスの悪化を抑制できる。また、エンジン回転の挙動に見られるように、実空燃比の変動幅が小さくなることから回転変動を抑えられ、ドライバビリティの悪化を抑制できる。
【０２８７】
以上、この発明の実施の形態について詳説したが、この発明は、その発明の範囲内において、実施の形態を適宜、変形、省略することが可能である。例えば、実施の形態１では、下流側Ｏ２センサ１１１としてλ型センサを用いたが、下流側Ｏ２センサ１１１は、上流側に位置する触媒１０９の浄化状態を検出可能なセンサであれば他のセンサでもよく、リニアＯ２センサ、ＮＯｘセンサ、ＨＣセンサ、ＣＯセンサなどを用いても、触媒１０９の浄化状態を制御することができるので、前述と同様の作用効果を奏する。
【符号の説明】
【０２８８】
１０１  内燃機関、１０２  エアクリーナ、１０３  スロットルバルブ、１０４  サージタンク、１０５  吸気管、１０６  エアフローセンサ、１０７  インジェクタ、１０８  排気管（排気系）、１０９  三元触媒、１１０  上流側Ｏ２センサ、１１１  下流側Ｏ２センサ、１１２  内燃機関制御ユニット（ＥＣＵ）、１１３  中央処理装置（ＣＰＵ）、１１４  リードオンリメモリ（ＲＯＭ）、１１５  ランダムアクセスメモリ（ＲＡＭ）、１１６  入出力インタフェース（Ｉ／Ｏ）、１１７  スロットルセンサ、１１８  アイドルスイッチ、１１９  水温センサ、１２０  クランク角センサ、１２１  カム角センサ、１２２  駆動回路、１２３  警告ランプ、１２４  バックアップＲＡＭ、２０１  第１の空燃比フィードバック制御手段、２０２  第２の空燃比フィードバック制御手段、２０３  平均空燃比振動手段、２０４  最大酸素吸蔵量演算手段、２０５  触媒劣化振動手段、２０６、２０７  制御ゲイン変更手段、２０８  制御期間計測手段、Ｖ１  上流側Ｏ２センサの出力値、Ｖ２  下流側Ｏ２センサの出力値、ＷＴ  冷却水温、ＣＡ  クランク角信号、ＤＬ  アイドル信号、θ    スロットル開度、Ｑａ  吸入空気量。
【図１】
2015206273.tif 000003
【図２】
2015206273.tif 000004
【図３Ａ】
2015206273.tif 000005
【図３Ｂ】
2015206273.tif 000006
【図４】
2015206273.tif 000007
【図５】
2015206273.tif 000008
【図６Ａ】
2015206273.tif 000009
【図６Ｂ】
2015206273.tif 000010
【図７】
2015206273.tif 000011
【図８】
2015206273.tif 000012
【図９】
2015206273.tif 000013
【図１０】
2015206273.tif 000014
【図１１】
2015206273.tif 000015
【図１２】
2015206273.tif 000016
【図１３】
2015206273.tif 000017
【図１４】
2015206273.tif 000018
【図１５】
2015206273.tif 000019
【図２０】
2015206273.tif 000020
【図２２】
2015206273.tif 000021
【図２３】
2015206273.tif 000022
【図２４Ａ】
2015206273.tif 000023
【図２４Ｂ】
2015206273.tif 000024
【図２５】
2015206273.tif 000025
【図２６】
2015206273.tif 000026
【図２７】
2015206273.tif 000027
【図２８】
2015206273.tif 000028
【図２９】
2015206273.tif 000029
【図３０】
2015206273.tif 000030
【図３１】
2015206273.tif 000031
【図３２】
2015206273.tif 000032
【図１６】
2015206273.tif 000033
【図１７】
2015206273.tif 000034
【図１８】
2015206273.tif 000035
【図１９】
2015206273.tif 000036
【図２１】
2015206273.tif 000037
【手続補正書】
【提出日】平成27年6月3日(2015.6.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
内燃機関の排気系に設置されて前記内燃機関からの排ガスを浄化する触媒の上流側に設けられ、上流側排ガス中の空燃比を検出する空燃比検出手段と、
前記内燃機関の運転条件を検出する運転状態検出手段と、
前記空燃比検出手段の出力値および前記運転状態検出手段の所定のフィードバック制御定数に応じて前記内燃機関に供給する空燃比を調整して、前記空燃比を周期的にリッチ方向およびリーン方向に振動させる空燃比フィードバック制御手段と、
前記触媒の劣化の有無を診断する触媒劣化診断手段と、
前記触媒の酸素吸蔵量に基づいて、周期的に振動する空燃比を平均化した平均空燃比がリッチ方向およびリーン方向に振動するように、前記空燃比フィードバック制御手段で用いる制御定数を操作する平均空燃比振動手段と、
を備えた内燃機関の空燃比制御装置であって、
前記空燃比フィードバック制御手段は、
前記空燃比検出手段の出力値が所定の電圧以上となるタイミングで前記フィードバック制御定数の増大量を小さくし、前記空燃比検出手段の出力値が所定の電圧以下となるタイミングで前記フィードバック制御定数の減少量を小さくし、
前記平均空燃比振動手段は、前記触媒劣化診断手段による前記触媒の劣化診断時と劣化診断時以外とで、前記触媒の酸素吸蔵量の振動幅が変化するように、前記平均空燃比の振動幅または振動周期を変更することを特徴とする内燃機関の空燃比制御装置。
【請求項２】
前記所定の電圧は、前記空燃比検出手段の理論空燃比に相当する電圧に設定することを特徴とする請求項１に記載の内燃機関の空燃比制御装置。
【請求項３】
前記空燃比の振動が前記リーン方向から前記リッチ方向に移行した後、前記フィードバック制御定数の増大量を小さくするまでの制御期間、あるいは、前記空燃比の振動が前記リッチ方向から前記リーン方向に移行した後、前記フィードバック制御定数の減少量を小さくするまでの制御期間を計測する制御期間計測手段を備え、
前記制御期間が所定期間より長い場合において、前記空燃比フィードバック制御手段による空燃比の振動処理の実行を中止することを特徴とする請求項１または２に記載の内燃機関の空燃比制御装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
この発明による内燃機関の空燃比制御装置は、内燃機関の排気系に設置されて前記内燃機関からの排ガスを浄化する触媒の上流側に設けられ、上流側排ガス中の空燃比を検出する空燃比検出手段と、前記内燃機関の運転条件を検出する運転状態検出手段と、前記空燃比検出手段の出力値および前記運転状態検出手段の所定のフィードバック制御定数に応じて前記内燃機関に供給する空燃比を調整して、前記空燃比を周期的にリッチ方向およびリーン方向に振動させる空燃比フィードバック制御手段と、前記触媒の劣化の有無を診断する触媒劣化診断手段と、前記触媒の酸素吸蔵量に基づいて、周期的に振動する空燃比を平均化した平均空燃比がリッチ方向およびリーン方向に振動するように、前記空燃比フィードバック制御手段で用いる制御定数を操作する平均空燃比振動手段と、を備えた内燃機関の空燃比制御装置であって、前記空燃比フィードバック制御手段は、前記空燃比検出手段の出力値が所定の電圧以上となるタイミングで前記フィードバック制御定数の増大量を小さくし、前記空燃比検出手段の出力値が所定の電圧以下となるタイミングで前記フィードバック制御定数の減少量を小さくし、前記平均空燃比振動手段は、前記触媒劣化診断手段による前記触媒の劣化診断時と劣化診断時以外とで、前記触媒の酸素吸蔵量の振動幅が変化するように、前記平均空燃比の振動幅または振動周期を変更するものである。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００３３
【補正方法】変更
【補正の内容】
【００３３】
図２において、ＥＣＵ１１２は、第１の空燃比フィードバック制御手段２０１と、第２の空燃比フィードバック制御手段２０２と、平均空燃比振動手段２０３と、最大酸素吸蔵量演算手段２０４と、触媒劣化診断手段２０５とを備えており、第１の空燃比フィードバック制御手段２０１には、上流側Ｏ２センサ１１０の出力値Ｖ１が入力されている。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００３４
【補正方法】変更
【補正の内容】
【００３４】
第２の空燃比フィードバック制御手段２０２、平均空燃比振動手段２０３および触媒劣化診断手段２０５には、下流側Ｏ２センサ１１１の出力値Ｖ２が入力され、最大酸素吸蔵量演算手段２０４には、他の各種センサからの検出情報が入力されている。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００４８
【補正方法】変更
【補正の内容】
【００４８】
触媒劣化診断手段２０５は、最大酸素吸蔵量演算手段２０４により演算された最大酸素吸蔵量ＯＳＣｍａｘに基づいて、触媒１０９の劣化の有無を診断する。また、触媒劣化診断手段２０５は、平均空燃比振動手段２０３による平均空燃比の振動処理の実行中に、少なくとも下流側Ｏ２センサ１１１の出力値Ｖ２により触媒１０９の劣化を診断する。触媒劣化診断手段２０５による診断結果は、警告ランプ１２３などの警報駆動手段に入力される。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】０１０１
【補正方法】変更
【補正の内容】
【０１０１】
式（２）において、内燃機関１０１への空気量Ｑａｃｙｌは、エアフローセンサ１０６から検出される吸入空気量Ｑａに基づいて演算される。また、エアフローセンサ１０６を用いない場合には、吸気管１０５内のスロットル弁下流側に設けられた圧力センサ（図示せず）の出力信号に基づいて吸入空気量Ｑａを演算してもよく、エンジン回転速度Ｎｅまたはスロットル弁のスロットル開度などに基づいて演算してもよい。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】０２７１
【補正方法】変更
【補正の内容】
【０２７１】
また、積分ゲインＫｉ２および比例ゲインＫｐ２は、平均空燃比振動手段２０３による平均空燃比の振動処理の有無、または平均空燃比の振動幅に応じて、設定変更されてもよい。この場合、平均空燃比振動手段２０３により下流側Ｏ２センサ１１１の出力値Ｖ２の変動が増加すると、第２の空燃比フィードバック制御手段２０２の制御により、出力値Ｖ２の変動を抑制するように平均空燃比が操作されるので、平均空燃比振動手段２０３と第２の空燃比フィードバック制御手段２０２とが相互に影響する。つまり、積分ゲインＫｉ２および比例ゲインＫｐ２は、平均空燃比の振動処理中に変更され、相互影響を考慮して設定される。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】０２８８
【補正方法】変更
【補正の内容】
【０２８８】
１０１  内燃機関、１０２  エアクリーナ、１０３  スロットルバルブ、１０４  サージタンク、１０５  吸気管、１０６  エアフローセンサ、１０７  インジェクタ、１０８  排気管（排気系）、１０９  三元触媒、１１０  上流側Ｏ２センサ、１１１  下流側Ｏ２センサ、１１２  内燃機関制御ユニット（ＥＣＵ）、１１３  中央処理装置（ＣＰＵ）、１１４  リードオンリメモリ（ＲＯＭ）、１１５  ランダムアクセスメモリ（ＲＡＭ）、１１６  入出力インタフェース（Ｉ／Ｏ）、１１７  スロットルセンサ、１１８  アイドルスイッチ、１１９  水温センサ、１２０  クランク角センサ、１２１  カム角センサ、１２２  駆動回路、１２３  警告ランプ、１２４  バックアップＲＡＭ、２０１  第１の空燃比フィードバック制御手段、２０２  第２の空燃比フィードバック制御手段、２０３  平均空燃比振動手段、２０４  最大酸素吸蔵量演算手段、２０５  触媒劣化診断手段、２０６、２０７  制御ゲイン変更手段、２０８  制御期間計測手段、Ｖ１  上流側Ｏ２センサの出力値、Ｖ２  下流側Ｏ２センサの出力値、ＷＴ  冷却水温、ＣＡ  クランク角信号、ＤＬ  アイドル信号、θ    スロットル開度、Ｑａ  吸入空気量。