(57)【要約】【課題】触媒の酸素ストレージ作用の遅れに適した安定性および応答性のよい制御挙動を実現し、触媒の浄化状態を常に良好に保つ内燃機関の空燃比制御装置を得る。【解決手段】上流側Ｏ２センサ１３と、下流側Ｏ２センサ１５と、上流側排出ガス中の空燃比と上流側目標空燃比ＡＦｏｂｊとが一致するように燃料供給量を調節する第１の空燃比フィードバック制御手段１３０と、下流側空燃比センサ１５の検出空燃比と下流側目標空燃比とが一致するように、下流側空燃比センサ１５の検出空燃比と下流側目標空燃比との空燃比偏差に応じて上流側目標空燃比ＡＦｏｂｊを操作する第２の空燃比フィードバック制御手段１５０とを備えている。第２の空燃比フィードバック制御手段１５０は、排出ガス流量が増加するほど積分演算の積分ゲインを大きく設定するとともに、比例演算の比例ゲインを、排出ガスの流量の変化に対して変化しないように設定する。【選択図】図１
2008298044.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関の排気系に設置されて前記内燃機関からの排出ガスを浄化する触媒と、
前記触媒の上流側に設けられて上流側排出ガス中の空燃比を検出する上流側空燃比センサと、
前記触媒の下流側に設けられて下流側排出ガス中の空燃比を検出する下流側空燃比センサと、
前記上流側排出ガス中の空燃比と上流側目標空燃比とが一致するように、前記上流側空燃比センサの検出空燃比および前記上流側目標空燃比に応じて前記内燃機関への燃料の供給量を調節する第１の空燃比フィードバック制御手段と、
前記下流側空燃比センサの検出空燃比と下流側目標空燃比とが一致するように、前記下流側空燃比センサの検出空燃比と前記下流側目標空燃比との空燃比偏差に応じて、少なくとも比例演算および積分演算を用いて前記上流側目標空燃比を操作する第２の空燃比フィードバック制御手段とを備え、
前記第２の空燃比フィードバック制御手段は、
前記排出ガスの流量が増加するほど、前記空燃比偏差に対する前記積分演算の変化速度が速くなるように、前記積分演算の積分ゲインを大きく設定するか、または前記積分演算の更新周期を小さく設定するとともに、
前記比例演算の比例ゲインを、前記排出ガスの流量の変化に対して変化しないように設定することを特徴とする内燃機関の空燃比制御装置。
【請求項２】
内燃機関の排気系に設置されて前記内燃機関からの排出ガスを浄化する触媒と、
前記触媒の上流側に設けられて上流側排出ガス中の空燃比を検出する上流側空燃比センサと、
前記触媒の下流側に設けられて下流側排出ガス中の空燃比を検出する下流側空燃比センサと、
前記上流側排出ガス中の空燃比をリッチ方向とリーン方向に周期的に振動させるとともに、振動させている空燃比の平均値と上流側目標平均空燃比とが一致するように、前記上流側空燃比センサの検出空燃比および前記上流側目標平均空燃比に応じて前記内燃機関への燃料の供給量を調節する第１の空燃比フィードバック制御手段と、
前記下流側空燃比センサの検出空燃比と下流側目標空燃比とが一致するように、前記下流側空燃比センサの検出空燃比と前記下流側目標空燃比との空燃比偏差に応じて、少なくとも比例演算および積分演算を用いて前記上流側目標空燃比を操作する第２の空燃比フィードバック制御手段とを備え、
前記第２の空燃比フィードバック制御手段は、
前記排出ガスの流量が増加するほど、前記空燃比偏差に対する前記積分演算の変化速度が速くなるように、前記積分演算の積分ゲインを大きく設定するか、または前記積分演算の更新周期を小さく設定するとともに、
前記比例演算の比例ゲインを、前記排出ガスの流量の変化に対して変化しないように設定することを特徴とする内燃機関の空燃比制御装置。
【請求項３】
前記第１の空燃比フィードバック制御手段は、前記上流側目標平均空燃比に応じて前記第１の空燃比フィードバック制御手段の制御定数を設定することを特徴とする請求項２に記載の内燃機関の空燃比制御装置。
【請求項４】
前記上流側目標平均空燃比に応じて設定される前記制御定数は、遅延時間、スキップ量、積分ゲインおよび比較電圧のうちの、いずれか２つ以上のパラメータに対する値を含むことを特徴とする請求項３に記載の内燃機関の空燃比制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、内燃機関の空燃比制御装置に関するものである。
【背景技術】
【０００２】
一般に、内燃機関の排気通路には、排出ガス中のＨＣ、ＣＯ、ＮＯｘを同時に浄化するための３元触媒を収容した触媒コンバータ（以下、単に「触媒」という）が設置されている。この種の触媒は、理論空燃比付近において、ＨＣ、ＣＯ、ＮＯｘのいずれについても浄化率が高くなるので、通常、触媒の上流側にＯ２センサを設け、触媒上流側の空燃比が理論空燃比付近となるように空燃比を制御している。
【０００３】
また、触媒上流側に設けられる上流側Ｏ２センサは、できるだけ燃焼室に近い排気系の個所（触媒よりも上流側に位置する排気マニホールドの集合部分）に設けられているが、高い排気温度にさらされ、かつ種々の有毒物の被毒を受けるので、Ｏ２センサの出力特性が大きく変動する。
【０００４】
そこで、上流側Ｏ２センサの特性変動を補償するために、触媒下流側に下流側Ｏ２センサを設け、上流側Ｏ２センサによる第１の空燃比フィードバック制御に加えて、下流側Ｏ２センサによる第２の空燃比フィードバック制御を行うダブルＯ２センサシステムが提案されている（たとえば、特許文献１、特許文献２参照）。
【０００５】
下流側Ｏ２センサは、上流側Ｏ２センサに比較して応答速度は低いが、以下のような長所がある。すなわち、触媒下流側では、排気温度が低く熱の影響が少ないうえ、種々の有毒物は触媒によってトラップされており被毒が少ないので、Ｏ２センサの出力特性の変動が小さい。さらに、触媒下流側では、排出ガスが十分に混合されているので、上流に位置する触媒の浄化状態を安定的に検出できる。
【０００６】
このように、ダブルＯ２センサシステムにおいては、上流側空燃比を補正して下流側Ｏ２センサの出力値を目標値に維持することにより、上流側Ｏ２センサの出力特性の変動を補償するとともに、触媒の浄化状態を良好に維持している。
【０００７】
また、触媒には、上流側空燃比の理論空燃比からの一時的な変動を吸収するために、酸素ストレージ能力が付加されている。これにより、触媒は、空燃比が理論空燃比よりもリーン側の場合には、排出ガス中の酸素を取り込んで蓄積するとともに、空燃比が理論空燃比よりもリッチ側の場合は、触媒中に蓄積されている酸素を放出する。
【０００８】
このように、触媒は、なまし作用（または、平均化の遅れ作用）を有することから、触媒上流側の空燃比の変動は、触媒内で遅れ処理されて、触媒下流側の空燃比となる。また、酸素ストレージ量の上限値は、触媒の製造時に添付される酸素ストレージ能力を持つ物質の量によって決定する。
【０００９】
したがって、酸素ストレージ量がその上限値または下限値（＝０）に飽和すると、もはや上流側空燃比の変動を吸収する遅れ作用はなくなり、触媒内の空燃比は、理論空燃比から外れて、触媒の浄化能力は低下する。このとき、下流側空燃比は、理論空燃比から大きく外れるので、酸素ストレージ量の上限値または下限値（＝０）への飽和を検出することができる。
【００１０】
触媒の酸素ストレージ量が上限値と限値との間になり、触媒の遅れ作用が生じているときに、排出ガス中のＨＣ、ＣＯ、ＮＯｘのいずれもの浄化率が高くなるが、触媒の酸素ストレージ量が上限値と下限値との中間程度にある場合に浄化率が最も高くなる。また、触媒の酸素ストレージ量は、下流側空燃比の理論空燃比付近での微小変化により検出することができる。そのため、下流側Ｏ２センサの出力値を目標値に制御することで、酸素ストレージ量を適切な量に制御し、触媒の浄化率を高く維持することができる。
このように、排出ガスの浄化性能を良好に保つためには、下流側Ｏ２センサ（制御対象の触媒に対して遅れ作用を有する）を用いたフィードバック制御の安定性が重要である。
【００１１】
また、比例演算、積分演算および微分演算を用いた、いわゆるＰＩＤフィードバック制御において、比例ゲインＫｐ、積分ゲインＫｉ、微分ゲインＫｄの大小に応じて、フィードバック制御の安定性および応答性が変化する。すなわち、各ゲインを小さく設定すると、安定性は向上するが、応答性が悪化する。逆に、各ゲインを大きく設定すると、安定性は悪化するが、応答性が向上する。
ＰＩＤフィードバック制御の制御量は、実値と目標値との偏差ｅｒｒ（ｔ）と各ゲインＫｐ、Ｋｉ、Ｋｄとを用いて、以下の式（１）のように表される。
【００１２】
制御量＝Ｋｐ×ｅｒｒ（ｔ）＋Ｋｉ×∫０ｔｅｒｒ（ｔ）ｄｔ＋Ｋｄ×ｄｅｒｒ（ｔ）／ｄｔ  ・・・（１）
【００１３】
触媒の酸素ストレージ作用のように、上限量または下限量の飽和状態を有し、飽和状態で応答遅れがなくなるような制御対象では、比例ゲインＫｐの設定値を大きくしていくと制御系の安定性が低下していき、最終的に持続振動が継続する状態に到達する。なお、比例ゲインＫｐをさらに大きく設定しても、持続振動の状態で安定化するので、制御系の安定性が変化することはない。
【００１４】
図１９は一般的な下流側Ｏ２センサ出力値の時間変化を示すタイミングチャートであり、異なる比例ゲインＫｐごとの波形をそれぞれ示している。
図１９に示すように、比例ゲインＫｐの設定値を徐々に大きくしたとき（２点鎖線矢印参照）の安定限界（持続振動を開始した時点の限界値）の比例ゲインＫｐｃと、持続振動周期Ｔｃとを基準として、良好な制御性能となる比例ゲインＫｐ、積分ゲインＫｉ、微分ゲインＫｄを設定する。このゲイン設定方法は、限界感度法と称され、以下の式（２）のような設定則となる。
【００１５】
Ｋｐ＝Ａ×Ｋｐｃ
Ｋｉ＝Ｂ×Ｋｐｃ／Ｔｃ
Ｋｄ＝Ｃ×Ｋｐｃ×Ｔｃ  ・・・（２）
【００１６】
式（２）において、各定数Ａ、Ｂ、Ｃは、制御対象の遅れの種類、たとえば無駄時間遅れ、１次遅れ、２次遅れなど、または、過渡応答の設計（たとえば、オーバーシュート量の大小）などに応じて調整される値である。
【００１７】
下流側Ｏ２センサを用いたフィードバック制御において、触媒の酸素ストレージ作用の遅れは、その他の遅れに比べて非常に大きく支配的であり、安定限界も酸素ストレージ作用に依存する。なぜなら、触媒の酸素ストレージ作用の遅れは、Ｏ２センサの遅れ、排出ガスの移動遅れなど、その他の遅れによる空燃比変動を吸収できるように、十分大きく設計されているからである。
【００１８】
また、触媒の酸素ストレージ量の変化速度は、触媒上流側空燃比の理論空燃比からの変化量、および排出ガス流量ｑａに比例する。
図２０〜図２２は、下流側Ｏ２センサ出力値、上流側目標空燃比および触媒の酸素ストレージ量の時間変化を関連付けて示すタイミングチャートであり、図２０は排出ガス流量ｑａが小流量の場合、図２１は排出ガス流量ｑａが中流量の場合、図２２は排出ガス流量ｑａが大流量の場合を、それぞれ示している。
【００１９】
また、図２０〜図２２においては、排出ガス流量ｑａが小→中→大と変化したときの安定限界（持続振動周期Ｔｃ）の挙動を示している。触媒上流側空燃比の変化量は、比例ゲインの大きさに応じて決定するので、安定限界の比例ゲインＫｐｃは、排出ガス流量ｑａによって変化しない。一方、酸素ストレージ量の変化速度は排出ガス流量ｑａに比例するので、持続振動周期Ｔｃは、排出ガス流量ｑａが大きくなるにつれて短くなり、以下の式（３）が成り立つ。
【００２０】
Ｋｐｃ＝一定
Ｔｃ∝１／ｑａ  ・・・（３）
【００２１】
したがって、前述の式（２）による限界感度法の設定則にしたがうと、最適なＰＩＤゲインは、以下の式（４）のようになる。
【００２２】
Ｋｐ＝一定値
Ｋｉ∝ｑａ
Ｋｄ∝１／ｑａ  ・・・（４）
【００２３】
また、従来から、下流側Ｏ２センサを用いたフィードバック制御の制御ゲインを排出ガス流量により変化させる方法が知られている（たとえば、特許文献３、特許文献４、特許文献５参照）。
【００２４】
特許文献３および特許文献４では、積分演算の積分ゲイン（更新量）を排出ガス流量に比例するように設定しているので、触媒の酸素ストレージ作用の遅れに適合した安定性の高い制御挙動を実現することができる。
また、特許文献５では、排出ガス流量に応じて比例ゲインおよび積分ゲインを設定するように設計されている。
【００２５】
【特許文献１】特開昭６３−１９５３５１号公報
【特許文献２】特開平６−４２３８７号公報
【特許文献３】特開昭６３−２０８６３９号公報
【特許文献４】特開平１０−２６０４３号公報
【特許文献５】特開２００２−２２７６８９号公報
【発明の開示】
【発明が解決しようとする課題】
【００２６】
従来の内燃機関の空燃比制御装置では、たとえば特許文献３および特許文献４の場合には、積分演算のみでフィードバック制御を構成しているので、積分演算および比例演算を用いた場合に比べてフィードバック制御の応答性が悪く、外乱などにより悪化した触媒の浄化状態を目標値に速やかに収束させることが困難になるという課題があった。
また、積分ゲインを適切に設定したとしても、比例ゲインＫｐの設定値によっては制御系の安定性が悪化するので、十分な解決策にはならないという課題があった。
【００２７】
また、特許文献５の場合には、比例ゲインおよび積分ゲインを、排出ガス流量に反比例するように設定しているので、触媒の酸素ストレージ量の挙動に適合した制御挙動を実現することが困難なうえ、制御量のガード値を排出ガス流量に応じて比例して変化させたり、中間目標値を設けてハンチングを防止したり、より複雑な構成が必要になるという課題があった。
このように、従来の内燃機関の空燃比制御装置では、積分演算、比例演算、微分演算を用いたＰＩＤフィードバック制御において、触媒の酸素ストレージ作用の遅れに適した安定性および制御性の良い制御ゲインを設定することができないので、制御性良く触媒の浄化状態を良好に保つことができないという課題があった。
【００２８】
この発明は、上記のような課題を解決するためになされたものであり、下流側Ｏ２センサを用いたフィードバック制御の積分演算の積分ゲインを排出ガス流量に比例するように設定するとともに、比例演算の比例ゲインを排出ガス流量によって変化させないように設定することにより、触媒の酸素ストレージ作用の遅れに適した安定性および応答性の良い制御挙動を実現するとともに、触媒の浄化状態を常に良好に保つことのできる内燃機関の空燃比制御装置を得ることを目的とする。
【課題を解決するための手段】
【００２９】
この発明による内燃機関の空燃比制御装置は、内燃機関の排気系に設置されて内燃機関からの排出ガスを浄化する触媒と、触媒の上流側に設けられて上流側排出ガス中の空燃比を検出する上流側空燃比センサと、触媒の下流側に設けられて下流側排出ガス中の空燃比を検出する下流側空燃比センサと、上流側排出ガス中の空燃比と上流側目標空燃比とが一致するように、上流側空燃比センサの検出空燃比および上流側目標空燃比に応じて内燃機関への燃料の供給量を調節する第１の空燃比フィードバック制御手段と、下流側空燃比センサの検出空燃比と下流側目標空燃比とが一致するように、下流側空燃比センサの検出空燃比と下流側目標空燃比との空燃比偏差に応じて、少なくとも比例演算および積分演算を用いて上流側目標空燃比を操作する第２の空燃比フィードバック制御手段とを備え、第２の空燃比フィードバック制御手段は、排出ガスの流量が増加するほど、空燃比偏差に対する積分演算の変化速度が速くなるように、積分演算の積分ゲインを大きく設定するか、または積分演算の更新周期を小さく設定するとともに、比例演算の比例ゲインを、排出ガスの流量の変化に対して変化しないように設定するものである。
【発明の効果】
【００３０】
この発明によれば、触媒の酸素ストレージ作用の遅れに適した安定性および応答性のよい制御挙動を実現するとともに、触媒の浄化状態を常に良好に保つことができる。
【発明を実施するための最良の形態】
【００３１】
実施の形態１．
図１はこの発明の実施の形態１に係る内燃機関の空燃比制御装置の要部を示す機能ブロック図である。
図１において、内燃機関の空燃比制御装置は、内燃機関（エンジン）への吸入空気量Ｑａを検出するエアフローセンサ３と、触媒上流側の上流側Ｏ２センサ１３と、触媒下流側の下流側Ｏ２センサ１５と、第１の空燃比フィードバック制御手段１３０と、第２の空燃比フィードバック制御手段１５０とを備えている。
【００３２】
第１および第２の空燃比フィードバック制御手段１３０、１５０は、制御回路１０（図２とともに後述する）により構成されており、第１の空燃比フィードバック制御手段１３０には上流側Ｏ２センサ１３の出力値Ｖ１が入力され、第２の空燃比フィードバック制御手段１５０には下流側Ｏ２センサ１５の出力値Ｖ２が入力される。
【００３３】
第２の空燃比フィードバック制御手段１５０は、下流側Ｏ２センサ１５の出力値（電圧信号）Ｖ２と、エアフローセンサ３からの吸入空気量Ｑａとに基づいて、上流側目標空燃比ＡＦｏｂｊを算出する。
【００３４】
このとき、第２の空燃比フィードバック制御手段１５０は、下流側Ｏ２センサ１５の出力値Ｖ２が第２の目標値（以下、単に「目標値」という）ＶＲ２と一致するように、比例演算および積分演算により上流側目標空燃比ＡＦｏｂｊを演算する。なお、比例演算の比例ゲインは、排出ガス流量ｑａ（吸入空気量Ｑａと等しい）によって変化しないように設定され、積分演算の積分ゲインは、排出ガス流量ｑａに比例するように設定されている。
【００３５】
第１の空燃比フィードバック制御手段１３０は、上流側Ｏ２センサ１３の出力値（電圧信号）Ｖ１と、第２の空燃比フィードバック制御手段１５０からの上流側目標空燃比ＡＦｏｂｊとに基づいて、空燃比補正係数ＦＡＦを生成し、燃料噴射制御手段（後述する）に入力する。
【００３６】
図２はこの発明の実施の形態１に係る内燃機関の空燃比制御装置を示す全体概略図であり、前述（図１参照）と同様のものについては、前述と同一符号が付されている。
図２において、内燃機関を構成するエンジン（機関本体）１の吸気通路２には、エアフローセンサ３が設けられている。エアフローセンサ３は、機体本体１への吸入空気量Ｑａを直接計測するためのホットワイヤを内蔵しており、吸入空気量Ｑａに比例した出力信号（アナログ電圧）を発生する。エアフローセンサ３の出力信号は、制御回路１０（マイクロコンピュータからなる）内のマルチプレクサ内蔵型のＡ／Ｄ変換器１０１に供給される。
【００３７】
エンジン１には、複数気筒の点火制御に関連したディストリビュータ４が設けられており、ディストリビュータ４には、クランク角センサ５、６が配設されている。一方のクランク角センサ５は、たとえばクランク角に換算して７２０゜ごとに基準位置検出用パルス信号を発生し、他方のクランク角センサ６は、クランク角に換算して３０゜ごとに基準位置検出用パルス信号を発生する。クランク角センサ５、６の各パルス信号は、制御回路１０内の入出力インターフェイス１０２に供給され、クランク角センサ６の出力信号は、ＣＰＵ１０３の割込み端子に供給される。
【００３８】
エンジン１の吸気通路２には、各気筒に燃料供給系から加圧燃料を吸気ポートへ供給するための燃料噴射弁７が設けられている。また、エンジン１のシリンダブロックのウォータジャケット８には、冷却水温ＴＨＷを検出するための水温センサ９が設けられている。水温センサ９は、冷却水温ＴＨＷに応じた電気信号（アナログ電圧）を生成する。水温センサ９からの冷却水温ＴＨＷは、制御回路１０内のＡ／Ｄ変換器１０１に供給される。
【００３９】
エンジン１の排気マニホールド１１よりも下流側の排気系には、排出ガス中の３つの有害成分ＨＣ、ＣＯ、ＮＯｘを同時に浄化するための触媒（３元触媒を収容した触媒コンバータ）１２が設けられている。触媒１２の上流側に位置する排気マニホールド１１には、上流側Ｏ２センサ（上流側空燃比センサ）１３が設けられ、触媒１２の下流側の排気管１４には、下流側Ｏ２センサ（下流側空燃比センサ）１５が設けられている。
【００４０】
各Ｏ２センサ１３、１５は、排出ガス中の空燃比に応じた電気信号（電圧信号）を出力値Ｖ１、Ｖ２として生成する。各Ｏ２センサ１３、１５の出力値Ｖ１、Ｖ２は、空燃比に応じて異なる値を示し、制御回路１０内のＡ／Ｄ変換器１０１に入力される。
【００４１】
図３は一般的なリニア型Ｏ２センサの出力特性を示す説明図であり、図４は一般的なλ型Ｏ２センサの出力特性を示す説明図である。
上流側Ｏ２センサ１３には、空燃比変化に対しリニアな出力特性（図３参照）を有するリニア型Ｏ２センサが用いられ、下流側Ｏ２センサ１５には、理論空燃比付近で急激に出力が変化する特性（図４参照）を有するλ型Ｏ２センサが用いられる。
【００４２】
図２に戻り、制御回路１０は、Ａ／Ｄ変換器１０１、入出力インターフェイス１０２およびＣＰＵ１０３に加えて、ＲＯＭ１０４、ＲＡＭ１０５、バックアップＲＡＭ１０６、クロック発生回路１０７および駆動装置１０８、１０９、１１０などを備えている。制御回路１０内のＣＰＵ１０３、ＲＯＭ１０４、ＲＡＭ１０５は、第１および第２の空燃比フィードバック制御手段１３０、１５０（図１参照）を構成し、駆動装置１０８、１０９、１１０は、燃料噴射制御手段を構成している。
【００４３】
制御回路１０内の燃料噴射制御手段は、前述（図１参照）の第１の空燃比フィードバック制御手段１３０からの空燃比補正係数ＦＡＦ（上流側目標空燃比ＡＦｏｂｊに応じた値）に基づき、燃料噴射弁７の励磁駆動手段（図示せず）を制御することにより、エンジン１に供給する空燃比を目標値に調整する。
【００４４】
制御回路１０には、エンジン１の運転条件を示す各種センサ（エアフローセンサ３、クランク角センサ５、６、水温センサ９など）からの検出情報が入力されている。各種センサには、吸気通路２内のスロットル弁の下流側に設けられた圧力センサ（図示せず）なども含まれる。
【００４５】
制御回路１０において、燃料供給量Ｑｆｕｅｌ（後述する）が演算されると、駆動装置１０８、１０９、１１０により燃料噴射弁７が駆動され、燃料供給量Ｑｆｕｅｌに応じた量の燃料がエンジン１の燃焼室に送り込まれる。なお、ＣＰＵ１０３への割込み発生は、Ａ／Ｄ変換器１０１のＡ／Ｄ変換終了時、入出力インターフェイス１０２を介したクランク角センサ６のパルス信号受信時、クロック発生回路１０７からの割込信号受信時、などに行われる。
【００４６】
エアフローセンサ３からの吸入空気量Ｑａおよび水温センサ９からの冷却水温ＴＨＷは、Ａ／Ｄ変換ルーチン（Ａ／Ｄ変換器１０１により所定時間ごとに実行される）にしたがって取り込まれ、ＲＡＭ１０５に所定領域に格納される。つまり、ＲＡＭ１０５内の吸入空気量Ｑａおよび冷却水温ＴＨＷは、所定時間ごとに更新される。吸入空気量Ｑａは、触媒１２に流入する排出ガス流量ｑａと同じになる。また、エンジン回転速度Ｎｅは、クランク角センサ６の３０°ＣＡごとの割込みによって演算されて、ＲＡＭ１０５の所定領域に格納される。
【００４７】
次に、図１および図２に示したこの発明の実施の形態１による動作について説明する。まず、図５を参照しながら、第１の空燃比フィードバック制御手段１３０の動作について説明する。
図５は制御回路１０による第１の空燃比フィードバック制御ルーチンを示しており、上流側Ｏ２センサ１３の出力値Ｖ１に基づく空燃比補正係数ＦＡＦの演算処理を示している。図５の制御ルーチンは、所定時間（たとえば、５ｍｓ）ごとに実行される。
【００４８】
図５において、各判定処理からの分岐部の符号「Ｙ」、「Ｎ」はそれぞれ、判定処理の判定結果「Ｙｅｓ」、「Ｎｏ」を示している。
まず、制御回路１０内の第１の空燃比フィードバック制御手段１３０は、上流側Ｏ２センサ出力情報の処理を実行する（ステップ５０１）。すなわち、上流側Ｏ２センサ１３の出力値Ｖ１をＡ／Ｄ変換して取り込み、センサ出力値Ｖ１と空燃比との特性マップ（図３参照）を用いて、出力値Ｖ１を上流側の検出空燃比ＡＦ１に変換する。
【００４９】
続いて、第１の空燃比フィードバック制御手段１３０は、上流側Ｏ２センサ１３による空燃比の閉ループ条件が成立している（空燃比フィードバック領域）か否かを判定する（ステップ５０２）。
【００５０】
ステップ５０２の具体的な判定条件としては、たとえば、理論空燃比制御以外の空燃比制御条件の場合、上流側Ｏ２センサ１３の不活性状態時、または上流側Ｏ２センサ１３が故障している場合などがあげられ、これらの場合には、いずれも「閉ループ条件が不成立」と判定され、その他の場合には「閉ループ条件が成立」と判定される。
なお、理論空燃比制御以外の空燃比制御条件としては、たとえば、エンジン始動中、低水温時のリッチ化制御中、高負荷パワー増量のリッチ化制御中、燃費向上のためのリーン化制御中、始動後のリーン化制御中、燃料カット中などがあげられる。
【００５１】
ステップ５０２において、閉ループ条件が不成立（すなわち、Ｎｏ）と判定されれば、空燃比補正係数ＦＡＦを「１．０」に設定し（ステップ５１０）、第１の積分演算値ＡＦＩ１を「０．０」にリセットし（ステップ５１１）、図５の制御ルーチンを終了してリターンする。
なお、ステップ５１０においては、空燃比補正係数ＦＡＦを「１．０」に設定する代わりに、空燃比補正係数ＦＡＦの学習値（後述する）に設定してもよい。
【００５２】
一方、ステップ５０２において、閉ループ条件が成立（すなわち、Ｙｅｓ）と判定されれば、上流側Ｏ２センサ１３による検出空燃比ＡＦ１と、第２の空燃比フィードバック制御手段１５０により演算される上流側目標空燃比ＡＦｏｂｊとの空燃比偏差ΔＡＦ１を、以下の式（５）により演算する（ステップ５０３）。
【００５３】
ΔＡＦ１＝ＡＦ１−ＡＦｏｂｊ  ・・・（５）
【００５４】
以下、第１の空燃比フィードバック制御手段１３０は、ステップ５０４〜５０９において、空燃比偏差ΔＡＦ１に応じて比例演算（以下、「Ｐ」と表す）および積分演算（以下、「Ｉ」と表す）からなるＰＩ制御処理を実行し、空燃比偏差ΔＡＦ１をキャンセルするような制御出力を設定する。
【００５５】
たとえば、上流側Ｏ２センサ１３の検出空燃比ＡＦ１が、上流側目標空燃比ＡＦｏｂｊよりも小さい（リッチ側にある）場合には、燃料補正係数ＦＡＦは、燃料供給量Ｑｆｕｅｌを減少させる方向に設定され、上流側目標空燃比ＡＦｏｂｊに復帰させるように作用する。燃料補正係数ＦＡＦは、一般的なＰＩ制御器により、以下の式（６）のように演算される。
【００５６】
ＦＡＦ＝１．０＋Σ（Ｋｉ１×ΔＡＦ１）＋Ｋｐ１×ΔＡＦ１  ・・・（６）
【００５７】
ただし、式（６）において、Ｋｉ１は第１の積分ゲイン、Ｋｐ１は第１の比例ゲインであり、各ゲインＫｉ１、Ｋｐ１は、フィードバック制御性が良好になるように運転条件ごとに設定されている。
【００５８】
次に、空燃比偏差ΔＡＦ１に応じたＰＩ演算処理（ステップ５０４〜５０９）について、具体的に説明する。
第１の空燃比フィードバック制御手段１３０は、まず、積分演算処理を実行し（ステップ５０４）、以下の式（７）により、第１の積分演算値ＡＦＩ１を求める。
【００５９】
ＡＦＩ１＝ＡＦＩ１＋Ｋｉ１×ΔＡＦ１  ・・・（７）
【００６０】
式（７）で示す第１の積分演算値ＡＦＩ１は、式（６）内のΣ（Ｋｉ１×ΔＡＦ１）に相当する。第１の積分ゲインＫｉ１は、運転条件ごとに設定されており、運転条件により変化する制御対象の応答性に適合させて、フィードバック制御性が良好になるように設定されている。
続いて、第１の積分演算値ＡＦＩ１に対して、以下の式（８）のように、上下限制限処理を行う（ステップ５０５）。
【００６１】
ＡＦＩ１ｍｉｎ＜ＡＦＩ１＜ＡＦＩ１ｍａｘ  ・・・（８）
【００６２】
式（８）のように上下限制限処理を行うことにより、過大な燃料操作を防止することができる。
次に、第１の空燃比フィードバック制御手段１３０は、比例演算処理を実行し（ステップ５０６）、以下の式（９）により、第１の比例演算値ＡＦＰ１を求める。
【００６３】
ＡＦＰ１＝Ｋｐ１×ΔＡＦ１  ・・・（９）
【００６４】
式（９）において、第１の比例ゲインＫｐ１は、運転条件ごとに設定されており、運転条件により変化する制御対象の応答性に適合させて、フィードバック制御性が良好になるように設定されている。
続いて、第１の比例演算値ＡＦＰ１に対して、以下の式（１０）のように、上下限制限処理を行う（ステップ５０７）。
【００６５】
ＡＦＰ１ｍｉｎ＜ＡＦＰ１＜ＡＦＰ１ｍａｘ  ・・・（１０）
【００６６】
式（１０）のように上下限制限処理を行うことにより、過大な燃料操作を防止することができる。
次に、ステップ５０４〜５０７で求めた第１のＰＩ演算値を合計し、以下の式（１１）のように、空燃比補正係数ＦＡＦを演算する（ステップ５０８）。
【００６７】
ＦＡＦ＝１．０＋ＡＦＰ１＋ＡＦＩ１  ・・・（１１）
【００６８】
式（１１）では、中心値を「１．０」に設定して空燃比補正係数ＦＡＦを算出したが、空燃比補正係数ＦＡＦを学習値として設定してもよい。なお、空燃比補正係数ＦＡＦの学習値は、運転条件ごとに空燃比補正係数ＦＡＦのなまし値（または、平均値）を演算した値であり、空燃比補正係数ＦＡＦのズレを補償することができる。
最後に、燃料補正係数ＦＡＦに対して、以下の式（１２）のように、上下限制限処理を実行して（ステップ５０９）、図５の制御ルーチンを終了する。
【００６９】
ＦＡＦｍｉｎ＜ＦＡＦ＜ＦＡＦｍａｘ  ・・・（１２）
【００７０】
上記演算処理により、過大な燃料操作をすることが防止することができ、ドライバビリティの悪化などを防ぐことができる。
【００７１】
以下、制御回路１０内の燃料噴射制御手段により燃料噴射弁７が駆動され、エンジン１に供給される燃料供給量Ｑｆｕｅｌは、燃料補正係数ＦＡＦに応じて、以下の式（１３）のように調整される。
【００７２】
Ｑｆｕｅｌ１＝Ｑｆｕｅｌ０×ＦＡＦ  ・・・（１３）
【００７３】
この結果、エンジン１の空燃比は、最適な目標空燃比に制御される。
式（１３）において、Ｑｆｕｅｌ０は基本燃料量であり、以下の式（１４）のように演算される。
【００７４】
Ｑｆｕｅｌ０＝Ｑａｃｙｌ／目標空燃比  ・・・（１４）
【００７５】
式（１４）において、Ｑａｃｙｌは、エンジン１に供給される空気量であり、エンジン１への供給空気量は、エアフローセンサ３により検出される吸入空気量Ｑａに基づいて演算される。
また、式（１４）内の目標空燃比は、エンジン回転数および負荷に応じて決定される２次元マップによって設定される。
【００７６】
図６は基本燃料量Ｑｆｕｅｌ０を算出するための目標空燃比Ａ／Ｆを設定する２次元マップを示す説明図であり、横軸はエンジン回転数、縦軸は負荷を示している。
図６において、目標空燃比Ａ／Ｆは、エンジン回転数および負荷が大きくなるにつれてリッチ化制御用の値（Ａ／Ｆ＝１２〜１３）に設定され、エンジン回転数および負荷が小さい運転領域では理論空燃比制御用の値（Ａ／Ｆ≒１４．５３）に設定される。
【００７７】
また、目標空燃比Ａ／Ｆは、エンジン回転数が中間値であって負荷が低い運転領域（１点鎖線参照）ではリーン化制御用の値（Ａ／Ｆ＝１６）に設定され、さらに負荷が低い運転領域（破線参照）では燃料カット用の値（Ａ／Ｆ＝∞）に設定される。
【００７８】
なお、理論空燃比制御の場合には、目標空燃比Ａ／Ｆとして、第２の空燃比フィードバック制御手段１５０により演算される上流側目標空燃比ＡＦｏｂｊに設定し、目標空燃比Ａ／Ｆをフィードフォワード的に反映させる。
これにより、目標空燃比が変化した場合のフィードバック追従遅れを改善するとともに、燃料補正係数ＦＡＦを「１．０」の中心値付近に維持することができる。
【００７９】
また、燃料補正係数ＦＡＦに対しては、第１の空燃比フィードバック制御手段１３０に関連する構成要素の経時変化や、生産バラツキを吸収するような学習値演算処理が行われるので、フィードフォワード補正により燃料補正係数ＦＡＦが安定している方が、燃料補正係数ＦＡＦの学習値の精度を向上させることができる。
【００８０】
なお、吸入空気量Ｑａは、エアフローセンサ３を用いない場合には、吸気通路２内のスロットル弁の下流側に設定された圧力センサ（図示せず）の出力値およびエンジン回転速度、または、スロットル弁開度およびエンジン回転速度に応じて演算してもよい。
【００８１】
次に、図７のフローチャートを参照しながら、第２の空燃比フィードバック制御手段１５０の動作について説明する。
図７は制御回路１０による第２の空燃比フィードバック制御ルーチンを示しており、下流側Ｏ２センサ１５の出力値Ｖ２に基づく上流側目標空燃比ＡＦｏｂｊの演算処理を示している。図７の制御ルーチンは、所定時間（たとえば、５ｍｓ）ごとに実行される。
【００８２】
図７において、まず、制御回路１０内の第２の空燃比フィードバック制御手段１５０は、下流側Ｏ２センサ出力情報の処理を実行する（ステップ７０１）。すなわち、下流側Ｏ２センサ１５の出力値Ｖ２を読み込み、なまし処理（フィルタまたは平均化処理など）を施した出力フィルタ値Ｖ２ｆｌｔを用いて制御を行う。
【００８３】
このとき、燃料カット中または燃料カット解除後の所定期間においては、燃料カットによる触媒１２の酸素ストレージ量の上限値への飽和状態の検出性能を向上させるために、フィルタ効果を低減して、出力フィルタ値Ｖ２ｆｌｔを実際の出力値Ｖ２に近づけて制御に用いる。
【００８４】
続いて、下流側Ｏ２センサ１５による閉ループ条件が成立している（空燃比フィードバック領域）か否かを判定する（ステップ７０２）。
このときの具体的な判定条件としては、たとえば、理論空燃比制御以外の空燃比制御条件の場合、下流側Ｏ２センサ１５の不活性状態時、または下流側Ｏ２センサ１５が故障している場合などがあげられ、これらの場合には、いずれも「閉ループ条件が不成立」と判定され、その他の場合には「閉ループ条件が成立」と判定される。
【００８５】
なお、理論空燃比制御以外の空燃比制御条件としては、たとえば、エンジン始動中、低水温時のリッチ化制御中、高負荷パワー増量のリッチ化制御中、燃費向上のためのリーン化制御中、始動後のリーン化制御中、燃料カット中などがあげられる。
また、下流側Ｏ２センサ１５の活性／不活性状態の判定は、エンジン始動後から所定期間が経過したか否か、または、下流側Ｏ２センサ１５の出力値Ｖ２のレベルが所定電圧を一度横切ったか否かを判定することによって行われる。
【００８６】
ステップ７０２において、閉ループ条件が不成立（すなわち、Ｎｏ）と判定されれば、初期値（理論空燃比）ＡＦ０と、下流側空燃比の第２の積分演算値ＡＦＩ２とに基づき、以下の式（１５）のように、上流側目標空燃比ＡＦｏｂｊを初期値に設定して（ステップ７１５）、図７の制御ルーチンを終了する。
【００８７】
ＡＦｏｂｊ＝ＡＦ０＋ＡＦＩ２  ・・・（１５）
【００８８】
式（１５）において、初期値ＡＦ０は、たとえば理論空燃比（＝１４．５３）に相当する値である。また、第２の積分演算値ＡＦＩ２は、閉ループ制御の終了直前の値であり、制御回路１０内のバックアップＲＡＭ１０６（図２参照）に保持されている。
初期値ＡＦ０および第２の積分演算値ＡＦＩ２は、運転条件（たとえば、エンジン回転数、負荷、冷却水温ＴＨＷなど）で区分けされた運転ゾーンごとに保持されており、初期値ＡＦ０は設定値であり、下流側空燃比の第２の積分演算値ＡＦＩ２は、バックアップＲＡＭ１０６内の記憶値である。
【００８９】
ステップ７０２において、閉ループ条件が成立（すなわち、Ｙｅｓ）と判定されれば、下流側Ｏ２センサ１５の出力値Ｖ２の目標値ＶＲ２を、理論空燃比付近での下流側Ｏ２センサ１５の所定出力値（たとえば、０．４５Ｖ付近）に設定する（ステップ７０３）。
【００９０】
このとき、目標値ＶＲ２は、触媒１２のＮＯｘ浄化率が高くなるような高めの電圧（たとえば、０．７５Ｖ付近）に設定するか、または、ＣＯ、ＨＣの浄化率が高くなるような低めの電圧（たとえば、０．２Ｖ付近）に設定してもよく、さらに、運転条件などに応じて電圧値を変更してもよい。
運転条件に応じて目標値ＶＲ２を変更する場合には、変更時のステップ的な変化による空燃比変動を緩和するために、目標値ＶＲ２に対して、なまし処理（たとえば、１次遅れフィルタ処理）を加えてもよい。
【００９１】
なお、下流側Ｏ２センサ１５の出力値Ｖ２の目標値ＶＲ２がリッチ／リーンに大幅に変更されると、λ型Ｏ２センサの出力特性（図４参照）において、空燃比の変化に対するセンサ出力変化のゲインが大きく変化するので、第２の比例ゲインＫｐ２および積分ゲインＫｉ２（後述する）を変化させることと同様の作用を生じてしまう。
【００９２】
したがって、目標値ＶＲ２が運転条件に応じて大幅に変化するように設定される場合には、下流側Ｏ２センサ１５の出力値Ｖ２を、λ型Ｏ２センサの出力特性（図４参照）により下流側の検出空燃比に変換し、下流側目標空燃比との空燃比偏差を演算して、比例演算および積分演算に用いるようにしてもよい。
【００９３】
このように、下流側Ｏ２センサ（λ型Ｏ２センサ）１５の出力値Ｖ２をセンサ特性（図４参照）に基づく空燃比に変化させて、フィードバック制御に用いることにより、下流側目標空燃比の変更に応じて、第２の比例ゲインＫｐ２および積分ゲインＫｉ２が、λ型Ｏ２センサの非線形な出力特性の影響を受けて変動するので、フィードバック制御の挙動変動を防止することができる。
【００９４】
次に、下流側Ｏ２センサ１５の出力値Ｖ２の目標値ＶＲ２と出力フィルタ値Ｖ２ｆｌｔとの出力偏差ΔＶ２を、以下の式（１６）により演算する（ステップ７０４）。
【００９５】
ΔＶ２＝Ｖ２ｆｌｔ−ＶＲ２  ・・・（１６）
【００９６】
以下、第２の空燃比フィードバック制御手段１５０は、ステップ７０５〜７１１において、出力偏差ΔＶ２に応じて比例演算（Ｐ）、積分演算（Ｉ）からなるＰＩ制御処理を実行し、出力偏差ΔＶ２をキャンセルするような制御出力を設定する。
【００９７】
たとえば、下流側Ｏ２センサ１５の出力値Ｖ２が目標値ＶＲ２よりも小さい（リーン側領域）の場合、上流側目標空燃比ＡＦｏｂｊは、リッチ側に設定されて、目標値ＶＲ２に復帰させるように作用する。
触媒１２の上流側目標空燃比ＡＦｏｂｊは、初期値ＡＦ０、第２の積分ゲインＫｉ２および比例ゲインＫｐ２を用いて、一般的なＰＩ制御器により、以下の式（１７）のように演算される。
【００９８】
ＡＦｏｂｊ＝ＡＦ０＋Σ（Ｋｉ２×ΔＶ２）＋Ｋｐ２×ΔＶ２  ・・・（１７）
【００９９】
式（１７）において、初期値ＡＦ０は、前述の式（１５）と同様に、運転条件ごとに設定された理論空燃比に相当する値（たとえば、１４．５３の付近）である。
【０１００】
比例演算は、出力偏差ΔＶ２に比例して出力値を生成するので、早い応答性を示し、出力偏差ΔＶ２を早急に復帰させる効果がある。また、第２の比例ゲインＫｐ２を大きく設定すればするほど、操作量（＝Ｋｐ２×ΔＶ２）の絶対値が大きくなって復帰速度は早くなる。ただし、第２の比例ゲインＫｐ２を過度に大きい値に設定すると、制御系が安定限界に到達してハンチングが生じるので、後述するように、適切なゲイン設定が必要となる。
【０１０１】
また、積分演算は、出力偏差ΔＶ２を積分して出力値を生成するので、比較的ゆっくり動作し、上流側Ｏ２センサ１３の特性変動に起因した下流側Ｏ２センサ１５の出力値Ｖ２の定常的な出力偏差ΔＶ２を解消する効果がある。また、第２の積分ゲインＫｉ２を大きく設定すればするほど、操作量Σ（Ｋｉ２×ΔＶ２）の絶対値が大きくなって制御効果は大きくなる。ただし、第２の積分ゲインＫｉ２を過度に大きい値に設定すると、位相遅れが大きくなり、制御系が安定限界に到達してハンチングを生じるので、後述するように、適切なゲイン設定が必要となる。
【０１０２】
次に、出力偏差ΔＶ２に応じたＰＩ演算処理（ステップ７０５〜７１１）について、具体的に説明する。
第２の空燃比フィードバック制御手段１５０は、まず、第２の積分演算値ＡＦＩ２の更新条件が成立しているか否かを判定する（ステップ７０５）。
このとき、第２の積分演算値ＡＦＩ２の更新条件は、燃料カットなどの過渡運転中および過渡運転後の所定期間を除く運転状態の場合に成立する。
【０１０３】
また、過渡運転時においては、上流側空燃比が大きく乱れて、下流側空燃比も乱れるので、このような状態で積分演算処理を実行すると、間違った値を積分することになる。
また、積分演算は、比較的ゆっくり動作するので、過渡運転後においても、しばらくは間違った値を示し、制御性能が悪化してしまう。
したがって、過渡運転時には、積分演算の更新を一時的に停止して、第２の積分演算値ＡＦＩ２を保持することにより、誤った積分演算を防止するようになっている。
【０１０４】
さらに、過渡運転後においても、主に触媒１２の酸素ストレージ作用による遅れに起因して、しばらくは空燃比乱れの影響が残るので、過渡運転後の所定期間においても、積分演算の更新を禁止する。この場合、過渡運転後の所定期間は、過渡運転後の積算空気量が所定値に到達するまでの期間に設定される。
なぜなら、触媒１２の酸素ストレージ量が復帰する速度は、吸入空気量Ｑａに比例するからである。燃料カット後の積算空気量の所定量は、新品触媒から劣化触媒までのすべての触媒１２に対して収束性能を確保するために、新品触媒（触媒１２の酸素ストレージ量が復帰するまでの積算空気量が最大になる）に適合させて設定する。
【０１０５】
ステップ７０５において、第２の積分演算値ＡＦＩ２の更新条件が成立（すなわち、Ｙｅｓ）と判定されれば、第２の積分ゲインＫｉ２に基づく更新量（＝Ｋｉ２×ΔＶ２）を用いて、以下の式（１８）のように、第２の積分演算値ＡＦＩ２を更新する（ステップ７０６）。
【０１０６】
ＡＦＩ２（ｎ）＝ＡＦＩ２（ｎ−１）＋Ｋｉ２×ΔＶ２  ・・・（１８）
【０１０７】
式（１８）において、ＡＦＩ２（ｎ）は更新後の第２の積分演算値である。なお、前回の第２の積分演算値ＡＦＩ２（ｎ−１）は、運転条件ごとにバックアップＲＡＭ１０６に保持されている。
【０１０８】
第２の積分演算値ＡＦＩ２により補償される上流側Ｏ２センサ１３の特性変動は、運転条件（排気温度、排気圧力など）によって変化するので、触媒１２の下流側空燃比の第２の積分演算値ＡＦＩ２は、運転条件ごとの設定データとしてバックアップＲＡＭ１０６に保持されており、運転条件が変化するごとに更新されて切り替えられる。
【０１０９】
また、第２の積分演算値ＡＦＩ２をバックアップＲＡＭ１０６に保持することにより、エンジン１の停止／再始動ごとに、第２の積分演算値ＡＦＩ２がリセットされて制御性能が低下することを防止することができる。
【０１１０】
一方、ステップ７０５において、第２の積分演算値ＡＦＩ２の更新条件が不成立（すなわち、Ｎｏ）と判定されれば、ステップ７０６を実行せずに（第２の積分演算値ＡＦＩ２を更新せずに）前回値に保持する（ステップ７０７）。
【０１１１】
なお、触媒１２の酸素ストレージ作用の遅れに適合させるために、前述の限界感度法と酸素ストレージ作用の遅れの性質とに基づいて、第２の積分ゲインＫｉ２は、排出ガス流量ｑａに比例するように設定され、第２の比例ゲインＫｐ２は、排出ガス流量ｑａの変化に対して変化しないように設定されている。
【０１１２】
限界感度法は、前述の図１９および式（２）で示したように、第２の比例ゲインＫｐ２を徐々に大きくして持続振動を開始した安定限界の比例ゲインＫｐｃと、持続振動周期Ｔｃとから、各ゲインを設定する方法である。
したがって、第２の比例ゲインＫｐ２および積分ゲインＫｉ２の適正値は、以下の式（１９）のように表される。
【０１１３】
Ｋｐ２＝Ａ×Ｋｐｃ
Ｋｉ２＝Ｂ×Ｋｐｃ／Ｔｃ  ・・・（１９）
【０１１４】
式（１９）内の係数Ａ、Ｂは、制御対象の遅れの種類に適合した値に調整されるが、この場合は、触媒１２の酸素ストレージ作用の遅れに適合するように調整される。
酸素ストレージ作用の遅れは、他の遅れに比べて非常に大きく支配的なので、安定限界も酸素ストレージ作用に依存する。なぜなら、触媒１２の酸素ストレージ作用の遅れは、各Ｏ２センサ１３、１５の動作遅れ、エンジン１の排出ガスの移動遅れなど、他の遅れによる空燃比変動を吸収できるように、十分に大きい値に設計されているからである。
【０１１５】
触媒１２の酸素ストレージ量の変化速度は、触媒１２の上流側空燃比の理論空燃比からの変化量と、排出ガス流量ｑａとに比例する。
排出ガス流量ｑａが小流量から、中流量、大流量へと変化した場合の、安定限界の挙動は、前述の図２０〜図２２に示した通りである。
【０１１６】
触媒１２の上流側空燃比の変化量は、比例ゲインの大きさに応じて決定するので、安定限界の比例ゲインＫｐｃは、排出ガス流量ｑａによって変化せずに一定値を示す。
一方、酸素ストレージ量の変化速度は、排出ガス流量ｑａに比例するので、排出ガス流量ｑａが大きくなるにつれて、持続振動周期Ｔｃは短くなる。
つまり、比例ゲインＫｐｃおよび持続振動周期Ｔｃは、以下の式（２０）のように表される。
【０１１７】
Ｋｐｃ＝一定
Ｔｃ∝１／ｑａ  ・・・（２０）
【０１１８】
したがって、限界感度法にしたがい、最適な第２の比例ゲインＫｐ２は、排出ガス流量ｑａに変化しないように設定され、最適な第２の積分ゲインＫｉ２は、排出ガス流量ｑａに比例して設定され、それぞれ、以下の式（２１）のように表される。
【０１１９】
Ｋｐ２＝一定値
Ｋｉ２∝ｑａ  ・・・（２１）
【０１２０】
式（２１）のように、第２の比例ゲインＫｐ２および積分ゲインＫｉ２を設定することにより、排出ガス流量ｑａに応じて変化する触媒１２の酸素ストレージ作用の遅れに適合させて、安定性および応答性のよい制御挙動を実現することができ、触媒１２の浄化状態を常に良好に保つことができる。
【０１２１】
なお、ここでは、積分演算の更新周期を固定値として、積分ゲインを変更するようにしたが、逆に、積分ゲインを固定値として更新周期を変更するようにしても、数学的に等価であることは言うまでもない。
すなわち、連続系の積分演算を離散系の積分演算に変換すると、連続系の積分演算に基づく第２の積分演算値ＡＦＩ２（ｔ）と、離散系の積分演算に基づく第２の積分演算値ＡＦＩ２（ｎ）は、以下の式（２２）のように表される。
【０１２２】
ＡＦＩ２（ｔ）＝Ｋｉ×∫０ｔΔＶ２（ｔ）ｄｔ
ＡＦＩ２（ｎ）＝ＡＦＩ２（ｎ−１）＋Ｋｉ×ΔＴ×ΔＶ２（ｎ）  ・・・（２２）
【０１２３】
式（２２）において、Ｋｉは連続系における積分ゲイン、ｔは連続系の時間、ｎは離散系の更新回数、ΔＴは更新周期である。また、Ｋｉ×ΔＴは第２の積分ゲインＫｉ２に相当する。
連続系の積分ゲインＫｉは、触媒１２の酸素ストレージ作用に適合するように、たとえば、以下の式（２３）のように、排出ガス流量ｑａに比例した値（定数Ａ１を乗算した値）に設定される。
【０１２４】
Ｋｉ＝Ａ１×ｑａ  ・・・（２３）
【０１２５】
したがって、離散系では、第２の積分ゲインＫｉ２は、以下の式（２４）のように表される。
【０１２６】
Ｋｉ２＝Ｋｉ×ΔＴ
＝Ａ１×ｑａ×ΔＴ  ・・・（２４）
【０１２７】
式（２４）において、更新周期ΔＴを所定の固定周期（定数Ａ２）とすれば、第２の積分ゲインＫｉ２は、以下の式（２５）のように表される。
【０１２８】
Ｋｉ２＝Ａ１×ｑａ×Ａ２  ・・・（２５）
【０１２９】
式（２５）から、更新周期ΔＴが固定値（＝Ａ２）の場合には、第２の積分ゲインＫｉ２を排出ガス流量ｑａに比例するように設定すればよいことが分かる。
一方、更新周期ΔＴを、排出ガス流量ｑａに反比例するように、たとえば定数Ａ３を用いて、以下の式（２６）のように設定したとする。
【０１３０】
ΔＴ＝Ａ３／ｑａ  ・・・（２６）
【０１３１】
この場合、第２の積分ゲインＫｉ２は、以下の式（２７）のように表される。
【０１３２】
Ｋｉ２＝Ａ１×ｑａ×Ａ３／ｑａ
＝Ａ１×Ａ３  ・・・（２７）
【０１３３】
式（２７）から、第２の積分ゲインＫｉ２は、固定設定値でよいことが分かる。
したがって、式（２５）のように、第２の積分ゲインＫｉ２を排出ガス流量ｑａに比例するように設定して、更新周期ΔＴを固定値とする代わりに、式（２７）のように、積分ゲインＫｉ２を固定値とし、式（２６）のように、更新周期ΔＴを流量に反比例するように設定しても、数学的に同様の挙動となる。
【０１３４】
後者の設定は、ステップ７０５の第２の積分演算値ＡＦＩ２の更新条件のみならず、さらにタイマ処理による更新条件（図示せず）を追加することによって実現することができる。たとえば、タイマ時間を排出ガス流量ｑａに反比例するようにセットし、タイマ時間経過ごとに、下流側空燃比の第２の積分演算値ＡＦＩ２を更新するとともに、第２の積分ゲインＫｉ２を、排出ガス流量ｑａの変化に対して変化しないように設定すればよい。
【０１３５】
このように、第２の積分ゲインＫｉ２を固定値とし、更新周期ΔＴを排出ガス流量ｑａに反比例するように設定しても、空燃比偏差に対する積分演算の変化速度は、排出ガス流量ｑａに比例するようになり、触媒１２の酸素ストレージ挙動に適合させることができる。
【０１３６】
また、第２の積分ゲインＫｉ２および更新周期ΔＴの両方を排出ガス流量ｑａに応じて変化させ、連続系の積分ゲインＫｉが排出ガス流量ｑａに比例するように設定し、空燃比偏差に対する積分演算の変化速度を排出ガス流量ｑａに比例するように設定してもよい。
【０１３７】
図７に戻り、ステップ７０７に続いて、第２の空燃比フィードバック制御手段１５０は、以下の式（２８）のように、第２の積分演算値ＡＦＩ２の上下限制限処理を行う（ステップ７０８）。
【０１３８】
ＡＦＩ２ｍｉｎ＜ＡＦＩ２＜ＡＦＩ２ｍａｘ  ・・・（２８）
【０１３９】
上流側Ｏ２センサ１３の特性変動幅はあらかじめ把握可能なので、上下限制限値ＡＦＩ２ｍａｘ、ＡＦＩ２ｍｉｎは、特性変動幅を補償できるような適正値に設定される。また、運転条件により傾向が変化するので、上下限制限値ＡＦＩ２ｍａｘ、ＡＦＩ２ｍｉｎを変更してもよい。このように処理することにより、過大な空燃比操作を防止することができる。
【０１４０】
次に、下流側Ｏ２センサの出力偏差ΔＶ２に対し、第２の比例ゲインＫｐ２を用いて、以下の式（２９）のように比例演算処理を実行し（ステップ７０９）、第２の比例演算値ＡＦＰ２を求める。
【０１４１】
ＡＦＰ２＝Ｋｐ２×ΔＶ２  ・・・（２９）
【０１４２】
第２の比例ゲインＫｐ２は、前述のように、触媒１２の酸素ストレージ作用の遅れを考慮して、排出ガス流量ｑａの変化に対して変化しないように設定される。
なお、ここでは、第２の積分ゲインＫｉ２および比例ゲインＫｐ２を、単に所定ゲインを用いて、それぞれ、Ｋｉ２×ΔＶ２、Ｋｐ２×ΔＶ２として表したが、たとえば、１次元マップを用いて、出力偏差ΔＶ２に応じて更新量を設定（可変ゲイン設定を適用）してもよい。
【０１４３】
図８は各ゲインの１次元マップの具体例を示す説明図であり、横軸は出力偏差ΔＶ２、縦軸は、第２の積分ゲインのマップ値Ｋｉ２（ΔＶ２）、または第２の比例ゲインのマップ値Ｋｐ２（ΔＶ２）である。図８において、下流側Ｏ２センサの出力偏差ΔＶ２に対する１次元マップ値Ｋｉ２（ΔＶ２）、Ｋｐ２（ΔＶ２）の傾きは、ゲインに相当する。
【０１４４】
第２の比例ゲインＫｐ２は、排出ガス流量ｑａの変化に対して変化しないように設定され、排出ガス流量ｑａの違いかかわらず、図８の特性のままである。
一方、第２の積分ゲインＫｉ２は、排出ガス流量ｑａに比例して傾きが増加するように設定される。
【０１４５】
図９は第２の積分ゲインＫｉ２のマップ値Ｋｉ２（ΔＶ２）の排出ガス流量ｑａに対する特性を示す説明図である。
図９においては、排出ガス流量ｑａが小流量、中流量、大流量の場合のマップ値Ｋｉ２（ΔＶ２）の特性を、それぞれ、１点鎖線、破線、実線は、小流量で示している。図９に示すように、第２の積分ゲインＫｉ２のマップ値Ｋｉ２（ΔＶ２）は、排出ガス流量ｑａの増大に比例して、傾きが増加するように設定される。
【０１４６】
また、上記説明では、第２の積分ゲインＫｉ２および比例ゲインＫｐ２を正の値としたが、下流側Ｏ２センサ１５の目標値ＶＲ２と出力フィルタ値との出力偏差ΔＶ２の演算式の符号によっては、たとえば、以下の式（３０）のように、負の値として表される。
【０１４７】
ΔＶ２＝ＶＲ２−Ｖ２ｆｌｔ  ・・・（３０）
【０１４８】
したがって、各ゲインの絶対値を考慮して、第２の比例ゲインＫｐ２の絶対値は、排出ガス流量ｑａの変化に対して変化しないように設定し、第２の積分ゲインＫｉ２の絶対値は、排出ガス流量ｑａに比例して増加させるように設定する。
【０１４９】
図７に戻り、ステップ７０９に続いて、第２の空燃比フィードバック制御手段１５０は、第２の比例演算値ＡＦＰ２に対して、以下の式（３１）のように、上下限制限処理を行う（ステップ７１０）。
【０１５０】
ＡＦＰ２ｍｉｎ＜ＡＦＰ２＜ＡＦＰ２ｍａｘ  ・・・（３１）
【０１５１】
式（３１）において、上下限制限値ＡＦＰ２ｍａｘ、ＡＦＰ２ｍｉｎは、ドライバビリティなどの要求に基づき、運転条件ごとに設定されている。たとえば、アイドル運転条件では、第２の比例演算値ＡＦＰ２の操作量が大きくなると回転変動が生じやすいので、上下限制限値ＡＦＰ２ｍａｘ、ＡＦＰ２ｍｉｎは、第２の比例演算値ＡＦＰ２の操作範囲が狭くなるように設定される。
なお、空燃比フィードバック制御の安定性は、第２の比例ゲインＫｐ２により決定するので、上下限制限値ＡＦＰ２ｍａｘ、ＡＦＰ２ｍｉｎを変更しても、制御安定性に影響を与えることがなく、過大な空燃比操作を防止することができる。
【０１５２】
また、前述のように、第２の積分演算値ＡＦＩ２の更新禁止条件が成立した（燃料カットなどの過渡運転条件となった）場合の過渡運転後の所定期間においては、上下限制限値ＡＦＰ２ｍｉｎ、ＡＦＰ２ｍａｘによる第２の比例演算値ＡＦＰ２の制限範囲を広げるように変更する。これにより、第２の比例演算値ＡＦＰ２による空燃比操作量を大きく設定し、燃料カットにより変動した触媒１２の酸素ストレージ量の復帰速度を速めることができる。
なお、前述のように、空燃比フィードバック制御の安定性は、比例ゲインＫｐ２により決定するので、上下限制限値ＡＦＰ２ｍｉｎ、ＡＦＰ２ｍａｘを変更しても、制御安定性に影響を与えることがなく、燃料カット復帰後の空燃比制御性を向上させることができる。
【０１５３】
また、過渡運転後に設定される所定期間は、触媒１２の酸素ストレージ量の復帰速度が吸入空気量Ｑａに比例することを考慮して、積分演算の場合と同様に、過渡運転後の積算空気量が所定値に到達するまでの期間に設定される。
また、前述のように、燃料カット後の積算空気量の所定量は、新品触媒から劣化触媒までのすべての触媒１２に対して収束性能を確保するために、新品触媒（触媒１２の酸素ストレージ量が復帰するまでの積算空気量が最大になる）に適合させて設定される。
【０１５４】
図２に戻り、ステップ７１０に続いて、初期値ＡＦ０、第２のＰＩ演算値ＡＦＰ２、ＡＦＩ２を合計して、以下の式（３２）のように、上流側目標空燃比ＡＦｏｂｊを演算する（ステップ７１１）。
【０１５５】
ＡＦｏｂｊ＝ＡＦ０＋ＡＦＰ２＋ＡＦＩ２  ・・・（３２）
【０１５６】
式（３２）において、初期値ＡＦ０は、前述のように、運転条件ごとに設定された理論空燃比に相当する値（たとえば、１４．５３の付近）である。
次に、以下の式（３３）のように、上流側目標空燃比ＡＦｏｂｊの上下限制限処理を行う（ステップ７１２）。
【０１５７】
ＡＦｍｉｎ＜ＡＦｏｂｊ＜ＡＦｍａｘ  ・・・（３３）
【０１５８】
式（３３）のように上下限制限処理を行うことにより、過大な空燃比操作を防止することができ、ドライバビリティの悪化などを防ぐことができる。
また、運転条件ごとに上下限制限値ＡＦｍａｘ、ＡＦｍｉｎを設定してもよく、これにより、運転条件によって変化するドライバビリティ上の制約に対応することができる。
なお、上下限制限値ＡＦｍａｘ、ＡＦｍｉｎを変更しても、ゲイン設定には影響しないので、空燃比フィードバック制御の安定性に影響を与えることはない。
【０１５９】
次に、第２の空燃比フィードバック制御手段１５０は、上流側目標空燃比ＡＦｏｂｊを強制的に変動させるための強制変動条件が成立したか否かを判定する（ステップ７１３）。強制変動条件としては、触媒１２の劣化診断中、触媒１２の浄化特性の改善中、下流側Ｏ２センサ１５の故障診断中などがあげられる。
【０１６０】
ステップ７１３において、強制変動条件が不成立（すなわち、Ｎｏ）と判定されれば、上流側目標空燃比ＡＦｏｂｊの強制変動処理を実行せずに、直ちに図７の制御ルーチンを終了する。
一方、ステップ７１３において、強制変動条件が成立（すなわち、Ｙｅｓ）と判定されれば、以下の式（３４）のように、上流側目標空燃比ＡＦｏｂｊに対し、変動振幅ΔＡＦｐｔの強制変動を加えて（ステップ７１４）、図７の制御ルーチンを終了する。
【０１６１】
ＡＦｏｂｊ＝ＡＦｏｂｊ＋ΔＡＦｐｔ  ・・・（３４）
【０１６２】
式（３４）において、変動振幅ΔＡＦｐｔは、所定絶対値（正または負の所定値）に設定されており、所定の周期で、正の値（たとえば、＋０．２５）と負の値（たとえば、−０．２５）とに切り替えられる。
【０１６３】
図１０は上流側目標空燃比ＡＦｏｂｊの強制変動時の時間変化を示すタイミングチャートである。
図１０において、実線、破線および一点鎖線は、それぞれ、異なる変動波形例を示しており、上流側目標空燃比ＡＦｏｂｊは、所定の周期で、中心値（点線参照）から変動振幅ΔＡＦｐｔだけ強制変動される。
【０１６４】
図１０に示すように、上流側目標空燃比ＡＦｏｂｊは、所定の変動振幅ΔＡＦｐｔおよび周期を有していれば、ステップ的に切り替わる変動波形（実線参照）で制御されてもよく、任意の他の変動波形（破線、一点鎖線参照）で制御されてもよい。
変動振幅ΔＡＦｐｔおよび周期は、触媒１２の劣化診断や、触媒１２の浄化特性の改善などの目的に鑑みて、運転条件ごとに設定されている。
【０１６５】
また、上流側目標空燃比ＡＦｏｂｊの強制変動条件が成立している場合に、第２の比例ゲインＫｐ２および積分ゲインＫｉ２を変更してもよい。
この場合、第２の比例ゲインＫｐ２は、排出ガス流量ｑａにより変化させないように設定し、第２の積分ゲインＫｉ２は、排出ガス流量ｑａに比例するように設定する。これにより、空燃比フィードバック制御の安定性を損なうことなく、その他の要求に対応することができる。
【０１６６】
たとえば、触媒１２の劣化診断中においては、下流側Ｏ２センサ１５の出力値Ｖ２の変動の大小から劣化診断が行われるので、空燃比フィードバック制御により出力値Ｖ２の変動を抑制させ過ぎると、触媒１２の劣化検出性が低下する。
したがって、第２の比例ゲインＫｐ２または積分ゲインＫｉ２を、通常のゲイン設定値よりも小さく設定することにより、出力値Ｖ２の変動に対する制御性を低下させるとともに、制御安定性を維持して、触媒１２の劣化検出性を向上させることができる。
【０１６７】
図１１〜図１３は第２の空燃比フィードバック制御手段１５０に基づく制御動作を示すタイミングチャートであり、それぞれ、排出ガス流量ｑａが小流量、中流量、大流量の場合での、外乱発生後の下流側Ｏ２センサ１５の出力値Ｖ２、上流側目標空燃比ＡＦｏｂｊ、触媒１２の酸素ストレージ量の挙動を示している。
【０１６８】
前述のように、第２の比例ゲインＫｐ２は、排出ガス流量ｑａの変化に対して変化しないように設定され、第２の積分ゲインＫｉ２は、排出ガス流量ｑａに比例して変化するように設定されている。
したがって、図１１〜図１３に示すように、目標値に収束するまでの各過渡波形は、排出ガス流量ｑａの違いによって変化せず、変化速度（横軸の時間方向長さ）のみが変化している。
【０１６９】
つまり、第２の空燃比フィードバック制御手段１５０による空燃比制御の安定性は、排出ガス流量ｑａの違いによって変化しないが、目標値への収束時間（過渡波形の変化速度）は、排出ガス流量ｑａが増大するにつれて早く（時間方向長さが短く）なり、排出ガス流量ｑａに対して比例して変化することが分かる。
【０１７０】
以上のように、この発明の実施の形態１に係る内燃機関の空燃比制御装置は、エンジン１（内燃機関）の排気マニホールド１１、排気管１４（排気系）に設置されて、エンジン１からの排出ガスを浄化する触媒１２と、触媒１２の上流側に設けられて上流側排出ガス中の空燃比を検出する上流側Ｏ２センサ１３（上流側空燃比センサ）と、触媒１２の下流側に設けられて下流側排出ガス中の空燃比を検出する下流側Ｏ２センサ１５（下流側空燃比センサ）と、第１の空燃比フィードバック制御手段１３０と、第２の空燃比フィードバック制御手段１５０とを備えている。
【０１７１】
第１の空燃比フィードバック制御手段１３０は、上流側排出ガス中の空燃比と上流側目標空燃比ＡＦｏｂｊとが一致するように、上流側Ｏ２センサ１３の検出空燃比および上流側目標空燃比ＡＦｏｂｊ（たとえば、両者の空燃比偏差）に応じてエンジン１への燃料の供給量を調節する。
【０１７２】
第２の空燃比フィードバック制御手段１５０は、下流側Ｏ２センサ１５の検出空燃比と下流側目標空燃比とが一致するように、下流側Ｏ２センサの検出空燃比と下流側目標空燃比との空燃比偏差に応じて、少なくとも比例演算および積分演算を用いて上流側目標空燃比を操作する。
【０１７３】
また、第２の空燃比フィードバック制御手段１５０は、排出ガス流量ｑａが増加するほど、空燃比偏差に対する積分演算の変化速度が速くなるように、積分演算の積分ゲイン（第２の積分ゲインＫｉ２）を大きく設定するか、または積分演算の更新周期ΔＴを小さく設定するとともに、比例演算の比例ゲイン（第２の比例ゲインＫｐ２）を、排出ガス流量ｑａの変化に対して変化しないように設定する。
【０１７４】
これにより、触媒１２の酸素ストレージ作用の遅れに適合した比例ゲインおよび積分ゲイン（第２の比例ゲインＫｐ２および積分ゲインＫｉ２）を設定することができ、空燃比フィードバック制御の安定性を高めることができ、排出ガスの悪化を防止することができる。
【０１７５】
実施の形態２．
なお、上記実施の形態１では、上流側Ｏ２センサ１３として、空燃比変化に対してリニアな出力特性を有するリニア型Ｏ２センサを用いたが、理論空燃比付近で急激に出力変化して２値的な出力特性を有するλ型Ｏ２センサを用いてもよい。
図１４はこの発明の実施の形態２に係る内燃機関の空燃比制御装置の要部を示す機能ブロック図であり、前述（図１、図２参照）と同様の構成については図示を省略し、前述と対応する要素には、前述と同一符号の後に「Ａ」が付されている。
【０１７６】
図１４において、上流側Ｏ２センサ１３Ａは、λ型Ｏ２センサにより構成されており、出力値Ｖ１を第１の空燃比フィードバック制御手段１３０Ａに入力する。
また、第２の空燃比フィードバック制御手段１５０Ａは、上流側目標空燃比ＡＦｏｂｊを平均化処理して上流側平均目標空燃比ＡＦＡＶＥｏｂｊを算出し、第１の空燃比フィードバック制御手段１３０Ａに入力する。
【０１７７】
第１の空燃比フィードバック制御手段１３０Ａは、上流側目標平均空燃比ＡＦＡＶＥｏｂｊに応じて制御定数（後述する）を設定する変換器１３１と、出力値Ｖ１および制御定数に基づき燃料補正係数ＦＡＦを算出する第１の空燃比フィードバック制御器１３２とを備えている。
【０１７８】
前述の実施の形態１（図１）のように、リニア型Ｏ２センサからなる上流側Ｏ２センサ１３を用いた場合には、上流側の実際の空燃比を検出することができるので、上流側目標空燃比ＡＦｏｂｊと実際の空燃比（検出値）とが一致するようなフィードバック制御系が設計される。
【０１７９】
しかし、図１４のように、λ型Ｏ２センサからなる上流側Ｏ２センサ１３Ａを用いた場合には、リッチまたはリーンの２値情報のみしか検出することができないので、上流側空燃比をリッチ側およびリーン側に周期的に変動させながら、空燃比フィードバック制御を行う制御系が設計され、上流側目標平均空燃比ＡＦＡＶＥｏｂｊに応じて平均空燃比（周期的に振動している空燃比の平均値）が制御される。
【０１８０】
したがって、第２の空燃比フィードバック制御手段１５０Ａは、前述の上流側目標空燃比ＡＦｏｂｊに代えて、上流側目標平均空燃比ＡＦＡＶＥｏｂｊを算出し、第１の空燃比フィードバック制御手段１３０Ａは、上流側平均空燃比の制御精度を向上されるために、上流側目標平均空燃比ＡＦＡＶＥｏｂｊに応じて、第１の空燃比フィードバック制御用の制御定数を演算する変換器１３１を備えている。
なお、第２の空燃比フィードバック制御手段１５０Ａは、上流側目標空燃比ＡＦｏｂｊに代えて上流側目標平均空燃比ＡＦＡＶＥｏｂｊを算出する点を除けば、他の処理に関しては前述と同様である。
【０１８１】
空燃比振動は、触媒１２の酸素ストレージ作用により平均化されて、酸素ストレージ量の微小振動となる。したがって、酸素ストレージ量の大きな挙動は、平均空燃比の挙動に相関することになる。
図１５はこの発明の実施の形態２における挙動を示すタイミングチャートであり、下流側Ｏ２センサ１５の出力値Ｖ２と、上流側空燃比と、触媒１２の酸素ストレージ量との時間変化を相互に関連付けて示している。
【０１８２】
図１５に示すように、安定限界時の酸素ストレージ量の挙動と相関があるのは、下流側Ｏ２センサ１５による上流側の平均空燃比（点線波形参照）の操作量である。
したがって、この発明の実施の形態２による目標平均空燃比操作において、安定限界の比例ゲインおよび持続振動周期の挙動は、前述の実施の形態１による目標空燃比操作の場合とほぼ同じ傾向となる。
【０１８３】
したがって、この発明の実施の形態２においても、第２の比例ゲインＫｐ２は、排出ガス流量ｑａの変化ｂに対して変化しないように設定され、第２の積分ゲインＫｉ２は、排出ガス流量ｑａに比例するように設定される。これにより、空燃比フィードバック制御の安定性を良好に保つことができる。
【０１８４】
また、第１のフィードバック制御手段１３０Ａは、上流側平均空燃比の制御精度を向上するために、上流側目標平均空燃比ＡＦＡＶＥｏｂｊに基づいて制御定数の操作量を演算する変換器１３１と、上流側Ｏ２センサ１３Ａの出力値Ｖ１および制御定数に基づいて空燃比フィードバック制御を行う第１の空燃比フィードバック制御器１３２とにより構成されている。
【０１８５】
また、後述するように、下流側Ｏ２センサ１５の出力値Ｖ２に応じて上流側平均空燃比を操作するためには、たとえば前述の特許文献１（特開昭６３−１９５３５１号公報）に開示されているように、第１の空燃比フィードバック制御用の制御定数として、スキップ量ＲＳＲ、ＲＳＬ、積分定数ＫＩＲ、ＫＩＬ、遅延時間ＴＤＲ、ＴＤＬ、または、上流側Ｏ２センサ１３Ａの出力値Ｖ１の比較電圧ＶＲ１を用い、下流側Ｏ２センサ１５の出力値Ｖ２に応じて制御定数を可変設定するシステムが適用される。
なお、制御定数は、遅延時間ＴＤＲ、ＴＤＬと、スキップ量ＲＳＲ、ＲＳＬと、積分ゲイン（積分定数ＫＩＲ、ＫＩＬ）と、比較電圧ＶＲ１とのうちの、いずれか２つ以上のパラメータに対する値を含む。
【０１８６】
たとえば、リッチ側に補正するためのリッチスキップ量ＲＳＲを大きく設定すると、平均空燃比はリッチ側に移行し、また、リーン側に補正するためのリーンスキップ量ＲＳＬを小さく設定しても、平均空燃比はリッチ側に移行する。
逆に、リーンスキップ量ＲＳＬを大きく設定すると、平均空燃比はリーン側に移行し、また、リッチスキップ量ＲＳＲを小さく設定しても、平均空燃比はリーン側に移行する。
したがって、下流側Ｏ２センサ１５の出力値Ｖ２に応じて、リッチスキップ量ＲＳＲおよびリーンスキップ量ＲＳＬを補正することにより、平均空燃比を制御することができる。
【０１８７】
また、リッチ側に補正するためのリッチ積分定数ＫＩＲを大きく設定すると、平均空燃比はリッチ側に移行し、また、リーン側に補正するためのリーン積分定数ＫＩＬを小さく設定しても、平均空燃比はリッチ側に移行する。
逆に、リーン積分定数ＫＩＬを大きく設定すると、平均空燃比はリーン側に移行し、また、リッチ積分定数ＫＩＲを小さく設定しても、平均空燃比はリーン側に移行する。
したがって、下流側Ｏ２センサ１５の出力値Ｖ２に応じて、リッチ積分定数ＫＩＲおよびリーン積分定数ＫＩＬを補正することにより、空燃比を制御することができる。
【０１８８】
また、リッチ／リーン遅延時間に関して、リッチ遅延時間ＴＤＲ＞リーン遅延時間（−ＴＤＬ）と設定すれば、平均空燃比はリッチ側に移行し、逆に、リーン遅延時間（−ＴＤＬ）＞リッチ遅延時間（ＴＤＲ）と設定すれば、平均空燃比はリーン側に移行する。
したがって、下流側Ｏ２センサ１５の出力値Ｖ２に応じて、リッチ／リーン遅延時間ＴＤＲ、ＴＤＬを補正することにより、空燃比を制御することができる。
【０１８９】
さらに、出力値Ｖ１の比較電圧ＶＲ１を大きく設定すると、平均空燃比はリッチ側に移行し、また、比較電圧ＶＲ１を小さく設定すると、平均空燃比はリーン側に移行する。
したがって、下流側Ｏ２センサ１５の出力値Ｖ２に応じて、比較電圧ＶＲ１を補正することにより、空燃比を制御することができる。
【０１９０】
このように、下流側Ｏ２センサの出力値Ｖ２に応じて、上述した制御定数を補正することにより、上流側の平均空燃比を制御することができる。
また、制御定数として、遅延時間、スキップ量、積分ゲイン、比較電圧のうちの２つ以上を同時に操作することにより、平均空燃比の制御性を向上させることができる。
【０１９１】
また、制御定数の操作による平均空燃比の制御精度を高めるために、また、制御定数を２つ以上操作することによる自由度を積極的に利用するために、制御定数の操作を平均空燃比で管理することが考えられる。
この場合、図１４のように、下流側Ｏ２センサ１５の出力値Ｖ２に基づいて上流側目標平均空燃比ＡＦＡＶＥｏｂｊを演算する第２の空燃比フィードバック制御手段１５０Ａと、上流側目標平均空燃比ＡＦＡＶＥｏｂｊから制御定数の操作量を演算する変換器１３１とが用いられる。
【０１９２】
周知のように、制御定数の操作量と上流側平均空燃比の操作量との関係が非線形であることから、従来装置では、平均空燃比のリッチ／リーンの操作方向を管理することはできるものの、操作量を精度良く管理することができなかった。また、２つ以上の制御定数を操作すると、非線形な相互作用が生じるので、従来装置では、平均空燃比の操作量を精度良く管理することはさらに困難であり、第２の空燃比フィードバック制御の安定性および制御挙動が変動するという不具合があった。
【０１９３】
しかし、この発明の実施の形態２によれば、上流側目標平均空燃比ＡＦＡＶＥｏｂｊの管理指標に応じて制御定数を設定することにより、上流側平均空燃比を精度良く制御することができ、第２の空燃比フィードバック制御により上流側平均空燃比を操作するための比例ゲインおよび積分ゲインの大きさに応じて、第２の空燃比フィードバック制御の安定性を管理することができる。
【０１９４】
また、制御定数のそれぞれにおいて、平均空燃比を制御する上で、利点のみならず不利点（たとえば、平均空燃比の制御精度、操作幅、または制御周期、空燃比振幅など）があるが、上流側目標平均空燃比ＡＦＡＶＥｏｂｊの動作点に応じて、制御定数をそれぞれきめ細かく設定することにより、それぞれの利点を生かすことができる。
【０１９５】
以下、図１６のフローチャートを参照しながら、図１４に示したこの発明の実施の形態２による動作について具体的に説明する。
図１６は第１の空燃比フィードバック制御器１３２の処理ルーチンを示しており、上流側Ｏ２センサ１３Ａの出力値Ｖ１と、上流側目標平均空燃比ＡＦＡＶＥｏｂｊに応じて変更操作される第１の空燃比フィードバック制御用の制御定数とに基づいて、空燃比補正係数ＦＡＦを演算して上流側平均空燃比を制御する動作を示している。
図１６の処理ルーチンは、所定時間（たとえば、５ｍｓ）ごとに実行される。
【０１９６】
図１６において、第１の空燃比フィードバック制御器１３２は、まず、上流側Ｏ２センサ１３Ａの出力値Ｖ１をＡ／Ｄ変換して取り込み（ステップ１５０１）、上流側Ｏ２センサ１３Ａによる空燃比の閉ループ（フィードバック）条件が成立しているか否かを判定する（ステップ１５０２）。
【０１９７】
たとえば、理論空燃比制御以外の空燃比制御条件（たとえば、エンジン始動中、低水温時のリッチ化制御中、高負荷パワー増量のリッチ化制御中、燃費向上用のリーン化制御中、始動後のリーン化制御中、燃料カット中）、上流側Ｏ２センサ１３Ａの不活性状態時、上流側Ｏ２センサ１３Ａの故障時などは、いずれも閉ループ条件が不成立であり、その他の場合は閉ループ条件成立である。
【０１９８】
ステップ１５０２において、閉ループ条件が不成立（すなわち、Ｎｏ）と判定されれば、空燃比補正係数ＦＡＦを「１．０」に設定する（ステップ１５３３）。なお、この場合、空燃比補正係数ＦＡＦは、閉ループ制御の終了直前の値または学習値（バックアップＲＡＭ１０６内の記憶値）に設定されてもよい。
【０１９９】
また、ステップ１５３３に続いて、遅延カウンタＣＤＬＹを「０」にリセットし（ステップ１５３４）、出力値Ｖ１が比較電圧ＶＲ１以下（空燃比がリーン状態）であるか否かを判定する（ステップ１５３５）。
【０２００】
ステップ１５３５において、空燃比がリーン状態を示し、Ｖ１≦ＶＲ１（すなわち、Ｙｅｓ）と判定されれば、遅延前空燃比フラグＦ０を「０（リーン）」に設定し（ステップ１５３６）、また、遅延後空燃比フラグＦ１を「０（リーン）」に設定して（ステップ１５３７）、図１６の処理ルーチンを終了してリターンする。
【０２０１】
一方、ステップ１５３５において、空燃比がリッチ状態を示し、Ｖ１＞ＶＲ１（すなわち、Ｎｏ）と判定されれば、遅延前空燃比フラグＦ０を「１（リッチ）」に設定し（ステップ１５３８）、また、遅延後空燃比フラグＦ１を「１（リッチ）」に設定して（ステップ１５３９）、図１６の処理ルーチンを終了する。
ステップ１５３４〜１５３９においては、その後の閉ループ条件成立時における初期値が設定される。
【０２０２】
一方、ステップ１５０２において、閉ループ条件が成立（すなわち、Ｙｅｓ）と判定されれば、上記ステップ１５３３と同様に、上流側Ｏ２センサ１３Ａの出力値Ｖ１が比較電圧ＶＲ１（たとえば、０．４５Ｖ）以下か否かにより、空燃比が比較電圧ＶＲ１に対してリーンであるかリッチであるかを判定する（ステップ１５０３）。
【０２０３】
ステップ１５０３において、空燃比がリーンを示し、Ｖ１≦ＶＲ１（すなわち、Ｙｅｓ）と判定されれば、続いて、遅延カウンタＣＤＬＹが最大値ＴＤＲ以上であるか否かを判定する（ステップ１５０４）。
【０２０４】
ステップ１５０４において、ＣＤＬＹ≧ＴＤＲ（すなわち、Ｙｅｓ）と判定されれば、遅延カウンタＣＤＬＹを「０」に設定し（ステップ１５０５）、また、遅延前空燃比フラグＦ０を「０（リーン）」に設定して（ステップ１５０６）、次の判定処理（ステップ１５１６）に進む。
【０２０５】
一方、ステップ１５０４において、ＣＤＬＹ＜ＴＤＲ（すなわち、Ｎｏ）と判定されれば、続いて、遅延前空燃比フラグＦ０が「０（リーン）」であるか否かを判定する（ステップ１５０７）。
【０２０６】
ステップ１５０７において、Ｆ０＝０（すなわち、Ｙｅｓ）と判定されれば、遅延カウンタＣＤＬＹを「１」だけ減算して（ステップ１５０８）、ステップ１５１６に進み、Ｆ０＝１（すなわち、Ｎｏ）と判定されれば、遅延カウンタＣＤＬＹを「１」だけ加算して（ステップ４０９）、ステップ１５１６に進む。
【０２０７】
一方、ステップ１５０３において、空燃比がリッチを示し、Ｖ１＞ＶＲ１（すなわち、Ｎｏ）と判定されれば、続いて、遅延カウンタＣＤＬＹが最小値（−ＴＤＬ）以下であるか否かを判定する（ステップ１５１０）。
【０２０８】
ステップ１５１０において、ＣＤＬＹ≦−ＴＤＬ（すなわち、Ｙｅｓ）と判定されれば、遅延カウンタＣＤＬＹを「０」に設定し（ステップ１５１１）、また、遅延前空燃比フラグＦ０を「１（リッチ）」に設定して（ステップ１５１２）、ステップ１５１６に進む。
【０２０９】
一方、ステップ１５１０において、ＣＤＬＹ＞−ＴＤＬ（すなわち、Ｎｏ）と判定されれば、続いて、遅延前空燃比フラグＦ０が「０（リーン）」であるか否かを判定する（ステップ１５１３）。
【０２１０】
ステップ１５１３において、Ｆ０＝０（すなわち、Ｙｅｓ）と判定されれば、遅延カウンタＣＤＬＹを「１」だけ減算して（ステップ１５１４）、ステップ１５１６に進み、Ｆ０＝１（すなわち、Ｎｏ）と判定されれば、遅延カウンタＣＤＬＹを「１」だけ加算して（ステップ４１５）、ステップ１５１６に進む。
【０２１１】
ステップ１５１６においては、ステップ１５１０と同様に、遅延カウンタＣＤＬＹが最小値（−ＴＤＬ）以下であるか否かを判定し、ＣＤＬＹ≦−ＴＤＬ（すなわち、Ｙｅｓ）と判定されれば、遅延カウンタＣＤＬＹを最小値（−ＴＤＬ）に設定して（ステップ１５１７）、遅延カウンタＣＤＬＹを最小値（−ＴＤＬ）以上の値にガードする。
また、遅延カウンタＣＤＬＹが最小値（−ＴＤＬ）に到達したときには、遅延後空燃比フラグＦ１を「０（リーン）」に設定し（ステップ１５１８）、次に判定処理（ステップ１５１９）に進む。
【０２１２】
一方、ステップ１５１６において、ＣＤＬＹ＞−ＴＤＬ（すなわち、Ｎｏ）と判定されれば、ステップ１５１７、１５１８を実行せずに、ステップ１５１９に進む。
なお、最小値（−ＴＤＬ）は、上流側Ｏ２センサ１３Ａの出力値Ｖ１において、リッチからリーンへの変化があっても、リッチ状態であるという判定を保持するためのリーン遅延時間であって、負の値で定義される。
【０２１３】
ステップ１５１９においては、ステップ１５０４と同様に、遅延カウンタＣＤＬＹが最大値ＴＤＲ以上であるか否かを判定し、ＣＤＬＹ≧ＴＤＬ（すなわち、Ｙｅｓ）と判定されれば、遅延カウンタＣＤＬＹを最大値ＴＤＬに設定して（ステップ１５２０）、遅延カウンタＣＤＬＹを最大値ＴＤＲ以下の値にガードする。
また、遅延カウンタＣＤＬＹが最大値ＴＤＲに到達したときには、遅延後空燃比フラグＦ１を「１（リッチ）」に設定し（ステップ１５２１）、次の判定処理（ステップ１５２２）に進む。
【０２１４】
一方、ステップ１５１９において、ＣＤＬＹ＜ＴＤＬ（すなわち、Ｎｏ）と判定されれば、ステップ１５２０、１５２１を実行せずに、ステップ１５２２に進む。
なお、最大値ＴＤＲは、上流側Ｏ２センサ１３Ａの出力値Ｖ１において、リーンからリッチへの変化があっても、リーン状態であるという判定を保持するためのリッチ遅延時間であって、正の値で定義される。
【０２１５】
以下、ステップ１５２２〜１５２５において、スキップ量ＲＳＲ、ＲＳＬに基づくスキップ処理を行う。
まず、ステップ１５２２においては、遅延後空燃比フラグＦ１の符号が反転したか否かにより、遅延処理後の空燃比が反転したか否かを判定する。
ステップ１５２２において、空燃比が反転し、遅延後空燃比フラグＦ１の符号が反転（すなわち、Ｙｅｓ）と判定されれば、続いて、遅延後空燃比フラグＦ１の現在値が「０」であるか否かにより、リッチからリーンへの反転か、リーンからリッチへの反転かを判定する（ステップ１５２３）。
【０２１６】
ステップ１５２３において、リッチからリーンへの反転を示し、Ｆ１＝０（すなわち、Ｙｅｓ）と判定されれば、空燃比補正係数ＦＡＦをリッチスキップ量ＲＳＲだけ段階的に増大させて（ステップ１５２４）、次の判定処理（ステップ１５２９）に進む。
一方、ステップ１５２３において、リーンからリッチへの反転を示し、Ｆ１＝１（すなわち、Ｎｏ）と判定されれば、空燃比補正係数ＦＡＦをリーンスキップ量ＲＳＬだけ段階的に減少させて（ステップ１５２５）、ステップ１５２９に進む。
【０２１７】
一方、ステップ１５２２において、遅延後空燃比フラグＦ１の符号が非反転（すなわち、Ｎｏ）と判定されれば、以下の積分処理（ステップ１５２６〜１５２８）を行う。
まず、ステップ１５２３と同様に、遅延後空燃比フラグＦ１が「０（リーン）」であるか否かを判定し（ステップ１５２６）、Ｆ１＝０（リーン）（すなわち、Ｙｅｓ）と判定されれば、空燃比補正係数ＦＡＦをリッチ積分定数ＫＩＲだけ段階的に増大させて（ステップ１５２７）、ステップ１５２９に進む。
【０２１８】
一方、ステップ１５２６において、Ｆ１＝１（リッチ）（すなわち、Ｎｏ）と判定されれば、空燃比補正係数ＦＡＦをリーン積分定数ＫＩＬだけ段階的に減少させて（ステップ１５２８）、ステップ１５２９に進む。
なお、各積分定数ＫＩＲ、ＫＩＬは、各スキップ量ＲＳＲ、ＲＳＬに比べて、十分小さい値に設定されており、以下の式（３５）のように表される。
【０２１９】
ＫＩＲ（または、ＫＩＬ）＜ＲＳＲ（または、ＲＳＬ）  ・・・（３５）
【０２２０】
ステップ１５２７は、リーン状態（Ｆ１＝０）において燃料噴射量を徐々に増大させる処理であり、ステップ１５２８は、リッチ状態（Ｆ１＝１）において燃料噴射量を徐々に減少させる処理である。
【０２２１】
次に、ステップ１５２９において、ステップ１５２２〜１５２８で演算された空燃比補正係数ＦＡＦが最小値（たとえば、０．８）よりも小さいか否かを判定し、ＦＡＦ≧０．８（すなわち、Ｎｏ）と判定されれば、直ちに次の判定処理（ステップ１５３１）に進む。
一方、ステップ１５２９において、ＦＡＦ＜０．８（すなわち、Ｙｅｓ）と判定されれば、空燃比補正係数ＦＡＦを「０．８」に設定し（ステップ１５３０）、空燃比補正係数ＦＡＦを最小値「０．８」以上の値にガードして、ステップ１５３１に進む。
【０２２２】
次に、ステップ１５３１において、空燃比補正係数ＦＡＦが最大値（たとえば、１．２）よりも大きいか否かを判定し、ＦＡＦ≦１．２（すなわち、Ｎｏ）と判定されれば、図１６の処理ルーチンを直ちに終了する。
一方、ステップ１５３１において、ＦＡＦ＞１．２（すなわち、Ｙｅｓ）と判定されれば、空燃比補正係数ＦＡＦを「１．２」に設定し（ステップ１５３０）、空燃比補正係数ＦＡＦを最大値「１．２」以下の値にガードして、図１６の処理ルーチンを終了する。
【０２２３】
最終的に演算された空燃比補正係数ＦＡＦの値は、制御回路１０内のＲＡＭ１０５に格納される。
以上のステップ１５２９〜１５３２により、何らかの原因で空燃比補正係数ＦＡＦが大きくなり過ぎた場合や、小さくなり過ぎた場合でも、空燃比補正係数ＦＡＦが最小値（０．８）と最大値（１．２）との間の範囲内にガードされるので、エンジン１の空燃比がオーバリッチまたはオーバリーンになるのを防ぐことができる。
【０２２４】
図１７は図１６の動作を補足説明するためのタイミングチャートであり、上流側Ｏ２センサ１３Ａの出力値Ｖ１と、リッチ／リーン判定の比較結果と、遅延前空燃比フラグＦ０（遅延処理前の空燃比信号に相当）と、遅延カウンタＣＤＬＹと、遅延後空燃比フラグＦ１（遅延処理された空燃比信号に相当）と、空燃比補正係数ＦＡＦとの時間変化を、相互に関連させて示している。
【０２２５】
図１７において、上流側Ｏ２センサ１３Ａの出力値Ｖ１に基づき、リッチ／リーン判定の比較結果の空燃比信号が得られると、遅延前空燃比フラグＦ０（遅延処理前の空燃比信号）は、時刻ｔ１、ｔ３、ｔ５において、リッチ状態またはリーン状態に変化する。
【０２２６】
また、遅延カウンタＣＤＬＹは、遅延前空燃比フラグＦ０（遅延処理前の空燃比信号）のリッチ状態（時刻ｔ１〜時刻ｔ２）でカウントアップされ、リーン状態（時刻ｔ３〜時刻ｔ４）でカウントダウンされる。この結果、遅延後空燃比フラグＦ１（遅延処理された空燃比信号）が形成される。
【０２２７】
たとえば、時刻ｔ１において、比較結果の空燃比信号がリーンからリッチに反転しても、遅延後空燃比フラグＦ１（遅延処理された空燃比信号）は、リッチ遅延時間ＴＤＲだけリーンに保持された後の時刻ｔ２でリッチに変化する。
その後、時刻ｔ３において、比較結果の空燃比信号がリッチからリーンに変化しても、遅延後空燃比フラグＦ１（遅延処理後の空燃比信号）は、リーン遅延時間ＴＤＬだけリッチに保持された後の時刻ｔ４でリーンに変化する。
【０２２８】
しかし、リッチ遅延処理の開始後、比較結果の空燃比信号が時刻ｔ５、ｔ６、ｔ７のように、リッチ遅延時間ＴＤＲよりも短い期間内で反転しても、遅延カウンタＣＤＬＹがリッチ遅延時間ＴＤＲに到達するまでの遅延処理中（時刻ｔ５〜時刻ｔ８）では、遅延前空燃比フラグＦ０（遅延処理前の空燃比信号）が反転することはない。
【０２２９】
つまり、遅延前空燃比フラグＦ０（遅延処理前の空燃比信号）は、一時的な比較結果の変動に影響されないので、比較結果の空燃比信号に比べて安定となる。
したがって、図１７に示すように、遅延処理による安定した遅延前空燃比フラグＦ０（遅延処理前の空燃比信号）および遅延後空燃比フラグＦ１（遅延処理後の空燃比信号）に基づいて、安定した空燃比補正係数ＦＡＦを得ることができる。
【０２３０】
以下、燃料補正係数ＦＡＦに応じて、エンジン１に供給する燃料供給量Ｑｆｕｅｌは、前述の式（１３）と同様に、以下の式（３６）のように調整される。
【０２３１】
Ｑｆｕｅｌ１＝Ｑｆｕｅｌ０×ＦＡＦ  ・・・（３６）
【０２３２】
これにより、エンジン１の空燃比は、目標空燃比に制御される。
式（３６）において、Ｑｆｕｅｌ０は基本燃料量であり、前述の式（１４）と同様に、以下の式（３７）のように演算される。
【０２３３】
Ｑｆｕｅｌ０＝Ｑａｃｙｌ／目標空燃比  ・・・（３７）
【０２３４】
式（３７）において、Ｑａｃｙｌは、エアフローセンサ３により検出される吸入空気量Ｑａに基づいて演算されるエンジン１への供給空気量である。
目標空燃比は、図６に示すように、エンジン回転数、負荷の２次元マップに設定された空燃比に設定される。
【０２３５】
理論空燃比制御の場合には、目標空燃比を、第２の空燃比フィードバック制御手段１５０Ａにより演算される上流側目標平均空燃比ＡＦＡＶＥｏｂｊとして設定し、フィードフォワード的に反映させる。
これにより、目標値が変化した場合のフィードバック追従遅れを改善するとともに、燃料補正係数ＦＡＦを「１．０」の中心付近に維持することができる。
また、燃料補正係数ＦＡＦに基づき、第１の空燃比フィードバック制御手段１３０Ａに関連した構成要素の経時変化や生産バラツキを吸収するような学習制御が行われるため、フィードフォワード補正により燃料補正係数が安定している方が、学習制御の精度が向上する。
【０２３６】
また、吸入空気量Ｑａは、エアフローセンサ３を用いずに、吸気通路２内のスロットル弁の下流側に設定された圧力センサの出力およびエンジン回転速度、または、スロットル弁開度およびエンジン回転速度に基づいて演算してもよい。
【０２３７】
次に、図１８のフローチャートを参照しながら、第１の空燃比フィードバック制御手段１３０Ａ内の変換器１３１による演算処理について説明する。
図１８の変換器演算ルーチンは、第２の空燃比フィードバック制御手段１５０Ａにより演算される上流側目標平均空燃比ＡＦＡＶＥｏｂｊに応じて、第１の空燃比フィードバック制御器１３２における制御定数（スキップ量ＲＳＲ、ＲＳＬ、積分定数ＫＩＲ、ＫＩＬ、遅延時間ＴＤＲ、ＴＤＬ、比較電圧ＶＲ１）を設定するための処理手順を示している。
図１８の演算ルーチンは、所定時間（たとえば、５ｍｓ）ごとに実行される。
【０２３８】
図１８において、まず、変換器１３１は、上流側目標平均空燃比ＡＦＡＶＥｏｂｊに応じて、１次元マップによりスキップ量ＲＳＲを演算する（ステップ１７０１）。
このとき、スキップ量ＲＳＲの設定値は、後述するように、あらかじめ机上計算または実験に基づいて設定されており、入力値に応じて対応した設定値（マップ検索結果）が出力されるようになっている。
【０２３９】
また、スキップ量ＲＳＲの１次元マップは、運転条件ごとに複数個設けられており、運転条件の変化に応じて、１次元マップを切り替えてマップ検索が行われる。たとえば、変換器１３１は、所定のエンジン回転数、負荷、冷却水温ＴＨＷで区分けされた運転ゾーンごとに、１次元マップを保持している。
また、必ずしも１次元マップでなくてもよく、入力値と出力値との関係を一義的に表す手段（たとえば、近似式）であってもよく、さらに多くの入力値に対応した、高次元マップまたは高次関数であってもよい。
【０２４０】
図１８に戻り、以下、ステップ１７０１と同様に、上流側目標平均空燃比ＡＦＡＶＥｏｂｊに応じてスキップ量ＲＳＬを演算し（ステップ１７０２）、上流側目標平均空燃比ＡＦＡＶＥｏｂｊに応じて積分定数ＫＩＲを演算し（ステップ１７０３）、上流側目標平均空燃比ＡＦＡＶＥｏｂｊに応じて積分定数ＫＩＬを演算し（ステップ１７０４）、上流側目標平均空燃比ＡＦＡＶＥｏｂｊに応じて遅延時間ＴＤＲを演算し（ステップ１７０５）、上流側目標平均空燃比ＡＦＡＶＥｏｂｊに応じて遅延時間ＴＤＬを演算し（ステップ１７０６）、上流側目標平均空燃比ＡＦＡＶＥｏｂｊに応じて比較電圧ＶＲ１を演算して（ステップ１７０７）、図１８の演算ルーチンを終了する。
【０２４１】
この結果、上流側目標平均空燃比ＡＦＡＶＥｏｂｊに応じた制御定数として、スキップ量ＲＳＲ、ＲＳＬ、積分定数ＫＩＲ、ＫＩＬ、遅延時間ＴＤＲ、ＴＤＬ、比較電圧ＶＲ１が演算される。
【０２４２】
以上のように、この発明の実施の形態２に係る内燃機関の空燃比制御装置は、触媒１２の上流側に設けられて上流側排出ガス中の空燃比を検出する上流側空燃比センサ１３Ａと、触媒１２の下流側に設けられて下流側排出ガス中の空燃比を検出する下流側空燃比センサ１５と、第１の空燃比フィードバック制御手段１３０Ａと、第２の空燃比フィードバック制御手段１５０Ａとを備えている。
【０２４３】
第１の空燃比フィードバック制御手段１３０Ａは、上流側排出ガス中の空燃比をリッチ方向とリーン方向に周期的に振動させるとともに、振動させている空燃比の平均値と上流側目標平均空燃比ＡＦＡＶＥｏｂｊとが一致するように、上流側空燃比センサ１３Ａの検出空燃比および上流側目標平均空燃比ＡＦＡＶＥｏｂｊに応じてエンジン１（内燃機関）への燃料の供給量を調節する。
【０２４４】
第２の空燃比フィードバック制御手段１５０Ａは、下流側空燃比センサ１５の検出空燃比と下流側目標空燃比とが一致するように、下流側空燃比センサ１５の検出空燃比と下流側目標空燃比との空燃比偏差に応じて、少なくとも比例演算および積分演算を用いて上流側目標空燃比を操作する。
【０２４５】
また、第２の空燃比フィードバック制御手段１５０Ａは、排出ガス流量ｑａが増加するほど、空燃比偏差に対する積分演算の変化速度が速くなるように、積分演算の積分ゲイン（第２の積分ゲインＫｉ２）を大きく設定するか、または積分演算の更新周期ΔＴを小さく設定するとともに、比例演算の比例ゲイン（第２の比例ゲインＫｐ２）を、排出ガス流量ｑａの変化に対して変化しないように設定する。
【０２４６】
また、第１の空燃比フィードバック制御手段１３０Ａは、上流側目標平均空燃比ＡＦＡＶＥｏｂｊに応じて第１の空燃比フィードバック制御手段１３０Ａの制御定数を設定する。
さらに、上流側目標平均空燃比ＡＦＡＶＥｏｂｊに応じて設定される制御定数は、遅延時間、スキップ量、積分ゲインおよび比較電圧のうちの、いずれか２つ以上のパラメータに対する値を含む。
【０２４７】
制御定数の各設定値は、触媒１２の上流側での実際の上流側平均空燃比が、第１の空燃比フィードバック制御手段１３０Ａに入力される上流側目標平均空燃比ＡＦＡＶＥｏｂｊと一致するように、あらかじめ机上計算または実験値に基づいて設定されている。また、運転条件に応じて制御定数の設定値を変化させることにより、運転条件に関わらず目標平均空燃比と実際の平均空燃比とを一致するように設定することができる。
【０２４８】
なお、前述の実施の形態１で式（１７）に関連して説明したように、第２の空燃比フィードバック制御手段１３０Ａの積分演算による操作量をΣ（Ｋｉ２×ΔＶ２）としたが、出力偏差ΔＶ２に対する積分演算の変化速度は排出ガス流量ｑａに比例するので、第２の空燃比フィードバック制御手段１３０Ａの積分演算による操作量をＫｉ２×Σ（ΔＶ２）としても、同様の効果を奏する。
【０２４９】
また、上記実施の形態２において、λ型Ｏ２センサからなる上流側Ｏ２センサ１３Ａを用いたが、リニア型Ｏ２センサからなる上流側Ｏ２センサ１３Ａを用いてもよい。この場合、図１４と同様の第１の空燃比フィードバック制御手段１３０Ａを用いて、上流側空燃比を振動させながら、平均空燃比を制御することができるので、同様の効果を奏する。
【０２５０】
また、リニア型Ｏ２センサからなる上流側Ｏ２センサ１３Ａを用いて、上流側空燃比を振動させて平均空燃比を制御する場合には、目標空燃比への追従性の高い制御が可能となるので、目標空燃比をリッチ方向／リーン方向に周期的に振動させることにより、上流側空燃比を振動させて、振動している目標空燃比の平均値を下流側Ｏ２センサ１５に基づき制御するように構成しても同様の効果を奏する。
【０２５１】
また、１つの触媒１２が取り付けられた内燃機関を例にとって説明したが、複数個の触媒が直列または並列に配置されて、各触媒の下流側にＯ２センサが配置された構成の内燃機関においても、各触媒の下流側に配置された下流側Ｏ２センサを用いて、上流側空燃比を制御することができ、同様の効果を奏する。
【０２５２】
また、空燃比制御に用いる下流側Ｏ２センサ１５を、複数の触媒の下流側に位置する下流側Ｏ２センサとして構成した場合には、第２の比例ゲインＫｐ２および積分ゲインＫｉ２を、下流側Ｏ２センサに応じて切り替えるとともに、第２の比例ゲインＫｐ２を排出ガス流量ｑａの変化に対して変化しないように設定し、第２の積分ゲインＫｉ２を排出ガス流量ｑａに比例するように設定する。これにより、制御する触媒が変化しても安定性の高いフィードバック性能を維持することができ、同様の効果を奏する。
【０２５３】
また、空燃比フィードバック制御の目標値を目標空燃比として説明したが、空燃比ではなく、空燃比と相関性を有する任意のパラメータ（空気過剰率、電圧など）を用いた制御系であっても適用することができる。この場合、第１または第２の空燃比フィードバック制御において、第２の空燃比フィードバック制御の第２の比例ゲインを排出ガス流量ｑａの変化に対して変化させずに、第２の積分ゲインを排出ガス流量ｑａに比例するように設定することにより、同様の効果を奏する。
【０２５４】
また、下流側Ｏ２センサ１５は、上流の触媒１２の浄化状態を検出できるセンサであれば、リニア空燃比センサ、ＮＯｘセンサ、ＨＣセンサ、ＣＯセンサなどのいずれを用いても、触媒１２の浄化状態を制御できるので、同様の効果を奏する。
【０２５５】
さらに、下流側Ｏ２センサ１５を用いた第２の空燃比フィードバック制御手段によるフィードバック制御の積分演算の積分ゲイン（第２の積分ゲインＫｉ２）を、排出ガス排出ガス流量ｑａに比例するように設定するとともに、比例演算の比例ゲイン（第２の比例ゲインＫｐ２）を排出ガス流量ｑａの変化に対して変化しないように設定することにより、触媒１２の酸素ストレージ作用の遅れに適した安定性および応答性の高い制御挙動を実現することができ、触媒１２の浄化状態を常に良好に保つことができる。
【図面の簡単な説明】
【０２５６】
【図１】この発明の実施の形態１に係る内燃機関の空燃比制御装置の要部構成を示す機能ブロックである。
【図２】この発明の実施の形態１に係る内燃機関の空燃比制御装置を示す全体構成図である。
【図３】一般的なリニア型Ｏ２センサの出力特性を示す説明図である。
【図４】一般的なλ型Ｏ２センサの出力特性を示す説明図である。
【図５】この発明の実施の形態１による第１の空燃比フィードバック制御動作を示すフローチャートである。
【図６】一般的な運転条件に応じて可変設定される目標空燃比を示す説明図である。
【図７】この発明の実施の形態１による第２の空燃比フィードバック制御動作を示すフローチャートである。
【図８】この発明の実施の形態１による第２の積分ゲインまたは比例ゲインの１次元マップの具体例を示す説明図である。
【図９】この発明の実施の形態１による第２の積分ゲインの１次元マップの具体例を示す説明図である。
【図１０】この発明の実施の形態１による上流側目標空燃比の強制変動時の時間変化を示すタイミングチャートである。
【図１１】この発明の実施の形態１による排出ガス小流量時の第２の空燃比フィードバック制御挙動を説明するためのタイミングチャートである。
【図１２】この発明の実施の形態１による排出ガス中流量時の第２の空燃比フィードバック制御挙動を説明するためのタイミングチャートである。
【図１３】この発明の実施の形態１による排出ガス大流量時の第２の空燃比フィードバック制御挙動を説明するためのタイミングチャートである。
【図１４】この発明の実施の形態２に係る内燃機関の空燃比制御装置の要部構成を示す機能ブロックである。
【図１５】この発明の実施の形態２の制御挙動を説明するためのタイミングチャートである。
【図１６】この発明の実施の形態２による第１の空燃比フィードバック制御動作を示すフローチャートである。
【図１７】この発明の実施の形態２による第１の空燃比フィードバック制御動作を補足説明するためのタイミングチャートである。
【図１８】この発明の実施の形態２による制御定数の演算動作を示すフローチャートである。
【図１９】一般的な下流側Ｏ２センサ出力値の時間変化および安定限界を示すタイミングチャートである。
【図２０】一般的な排出ガス小流量時の空燃比フィードバック制御挙動を説明するためのタイミングチャートである。
【図２１】一般的な排出ガス中流量時の空燃比フィードバック制御挙動を説明するためのタイミングチャートである。
【図２２】一般的な排出ガス大流量時の空燃比フィードバック制御挙動を説明するためのタイミングチャートである。
【符号の説明】
【０２５７】
１  エンジン（内燃機関）、２  吸気通路、３  エアフローセンサ、５、６  クランク角センサ、７  燃料噴射弁、９  水温センサ、１０  制御回路、１１  排気マニホールド、１２  触媒、１３、１３Ａ  上流側Ｏ２センサ（上流側空燃比センサ）、１４  排気管（排気系）、１５  下流側Ｏ２センサ（下流側空燃比センサ）、１０１  Ａ／Ｄ変換器、１０２  入出力インターフェイス、１０３  ＣＰＵ、１３０、１３０Ａ  第１の空燃比フィードバック制御手段、１５０  第２の空燃比フィードバック制御手段、ＡＦｏｂｊ  上流側目標空燃比、ＡＦＡＶＥｏｂｊ  上流側目標平均空燃比、ｑａ  排出ガス流量、Ｑａ  吸入空気量、ＴＨＷ  冷却水温、Ｖ１、Ｖ２  出力値。
【図１】
2008298044.tif 000003
【図２】
2008298044.tif 000004
【図３】
2008298044.tif 000005
【図４】
2008298044.tif 000006
【図５】
2008298044.tif 000007
【図６】
2008298044.tif 000008
【図７】
2008298044.tif 000009
【図８】
2008298044.tif 000010
【図９】
2008298044.tif 000011
【図１０】
2008298044.tif 000012
【図１１】
2008298044.tif 000013
【図１２】
2008298044.tif 000014
【図１３】
2008298044.tif 000015
【図１４】
2008298044.tif 000016
【図１５】
2008298044.tif 000017
【図１６】
2008298044.tif 000018
【図１７】
2008298044.tif 000019
【図１８】
2008298044.tif 000020
【図１９】
2008298044.tif 000021
【図２０】
2008298044.tif 000022
【図２１】
2008298044.tif 000023
【図２２】
2008298044.tif 000024