(57)【要約】本発明による内燃機関の制御装置の実施形態（制御装置）は、三元触媒４３の下流に配設された下流側空燃比センサ６７の出力値Voxsに基づいて、リッチ要求とリーン要求との何れの空燃比要求が発生しているかを判定する。制御装置は、リッチ要求が発生している場合には上流側目標空燃比abyfrを目標リッチ空燃比afRichに設定し、リーン要求が発生している場合には上流側目標空燃比abyfrを目標リーン空燃比afLeanに設定する。目標リッチ空燃比afRich及び目標リーン空燃比afLeanはそれぞれ吸入空気量Ｇａに応じて変化させられる。更に、制御装置は、目標リッチ空燃比afRichと目標リーン空燃比afLeanとの差の大きさ（空燃比振幅ΔＡＦ、｜afLean−afRich｜）が大きくなるほど、蒸発燃料のパージ量を大きくする。
2012120676.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関の排気通路に配設された触媒と、
前記排気通路の前記触媒の下流側に配設された下流側空燃比センサと、
前記触媒に流入するガスの空燃比の目標値である上流側目標空燃比を前記下流側空燃比センサの出力値に基づいて目標リッチ空燃比と目標リーン空燃比とに交互に設定する目標空燃比設定手段と、
前記機関に対して燃料を噴射する燃料噴射弁と、
前記燃料噴射弁から噴射される燃料の量である燃料噴射量を前記上流側目標空燃比に応じて決定するとともに同決定した燃料噴射量の燃料を前記燃料噴射弁から噴射させる燃料噴射制御手段と、
前記燃料噴射弁に供給される燃料を貯蔵する燃料タンク内に発生した蒸発燃料を前記機関の吸気通路に導入する蒸発燃料パージ手段と、
前記蒸発燃料パージ手段により前記吸気通路に導入される蒸発燃料の量であるパージ量を制御する蒸発燃料パージ量制御手段と、
を備えた内燃機関の制御装置において、
前記目標空燃比設定手段は、
前記機関の運転状態を表す運転状態指標量が第１の値であるとき、前記目標リッチ空燃比を理論空燃比よりも小さい第１目標リッチ空燃比に設定するとともに前記目標リーン空燃比を理論空燃比よりも大きい第１目標リーン空燃比に設定し、且つ、
前記運転状態指標量が前記第１の値と異なる第２の値であるとき、前記目標リッチ空燃比を前記第１目標リッチ空燃比よりも小さい第２目標リッチ空燃比に設定するとともに前記目標リーン空燃比を前記第１目標リーン空燃比よりも大きい第２目標リーン空燃比に設定するように構成され、
前記蒸発燃料パージ量制御手段は、
前記目標リーン空燃比と前記目標リッチ空燃比との差の大きさが大きいほど前記パージ量を増大するように構成された制御装置。
【請求項２】
請求項１に記載の内燃機関の制御装置において、
前記蒸発燃料パージ手段は、
前記燃料タンクと前記吸気通路とを接続するパージ通路に介装されるとともに前記燃料タンク内に発生した前記蒸発燃料を吸着するキャニスタを含み、
前記目標空燃比設定手段は、
前記運転状態指標量として前記キャニスタに吸着されている前記蒸発燃料の量に応じた値である蒸発燃料吸着推定量を取得するとともに、前記蒸発燃料吸着推定量が所定量未満であるとき前記運転状態指標量が前記第１の値であると判定し、且つ、前記蒸発燃料吸着推定量が前記所定量以上であるとき前記運転状態指標量が前記第２の値であると判定するように構成された制御装置。
【請求項３】
内燃機関の排気通路に配設された触媒と、
前記排気通路の前記触媒の下流側に配設された下流側空燃比センサと、
前記触媒に流入するガスの空燃比の目標値である上流側目標空燃比を前記下流側空燃比センサの出力値に基づいて目標リッチ空燃比と目標リーン空燃比とに交互に設定する目標空燃比設定手段と、
前記機関に対して燃料を噴射する燃料噴射弁と、
前記燃料噴射弁から噴射される燃料の量である燃料噴射量を前記上流側目標空燃比に応じて決定するとともに同決定した燃料噴射量の燃料を前記燃料噴射弁から噴射させる燃料噴射制御手段と、
前記燃料噴射弁に供給される燃料を貯蔵する燃料タンク内に発生した蒸発燃料を前記機関の吸気通路に導入する蒸発燃料パージ手段と、
前記蒸発燃料パージ手段により前記吸気通路に導入される蒸発燃料の量であるパージ量を制御する蒸発燃料パージ量制御手段と、
を備えた内燃機関の制御装置において、
前記蒸発燃料パージ手段は、
前記燃料タンクと前記吸気通路とを接続するパージ通路に介装されるとともに前記燃料タンク内に発生した前記蒸発燃料を吸着するキャニスタを含み、
前記目標空燃比設定手段は、
前記キャニスタに吸着されている前記蒸発燃料の量に応じた値である蒸発燃料吸着推定量を取得するとともに、
前記蒸発燃料吸着推定量が所定量未満であるとき前記目標リッチ空燃比を理論空燃比よりも小さい第１目標リッチ空燃比に設定するとともに前記目標リーン空燃比を理論空燃比よりも大きい第１目標リーン空燃比に設定し、且つ、
前記蒸発燃料吸着推定量が前記所定量以上であるとき前記目標リッチ空燃比を前記第１目標リッチ空燃比よりも小さい第２目標リッチ空燃比に設定するとともに前記目標リーン空燃比を前記第１目標リーン空燃比よりも大きい第２目標リーン空燃比に設定するように構成され、
前記蒸発燃料パージ量制御手段は、
前記目標リーン空燃比と前記目標リッチ空燃比との差の大きさが大きいほど前記パージ量を増大するように構成された制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、排気通路に配設された三元触媒と、燃料タンク内に発生した蒸発燃料を吸気通路に導入する蒸発燃料パージ手段と、燃料を供給する燃料噴射弁と、を備える内燃機関の制御装置に関する。
【背景技術】
【０００２】
従来より、内燃機関から排出される排ガスを浄化するために同機関の排気通路に三元触媒が配設されている。三元触媒は、周知のように、酸素吸蔵機能を有する。即ち、三元触媒は、その三元触媒に流入するガス（触媒流入ガス）に過剰の酸素が含まれているとき、その酸素を吸蔵するとともにＮＯｘを浄化する。三元触媒は、触媒流入ガスに過剰な未燃物が含まれているとき、吸蔵している酸素を放出してその未燃物を浄化する。以下、三元触媒は単に「触媒」とも称呼される。【０００３】
従来の空燃比制御装置（従来装置）は、機関の排気通路であって触媒の上流及び下流にそれぞれ配設された上流側空燃比センサ及び下流側空燃比センサを備える。従来装置は、上流側空燃比センサの出力値により表される空燃比（検出上流側空燃比）を上流側目標空燃比に一致させるように機関に供給される混合気の空燃比（機関の空燃比）を制御する。この制御は「メインフィードバック制御」とも称呼される。【０００４】
更に、従来装置は、下流側空燃比センサの出力値が「理論空燃比に対応する目標値」に一致するようにサブフィードバック量を算出し、そのサブフィードバック量により上流側目標空燃比を実質的に変更することにより、機関の空燃比を制御する（例えば、特許文献１を参照。）。サブフィードバック量を用いた空燃比制御は「サブフィードバック制御」とも称呼される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−１６２１３９号公報
【発明の概要】
【０００６】
ところで、出願人は、特に、「触媒の酸素吸蔵能力が低い場合（例えば、触媒が劣化した場合、或いは、触媒の容量が小さい場合等であって、最大酸素吸蔵量が小さい場合）」であってもエミッションを良好に維持することができる空燃比制御装置を検討している。例えば、そのような検討中の空燃比制御装置の一つは、触媒の状態（酸素吸蔵状態）を下流側空燃比センサの出力値に基づいて遅滞なく判定し、その判定結果に基づいて触媒流入ガスの空燃比が理論空燃比以外の空燃比に一致するように機関の空燃比を制御する。
【０００７】
より具体的に述べると、そのような制御装置は、下流側空燃比センサの出力値Voxsに基づいて触媒の状態が酸素過剰状態（リーン状態）になったと判定したとき、上流側目標空燃比（触媒流入ガスの目標空燃比）を「理論空燃比よりも小さい目標リッチ空燃比」に設定する。更に、この制御装置は、下流側空燃比センサの出力値Voxsに基づいて触媒の状態が酸素不足状態（リッチ状態）となったと判定したとき、上流側目標空燃比を「理論空燃比よりも大きい目標リーン空燃比」に設定する。
【０００８】
加えて、この制御装置は、機関の空燃比の変化が急激であるが故に機関の発生トルクが大きく変動し、それによって機関が振動してドライバビリティが悪化するような状態が発生しないように、目標リッチ空燃比及び目標リーン空燃比を機関の運転状態に応じて変更している。即ち、例えば、ドライバビリティが悪化し易い運転状態において、目標リッチ空燃比及び目標リーン空燃比はそれぞれ理論空燃比に近づけられる。この結果、目標リーン空燃比と目標リッチ空燃比との差の大きさは小さくなる。更に、制御装置は、ドライバビリティが悪化しない場合であっても、他の観点から目標リッチ空燃比及び目標リーン空燃比を変更することがある。
【０００９】
一方、機関には、蒸発燃料パージ手段が採用される。蒸発燃料パージ手段は、燃料タンク内に発生した蒸発燃料をキャニスタに吸着させ、所定の条件が成立するとキャニスタに吸着された蒸発燃料を機関の吸気通路に導入する。これにより、蒸発燃料は機関の燃焼室にて燃焼させられてから大気中に排出される。蒸発燃料を機関の吸気通路に導入することは蒸発燃料のパージ又はパージと称呼される。パージは、機関の空燃比を変化させる要因の一つである。通常、制御装置は、上流側空燃比センサの出力値に基づいてパージされる蒸発燃料の濃度を推定し、推定した蒸発燃料の濃度に応じて燃料噴射量を調整することにより、「蒸発燃料のパージにより機関の空燃比が大きく変動すること」を回避している。しかしながら、蒸発燃料の濃度を常に高精度に推定することは容易ではない。それ故、蒸発燃料の濃度の推定精度が良好でない場合にパージを開始すると、機関の空燃比が大きく乱れる場合が発生し、その結果、エミッションが悪化する虞がある。
【００１０】
本発明は、上述した課題に対処するために為されたものである。即ち、本発明の目的の一つは、蒸発燃料のパージを行った場合にエミッションが悪化する程度を小さくすることができる内燃機関の制御装置を提供することにある。
【００１１】
本発明による内燃機関の制御装置（本発明装置）は、
前記機関の排気通路に配設された触媒と、
前記排気通路の前記触媒の下流側に配設された下流側空燃比センサと、
「前記触媒に流入するガスの空燃比の目標値」である上流側目標空燃比を、前記下流側空燃比センサの出力値に基づいて、目標リッチ空燃比と目標リーン空燃比とに交互に設定する目標空燃比設定手段と、
前記機関に対して燃料を噴射する燃料噴射弁と、
「前記燃料噴射弁から噴射される燃料の量である燃料噴射量」を前記上流側目標空燃比に応じて決定するとともに同決定した燃料噴射量の燃料を前記燃料噴射弁から噴射させる燃料噴射制御手段と、
前記燃料噴射弁に供給される燃料を貯蔵する燃料タンク内に発生した蒸発燃料を前記機関の吸気通路に導入する蒸発燃料パージ手段と、
前記蒸発燃料パージ手段により前記吸気通路に導入される蒸発燃料の量であるパージ量を制御する蒸発燃料パージ量制御手段と、
を備える。
【００１２】
更に、本発明装置において、
前記目標空燃比設定手段は、
前記機関の運転状態を表す運転状態指標量が第１の値であるとき、前記目標リッチ空燃比を理論空燃比よりも小さい第１目標リッチ空燃比に設定するとともに前記目標リーン空燃比を理論空燃比よりも大きい第１目標リーン空燃比に設定し、且つ
前記機関の運転状態を表す運転状態指標量が前記第１の値と異なる第２の値であるとき、前記目標リッチ空燃比を前記第１目標リッチ空燃比よりも小さい第２目標リッチ空燃比に設定するとともに前記目標リーン空燃比を前記第１目標リーン空燃比よりも大きい第２目標リーン空燃比に設定するように構成されている。
【００１３】
この場合、前記運転状態指標量は、例えば、機関の吸入空気量（機関の負荷に応じた値）、機関回転速度、触媒の温度（活性度合い）、及び、後述する「キャニスタに吸着されている蒸発燃料の量に応じた値（例えば、蒸発燃料ガス濃度学習値）」等である。
【００１４】
加えて、本発明装置の前記蒸発燃料パージ量制御手段は、
前記目標リーン空燃比と前記目標リッチ空燃比との差の大きさが大きいほど前記パージ量を増大するように構成されている。
換言すると、前記蒸発燃料パージ量制御手段は、前記運転状態指標量が前記第１の値であるときのパージ量よりも、運転状態指標量が前記第２の値であるときのパージ量が大きくなるように、パージ量を制御する。
【００１５】
本発明装置においては、前記目標リーン空燃比と前記目標リッチ空燃比との差の大きさが大きくなるほど、前記目標リッチ空燃比はより小さくなり、前記目標リーン空燃比はより大きくなる。
【００１６】
従って、本発明装置においては、目標リーン空燃比と目標リッチ空燃比との差の大きさが大きいほど、触媒の状態が酸素過剰状態であると判定されたときには「より小さい空燃比の排ガス」が触媒に流入する。よって、その排ガス中の多量の未燃物により触媒の酸素吸蔵量を速やかに減少させることができる。
【００１７】
更に、本発明装置においては、目標リーン空燃比と目標リッチ空燃比との差の大きさが大きいほど、触媒の状態が酸素不足状態であると判定されたときには「より大きい空燃比の排ガス」が触媒に流入する。よって、その排ガス中の多量の酸素により触媒の酸素吸蔵量を速やかに増大させることができる。
【００１８】
従って、本発明装置においては、多量の蒸発燃料がパージされることによって触媒流入ガスの空燃比が大きく乱れたとしても、触媒の酸素吸蔵量が「最大酸素吸蔵量Ｃmax」又は「０」に維持されている期間（即ち、エミッションが悪化する期間）は短くなる。この結果、本発明装置は、エミッションが悪化する可能性を低く維持しながら、蒸発燃料のパージを行うことができる。
【００１９】
本発明装置の一態様において、前記蒸発燃料パージ手段は、
前記燃料タンクと前記吸気通路とを接続するパージ通路に介装されるとともに前記燃料タンク内に発生した前記蒸発燃料を吸着するキャニスタを含む。
【００２０】
キャニスタは蒸発燃料を吸着する活性炭等の吸着剤を保持している。従って、キャニスタが吸着することができる蒸発燃料の量には上限（キャニスタ飽和蒸発燃料量）がある。このため、キャニスタに吸着された蒸発燃料の量がキャニスタ飽和蒸発燃料量に近づくほど、キャニスタが更に蒸発燃料を吸着できる量は小さくなるから、パージ量を増大することによりキャニスタが更に蒸発燃料を吸着できる量を増大させておくことが望ましい。
【００２１】
そこで、前記目標空燃比設定手段は、前記キャニスタに吸着されている前記蒸発燃料の量に応じた値である蒸発燃料吸着推定量を前記運転状態指標量として取得する。
更に、前記目標空燃比設定手段は、前記蒸発燃料吸着推定量が所定量未満であるとき前記運転状態指標量が前記第１の値であると判定する。これにより、前記目標リッチ空燃比は前記第１目標リッチ空燃比に設定され、前記目標リーン空燃比は前記第１目標リーン空燃比に設定される。
加えて、前記目標空燃比設定手段は、前記蒸発燃料吸着推定量が前記所定量以上であるとき前記運転状態指標量が前記第２の値であると判定する。これにより、前記目標リッチ空燃比は前記第２目標リッチ空燃比に設定され、前記目標リーン空燃比は前記第２目標リーン空燃比に設定される。
【００２２】
従って、上記構成によれば、キャニスタに吸着された蒸発燃料の量（蒸発燃料吸着推定量）がキャニスタ飽和蒸発燃料量に近づくほどパージ量を増大することができるので、キャニスタに「ある程度の量の蒸発燃料」を吸着することができる余力を与えておくことができる。これにより、仮に燃料タンク内に蒸発燃料が急激且つ多量に発生した場合であっても、その蒸発燃料をキャニスタに吸着させることができる可能性が高まる。その結果、蒸発燃料が大気中に排出されてしまう可能性を低減することができる。
【００２３】
本発明装置の他の態様は、
内燃機関の排気通路に配設された触媒と、
前記排気通路の前記触媒の下流側に配設された下流側空燃比センサと、
前記触媒に流入するガスの空燃比の目標値である上流側目標空燃比を前記下流側空燃比センサの出力値に基づいて目標リッチ空燃比と目標リーン空燃比とに交互に設定する目標空燃比設定手段と、
前記機関に対して燃料を噴射する燃料噴射弁と、
前記燃料噴射弁から噴射される燃料の量である燃料噴射量を前記上流側目標空燃比に応じて決定するとともに同決定した燃料噴射量の燃料を前記燃料噴射弁から噴射させる燃料噴射制御手段と、
前記燃料噴射弁に供給される燃料を貯蔵する燃料タンク内に発生した蒸発燃料を前記機関の吸気通路に導入する蒸発燃料パージ手段と、
前記蒸発燃料パージ手段により前記吸気通路に導入される蒸発燃料の量であるパージ量を制御する蒸発燃料パージ量制御手段と、
を備え、
前記蒸発燃料パージ手段は、
前記燃料タンクと前記吸気通路とを接続するパージ通路に介装されるとともに前記燃料タンク内に発生した前記蒸発燃料を吸着するキャニスタを含み、
前記目標空燃比設定手段は、
前記キャニスタに吸着されている前記蒸発燃料の量を示す量である蒸発燃料吸着推定量を取得するとともに、
前記蒸発燃料吸着推定量が所定量未満であるとき前記目標リッチ空燃比を理論空燃比よりも小さい第１目標リッチ空燃比に設定するとともに前記目標リーン空燃比を理論空燃比よりも大きい第１目標リーン空燃比に設定し、且つ、
前記蒸発燃料吸着推定量が前記所定量以上であるとき前記目標リッチ空燃比を前記第１目標リッチ空燃比よりも小さい第２目標リッチ空燃比に設定するとともに前記目標リーン空燃比を前記第１目標リーン空燃比よりも大きい第２目標リーン空燃比に設定するように構成され、
前記蒸発燃料パージ量制御手段は、
前記目標リーン空燃比と前記目標リッチ空燃比との差の大きさが大きいほど前記パージ量を増大するように構成される。
【００２４】
この態様によれば、蒸発燃料吸着推定量が所定量以上となった場合、蒸発燃料吸着推定量が所定量未満である場合と比較して、目標リッチ空燃比がより小さい空燃比（第２目標リッチ空燃比）に設定され且つ目標リーン空燃比がより大きい空燃比（第２目標リーン空燃比）に設定される。この場合、前記目標リーン空燃比と前記目標リッチ空燃比との差の大きさが大きくなるから、前記パージ量が増大させられる。
【００２５】
従って、キャニスタに吸着された蒸発燃料の量（蒸発燃料吸着推定量）がキャニスタ飽和蒸発燃料量に近づくほど、パージ量を増大することができる。よって、キャニスタに「ある程度の量の蒸発燃料」を吸着することができる余力を与えておくことができる。これにより、仮に燃料タンク内に蒸発燃料が急激且つ多量に発生した場合であっても、その蒸発燃料をキャニスタに吸着させることができる可能性が高まる。その結果、蒸発燃料が大気中に排出されてしまう可能性を低減することができる。更に、パージ量が大きくなるほど、前記目標リーン空燃比と前記目標リッチ空燃比との差の大きさが大きくなるので、触媒流入ガスの空燃比の変化速度の大きさがより大きくなる。従って、パージによってエミッションが悪化してしまう可能性を低減することができる。
【００２６】
本発明装置の他の目的、他の特徴及び付随する利点は、以下の図面を参照しつつ記述される本発明の各実施形態についての説明から容易に理解されるであろう。
【図面の簡単な説明】
【００２７】
【図１】図１は、本発明の各実施形態に係る制御装置が適用される内燃機関の概略平面図である。
【図２】図２は、図１に示した触媒に流入するガスの空燃比と図１に示した上流側空燃比センサの出力値との関係を示したグラフである。
【図３】図３は、図１に示した触媒から流出するガスの空燃比と図１に示した下流側空燃比センサの出力値との関係を示したグラフである。
【図４】図４は、上流側目標空燃比及び触媒の酸素吸蔵量の変化の様子を示したタイムチャートである。
【図５】図５は、本発明の第１実施形態に係る制御装置（第１制御装置）のＣＰＵが実行するルーチンを示したフローチャートである。
【図６】図６は、第１制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図７】図７は、第１制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図８】図８は、第１制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図９】図９は、第１制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図１０】図１０は、第１制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図１１】図１１は、第１制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図１２】図１２は、本発明の第２実施形態に係る制御装置（第２制御装置）のＣＰＵが実行するルーチンを示したフローチャートである。
【発明を実施するための形態】
【００２８】
以下、本発明の各実施形態に係る内燃機関の制御装置（以下、単に「制御装置」とも称呼する。）について図面を参照しながら説明する。この制御装置は、内燃機関に供給される混合気の空燃比（機関の空燃比）を制御する空燃比制御装置の一部であり、更に、燃料噴射量を制御する燃料噴射量制御装置及び蒸発燃料のパージ量を制御する蒸発燃料パージ量制御装置の一部でもある。
【００２９】
＜第１実施形態＞
（構成）
図１は、第１実施形態に係る制御装置（以下、「第１制御装置」とも称呼する。）を、４サイクル・火花点火式・多気筒（直列４気筒）・内燃機関１０に適用したシステムの概略構成を示している。
【００３０】
内燃機関１０は、機関本体部２０と、吸気系統３０と、排気系統４０と、蒸発燃料供給系統５０と、を含む。
【００３１】
機関本体部２０は、シリンダブロック部及びシリンダヘッド部を含む。機関本体部２０は、複数の気筒（燃焼室）２１を備えている。各気筒は、図示しない「吸気ポート及び排気ポート」と連通している。吸気ポートと燃焼室２１との連通部は図示しない吸気弁により開閉される。排気ポートと燃焼室２１との連通部は図示しない排気弁により開閉される。各燃焼室２１には図示しない点火プラグが配設されている。
【００３２】
吸気系統３０は、インテークマニホールド３１、吸気管３２、複数の燃料噴射弁３３、及び、スロットル弁３４を備えている。
【００３３】
インテークマニホールド３１は、複数の枝部３１ａとサージタンク３１ｂとを備えている。複数の枝部３１ａのそれぞれの一端は、複数の吸気ポートのそれぞれに接続されている。複数の枝部３１ａの他端はサージタンク３１ｂに接続されている。
【００３４】
吸気管３２の一端はサージタンク３１ｂに接続されている。吸気管３２の他端には図示しないエアフィルタが配設されている。
【００３５】
燃料噴射弁３３は、一つの気筒（燃焼室）２１に対して一つずつ配設されている。燃料噴射弁３３は吸気ポートに設けられている。即ち、複数の気筒のそれぞれは、他の気筒とは独立して燃料供給を行う燃料噴射弁３３を備えている。燃料噴射弁３３は、噴射指示信号に応答し、正常である場合に「その噴射指示信号に含まれる指示燃料噴射量の燃料」を吸気ポート（従って、燃料噴射弁３３に対応する気筒２１）内に噴射するようになっている。
【００３６】
より具体的に述べると、燃料噴射弁３３には、後述する燃料タンク５１に接続された燃料供給管５７を介して燃料が供給されている。燃料噴射弁３３に供給されている燃料の圧力は、その燃料の圧力と吸気ポート内の圧力との差圧が一定になるように図示しないプレッシャレギュレータにより制御されている。燃料噴射弁３３は、指示燃料噴射量に応じた時間だけ開弁させられる。従って、燃料噴射弁３３が正常であれば、燃料噴射弁３３は指示燃料噴射量と等量の燃料を噴射する。
【００３７】
スロットル弁３４は、吸気管３２内に回動可能に配設されている。スロットル弁３４は、吸気通路の開口断面積を可変とするようになっている。スロットル弁３４は、図示しないスロットル弁アクチュエータにより吸気管３２内で回転駆動されるようになっている。
【００３８】
排気系統４０は、エキゾーストマニホールド４１、エキゾーストパイプ４２、エキゾーストパイプ４２に配設された上流側触媒４３、及び、上流側触媒４３よりも下流においてエキゾーストパイプ４２に配設された「図示しない下流側触媒」を備えている。
【００３９】
エキゾーストマニホールド４１は、複数の枝部４１ａと集合部４１ｂとを備えている。複数の枝部４１ａのそれぞれの一端は、複数の排気ポートのそれぞれに接続されている。複数の枝部４１ａのそれぞれの他端は集合部４１ｂに集合している。この集合部４１ｂは、複数（２以上であり、本例では４つ）の気筒から排出された排ガスが集合する部分であるから、排気集合部ＨＫとも称呼される。
【００４０】
エキゾーストパイプ４２は集合部４１ｂに接続されている。排気ポート、エキゾーストマニホールド４１及びエキゾーストパイプ４２は、排気通路を構成している。
【００４１】
上流側触媒４３及び下流側触媒のそれぞれは、所謂、白金、ロジウム及びパラジウム等の貴金属（触媒物質）からなる活性成分を担持する三元触媒装置（排気浄化用の触媒）である。各触媒は、各触媒に流入するガスの空燃比が「三元触媒のウインドウ内の空燃比（例えば、理論空燃比）」であるとき、ＨＣ，ＣＯ，Ｈ２などの未燃成分を酸化するとともに窒素酸化物（ＮＯｘ）を還元する機能を有する。この機能は触媒機能とも称呼される。
【００４２】
更に、各触媒は、酸素を吸蔵（貯蔵）する酸素吸蔵機能を有する。即ち、各触媒は、その触媒に流入するガス（触媒流入ガス）に過剰の酸素が含まれているとき、その酸素を吸蔵するとともにＮＯｘを浄化する。各触媒は、触媒流入ガスに過剰な未燃物が含まれているとき、吸蔵している酸素を放出してその未燃物を浄化する。この酸素吸蔵機能は、触媒に担持されているセリア（ＣｅＯ２）等の酸素吸蔵材によってもたらされる。各触媒は、酸素吸蔵機能により空燃比が理論空燃比から偏移したとしても未燃成分及び窒素酸化物を浄化することができる。つまり、酸素吸蔵機能により、ウインドウの幅が拡大する。
【００４３】
蒸発燃料供給系統５０は、燃料タンク５１、キャニスタ５２、ベーパ捕集管５３、パージ流路管５４、パージ制御弁５５、及び、燃料ポンプ５６を備えている。
【００４４】
燃料タンク５１は、燃料噴射弁３３から機関１０に対して噴射・供給される燃料を貯留する。
【００４５】
キャニスタ５２は、燃料タンク５１内にて発生した蒸発燃料（蒸発燃料ガス）を吸蔵する「周知のチャコールキャニスタ」である。キャニスタ５２は、タンクポート５２ａと、パージポート５２ｂと、大気に曝されている大気ポート５２ｃと、が形成された筐体を備える。キャニスタ５２は、その筐体内に、蒸発燃料を吸着するための吸着剤（活性炭等の）５２ｄを収納（保持）している。
【００４６】
ベーパ捕集管５３の一端は燃料タンク５１の上部に接続され、ベーパ捕集管５３の他端はタンクポート５２ａに接続されている。ベーパ捕集管５３は、燃料タンク５１内に発生した蒸発燃料を燃料タンク５１からキャニスタ５２へと導入するための管である。
【００４７】
パージ流路管５４の一端はパージポート５２ｂに接続され、パージ流路管５４の他端はサージタンク３１ｂ（即ち、スロットル弁３４よりも下流の吸気通路）に接続されている。パージ流路管５４は、キャニスタ５２の吸着剤５２ｄから脱離した蒸発燃料をサージタンク３１ｂへと導入するための管である。ベーパ捕集管５３及びパージ流路管５４はパージ通路（パージ通路部）を構成している。
【００４８】
パージ制御弁５５はパージ流路管５４に介装されている。パージ制御弁５５は、指示信号であるデューティ比ＤＰＧを表す駆動信号により開度（開弁期間）が調節されることにより、パージ流路管５４の通路断面積を変更するようになっている。パージ制御弁５５は、デューティ比ＤＰＧが「０」であるときにパージ流路管５４を完全に閉じるようになっている。
【００４９】
燃料ポンプ５６は、燃料タンク５１に貯留されている燃料を燃料供給管５７を通して燃料噴射弁３３に供給するようになっている。
【００５０】
このように構成された蒸発燃料供給系統５０において、パージ制御弁５５が完全に閉じられている場合、燃料タンク５１内で発生した蒸発燃料はキャニスタ５２に吸蔵される。パージ制御弁５５が開かれている場合、キャニスタ５２に吸蔵された蒸発燃料はパージ流路管５４を通してサージタンク３１ｂ（スロットル弁３４よりも下流の吸気通路）に放出され、燃焼室２１（機関１０）へ供給される。即ち、パージ制御弁５５が開かれているとき、蒸発燃料のパージ（「蒸発燃料ガスのパージ」又は「パージ」とも称呼される。）が行われる。
【００５１】
このシステムは、熱線式エアフローメータ６１、スロットルポジションセンサ６２、水温センサ６３、クランクポジションセンサ６４、インテークカムポジションセンサ６５、上流側空燃比センサ６６、下流側空燃比センサ６７、及び、アクセル開度センサ６８を備えている。
【００５２】
エアフローメータ６１は、吸気管３２内を流れる吸入空気の質量流量（吸入空気流量）Ｇａに応じた信号を出力するようになっている。即ち、吸入空気量Ｇａは、単位時間あたりに機関１０に吸入される吸入空気量を表す。
【００５３】
スロットルポジションセンサ６２は、スロットル弁３４の開度（スロットル弁開度）を検出し、スロットル弁開度ＴＡを表す信号を出力するようになっている。
【００５４】
水温センサ６３は、内燃機関１０の冷却水の温度を検出し、冷却水温ＴＨＷを表す信号を出力するようになっている。冷却水温ＴＨＷは、機関１０の暖機状態（機関１０の温度）を表す運転状態指標量である。
【００５５】
クランクポジションセンサ６４は、クランク軸が１０°回転する毎に幅狭のパルスを有するとともに同クランク軸が３６０°回転する毎に幅広のパルスを有する信号を出力するようになっている。この信号は、後述する電気制御装置７０によって機関回転速度ＮＥに変換される。
【００５６】
インテークカムポジションセンサ６５は、インテークカムシャフトが所定角度から９０度、次いで９０度、更に１８０度回転する毎に一つのパルスを出力するようになっている。後述する電気制御装置７０は、クランクポジションセンサ６４及びインテークカムポジションセンサ６５からの信号に基づいて、基準気筒（例えば第１気筒）の圧縮上死点を基準とした絶対クランク角度ＣＡを取得するようになっている。この絶対クランク角度ＣＡは、基準気筒の圧縮上死点において「０°クランク角度」に設定され、クランク軸の回転角度に応じて７２０°クランク角度まで増大し、その時点にて再び０°クランク角度に設定される。
【００５７】
上流側空燃比センサ６６は、エキゾーストマニホールド４１の集合部４１ｂ（排気集合部ＨＫ）と上流側触媒４３との間の位置において「エキゾーストマニホールド４１及びエキゾーストパイプ４２の何れか」に配設されている。
【００５８】
上流側空燃比センサ６６は、例えば、特開平１１−７２４７３号公報、特開２０００−６５７８２号公報及び特開２００４−６９５４７号公報等に開示された「拡散抵抗層を備える限界電流式広域空燃比センサ」である。
【００５９】
上流側空燃比センサ６６は、上流側空燃比センサ６６の配設位置を流れる排ガスの空燃比（触媒４３に流入するガスである「触媒流入ガス」の空燃比、上流側空燃比abyfs）に応じた出力値Vabyfsを出力する。出力値Vabyfsは、図２に示したように、触媒流入ガスの空燃比（上流側空燃比abyfs）が大きくなるほど（リーン側の空燃比になるほど）増大する。
【００６０】
電気制御装置７０は、出力値Vabyfsと上流側空燃比abyfsとの図２に示した関係を規定した空燃比変換テーブル（マップ）Mapabyfsを記憶している。電気制御装置７０は、出力値Vabyfsを空燃比変換テーブルMapabyfsに適用することにより、実際の上流側空燃比abyfsを検出する（検出上流側空燃比abyfsを取得する）ようになっている。
【００６１】
再び、図１を参照すると、下流側空燃比センサ６７は、エキゾーストパイプ４２内に配設されている。下流側空燃比センサ６７の配設位置は、上流側触媒４３よりも下流側であり、且つ、下流側触媒よりも上流側（即ち、上流側触媒４３と下流側触媒との間の排気通路）である。下流側空燃比センサ６７は、周知の起電力式の酸素濃度センサ（安定化ジルコニア等の固体電解質を用いた周知の濃淡電池型の酸素濃度センサ）である。下流側空燃比センサ６７は、排気通路であって下流側空燃比センサ６７が配設されている部位を通過するガスである被検出ガスの空燃比に応じた出力値Voxsを発生するようになっている。換言すると、出力値Voxsは、上流側触媒４３から流出し且つ下流側触媒に流入するガスの空燃比に応じた値である。
【００６２】
この出力値Voxsは、図３に示したように、被検出ガスの空燃比が理論空燃比よりもリッチのとき最大出力値max（例えば、約０．９Ｖ〜１．０Ｖ）となる。出力値Voxsは、被検出ガスの空燃比が理論空燃比よりもリーンのとき最小出力値min（例えば、約０．１Ｖ〜０Ｖ）となる。更に、出力値Voxsは、被検出ガスの空燃比が理論空燃比であるとき最大出力値maxと最小出力値minの略中間の電圧Ｖst（中央値Vmid、中間電圧Ｖst、例えば、約０．５Ｖ）となる。出力値Voxsは、被検出ガスの空燃比が理論空燃比よりもリッチな空燃比からリーンな空燃比へと変化する際に最大出力値maxから最小出力値minへと急変する。同様に、出力値Voxsは、被検出ガスの空燃比が理論空燃比よりもリーンな空燃比からリッチな空燃比へと変化する際に最小出力値minから最大出力値maxへと急変する。
【００６３】
図１に示したアクセル開度センサ６８は、運転者によって操作されるアクセルペダルＡＰの操作量Accp（アクセルペダル操作量、アクセルペダルＡＰの開度）を表す信号を出力するようになっている。アクセルペダル操作量Accpは、アクセルペダルＡＰの操作量が大きくなるとともに大きくなる。
【００６４】
電気制御装置７０は、「ＣＰＵ、ＣＰＵが実行するプログラム、テーブル（マップ、関数）及び定数等を予め記憶したＲＯＭ、ＣＰＵが必要に応じてデータを一時的に格納するＲＡＭ、バックアップＲＡＭ（Ｂ−ＲＡＭ）、並びに、ＡＤコンバータを含むインターフェース等」からなる周知のマイクロコンピュータである。
【００６５】
バックアップＲＡＭは、機関１０を搭載した車両の図示しないイグニッション・キー・スイッチの位置（オフ位置、始動位置及びオン位置等の何れか）に関わらず、車両に搭載されたバッテリから電力の供給を受けるようになっている。バックアップＲＡＭは、バッテリから電力の供給を受けている場合、ＣＰＵの指示に応じてデータを格納する（データが書き込まれる）とともに、そのデータを読み出し可能となるように保持（記憶）する。従って、バックアップＲＡＭは、機関１０の運転停止中においてもデータを保持することができる。
【００６６】
バックアップＲＡＭは、バッテリが車両から取り外される等によりバッテリからの電力供給が遮断されると、データを保持することができない。そこで、ＣＰＵは、バックアップＲＡＭへの電力供給が再開されたとき、バックアップＲＡＭに保持されるべきデータを初期化（デフォルト値に設定）するようになっている。なお、バックアップＲＡＭは、ＥＥＰＲＯＭ等の読み書き可能な不揮発性メモリであってもよい。
【００６７】
電気制御装置７０は、上述したセンサ等と接続され、ＣＰＵにそれらのセンサからの信号を供給するようになっている。更に、電気制御装置７０は、ＣＰＵの指示に応じて、各気筒に対応して設けられた点火プラグ（実際にはイグナイタ）、各気筒に対応して設けられた燃料噴射弁３３、パージ制御弁５５、及び、スロットル弁アクチュエータ等に駆動信号（指示信号）を送出するようになっている。
【００６８】
なお、電気制御装置７０は、取得されたアクセルペダルの操作量Accpが大きくなるほどスロットル弁開度ＴＡが大きくなるように、スロットル弁アクチュエータに指示信号を送出するようになっている。即ち、電気制御装置７０は、運転者により変更される機関１０の加速操作量（アクセルペダル操作量Accp）に応じて「機関１０の吸気通路に配設されたスロットル弁３４」の開度を変更するスロットル弁駆動手段を備えている。
【００６９】
（第１制御装置の作動の概要）
第１制御装置は、下流側空燃比センサ６７の出力値Voxsに基づいて、触媒４３の状態（酸素吸蔵状態）が、酸素過剰状態（リーン状態、触媒４３の酸素吸蔵量がその最大酸素吸蔵量Ｃmaxに近い値となっている状態、即ち、触媒４３の酸素吸蔵量が高側閾値以上である状態）であるか、酸素不足状態（リッチ状態、触媒４３に酸素が殆ど吸蔵されていない状態、即ち、触媒４３の酸素吸蔵量が「高側閾値以下である低側閾値」未満である状態）であるかを判定する。
【００７０】
より具体的に述べると、第１制御装置は、触媒４３の状態が酸素過剰状態であると判定されている場合であって、出力値Voxsの所定時間あたりの変化量ΔVoxsが正の値であり、且つ、その大きさ｜ΔVoxs｜がリッチ判定閾値dRichthよりも大きくなったとき、触媒４３の状態が酸素不足状態となったと判定する。更に、第１制御装置は、触媒４３の状態が酸素不足状態であると判定されているときに、変化量ΔVoxsが負の値であり、且つ、その大きさ｜ΔVoxs｜がリーン判定閾値dLeanthよりも大きくなったとき、触媒４３の状態が酸素過剰状態となったと判定する。
【００７１】
なお、第１制御装置は、触媒４３の状態が酸素過剰状態であると判定されている場合であって、出力値Voxsがリッチ判定閾値VRichthよりも大きくなったとき、触媒４３の状態が酸素不足状態となったと判定してもよい。更に、第１制御装置は、触媒４３の状態が酸素不足状態であると判定されているときに、出力値Voxsがリーン判定閾値VLeanthよりも小さくなったとき、触媒４３の状態が酸素過剰状態となったと判定してもよい。
【００７２】
第１制御装置は、触媒４３の状態が酸素不足状態であると判定されている場合、触媒流入ガスの空燃比の目標値（即ち、上流側目標空燃比abyfr）を「理論空燃比よりも大きい目標リーン空燃比afLean」に設定する。
第１制御装置は、触媒４３の状態が酸素過剰状態であると判定されている場合、触媒流入ガスの空燃比の目標値（即ち、上流側目標空燃比abyfr）を「理論空燃比よりも小さい目標リッチ空燃比afRich」に設定する。
【００７３】
目標リーン空燃比afLeanは一定ではなく、機関の運転状態を表すパラメータ（運転状態指標量）としての吸入空気量Ｇａに応じて変化する。即ち、目標リーン空燃比afLeanは、図４の（Ａ）に示したように、吸入空気量Ｇａが第１の値であるとき第１目標リーン空燃比afLean1（＝理論空燃比＋ａ１）に設定される。更に、目標リーン空燃比afLeanは、図４の（Ｃ）に示したように、吸入空気量Ｇａが「第１の値と相違する第２の値」であるとき「第１目標リーン空燃比afLean1よりも大きい第２目標リーン空燃比afLean2（＝理論空燃比＋ａ３、ａ３＞ａ１＞０）」に設定される。
【００７４】
目標リッチ空燃比afRichは一定ではなく、機関の運転状態を表すパラメータ（運転状態指標量）としての吸入空気量Ｇａに応じて変化する。即ち、目標リッチ空燃比afRichは、図４の（Ａ）に示したように、吸入空気量Ｇａが第１の値であるとき第１目標リッチ空燃比afRich1（＝理論空燃比−ａ２）に設定される。更に、目標リッチ空燃比afRichは、図４の（Ｃ）に示したように、吸入空気量Ｇａが「第１の値と相違する第２の値」であるとき「第１目標リッチ空燃比afRich1よりも小さい第２目標リッチ空燃比afRich2（＝（理論空燃比−ａ４、ａ４＞ａ２＞０））」に設定される。
【００７５】
なお、値ａ１と値ａ２は等しくても、相違していてもよい。同様に、値ａ３と値ａ４は等しくても、相違していてもよい。
【００７６】
一方、第１制御装置は、所定のパージ条件が成立したとき、パージ制御弁５５を開弁して蒸発燃料を吸気通路に導入する（蒸発燃料をパージする。）。蒸発燃料のパージは、燃料噴射量の補正が十分でない場合等において、触媒流入ガスの空燃比を大きく乱れさせる。即ち、蒸発燃料のパージによる空燃比への影響は燃料噴射量を補正することにより補償される。しかしながら、燃料噴射量が十分に減少補正されない場合には触媒流入ガスの空燃比が過小になり、燃料噴射量が過度に減少補正される場合には触媒流入ガスの空燃比が過大になる。従って、蒸発燃料のパージを開始したとき、エミッションが悪化することがある。
【００７７】
ところで、第１制御装置において、目標リーン空燃比afLeanと目標リッチ空燃比afRichとの差の大きさ（＝｜afLean−afRich｜）は、吸入空気量Ｇａが第１の値であるときには第１目標リーン空燃比afLean1と第１目標リッチ空燃比afRich1との差の大きさ｜ａ１＋ａ２｜となり、吸入空気量Ｇａが第２の値であるときには第２目標リーン空燃比afLean2と第２目標リッチ空燃比afRich2との差の大きさ｜ａ３＋ａ４｜となる。値｜ａ３＋ａ４｜は値｜ａ１＋ａ２｜よりも大きい。即ち、第１制御装置においては、目標リーン空燃比afLeanと目標リッチ空燃比afRichとの差の大きさ（＝｜afLean−afRich｜）が大きいほど、目標リッチ空燃比afRichはより小さくなり、目標リーン空燃比afLeanはより大きくなる。
【００７８】
従って、第１制御装置においては、目標リーン空燃比afLeanと目標リッチ空燃比afRichとの差の大きさ（＝｜afLean−afRich｜）が大きいほど、触媒４３の状態が酸素過剰状態であると判定されたときには「より小さい空燃比の排ガス」が触媒４３に流入するので、その排ガス中の多量の未燃物により触媒４３の酸素吸蔵量を速やかに減少させることができる。更に、第１制御装置においては、目標リーン空燃比afLeanと目標リッチ空燃比afRichとの差の大きさ（＝｜afLean−afRich｜）が大きいほど、触媒４３の状態が酸素不足状態であると判定されたときには「より大きい空燃比の排ガス」が触媒４３に流入するので、その排ガス中の多量の酸素により触媒４３の酸素吸蔵量を速やかに増大させることができる。
【００７９】
このため、目標リーン空燃比afLeanと目標リッチ空燃比afRichとの差の大きさ（＝｜afLean−afRich｜）が大きい場合には、多量の蒸発燃料がパージされたとしても（蒸発燃料のパージ量が大きくされたとしても）、触媒４３の酸素吸蔵量が「最大酸素吸蔵量Ｃmax」又は「０」に維持されている期間（即ち、エミッションが悪化する期間）が長くならない（図４の期間Ｔ１と期間Ｔ２とを参照。）。
【００８０】
更に、触媒４３は、流入するガスの空燃比が大きくなるほど多量の酸素を吸蔵することができ、流入するガスの空燃比が小さくなるほど多量の酸素を放出することができる。即ち、目標リーン空燃比afLeanと目標リッチ空燃比afRichとの差の大きさ（＝｜afLean−afRich｜）が大きくなるほど、触媒４３の最大酸素吸蔵量Ｃmaxは増大し、触媒４３の浄化能力はより高くなる。
【００８１】
そこで、第１制御装置は、目標リーン空燃比afLeanと目標リッチ空燃比afRichとの差の大きさ（＝｜afLean−afRich｜）が大きいほど、パージされる蒸発燃料の量が大きくなるように、パージ制御弁５５の開度（デューティ比ＤＰＧ）を制御する。この結果、第１制御装置は、エミッションが悪化する可能性を低く維持しながら、蒸発燃料をパージさせることができる。
【００８２】
（実際の作動）
次に、第１制御装置の実際の作動について説明する。
＜燃料噴射量制御＞
第１制御装置のＣＰＵは、図５に示した燃料噴射量制御ルーチンを、任意の気筒のクランク角がその気筒の吸気上死点前の所定クランク角度（例えば、ＢＴＤＣ９０°ＣＡ）となる毎に、その気筒（以下、「燃料噴射気筒」とも称呼する。）に対して繰り返し実行するようになっている。
【００８３】
従って、所定のタイミングになると、ＣＰＵはステップ５００から処理を開始し、以下に述べるステップ５１０乃至ステップ５７０の処理を順に行い、その後、ステップ５９５に進んで本ルーチンを一旦終了する。
【００８４】
ステップ５１０：ＣＰＵは「エアフローメータ６１により計測された吸入空気量Ｇａ、及び、機関回転速度ＮＥ」をルックアップテーブルMapMcに適用することにより、現時点において燃料噴射気筒に吸入される吸入空気量（筒内吸入空気量）Ｍｃ（ｋ）を求める。筒内吸入空気量Ｍｃ（ｋ）は、各吸気行程に対応されながらＲＡＭ内に記憶される。
【００８５】
ステップ５２０：ＣＰＵは、メインＦＢ学習値（メインフィードバック学習値）ＫＧをバックアップＲＡＭから読み出す。メインＦＢ学習値ＫＧは、後述する図８に示したメインフィードバック学習ルーチンにより別途求められ、バックアップＲＡＭ内に記憶されている。
【００８６】
ステップ５３０：ＣＰＵは、後述する図６に示した上流側目標空燃比設定ルーチンにより別途求められている上流側目標空燃比abyfr（＝abyfr（ｋ））をＲＡＭから読み出す。
【００８７】
ステップ５４０：ＣＰＵは、下記（１）式に示したように、筒内吸入空気量Ｍｃ（ｋ）を、ステップ５３０にて読み出した上流側目標空燃比abyfrによって除することにより、基本燃料噴射量Ｆｂ（ｋ）を求める。基本燃料噴射量Ｆｂ（ｋ）は、各吸気行程に対応されながらＲＡＭ内に記憶される。
Ｆｂ（ｋ）＝Ｍｃ（ｋ）／abyfr    …（１）
【００８８】
ステップ５５０：ＣＰＵはパージ補正係数ＦＰＧを下記の（２）式に従って求める。（２）式において、ＰＧＴは目標パージ率である。目標パージ率ＰＧＴは、後述する図９のステップ９３５において求められている。ＦＧＰＧは蒸発燃料ガス濃度学習値である。蒸発燃料ガス濃度学習値ＦＧＰＧは、後述する図１０に示したルーチンにより求められ、バックアップＲＡＭ内に記憶されている。
ＦＰＧ＝１＋ＰＧＴ（ＦＧＰＧ−１）  …（２）
【００８９】
ステップ５６０：ＣＰＵは、基本燃料噴射量Ｆｂ（ｋ）を下記（３）式に従って補正することにより、最終的な燃料噴射量の指令値である指示燃料噴射量Ｆｉを求める。（３）式の右辺における各値は以下の通りである。これらの値は後述するルーチンにより別途求められている。
ＦＰＧ：パージ補正係数。
ＫＧ：メインＦＢ学習値ＫＧ。
ＦＡＦ：メインフィードバック制御により更新されるメインフィードバック係数。
Ｆｉ＝ＦＰＧ・｛ＫＧ・ＦＡＦ・Ｆｂ（ｋ）｝    …（３）
【００９０】
ステップ５７０：ＣＰＵは、指示燃料噴射量Ｆｉの燃料が燃料噴射気筒に対応して設けられている燃料噴射弁３３から噴射されるように、その燃料噴射弁３３に指示信号を送出する。
【００９１】
＜上流側目標空燃比設定＞
ＣＰＵは図６にフローチャートにより示した上流側目標空燃比設定ルーチンを所定時間の経過毎に繰り返し実行している。従って、所定のタイミングになると、ＣＰＵはステップ６００から処理を開始し、フィードバック制御フラグＸＦＢの値が「１」であるか否かを判定する。
【００９２】
フィードバック制御フラグＸＦＢの値は、フィードバック制御条件が成立しているときに「１」に設定され、フィードバック制御条件が成立していないときに「０」に設定される。換言すると、空燃比のフィードバック制御（メインフィードバック制御及びサブフィードバック制御）が実行されているとき、フィードバック制御フラグＸＦＢの値は「１」に設定される。フィードバック制御条件は、例えば、以下の総ての条件が成立したときに成立する。
（Ａ１）上流側空燃比センサ６６が活性化している。
（Ａ２）下流側空燃比センサ６７が活性化している。
（Ａ３）機関の負荷ＫＬが閾値ＫＬｔｈ以下である。
【００９３】
このとき、フィードバック制御フラグＸＦＢの値が「１」でなければ、ＣＰＵはステップ６１０にて「Ｎｏ」と判定してステップ６２０に進み、上流側目標空燃比abyfrを理論空燃比stoich（例えば、１４．６）に設定する。その後、ＣＰＵはステップ６９５に進んで、本ルーチンを一旦終了する。
【００９４】
一方、ＣＰＵがステップ６１０の処理を実行する時点において、フィードバック制御フラグＸＦＢの値が「１」であると、ＣＰＵはそのステップ６１０にて「Ｙｅｓ」と判定してステップ６３０に進み、リッチ要求フラグＸRichreqの値が「１」であるか否かを判定する。リッチ要求フラグＸRichreqの値は、後述する図１１に示した空燃比要求（触媒状態）決定ルーチンにより「１」及び「０」の何れかに設定される。
【００９５】
リッチ要求フラグＸRichreqの値が「１」であることは、触媒４３の状態は酸素過剰状態であり、触媒４３に過剰な未燃物を流入させるべきであることを意味する。即ち、空燃比要求はリッチ要求である。リッチ要求フラグＸRichreqの値が「０」であることは、触媒４３の状態は酸素不足状態であり、触媒４３に過剰な酸素を流入させるべきであることを意味する。即ち、空燃比要求はリーン要求である。ステップ６３０は、「触媒４３の状態が酸素過剰状態であると判定されているか否か」を判定するステップに置換することもできる。
【００９６】
リッチ要求フラグＸRichreqの値が「１」であると、ＣＰＵはステップ６３０にて「Ｙｅｓ」と判定してステップ６４０に進み、目標リッチ空燃比afRich（理論空燃比よりも小さい空燃比）を吸入空気量Ｇａに基づいて決定するとともに、上流側目標空燃比abyfr（＝今回の目標空燃比abyfr（ｋ））をその目標リッチ空燃比afRichに設定する。
【００９７】
このステップ６４０において、目標リッチ空燃比afRichは、吸入空気量Ｇａが第１の値Ｇａ１のとき第１目標リッチ空燃比afRich1となり、吸入空気量Ｇａが「第１の値Ｇａ１と相違する（大きい）第２の値Ｇａ２」のとき「第１目標リッチ空燃比afRich1よりも小さい第２目標リッチ空燃比afRich2」となるように決定される。その後、ＣＰＵはステップ６９５に進んで、本ルーチンを一旦終了する。
【００９８】
他方、ＣＰＵがステップ６３０の処理を実行する時点において、リッチ要求フラグＸRichreqの値が「０」であると、ＣＰＵはステップ６３０にて「Ｎｏ」と判定してステップ６５０に進み、目標リーン空燃比afLean（理論空燃比よりも大きい空燃比）を吸入空気量Ｇａに基づいて決定するとともに、上流側目標空燃比abyfr（＝今回の目標空燃比abyfr（ｋ））をその目標リーン空燃比afLeanに設定する。
【００９９】
このステップ６５０において、目標リーン空燃比afLeanは、吸入空気量Ｇａが第１の値Ｇａ１のとき第１目標リーン空燃比afLean1となり、吸入空気量Ｇａが「第１の値Ｇａ１と相違する（大きい）第２の値Ｇａ２」のとき「第１目標リーン空燃比afLean1よりも大きい第２目標リーン空燃比afLean2」となるように決定される。その後、ＣＰＵはステップ６９５に進んで、本ルーチンを一旦終了する。なお、上流側目標空燃比abyfrは、各吸気行程に対応されながらＲＡＭ内に記憶される。
【０１００】
＜メインフィードバック制御＞
ＣＰＵは図７にフローチャートにより示したメインフィードバック制御ルーチンを所定時間の経過毎に繰り返し実行している。従って、所定のタイミングになると、ＣＰＵはステップ７００から処理を開始し、ステップ７１０に進んでフィードバック制御フラグＸＦＢの値が「１」であるか否かを判定する。
【０１０１】
いま、フィードバック制御フラグＸＦＢの値が「１」であるとして説明を続ける。この場合、ＣＰＵはステップ７１０にて「Ｙｅｓ」と判定して以下に述べるステップ７１５乃至ステップ７５０の処理を順に行い、その後、ステップ７９５に進んで本ルーチンを一旦終了する。
【０１０２】
ステップ７１５：ＣＰＵは、上流側空燃比センサ６６の出力値Vabyfsを図２に示したテーブルMapabyfsに適用することにより上流側空燃比abyfsを取得する。
ステップ７２０：ＣＰＵは、現時点よりもＮサイクル（即ち、Ｎ・７２０°クランク角）前の時点における筒内吸入空気量Ｍｃ（ｋ−Ｎ）を、上流側空燃比abyfsで除すことにより、現時点よりもＮサイクル前の時点において燃焼室２１に実際に供給された燃料の量である「筒内燃料供給量Ｆｃ（ｋ−Ｎ）」を求める。
【０１０３】
このように、現時点からＮサイクル前の筒内燃料供給量Ｆｃ（ｋ−Ｎ）を求めるために、現時点からＮサイクル前の筒内吸入空気量Ｍｃ（ｋ−Ｎ）を上流側空燃比abyfsで除すのは、燃焼室２１内で燃焼された混合気が上流側空燃比センサ６６に到達するまでにＮサイクルに相当する時間を要するからである。
【０１０４】
ステップ７２５：ＣＰＵは、「現時点からＮサイクル前の筒内吸入空気量Ｍｃ（ｋ−Ｎ）」を「現時点からＮサイクル前の上流側目標空燃比abyfr（ｋ−Ｎ）」で除すことにより「現時点からＮサイクル前の目標筒内燃料供給量Ｆｃｒ（ｋ−Ｎ）」を求める。
【０１０５】
ステップ７３０：ＣＰＵは、目標筒内燃料供給量Ｆｃｒ（ｋ−Ｎ）から筒内燃料供給量Ｆｃ（ｋ−Ｎ）を減じた値を筒内燃料供給量偏差ＤＦｃとして設定する。この筒内燃料供給量偏差ＤＦｃ（＝Ｆｃｒ（ｋ−Ｎ）−Ｆｃ（ｋ−Ｎ））は、Ｎサイクル前の時点で機関１０に供給された燃料の過不足分を表す量となる。
【０１０６】
ステップ７３５：ＣＰＵは、下記（４）式に基いてメインフィードバック値ＤＦｉを求める。この（４）式において、Ｇｐは予め設定された比例ゲイン、Ｇｉは予め設定された積分ゲインである。（４）式の値ＳＤＦｃは筒内燃料供給量偏差ＤＦｃの積分値であり、次のステップ７４０にて求められる。つまり、第１制御装置は、上流側空燃比abyfsを上流側目標空燃比abyfrに一致させる比例・積分制御（ＰＩ制御）によりメインフィードバック値ＤＦｉを算出する。
ＤＦｉ＝Ｇｐ・ＤＦｃ＋Ｇｉ・ＳＤＦｃ    …（４）
【０１０７】
ステップ７４０：ＣＰＵは、その時点における筒内燃料供給量偏差ＤＦｃの積分値ＳＤＦｃに上記ステップ７３０にて求められた筒内燃料供給量偏差ＤＦｃを加えることにより、新たな筒内燃料供給量偏差の積分値ＳＤＦｃを取得する。
【０１０８】
ステップ７４５：ＣＰＵは、メインフィードバック値ＤＦｉ及び基本燃料噴射量Ｆｂ（ｋ−Ｎ）を下記（５）式に適用することによりメインフィードバック係数ＦＡＦを算出する。即ち、メインフィードバック係数ＦＡＦは、「現時点からＮサイクル前の基本燃料噴射量Ｆｂ（ｋ−Ｎ）にメインフィードバック値ＤＦｉを加えた値」を「基本燃料噴射量Ｆｂ（ｋ−Ｎ）」で除すことにより求められる。
ＦＡＦ＝（Ｆｂ（ｋ−Ｎ）＋ＤＦｉ）／Ｆｂ（ｋ−Ｎ）    …（５）
【０１０９】
ステップ７５０：ＣＰＵは、下記（６）式に従ってメインフィードバック係数ＦＡＦの加重平均値をメインフィードバック係数平均ＦＡＦＡＶ（以下、「補正係数平均ＦＡＦＡＶ」とも称呼する。）として求める。（６）式においてＦＡＦＡＶnewは更新後の補正係数平均ＦＡＦＡＶであり、そのＦＡＦＡＶnewが新たな補正係数平均ＦＡＦＡＶとして格納される。また、（６）式において、値ｑは０より大きく１より小さい定数である。この補正係数平均ＦＡＦＡＶは、後述するように、「メインＦＢ学習値ＫＧ及び蒸発燃料ガス濃度学習値ＦＧＰＧ」を求める際に用いられる。
ＦＡＦＡＶnew＝ｑ・ＦＡＦ＋（１−ｑ）・ＦＡＦＡＶ    …（６）
【０１１０】
以上により、メインフィードバック値ＤＦｉが比例積分制御により求められ、このメインフィードバック値ＤＦｉがメインフィードバック係数ＦＡＦへと変換される。メインフィードバック係数ＦＡＦは、上述した図５のステップ５６０において指示燃料噴射量Ｆｉに反映される。この結果、燃料供給量の過不足が補償されるので、機関の空燃比（従って、上流側触媒４３に流入するガスの空燃比）の平均値が上流側目標空燃比abyfrと略一致させられる。
【０１１１】
これに対し、ステップ７１０の判定時において、フィードバック制御フラグＸＦＢの値が「０」である場合、ＣＰＵはそのステップ７１０にて「Ｎｏ」と判定し、以下に述べるステップ７５５乃至ステップ７７０の処理を順に行い、その後、ステップ７９５に進む。
【０１１２】
ステップ７５５：ＣＰＵはメインフィードバック値ＤＦｉの値を「０」に設定する。
ステップ７６０：ＣＰＵは筒内燃料供給量偏差の積分値ＳＤＦｃを「０」に設定する。
ステップ７６５：ＣＰＵはメインフィードバック係数ＦＡＦの値を「１」に設定する。
ステップ７７０：ＣＰＵは補正係数平均ＦＡＦＡＶの値を「１」に設定する。
【０１１３】
このように、フィードバック制御フラグＸＦＢの値が「０」であるとき（フィードバック制御条件が不成立であるとき）、メインフィードバック値ＤＦｉの値は「０」に設定され、メインフィードバック係数ＦＡＦの値は「１」に設定される。従って、基本燃料噴射量Ｆｂ（ｋ）のメインフィードバック係数ＦＡＦによる補正は行われない。但し、このような場合であっても、基本燃料噴射量Ｆｂ（ｋ）はメインＦＢ学習値ＫＧによって補正される。
【０１１４】
＜メインフィードバック学習（ベース空燃比学習）＞
第１制御装置はパージ制御弁５５を完全に閉じた状態に維持する指示信号がパージ制御弁５５に送出されている期間（パージ制御弁閉弁指示期間、デューティ比ＤＰＧが「０」である期間）において、メインフィードバック係数ＦＡＦを基本値「１」に近づけるように、補正係数平均ＦＡＦＡＶに基いてメインＦＢ学習値ＫＧを更新する。
【０１１５】
このメインＦＢ学習値ＫＧの更新を行うために、ＣＰＵは図８に示したメインフィードバック学習ルーチンを所定時間が経過する毎に実行するようになっている。従って、ＣＰＵは所定のタイミングになるとステップ８００から処理を開始し、ステップ８０５に進んでフィードバック制御フラグＸＦＢの値が「１」であるか否かを判定する。
【０１１６】
このとき、フィードバック制御フラグＸＦＢの値が「１」でなければ（即ち、メインフィードバック制御が実行されていなければ）、ＣＰＵはそのステップ８０５にて「Ｎｏ」と判定し、ステップ８９５に直接進んで本ルーチンを一旦終了する。この結果、メインＦＢ学習値ＫＧの更新は行われない。
【０１１７】
一方、フィードバック制御フラグＸＦＢの値が「１」であるとき（メインフィードバック制御が実行中であるとき）、ＣＰＵはステップ８０５にて「Ｙｅｓ」と判定してステップ８１０に進み、「蒸発燃料のパージが行われていないか否か」を判定する。より具体的には、ＣＰＵは「後述する図９のルーチンにより決定されるデューティ比ＤＰＧ」が「０」であるか否かを判定する。このとき、蒸発燃料のパージが行われていると（デューティ比ＤＰＧが「０」でないと）、ＣＰＵはそのステップ８１０にて「Ｎｏ」と判定し、ステップ８９５に直接進んで本ルーチンを一旦終了する。この結果、メインＦＢ学習値ＫＧの更新は行われない。
【０１１８】
他方、ＣＰＵがステップ８１０の処理を実行する時点において蒸発燃料のパージが行われていなければ（デューティ比ＤＰＧが「０」であると）、ＣＰＵはそのステップ８１０にて「Ｙｅｓ」と判定してステップ８１５に進み、補正係数平均ＦＡＦＡＶの値が値１＋α以上であるか否かを判定する。ここで、αは、０より大きく１より小さい所定値であり、例えば、０．０２である。このとき、補正係数平均ＦＡＦＡＶの値が値１＋α以上であると、ＣＰＵはステップ８２０に進んでメインＦＢ学習値ＫＧを正の所定値Ｘだけ増大させる。その後、ＣＰＵはステップ８３５に進む。
【０１１９】
これに対し、ＣＰＵがステップ８１５の処理を実行する時点において補正係数平均ＦＡＦＡＶの値が値１＋αよりも小さいと、ＣＰＵはステップ８２５に進んで補正係数平均ＦＡＦＡＶの値が値１−α以下であるか否かを判定する。このとき、補正係数平均ＦＡＦＡＶの値が値１−α以下であると、ＣＰＵはステップ８３０に進んでメインＦＢ学習値ＫＧを正の所定値Ｘだけ減少させる。その後、ＣＰＵはステップ８３５に進む。
【０１２０】
更に、ＣＰＵはステップ８３５に進んだとき、そのステップ８３５にてメインフィードバック学習完了フラグ（メインＦＢ学習完了フラグ）ＸＫＧの値を「０」に設定する。メインＦＢ学習完了フラグＸＫＧは、その値が「１」であるときにメインフィードバック学習が完了しており、その値が「０」であるときにメインフィードバック学習が完了していないことを示す。
【０１２１】
次いで、ＣＰＵはステップ８４０に進み、メイン学習カウンタＣＫＧの値を「０」に設定する。なお、メイン学習カウンタＣＫＧの値は、機関１０が搭載された車両の図示しないイグニッション・キー・スイッチがオフ位置からオン位置へと変更された際に実行されるイニシャルルーチンにても「０」に設定されるようになっている。その後、ＣＰＵはステップ８９５に進み、本ルーチンを一旦終了する。
【０１２２】
ＣＰＵがステップ８２５の処理を実行する時点において、補正係数平均ＦＡＦＡＶの値が値１−αよりも大きいと（即ち、補正係数平均ＦＡＦＡＶの値が値１−αと値１＋αの間の値であると）、ＣＰＵはステップ８４５に進んでメイン学習カウンタＣＫＧの値を「１」だけ増大する。
【０１２３】
次に、ＣＰＵはステップ８５０に進み、メイン学習カウンタＣＫＧの値が所定のメイン学習カウンタ閾値ＣＫＧｔｈ以上であるか否かを判定する。そして、メイン学習カウンタＣＫＧの値が所定のメイン学習カウンタ閾値ＣＫＧｔｈ以上であれば、ＣＰＵはステップ８５０にて「Ｙｅｓ」と判定してステップ８５５に進み、メインＦＢ学習完了フラグＸＫＧの値を「１」に設定する。
【０１２４】
即ち、機関１０の始動後において補正係数平均ＦＡＦＡＶの値が値１−αと値１＋αの間の値である回数（継続時間）がメイン学習カウンタ閾値ＣＫＧｔｈ以上となると、メインＦＢ学習値ＫＧの学習は完了したと見做される。その後、ＣＰＵはステップ８９５に進んで、本ルーチンを一旦終了する。
【０１２５】
これに対し、ＣＰＵがステップ８５０の処理を実行する時点において、メイン学習カウンタＣＫＧの値が所定のメイン学習カウンタ閾値ＣＫＧｔｈよりも小さければ、ＣＰＵはそのステップ８５０にて「Ｎｏ」と判定し、ステップ８５０からステップ８９５に直接進んで本ルーチンを一旦終了する。
【０１２６】
以上により、メインフィードバック制御中であって蒸発燃料のパージが行われていない間にメインＦＢ学習値ＫＧが更新される。
【０１２７】
＜パージ制御弁駆動＞
一方、ＣＰＵは図９に示したパージ制御弁駆動ルーチンを所定時間の経過毎に実行するようになっている。従って、所定のタイミングになるとＣＰＵはステップ９００から処理を開始し、ステップ９１０に進んでパージ条件が成立しているか否かを判定する。このパージ条件は、例えば、以下の総ての条件が成立したときに成立する。
（Ｂ１）フィードバック制御フラグＸＦＢの値が「１」である（メインフィードバック制御が実行中である。）。
（Ｂ２）機関１０が定常運転されている（例えば、機関の負荷を表すスロットル弁開度ＴＡの単位時間あたりの変化量が所定値以下である。）。
【０１２８】
いま、パージ条件が成立していると仮定する。この場合、ＣＰＵは図９のステップ９１０にて「Ｙｅｓ」と判定してステップ９２０に進み、メインＦＢ学習完了フラグＸＫＧの値が「１」であるか否か（即ち、メインフィードバック学習が完了しているか否か）を判定する。このとき、メインＦＢ学習完了フラグＸＫＧの値が「１」であると、ＣＰＵはステップ９２０にて「Ｙｅｓ」と判定し、以下に述べるステップ９３０乃至ステップ９７０の処理を順に行い、ステップ９９５に進んで本ルーチンを一旦終了する。
【０１２９】
ステップ９３０：ＣＰＵは、目標リーン空燃比afLeanから目標リッチ空燃比afRichを減じることにより空燃比振幅ΔＡＦを求める。即ち、空燃比振幅ΔＡＦは、目標リーン空燃比afLeanと目標リッチ空燃比afRichとの差の大きさ｜afLean−afRich｜と等しい。
【０１３０】
ステップ９３５：ＣＰＵは、空燃比振幅ΔＡＦに基づいて目標パージ率ＰＧＴを決定する。目標パージ率ＰＧＴは、空燃比振幅ΔＡＦが大きくなるほど大きくなるように設定される。なお、パージ率は、吸入空気量Ｇａに対するパージ流量ＫＰの比（パージ率＝ＫＰ／Ｇａ）である。即ち、パージ流量ＫＰは、機関１０に吸入される（吸気通路に導入される）蒸発燃料ガスの流量であり、蒸発燃料ガスパージ量ＫＰとも称呼される。パージ率は、「吸入空気量Ｇａと蒸発燃料ガスパージ量ＫＰとの和（Ｇａ＋ＫＰ）」に対する蒸発燃料ガスパージ量ＫＰの比（パージ率＝（ＫＰ／（Ｇａ＋ＫＰ））として表されてもよい。
【０１３１】
ステップ９４０：ＣＰＵは、目標パージ率ＰＧＴと吸入空気量（流量）Ｇａとの積をパージ流量ＫＰとして算出する。
【０１３２】
ステップ９５０：ＣＰＵは、機関回転速度ＮＥ及び負荷ＫＬをマップMapPGRMXに適用することにより、全開パージ率PGRMXを求める。この全開パージ率PGRMXは、パージ制御弁５５を全開にしたときのパージ率である。マップMapPGRMXは実験又はシミュレーションの結果に基づき予め取得され、ＲＯＭ内に格納されている。マップMapPGRMXによれば、全開パージ率PGRMXは機関回転速度ＮＥが大きくなるほど、又は、負荷ＫＬが大きくなるほど、小さくなる。
【０１３３】
ステップ９６０：ＣＰＵは、目標パージ率ＰＧＴを全開パージ率PGRMXで除した値に１００を乗ずることによりデューティ比ＤＰＧ（％）を算出する。
ステップ９７０：ＣＰＵは、パージ制御弁５５をデューティ比ＤＰＧに基いて開閉制御する。
【０１３４】
これに対し、ＣＰＵは、パージ条件が成立していていない場合、ステップ９１０にて「Ｎｏ」と判定してステップ９８０に進み、パージ流量ＫＰを「０」に設定する。次いで、ＣＰＵは、ステップ９９０にてデューティ比ＤＰＧを「０」に設定した後、ステップ９７０へと進む。この場合、デューティ比ＤＰＧは「０」に設定されているからパージ制御弁５５は完全に閉じられた状態となる。その後、ＣＰＵはステップ９９５に進んで本ルーチンを一旦終了する。
【０１３５】
更に、ＣＰＵがステップ９２０の処理を実行する時点において、メインＦＢ学習完了フラグＸＫＧの値が「０」である場合、ＣＰＵはそのステップ９２０にて「Ｎｏ」と判定し、ステップ９８０、ステップ９９０及びステップ９７０の処理を実行する。この場合においても、デューティ比ＤＰＧは「０」に設定されているからパージ制御弁５５は完全に閉じられた状態となる。その後、ＣＰＵはステップ９９５に進んで本ルーチンを一旦終了する。
【０１３６】
＜蒸発燃料ガス濃度学習＞
更に、ＣＰＵは、所定時間が経過する毎に図１０に示した蒸発燃料ガス濃度学習ルーチンを実行するようになっている。この蒸発燃料ガス濃度学習ルーチンの実行によって、蒸発燃料ガス濃度学習値ＦＧＰＧの更新が行われる。
【０１３７】
ＣＰＵは所定のタイミングになるとステップ１０００から処理を開始してステップ１００５に進み、フィードバック制御フラグＸＦＢの値が「１」であるか否かを判定する（メインフィードバック制御が実行中であるか否か）を判定する。このとき、フィードバック制御フラグＸＦＢの値が「０」であれば、ＣＰＵはそのステップ１００５にて「Ｎｏ」と判定し、ステップ１０９５に直接進んで本ルーチンを一旦終了する。この結果、蒸発燃料ガス濃度学習値ＦＧＰＧの更新は行われない。
【０１３８】
一方、フィードバック制御フラグＸＦＢの値が「１」であるとき、ＣＰＵはステップ１００５にて「Ｙｅｓ」と判定してステップ１０１０に進み、「蒸発燃料のパージが行われているか否か（具体的には、図９のルーチンにより求められるデューティ比ＤＰＧが「０」でないか否か）」を判定する。このとき、蒸発燃料のパージが行われていないと、ＣＰＵはそのステップ１０１０にて「Ｎｏ」と判定し、ステップ１０９５に直接進んで本ルーチンを一旦終了する。この結果、蒸発燃料ガス濃度学習値ＦＧＰＧの更新は行われない。
【０１３９】
これに対し、ＣＰＵがステップ１０１０に進んだ際に蒸発燃料のパージが行われていると、ＣＰＵはステップ１０１０にて「Ｙｅｓ」と判定してステップ１０１５に進み、補正係数平均ＦＡＦＡＶから「１」を減じた値の絶対値｜ＦＡＦＡＶ−１｜が所定値β以上であるか否かを判定する。ここで、βは０より大きく１より小さい微小な所定値であり、例えば、０．０２である。
【０１４０】
このとき、絶対値｜ＦＡＦＡＶ−１｜が所定値β以上であると、ＣＰＵはステップ１０１５にて「Ｙｅｓ」と判定してステップ１０２０に進み、下記（７）式に従って更新値ｔＦＧを求める。（７）式における目標パージ率ＰＧＴは、図９のステップ９３５にて設定されている。（７）式から明らかなように、更新値ｔＦＧは目標パージ率１％当たりの「補正量（偏差）εa（＝ＦＡＦＡＶ−１）」である。その後、ＣＰＵはステップ１０３０に進む。
ｔＦＧ＝（ＦＡＦＡＶ−１）／ＰＧＴ  …（７）
【０１４１】
蒸発燃料のパージが行われている場合、蒸発燃料ガスの濃度が高いほど、上流側空燃比abyfsは理論空燃比よりもより小さい空燃比（理論空燃比よりもリッチ側の空燃比）となる。従って、メインフィードバック係数ＦＡＦはより小さい値になるので、補正係数平均ＦＡＦＡＶも「１」より小さい値となる。その結果、ＦＡＦＡＶ−１は負の値となるので、更新値ｔＦＧは負の値となる。更に、更新値ｔＦＧの絶対値は、ＦＡＦＡＶが小さいほど（「１」から乖離するほど）大きな値となる。つまり、蒸発燃料ガスの濃度が高いほど、更新値ｔＦＧはその絶対値の大きい負の値となる。
【０１４２】
これに対し、絶対値｜ＦＡＦＡＶ−１｜が所定値β以下である場合、ＣＰＵはステップ１０１５にて「Ｎｏ」と判定してステップ１０２５に進み、更新値ｔＦＧを「０」に設定する。その後、ＣＰＵはステップ１０３０に進む。
【０１４３】
ＣＰＵは、ステップ１０３０において、下記（８）式に従って蒸発燃料ガス濃度学習値ＦＧＰＧを更新し、ステップ１０９５に進んで本ルーチンを一旦終了する。（８）式においてＦＧＰＧnewは更新後の蒸発燃料ガス濃度学習値ＦＧＰＧである。この結果、蒸発燃料ガス濃度学習値ＦＧＰＧは、蒸発燃料ガスの濃度が高いほど小さい値になる。なお、蒸発燃料ガス濃度学習値ＦＧＰＧの初期値は「１」に設定されている。
ＦＧＰＧnew＝ＦＧＰＧ＋ｔＦＧ  …（８）
【０１４４】
蒸発燃料のパージは、メインフィードバック学習が完了しているとき（メインＦＢ学習完了フラグＸＫＧの値が「１」であるとき）に行われる（図９のステップ９２０を参照。）。更に、指示燃料噴射量Ｆｉは、上記（３）式に示したように、パージ補正係数ＦＰＧにより補正される。しかも、パージ補正係数ＦＰＧは、上記（２）式に示したように、蒸発燃料ガス濃度学習値ＦＧＰＧに基づいて算出される。それ故、パージ中のメインフィードバック係数ＦＡＦの「１」からの乖離の程度を示す値（即ち、絶対値｜ＦＡＦＡＶ−１｜）は、蒸発燃料ガス濃度学習値ＦＧＰＧの真値（適正値）からの乖離の程度を表す。そこで、上述したように、絶対値｜ＦＡＦＡＶ−１｜が所定値βよりも大きいとき、蒸発燃料ガス濃度学習値ＦＧＰＧが更新される。
【０１４５】
＜空燃比要求（触媒状態）決定＞
ＣＰＵは、図１１にフローチャートにより示した「空燃比要求（触媒状態）決定ルーチン」を所定時間ｔｓの経過毎に繰り返し実行している。従って、所定のタイミングになると、ＣＰＵはステップ１１００から処理を開始してステップ１１１０に進み、「現時点の下流側空燃比センサ６７の出力値Voxs」から「前回の下流側空燃比センサ６７の出力値Voxsold」を減じることにより、所定時間ｔｓ（単位時間）あたりの出力値Voxsの変化量ΔVoxsを算出する。前回の出力値Voxsoldは、次のステップ１１２０にて更新される値であり、現時点から所定時間ｔｓだけ前の時点の出力値Voxs（本ルーチンが前回実行されたときの出力値Voxs）である。次に、ＣＰＵはステップ１１２０に進み、現時点の出力値Voxsを「前回の出力値Voxsold」として記憶する。
【０１４６】
次に、ＣＰＵはステップ１１３０に進み、リッチ要求フラグＸRichreqの値が「１」であるか否かを判定する。リッチ要求フラグＸRichreqは、上述したイニシャルルーチンにおいて「１」に設定されるようになっている。更に、リッチ要求フラグＸRichreqの値は、後述するように、下流側空燃比センサ６７の出力値Voxsに基づいて触媒４３の状態が酸素不足状態（リッチ状態）であると判定されたときに「０」に設定され、下流側空燃比センサ６７の出力値Voxsに基づいて触媒４３の状態が酸素過剰状態（リーン状態）であると判定されたときに「１」に設定される。
【０１４７】
いま、リッチ要求フラグＸRichreqの値が「１」であると仮定する。この場合、ＣＰＵはステップ１１３０にて「Ｙｅｓ」と判定してステップ１１４０に進み、変化速度ΔVoxsが正であるか否かを判定する。即ち、ＣＰＵは、出力値Voxsが増大しているか否かを判定する。このとき、変化速度ΔVoxsが正でなければ、ＣＰＵはステップ１１４０にて「Ｎｏ」と判定し、ステップ１１９５に直接進んで本ルーチンを一旦終了する。
【０１４８】
これに対し、変化速度ΔVoxsが正であると、ＣＰＵはステップ１１４０にて「Ｙｅｓ」と判定してステップ１１５０に進み、変化速度ΔVoxsの大きさ｜ΔVoxs｜がリッチ判定閾値dRichthよりも大きいか否かを判定する。このとき、大きさ｜ΔVoxs｜がリッチ判定閾値dRichth以下であると、ＣＰＵはステップ１１５０にて「Ｎｏ」と判定し、ステップ１１９５に直接進んで本ルーチンを一旦終了する。
【０１４９】
これに対し、変化速度ΔVoxsの大きさ｜ΔVoxs｜がリッチ判定閾値dRichthよりも大きいと、ＣＰＵはステップ１１５０にて「Ｙｅｓ」と判定してステップ１１６０に進み、リッチ要求フラグＸRichreqの値を「０」に設定する。即ち、出力値Voxsが増大していて且つその変化速度ΔVoxsの大きさがリッチ判定閾値dRichthよりも大きい場合、ＣＰＵは「触媒４３の状態が酸素不足状態である。」と判定し、リッチ要求フラグＸRichreqの値を「０」に設定する。
【０１５０】
この状態（即ち、リッチ要求フラグＸRichreqの値が「０」に設定された状態）において、ＣＰＵがステップ１１００から処理を再び開始すると、ＣＰＵはステップ１１１０及びステップ１１２０を経由してステップ１１３０に進み、そのステップ１１３０にて「Ｎｏ」と判定してステップ１１７０に進む。
【０１５１】
ＣＰＵは、ステップ１１７０にて変化速度ΔVoxsが負であるか否かを判定する。即ち、ＣＰＵは、出力値Voxsが減少しているか否かを判定する。このとき、変化速度ΔVoxsが負でなければ、ＣＰＵはステップ１１７０にて「Ｎｏ」と判定し、ステップ１１９５に直接進んで本ルーチンを一旦終了する。
【０１５２】
これに対し、変化速度ΔVoxsが負であると、ＣＰＵはステップ１１７０にて「Ｙｅｓ」と判定してステップ１１８０に進み、変化速度ΔVoxsの大きさ｜ΔVoxs｜がリーン判定閾値dLeanthよりも大きいか否かを判定する。このとき、大きさ｜ΔVoxs｜がリーン判定閾値dLeanth以下であると、ＣＰＵはステップ１１８０にて「Ｎｏ」と判定し、ステップ１１９５に直接進んで本ルーチンを一旦終了する。
【０１５３】
これに対し、変化速度ΔVoxsの大きさ｜ΔVoxs｜がリーン判定閾値dLeanthよりも大きいと、ＣＰＵはステップ１１８０にて「Ｙｅｓ」と判定してステップ１１９０に進み、リッチ要求フラグＸRichreqの値を「１」に設定する。即ち、出力値Voxsが減少していて且つその変化速度ΔVoxsの大きさがリーン判定閾値dLeanthよりも大きい場合、ＣＰＵは「触媒４３の状態が酸素過剰状態である。」と判定し、リッチ要求フラグＸRichreqの値を「１」に設定する。
【０１５４】
なお、ＣＰＵは、リッチ要求フラグＸRichreqの値が「１」であるとき、出力値Voxsがリッチ判定閾値VRichthよりも大きくなったとき、リッチ要求フラグＸRichreqの値を「０」に設定してもよい。同様に、リッチ要求フラグＸRichreqの値が「０」であるとき、出力値Voxsがリーン判定閾値VLeanthよりも小さくなったとき、リッチ要求フラグＸRichreqの値を「１」に設定してもよい。この場合、リッチ判定閾値VRichthは中央値Vmid以下の値であってもよい。リーン判定閾値VLeanthは中央値Vmid以上の値であってもよい。
【０１５５】
このようにリッチ要求フラグＸRichreqの値は、下流側空燃比センサ６７の出力値Voxsに基づいて、「１」と「０」との何れかの値に交互に設定される。そして、設定されたリッチ要求フラグＸRichreqに応じて上流側目標空燃比abyfrが決定され（図６のルーチンを参照。）、その上流側目標空燃比abyfrに基づいて指示燃料噴射量Ｆｉが決定される（図５のルーチンを参照。）。
【０１５６】
以上、説明したように、第１制御装置は、
触媒４３に流入するガスの空燃比の目標値である上流側目標空燃比abyfrを下流側空燃比センサ６７の出力値Voxsに基づいて「目標リッチ空燃比afRichと目標リーン空燃比afLeanと」に交互に設定する目標空燃比設定手段（図１１のルーチンを参照。）と、
機関１０に対して燃料を噴射する燃料噴射弁３３と、
燃料噴射弁３３から噴射される燃料の量である燃料噴射量（指示燃料噴射量Ｆｉ）を上流側目標空燃比abyfrに応じて決定するとともに同決定した燃料噴射量の燃料を燃料噴射弁３３から噴射させる燃料噴射制御手段（図５のステップ５３０乃至ステップ５７０を参照。）と、
燃料噴射弁３３に供給される燃料を貯蔵する燃料タンク５１内に発生した蒸発燃料を機関１０の吸気通路に導入する蒸発燃料パージ手段（キャニスタ５２、ベーパ捕集管５３、パージ流路管５４、及び、パージ制御弁５５等を参照。）と、
前記蒸発燃料パージ手段により前記吸気通路に導入される蒸発燃料の量であるパージ量（目標パージ率ＰＧＴ、又は、パージ流量ＫＰ、従って、デューティ比ＤＰＧ）を制御する蒸発燃料パージ量制御手段（図９のルーチンを参照。）と、
を備える。
【０１５７】
更に、第１制御装置において、
前記目標空燃比設定手段は、
機関１０の運転状態を表す運転状態指標量（吸入空気量Ｇａ）が第１の値（Ｇａ１）であるとき、前記目標リッチ空燃比afRichを「理論空燃比よりも小さい第１目標リッチ空燃比afRich1）」に設定するとともに前記目標リーン空燃比afLeanを「理論空燃比よりも大きい第１目標リーン空燃比afLean1）」に設定し、且つ、
運転状態指標量（吸入空気量Ｇａ）が「前記第１の値（Ｇａ１）と異なる第２の値（Ｇａ２）」であるとき、前記目標リッチ空燃比afRichを「前記第１目標リッチ空燃比afRich1よりも小さい第２目標リッチ空燃比afRich2」に設定するとともに前記目標リーン空燃比afLeanを「前記第１目標リーン空燃比afLean1よりも大きい第２目標リーン空燃比afLean2」に設定するように構成され（図６のステップ６４０及びステップ６５０を参照。）、
前記蒸発燃料パージ量制御手段は、
前記目標リーン空燃比afLeanと前記目標リッチ空燃比afRichとの差の大きさ（＝空燃比振幅ΔＡＦ＝｜afLean−afRich｜）が大きいほど前記パージ量を増大するように構成されている（図９のステップ９３０、ステップ９３５、及び、ステップ９４０〜ステップ９７０を参照。）。
【０１５８】
第１制御装置においては、空燃比振幅ΔＡＦが大きくなるほど、目標リッチ空燃比afRichは小さくなり、目標リーン空燃比afLeanは大きくなる。従って、例えば、蒸発燃料のパージが開始されたときに蒸発燃料ガス濃度学習値ＦＧＰＧの値が適正値から乖離していることに起因して触媒流入ガスの空燃比が大きく乱れたとしても、その影響が下流側空燃比センサの出力値Voxsに現れたときに触媒流入ガスの空燃比がその乖離を迅速に吸収するような値へと変化する。よって、触媒４３の酸素吸蔵量が「最大酸素吸蔵量Ｃmax」又は「０」に維持されている期間（即ち、エミッションが悪化する期間）は短くなる。
【０１５９】
逆に、空燃比振幅ΔＡＦが小さい場合、パージされる蒸発燃料の量は少なくなる。従って、パージの開始に伴う触媒流入ガスの空燃比が乱れる程度を小さくすることができる。その結果、空燃比振幅ΔＡＦが小さい場合であっても、触媒４３の酸素吸蔵量が「最大酸素吸蔵量Ｃmax」又は「０」に維持されている期間が長くならないようにすることができる。よって、第１制御装置は、エミッションが悪化する可能性を低く維持しながら、蒸発燃料のパージを行うことができる。
【０１６０】
また、異なる見方をすると、空燃比振幅ΔＡＦが大きい場合の触媒４３の最大酸素吸蔵量Ｃmaxは、空燃比振幅ΔＡＦが小さい場合の触媒４３の最大酸素吸蔵量Ｃmaxよりも大きくなる。つまり、より大きい目標リーン空燃比afLean及びより小さい目標リッチ空燃比afRichを交互に設定している場合、触媒４３はより多くの酸素を吸蔵及び吐出することができる。従って、そのような場合にパージ量を多くすることにより、エミッションの悪化を回避しながらパージを迅速に行うことができる。
【０１６１】
なお、第１制御装置は、図９のステップ９３５のブロック内において破線により示したように、空燃比振幅ΔＡＦが閾値空燃比振幅ΔＡＦｔｈよりも小さいとき、目標パージ率ＰＧＴを「０」に設定し、蒸発燃料のパージを停止（禁止）してもよい。
【０１６２】
更に、第１制御装置において、目標リッチ空燃比afRich及び目標リーン空燃比afLeanを決定するための運転状態指標量は吸入空気量Ｇａであったが、この運転状態指標量はスロットル弁開度ＴＡ、機関１０の負荷ＫＬ、機関回転速度ＮＥ、冷却水温ＴＨＷ、及び、蒸発燃料ガス濃度学習値ＦＧＰＧ等の機関１０の運転状態を示す一つ以上のパラメータであってもよい。更に、目標リッチ空燃比afRich及び目標リーン空燃比afLeanはステップ６４０及びステップ６５０に示したように運転状態指標量に対して連続的に変化する値であってもよく、運転状態指標量に対して離散的（ステップ状）に変化する値であってもよい。
【０１６３】
＜第２実施形態＞
次に、本発明の第２実施形態に係る内燃機関の制御装置（以下、「第２制御装置」とも称呼する。）について説明する。
【０１６４】
キャニスタ５２は有限量の吸着剤を保持しているから、キャニスタ５２による蒸発燃料の吸着量には上限がある。この上限はキャニスタ飽和蒸発燃料量とも称呼される。「キャニスタ５２に吸着されている蒸発燃料の量」がキャニスタ飽和蒸発燃料量に近づくほど、蒸発燃料ガスの濃度は高くなるので、蒸発燃料ガス濃度学習値ＦＧＰＧは小さくなる。そこで、第２制御装置は、「１」から蒸発燃料ガス濃度学習値ＦＧＰＧを減じた値（１−ＦＧＰＧ）を「キャニスタ５２に吸着されている蒸発燃料の量」を表す値、即ち、蒸発燃料吸着推定量として取得する。
【０１６５】
そして、第２制御装置は、蒸発燃料吸着推定量とキャニスタ飽和蒸発燃料量との差が所定量以下になると（即ち、キャニスタ飽和状態となると）、蒸発燃料吸着推定量とキャニスタ飽和蒸発燃料量との差が前記所定量よりも大きい場合に比較して、目標リッチ空燃比afRichをより小さくするとともに、目標リーン空燃比afLeanをより大きくする。これにより、目標リーン空燃比と目標リッチ空燃比との差の大きさ（空燃比振幅ΔＡＦ＝｜afLean−afRich｜）が大きくなるので、目標パージ率ＰＧＴ（従って、パージ流量ＫＰ）を大きくすることができる。その結果、キャニスタ５２が蒸発燃料を更に吸着することができる量を迅速にある程度の大きさにまで回復することができる。
【０１６６】
（実際の作動）
次に、第２制御装置の実際の作動について説明する。第２制御装置のＣＰＵは、図６に示したルーチンを除き、第１制御装置のＣＰＵが実行するルーチンを実行する。更に、第２制御装置のＣＰＵは、所定時間が経過する毎に「図６に代わる図１２にフローチャートにより示した目標空燃比決定ルーチン」を実行するようになっている。従って、以下、主として図１２を参照しながら第２制御装置の作動について説明する。
【０１６７】
図１２に示したルーチンは図６に示したルーチンと類似している。図１２に示されたステップであって図６にも示されたステップには、図６に示されたステップと同一の符号が付されている。これらのステップの詳細な説明は適宜省略される。図１２に示したルーチンは、図６に示したステップ６４０の後に「ステップ１２１０及びステップ１２２０」を追加し、更に、図６に示したステップ６５０の後に「ステップ１２３０及びステップ１２４０」を追加したルーチンである。
【０１６８】
より具体的に述べると、ＣＰＵは、リッチ要求フラグＸRichreqの値が「１」である場合、ステップ６４０にて目標リッチ空燃比afRichを機関１０の運転状態指標量（吸入空気量Ｇａ）に基づいて決定し、その後、ステップ１２１０に進んで値（１−ＦＧＰＧ）が閾値Ｌｔｈ以上であるか否かを判定する。即ち、ＣＰＵは、蒸発燃料ガス濃度学習値ＦＧＰＧにより示された蒸発燃料吸着推定量（１−ＦＧＰＧ）とキャニスタ飽和蒸発燃料量との差が所定量以下であるか否かを判定する。
【０１６９】
そして、蒸発燃料吸着推定量（１−ＦＧＰＧ）が閾値Ｌｔｈ以上である場合（即ち、蒸発燃料吸着推定量とキャニスタ飽和蒸発燃料量との差が所定量以下である場合）、ＣＰＵはステップ１２１０にて「Ｙｅｓ」と判定してステップ１２２０に進み、目標リッチ空燃比afRichを所定空燃比afRだけ小さくした値（＝afRich−afR）を目標リッチ空燃比afRichとして再設定する。その後、ＣＰＵはステップ１２９５に進む。なお、第２制御装置において、便宜上、ステップ１２２０にて再設定される前の目標リッチ空燃比afRichは第１目標リッチ空燃比afRich1とも称呼され、ステップ１２２０にて再設定された後の目標リッチ空燃比afRichは第２目標リッチ空燃比afRich2とも称呼される。これに対し、蒸発燃料吸着推定量（１−ＦＧＰＧ）が閾値Ｌｔｈ未満であれば、ＣＰＵはステップ１２１０にて「Ｎｏ」と判定し、ステップ１２９５に直接進んで本ルーチンを一旦終了する。
【０１７０】
同様に、リッチ要求フラグＸRichreqの値が「０」である場合、ＣＰＵはステップ６５０にて目標リーン空燃比afLeanを決定し、その後、ステップ１２３０に進んで蒸発燃料吸着推定量（１−ＦＧＰＧ）が閾値Ｌｔｈ以上であるか否かを判定する。即ち、ＣＰＵは、蒸発燃料ガス濃度学習値ＦＧＰＧにより示された蒸発燃料吸着推定量（１−ＦＧＰＧ）とキャニスタ飽和蒸発燃料量との差が所定量以下であるか否かを判定する。
【０１７１】
そして、蒸発燃料吸着推定量（１−ＦＧＰＧ）が閾値Ｌｔｈ以上である場合、ＣＰＵはステップ１２３０にて「Ｙｅｓ」と判定してステップ１２４０に進み、目標リーン空燃比afLeanを所定空燃比afLだけ大きくした値（＝afLean＋afL）を目標リーン空燃比afLeanとして再設定する。その後、ＣＰＵはステップ１２９５に進む。なお、第２制御装置において、便宜上、ステップ１２４０にて再設定される前の目標リーン空燃比afLeanは第１目標リーン空燃比afLean1とも称呼され、ステップ１２４０にて再設定された後の目標リーン空燃比afLeanは第２目標リーン空燃比afLean2とも称呼される。これに対し、蒸発燃料吸着推定量（１−ＦＧＰＧ）が閾値Ｌｔｈ未満であれば、ＣＰＵはステップ１２３０にて「Ｎｏ」と判定し、ステップ１２９５に直接進んで本ルーチンを一旦終了する。
【０１７２】
以上、説明したように、第２制御装置は、触媒４３に流入するガスの空燃比の目標値である上流側目標空燃比abyfrを下流側空燃比センサ６７の出力値Voxsに基づいて「目標リッチ空燃比afRichと目標リーン空燃比afLeanと」に交互に設定する目標空燃比設定手段（図１１及び図１２を参照。）を備える。
【０１７３】
そして、前記目標空燃比設定手段は、
キャニスタ５２に吸着されている蒸発燃料の量に応じた値である蒸発燃料吸着推定量（１−ＦＧＰＧ）を取得するとともに、
蒸発燃料吸着推定量（１−ＦＧＰＧ）が所定量Ｌｔｈ未満であるとき前記目標リッチ空燃比afRichを「理論空燃比よりも小さい第１目標リッチ空燃比（図１２のステップ６４０にて決定される目標リッチ空燃比）」に設定するとともに（図１２のステップ６４０）前記目標リーン空燃比afLeanを「理論空燃比よりも大きい第１目標リーン空燃比（図１２のステップ６５０にて決定される目標リーン空燃比）」に設定し（図１２のステップ６５０）、且つ、
前記蒸発燃料吸着推定量（１−ＦＧＰＧ）が前記所定量Ｌｔｈ以上であるとき前記目標リッチ空燃比afRichを「前記第１目標リッチ空燃比よりもafRだけ小さい第２目標リッチ空燃比」に設定する（図１２のステップ１２１０及びステップ１２２０）とともに前記目標リーン空燃比afLeanを「前記第１目標リーン空燃比よりもafLだけ大きい第２目標リーン空燃比」に設定する（図１２のステップ１２３０及びステップ１２４０）ように構成されている。
【０１７４】
更に、第２制御装置の蒸発燃料パージ量制御手段は、第１制御装置の蒸発燃料パージ量制御手段と同様、前記目標リーン空燃比と前記目標リッチ空燃比との差の大きさ（空燃比振幅ΔＡＦ＝｜afLean−afRich｜）が大きいほど前記パージ量を増大するように構成されている（図９のステップ９３０乃至ステップ９７０を参照。）。
【０１７５】
従って、キャニスタ５２に吸着された蒸発燃料の量（蒸発燃料吸着推定量）がキャニスタ飽和蒸発燃料量に近づくほど、パージ量を増大することができる。よって、キャニスタ５２に「ある程度の量の蒸発燃料」を吸着することができる余力を与えておくことができる。これにより、仮に燃料タンク５１内に蒸発燃料が急激且つ多量に発生した場合であっても、その蒸発燃料をキャニスタ５２に吸着させることができる可能性が高まる。その結果、蒸発燃料が大気中に排出されてしまう可能性を低減することができる。
【０１７６】
更に、パージ量が大きくなるほど、目標リーン空燃比afLeanはより大きい空燃比となり、目標リッチ空燃比afRichはより小さい空燃比となるので、蒸発燃料のパージによってエミッションが悪化してしまう可能性を低減することができる。
【０１７７】
なお、第２制御装置は、ステップ１２１０を省略するとともに、ステップ１２２０の値afRを蒸発燃料吸着推定量（１−ＦＧＰＧ）が大きくなるほど大きくなる値に設定するように（即ち、目標リッチ空燃比afRichをより小さくするように）構成され得る。同様に、第２制御装置は、ステップ１２３０を省略するとともに、ステップ１２４０の値afLを蒸発燃料吸着推定量（１−ＦＧＰＧ）が大きくなるほど大きくなる値に設定するように（即ち、目標リーン空燃比afLeanをより大きくするように）構成され得る。
【０１７８】
更に、第２制御装置は、ステップ６４０において上流側目標空燃比abyfrを一定のリッチ空燃比に設定し、ステップ６５０において上流側目標空燃比abyfrを一定のリーン空燃比に設定するように構成されてもよい。
【０１７９】
この場合、前記目標空燃比設定手段は、
前記運転状態指標量として前記キャニスタ５２に吸着されている蒸発燃料の量に応じた値である蒸発燃料吸着推定量（１−ＦＧＰＧ）を取得するとともに、
前記蒸発燃料吸着推定量（１−ＦＧＰＧ）が所定量Ｌｔｈ未満であるとき前記運転状態指標量が前記第１の値であると判定し、それによって、前記目標リッチ空燃比afRichを「理論空燃比よりも小さい第１目標リッチ空燃比afRich1」に設定するとともに前記目標リーン空燃比afLeanを「理論空燃比よりも大きい第１目標リーン空燃比afLean1」に設定し、且つ、
前記蒸発燃料吸着推定量（１−ＦＧＰＧ）が前記所定量Ｌｔｈ以上であるとき前記運転状態指標量が前記第２の値であると判定し、それによって、前記目標リッチ空燃比afRichを「前記第１目標リッチ空燃比よりも小さい第２目標リッチ空燃比afRich2」に設定するとともに前記目標リーン空燃比afLeanを「前記第１目標リーン空燃比よりも大きい第２目標リーン空燃比afLean2」に設定するように構成されていると表現することもできる（ステップ１２１０乃至ステップ１２４０を参照。）。
【０１８０】
以上、説明したように、本発明による制御装置の種々の実施形態によれば、蒸発燃料のパージをエミッションの悪化を招くことなく行うことができる。なお、本発明は上記実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、蒸発燃料吸着推定量は、複数のセンサの出力値から推定することもできる。より具体的に述べると、制御装置は、タンクポート５２ａと、パージポート５２ｂと、大気ポート５２ｃと、のそれぞれに、ＨＣ濃度センサ及び流量センサを備えることができる。そして、制御装置は、それぞれのポートにおいて、流量とＨＣ濃度との積を通過蒸発燃料量として積算する。更に、制御装置は、タンクポート５２ａの通過蒸発燃料量から、パージポート５２ｂの通過蒸発燃料量と、大気ポート５２ｃの通過蒸発燃料量と、を減じることにより、蒸発燃料吸着推定量を推定することができる。
【０１８１】
更に、上記各実施形態の制御装置は、運転状態指標量が増大するにつれて目標リッチ空燃比afRichを理論空燃比よりも小さい範囲において減少させ且つ目標リーン空燃比afLeanを理論空燃比よりも大きい範囲において増大させ、或いは、運転状態指標量が増大するにつれて目標リッチ空燃比afRichを理論空燃比よりも小さい範囲において増大させ且つ目標リーン空燃比afLeanを理論空燃比よりも大きい範囲において減少させるように構成されていると表現することもできる（ステップ６４０及びステップ６５０を参照。）。
【０１８２】
加えて、上記各実施形態の制御装置は、パージ補正係数ＦＰＧ、メインＦＢ学習値ＫＧ及びメインフィードバック係数ＦＡＦにより基本燃料噴射量Ｆｂ（ｋ）を補正して指示燃料噴射量Ｆｉを求めているが、メインフィードバック係数ＦＡＦのみにより、又は、メインＦＢ学習値ＫＧ及びメインフィードバック係数ＦＡＦにより、基本燃料噴射量Ｆｂ（ｋ）を補正して指示燃料噴射量Ｆｉを求めてもよい。
【図１】
2012120676.tif 000003
【図２】
2012120676.tif 000004
【図３】
2012120676.tif 000005
【図４】
2012120676.tif 000006
【図５】
2012120676.tif 000007
【図６】
2012120676.tif 000008
【図７】
2012120676.tif 000009
【図８】
2012120676.tif 000010
【図９】
2012120676.tif 000011
【図１０】
2012120676.tif 000012
【図１１】
2012120676.tif 000013
【図１２】
2012120676.tif 000014
【国際調査報告】
2012120676.tif 000015
2012120676.tif 000016