"内燃機関の排気通路に配設された触媒と、前記排気通路の前記触媒の下流側に配設された下流側空燃比センサと、前記触媒に流入するガスの空燃比の目標値である上流側目標空燃比を前記下流側空燃比センサの出力値に基づいて目標リッチ空燃比と目標リーン空燃比とに交互に設定する目標空燃比設定手段と、前記機関に対して燃料を噴射する燃料噴射弁と、前記燃料噴射弁から噴射される燃料の量である燃料噴射量を前記上流側目標空燃比に応じて決定するとともに同決定した燃料噴射量の燃料を前記燃料噴射弁から噴射させる燃料噴射制御手段と、前記燃料噴射弁に供給される燃料を貯蔵する燃料タンク内に発生した蒸発燃料を前記機関の吸気通路に導入する蒸発燃料パージ手段と、前記蒸発燃料パージ手段により前記吸気通路に導入される蒸発燃料の量であるパージ量を制御する蒸発燃料パージ量制御手段と、を備えた内燃機関の制御装置において、前記目標空燃比設定手段は、前記機関の運転状態を表す運転状態指標量が第1の値であるとき、前記目標リッチ空燃比を理論空燃比よりも小さい第1目標リッチ空燃比に設定するとともに前記目標リーン空燃比を理論空燃比よりも大きい第1目標リーン空燃比に設定し、且つ、前記運転状態指標量が前記第1の値と異なる第2の値であるとき、前記目標リッチ空燃比を前記第1目標リッチ空燃比よりも小さい第2目標リッチ空燃比に設定するとともに前記目標リーン空燃比を前記第1目標リーン空燃比よりも大きい第2目標リーン空燃比に設定するように構成され、前記蒸発燃料パージ量制御手段は、前記目標リーン空燃比と前記目標リッチ空燃比との差の大きさが大きいほど前記パージ量を増大するように構成された制御装置。請求項1に記載の内燃機関の制御装置において、前記蒸発燃料パージ手段は、前記燃料タンクと前記吸気通路とを接続するパージ通路に介装されるとともに前記燃料タンク内に発生した前記蒸発燃料を吸着するキャニスタを含み、前記目標空燃比設定手段は、前記運転状態指標量として前記キャニスタに吸着されている前記蒸発燃料の量に応じた値である蒸発燃料吸着推定量を取得するとともに、前記蒸発燃料吸着推定量が所定量未満であるとき前記運転状態指標量が前記第1の値であると判定し、且つ、前記蒸発燃料吸着推定量が前記所定量以上であるとき前記運転状態指標量が前記第2の値であると判定するように構成された制御装置。内燃機関の排気通路に配設された触媒と、前記排気通路の前記触媒の下流側に配設された下流側空燃比センサと、前記触媒に流入するガスの空燃比の目標値である上流側目標空燃比を前記下流側空燃比センサの出力値に基づいて目標リッチ空燃比と目標リーン空燃比とに交互に設定する目標空燃比設定手段と、前記機関に対して燃料を噴射する燃料噴射弁と、前記燃料噴射弁から噴射される燃料の量である燃料噴射量を前記上流側目標空燃比に応じて決定するとともに同決定した燃料噴射量の燃料を前記燃料噴射弁から噴射させる燃料噴射制御手段と、前記燃料噴射弁に供給される燃料を貯蔵する燃料タンク内に発生した蒸発燃料を前記機関の吸気通路に導入する蒸発燃料パージ手段と、前記蒸発燃料パージ手段により前記吸気通路に導入される蒸発燃料の量であるパージ量を制御する蒸発燃料パージ量制御手段と、を備えた内燃機関の制御装置において、前記蒸発燃料パージ手段は、前記燃料タンクと前記吸気通路とを接続するパージ通路に介装されるとともに前記燃料タンク内に発生した前記蒸発燃料を吸着するキャニスタを含み、前記目標空燃比設定手段は、前記キャニスタに吸着されている前記蒸発燃料の量に応じた値である蒸発燃料吸着推定量を取得するとともに、前記蒸発燃料吸着推定量が所定量未満であるとき前記目標リッチ空燃比を理論空燃比よりも小さい第1目標リッチ空燃比に設定するとともに前記目標リーン空燃比を理論空燃比よりも大きい第1目標リーン空燃比に設定し、且つ、前記蒸発燃料吸着推定量が前記所定量以上であるとき前記目標リッチ空燃比を前記第1目標リッチ空燃比よりも小さい第2目標リッチ空燃比に設定するとともに前記目標リーン空燃比を前記第1目標リーン空燃比よりも大きい第2目標リーン空燃比に設定するように構成され、前記蒸発燃料パージ量制御手段は、前記目標リーン空燃比と前記目標リッチ空燃比との差の大きさが大きいほど前記パージ量を増大するように構成された制御装置。以下、本発明の各実施形態に係る内燃機関の制御装置以下、単に制御装置とも称呼する。について図面を参照しながら説明する。この制御装置は、内燃機関に供給される混合気の空燃比機関の空燃比を制御する空燃比制御装置の一部であり、更に、燃料噴射量を制御する燃料噴射量制御装置及び蒸発燃料のパージ量を制御する蒸発燃料パージ量制御装置の一部でもある。<第1実施形態>構成図1は、第1実施形態に係る制御装置以下、第1制御装置とも称呼する。を、4サイクル火花点火式多気筒直列4気筒内燃機関10に適用したシステムの概略構成を示している。内燃機関10は、機関本体部20と、吸気系統30と、排気系統40と、蒸発燃料供給系統50と、を含む。機関本体部20は、シリンダブロック部及びシリンダヘッド部を含む。機関本体部20は、複数の気筒燃焼室21を備えている。各気筒は、図示しない吸気ポート及び排気ポートと連通している。吸気ポートと燃焼室21との連通部は図示しない吸気弁により開閉される。排気ポートと燃焼室21との連通部は図示しない排気弁により開閉される。各燃焼室21には図示しない点火プラグが配設されている。吸気系統30は、インテークマニホールド31、吸気管32、複数の燃料噴射弁33、及び、スロットル弁34を備えている。インテークマニホールド31は、複数の枝部31aとサージタンク31bとを備えている。複数の枝部31aのそれぞれの一端は、複数の吸気ポートのそれぞれに接続されている。複数の枝部31aの他端はサージタンク31bに接続されている。吸気管32の一端はサージタンク31bに接続されている。吸気管32の他端には図示しないエアフィルタが配設されている。燃料噴射弁33は、一つの気筒燃焼室21に対して一つずつ配設されている。燃料噴射弁33は吸気ポートに設けられている。即ち、複数の気筒のそれぞれは、他の気筒とは独立して燃料供給を行う燃料噴射弁33を備えている。燃料噴射弁33は、噴射指示信号に応答し、正常である場合にその噴射指示信号に含まれる指示燃料噴射量の燃料を吸気ポート従って、燃料噴射弁33に対応する気筒21内に噴射するようになっている。より具体的に述べると、燃料噴射弁33には、後述する燃料タンク51に接続された燃料供給管57を介して燃料が供給されている。燃料噴射弁33に供給されている燃料の圧力は、その燃料の圧力と吸気ポート内の圧力との差圧が一定になるように図示しないプレッシャレギュレータにより制御されている。燃料噴射弁33は、指示燃料噴射量に応じた時間だけ開弁させられる。従って、燃料噴射弁33が正常であれば、燃料噴射弁33は指示燃料噴射量と等量の燃料を噴射する。スロットル弁34は、吸気管32内に回動可能に配設されている。スロットル弁34は、吸気通路の開口断面積を可変とするようになっている。スロットル弁34は、図示しないスロットル弁アクチュエータにより吸気管32内で回転駆動されるようになっている。排気系統40は、エキゾーストマニホールド41、エキゾーストパイプ42、エキゾーストパイプ42に配設された上流側触媒43、及び、上流側触媒43よりも下流においてエキゾーストパイプ42に配設された図示しない下流側触媒を備えている。エキゾーストマニホールド41は、複数の枝部41aと集合部41bとを備えている。複数の枝部41aのそれぞれの一端は、複数の排気ポートのそれぞれに接続されている。複数の枝部41aのそれぞれの他端は集合部41bに集合している。この集合部41bは、複数2以上であり、本例では4つの気筒から排出された排ガスが集合する部分であるから、排気集合部HKとも称呼される。エキゾーストパイプ42は集合部41bに接続されている。排気ポート、エキゾーストマニホールド41及びエキゾーストパイプ42は、排気通路を構成している。上流側触媒43及び下流側触媒のそれぞれは、所謂、白金、ロジウム及びパラジウム等の貴金属触媒物質からなる活性成分を担持する三元触媒装置排気浄化用の触媒である。各触媒は、各触媒に流入するガスの空燃比が三元触媒のウインドウ内の空燃比例えば、理論空燃比であるとき、HC,CO,H2などの未燃成分を酸化するとともに窒素酸化物NOxを還元する機能を有する。この機能は触媒機能とも称呼される。更に、各触媒は、酸素を吸蔵貯蔵する酸素吸蔵機能を有する。即ち、各触媒は、その触媒に流入するガス触媒流入ガスに過剰の酸素が含まれているとき、その酸素を吸蔵するとともにNOxを浄化する。各触媒は、触媒流入ガスに過剰な未燃物が含まれているとき、吸蔵している酸素を放出してその未燃物を浄化する。この酸素吸蔵機能は、触媒に担持されているセリアCeO2等の酸素吸蔵材によってもたらされる。各触媒は、酸素吸蔵機能により空燃比が理論空燃比から偏移したとしても未燃成分及び窒素酸化物を浄化することができる。つまり、酸素吸蔵機能により、ウインドウの幅が拡大する。蒸発燃料供給系統50は、燃料タンク51、キャニスタ52、ベーパ捕集管53、パージ流路管54、パージ制御弁55、及び、燃料ポンプ56を備えている。燃料タンク51は、燃料噴射弁33から機関10に対して噴射供給される燃料を貯留する。キャニスタ52は、燃料タンク51内にて発生した蒸発燃料蒸発燃料ガスを吸蔵する周知のチャコールキャニスタである。キャニスタ52は、タンクポート52aと、パージポート52bと、大気に曝されている大気ポート52cと、が形成された筐体を備える。キャニスタ52は、その筐体内に、蒸発燃料を吸着するための吸着剤活性炭等の52dを収納保持している。ベーパ捕集管53の一端は燃料タンク51の上部に接続され、ベーパ捕集管53の他端はタンクポート52aに接続されている。ベーパ捕集管53は、燃料タンク51内に発生した蒸発燃料を燃料タンク51からキャニスタ52へと導入するための管である。パージ流路管54の一端はパージポート52bに接続され、パージ流路管54の他端はサージタンク31b即ち、スロットル弁34よりも下流の吸気通路に接続されている。パージ流路管54は、キャニスタ52の吸着剤52dから脱離した蒸発燃料をサージタンク31bへと導入するための管である。ベーパ捕集管53及びパージ流路管54はパージ通路パージ通路部を構成している。パージ制御弁55はパージ流路管54に介装されている。パージ制御弁55は、指示信号であるデューティ比DPGを表す駆動信号により開度開弁期間が調節されることにより、パージ流路管54の通路断面積を変更するようになっている。パージ制御弁55は、デューティ比DPGが0であるときにパージ流路管54を完全に閉じるようになっている。燃料ポンプ56は、燃料タンク51に貯留されている燃料を燃料供給管57を通して燃料噴射弁33に供給するようになっている。このように構成された蒸発燃料供給系統50において、パージ制御弁55が完全に閉じられている場合、燃料タンク51内で発生した蒸発燃料はキャニスタ52に吸蔵される。パージ制御弁55が開かれている場合、キャニスタ52に吸蔵された蒸発燃料はパージ流路管54を通してサージタンク31bスロットル弁34よりも下流の吸気通路に放出され、燃焼室21機関10へ供給される。即ち、パージ制御弁55が開かれているとき、蒸発燃料のパージ蒸発燃料ガスのパージ又はパージとも称呼される。が行われる。このシステムは、熱線式エアフローメータ61、スロットルポジションセンサ62、水温センサ63、クランクポジションセンサ64、インテークカムポジションセンサ65、上流側空燃比センサ66、下流側空燃比センサ67、及び、アクセル開度センサ68を備えている。エアフローメータ61は、吸気管32内を流れる吸入空気の質量流量吸入空気流量Gaに応じた信号を出力するようになっている。即ち、吸入空気量Gaは、単位時間あたりに機関10に吸入される吸入空気量を表す。スロットルポジションセンサ62は、スロットル弁34の開度スロットル弁開度を検出し、スロットル弁開度TAを表す信号を出力するようになっている。水温センサ63は、内燃機関10の冷却水の温度を検出し、冷却水温THWを表す信号を出力するようになっている。冷却水温THWは、機関10の暖機状態機関10の温度を表す運転状態指標量である。クランクポジションセンサ64は、クランク軸が10°回転する毎に幅狭のパルスを有するとともに同クランク軸が360°回転する毎に幅広のパルスを有する信号を出力するようになっている。この信号は、後述する電気制御装置70によって機関回転速度NEに変換される。インテークカムポジションセンサ65は、インテークカムシャフトが所定角度から90度、次いで90度、更に180度回転する毎に一つのパルスを出力するようになっている。後述する電気制御装置70は、クランクポジションセンサ64及びインテークカムポジションセンサ65からの信号に基づいて、基準気筒例えば第1気筒の圧縮上死点を基準とした絶対クランク角度CAを取得するようになっている。この絶対クランク角度CAは、基準気筒の圧縮上死点において0°クランク角度に設定され、クランク軸の回転角度に応じて720°クランク角度まで増大し、その時点にて再び0°クランク角度に設定される。上流側空燃比センサ66は、エキゾーストマニホールド41の集合部41b排気集合部HKと上流側触媒43との間の位置においてエキゾーストマニホールド41及びエキゾーストパイプ42の何れかに配設されている。上流側空燃比センサ66は、例えば、特開平11-72473号公報、特開2000-65782号公報及び特開2004-69547号公報等に開示された拡散抵抗層を備える限界電流式広域空燃比センサである。上流側空燃比センサ66は、上流側空燃比センサ66の配設位置を流れる排ガスの空燃比触媒43に流入するガスである触媒流入ガスの空燃比、上流側空燃比abyfsに応じた出力値Vabyfsを出力する。出力値Vabyfsは、図2に示したように、触媒流入ガスの空燃比上流側空燃比abyfsが大きくなるほどリーン側の空燃比になるほど増大する。電気制御装置70は、出力値Vabyfsと上流側空燃比abyfsとの図2に示した関係を規定した空燃比変換テーブルマップMapabyfsを記憶している。電気制御装置70は、出力値Vabyfsを空燃比変換テーブルMapabyfsに適用することにより、実際の上流側空燃比abyfsを検出する検出上流側空燃比abyfsを取得するようになっている。再び、図1を参照すると、下流側空燃比センサ67は、エキゾーストパイプ42内に配設されている。下流側空燃比センサ67の配設位置は、上流側触媒43よりも下流側であり、且つ、下流側触媒よりも上流側即ち、上流側触媒43と下流側触媒との間の排気通路である。下流側空燃比センサ67は、周知の起電力式の酸素濃度センサ安定化ジルコニア等の固体電解質を用いた周知の濃淡電池型の酸素濃度センサである。下流側空燃比センサ67は、排気通路であって下流側空燃比センサ67が配設されている部位を通過するガスである被検出ガスの空燃比に応じた出力値Voxsを発生するようになっている。換言すると、出力値Voxsは、上流側触媒43から流出し且つ下流側触媒に流入するガスの空燃比に応じた値である。この出力値Voxsは、図3に示したように、被検出ガスの空燃比が理論空燃比よりもリッチのとき最大出力値max例えば、約0.9V~1.0Vとなる。出力値Voxsは、被検出ガスの空燃比が理論空燃比よりもリーンのとき最小出力値min例えば、約0.1V~0Vとなる。更に、出力値Voxsは、被検出ガスの空燃比が理論空燃比であるとき最大出力値maxと最小出力値minの略中間の電圧Vst中央値Vmid、中間電圧Vst、例えば、約0.5Vとなる。出力値Voxsは、被検出ガスの空燃比が理論空燃比よりもリッチな空燃比からリーンな空燃比へと変化する際に最大出力値maxから最小出力値minへと急変する。同様に、出力値Voxsは、被検出ガスの空燃比が理論空燃比よりもリーンな空燃比からリッチな空燃比へと変化する際に最小出力値minから最大出力値maxへと急変する。図1に示したアクセル開度センサ68は、運転者によって操作されるアクセルペダルAPの操作量Accpアクセルペダル操作量、アクセルペダルAPの開度を表す信号を出力するようになっている。アクセルペダル操作量Accpは、アクセルペダルAPの操作量が大きくなるとともに大きくなる。電気制御装置70は、CPU、CPUが実行するプログラム、テーブルマップ、関数及び定数等を予め記憶したROM、CPUが必要に応じてデータを一時的に格納するRAM、バックアップRAMB-RAM、並びに、ADコンバータを含むインターフェース等からなる周知のマイクロコンピュータである。バックアップRAMは、機関10を搭載した車両の図示しないイグニッションキースイッチの位置オフ位置、始動位置及びオン位置等の何れかに関わらず、車両に搭載されたバッテリから電力の供給を受けるようになっている。バックアップRAMは、バッテリから電力の供給を受けている場合、CPUの指示に応じてデータを格納するデータが書き込まれるとともに、そのデータを読み出し可能となるように保持記憶する。従って、バックアップRAMは、機関10の運転停止中においてもデータを保持することができる。バックアップRAMは、バッテリが車両から取り外される等によりバッテリからの電力供給が遮断されると、データを保持することができない。そこで、CPUは、バックアップRAMへの電力供給が再開されたとき、バックアップRAMに保持されるべきデータを初期化デフォルト値に設定するようになっている。なお、バックアップRAMは、EEPROM等の読み書き可能な不揮発性メモリであってもよい。電気制御装置70は、上述したセンサ等と接続され、CPUにそれらのセンサからの信号を供給するようになっている。更に、電気制御装置70は、CPUの指示に応じて、各気筒に対応して設けられた点火プラグ実際にはイグナイタ、各気筒に対応して設けられた燃料噴射弁33、パージ制御弁55、及び、スロットル弁アクチュエータ等に駆動信号指示信号を送出するようになっている。なお、電気制御装置70は、取得されたアクセルペダルの操作量Accpが大きくなるほどスロットル弁開度TAが大きくなるように、スロットル弁アクチュエータに指示信号を送出するようになっている。即ち、電気制御装置70は、運転者により変更される機関10の加速操作量アクセルペダル操作量Accpに応じて機関10の吸気通路に配設されたスロットル弁34の開度を変更するスロットル弁駆動手段を備えている。第1制御装置の作動の概要第1制御装置は、下流側空燃比センサ67の出力値Voxsに基づいて、触媒43の状態酸素吸蔵状態が、酸素過剰状態リーン状態、触媒43の酸素吸蔵量がその最大酸素吸蔵量Cmaxに近い値となっている状態、即ち、触媒43の酸素吸蔵量が高側閾値以上である状態であるか、酸素不足状態リッチ状態、触媒43に酸素が殆ど吸蔵されていない状態、即ち、触媒43の酸素吸蔵量が高側閾値以下である低側閾値未満である状態であるかを判定する。より具体的に述べると、第1制御装置は、触媒43の状態が酸素過剰状態であると判定されている場合であって、出力値Voxsの所定時間あたりの変化量ΔVoxsが正の値であり、且つ、その大きさ|ΔVoxs|がリッチ判定閾値dRichthよりも大きくなったとき、触媒43の状態が酸素不足状態となったと判定する。更に、第1制御装置は、触媒43の状態が酸素不足状態であると判定されているときに、変化量ΔVoxsが負の値であり、且つ、その大きさ|ΔVoxs|がリーン判定閾値dLeanthよりも大きくなったとき、触媒43の状態が酸素過剰状態となったと判定する。なお、第1制御装置は、触媒43の状態が酸素過剰状態であると判定されている場合であって、出力値Voxsがリッチ判定閾値VRichthよりも大きくなったとき、触媒43の状態が酸素不足状態となったと判定してもよい。更に、第1制御装置は、触媒43の状態が酸素不足状態であると判定されているときに、出力値Voxsがリーン判定閾値VLeanthよりも小さくなったとき、触媒43の状態が酸素過剰状態となったと判定してもよい。第1制御装置は、触媒43の状態が酸素不足状態であると判定されている場合、触媒流入ガスの空燃比の目標値即ち、上流側目標空燃比abyfrを理論空燃比よりも大きい目標リーン空燃比afLeanに設定する。第1制御装置は、触媒43の状態が酸素過剰状態であると判定されている場合、触媒流入ガスの空燃比の目標値即ち、上流側目標空燃比abyfrを理論空燃比よりも小さい目標リッチ空燃比afRichに設定する。目標リーン空燃比afLeanは一定ではなく、機関の運転状態を表すパラメータ運転状態指標量としての吸入空気量Gaに応じて変化する。即ち、目標リーン空燃比afLeanは、図4のAに示したように、吸入空気量Gaが第1の値であるとき第1目標リーン空燃比afLean1=理論空燃比a1に設定される。更に、目標リーン空燃比afLeanは、図4のCに示したように、吸入空気量Gaが第1の値と相違する第2の値であるとき第1目標リーン空燃比afLean1よりも大きい第2目標リーン空燃比afLean2=理論空燃比a3、a3>a1>0に設定される。目標リッチ空燃比afRichは一定ではなく、機関の運転状態を表すパラメータ運転状態指標量としての吸入空気量Gaに応じて変化する。即ち、目標リッチ空燃比afRichは、図4のAに示したように、吸入空気量Gaが第1の値であるとき第1目標リッチ空燃比afRich1=理論空燃比-a2に設定される。更に、目標リッチ空燃比afRichは、図4のCに示したように、吸入空気量Gaが第1の値と相違する第2の値であるとき第1目標リッチ空燃比afRich1よりも小さい第2目標リッチ空燃比afRich2=理論空燃比-a4、a4>a2>0に設定される。なお、値a1と値a2は等しくても、相違していてもよい。同様に、値a3と値a4は等しくても、相違していてもよい。一方、第1制御装置は、所定のパージ条件が成立したとき、パージ制御弁55を開弁して蒸発燃料を吸気通路に導入する蒸発燃料をパージする。。蒸発燃料のパージは、燃料噴射量の補正が十分でない場合等において、触媒流入ガスの空燃比を大きく乱れさせる。即ち、蒸発燃料のパージによる空燃比への影響は燃料噴射量を補正することにより補償される。しかしながら、燃料噴射量が十分に減少補正されない場合には触媒流入ガスの空燃比が過小になり、燃料噴射量が過度に減少補正される場合には触媒流入ガスの空燃比が過大になる。従って、蒸発燃料のパージを開始したとき、エミッションが悪化することがある。ところで、第1制御装置において、目標リーン空燃比afLeanと目標リッチ空燃比afRichとの差の大きさ=|afLean-afRich|は、吸入空気量Gaが第1の値であるときには第1目標リーン空燃比afLean1と第1目標リッチ空燃比afRich1との差の大きさ|a1a2|となり、吸入空気量Gaが第2の値であるときには第2目標リーン空燃比afLean2と第2目標リッチ空燃比afRich2との差の大きさ|a3a4|となる。値|a3a4|は値|a1a2|よりも大きい。即ち、第1制御装置においては、目標リーン空燃比afLeanと目標リッチ空燃比afRichとの差の大きさ=|afLean-afRich|が大きいほど、目標リッチ空燃比afRichはより小さくなり、目標リーン空燃比afLeanはより大きくなる。従って、第1制御装置においては、目標リーン空燃比afLeanと目標リッチ空燃比afRichとの差の大きさ=|afLean-afRich|が大きいほど、触媒43の状態が酸素過剰状態であると判定されたときにはより小さい空燃比の排ガスが触媒43に流入するので、その排ガス中の多量の未燃物により触媒43の酸素吸蔵量を速やかに減少させることができる。更に、第1制御装置においては、目標リーン空燃比afLeanと目標リッチ空燃比afRichとの差の大きさ=|afLean-afRich|が大きいほど、触媒43の状態が酸素不足状態であると判定されたときにはより大きい空燃比の排ガスが触媒43に流入するので、その排ガス中の多量の酸素により触媒43の酸素吸蔵量を速やかに増大させることができる。このため、目標リーン空燃比afLeanと目標リッチ空燃比afRichとの差の大きさ=|afLean-afRich|が大きい場合には、多量の蒸発燃料がパージされたとしても蒸発燃料のパージ量が大きくされたとしても、触媒43の酸素吸蔵量が最大酸素吸蔵量Cmax又は0に維持されている期間即ち、エミッションが悪化する期間が長くならない図4の期間T1と期間T2とを参照。。更に、触媒43は、流入するガスの空燃比が大きくなるほど多量の酸素を吸蔵することができ、流入するガスの空燃比が小さくなるほど多量の酸素を放出することができる。即ち、目標リーン空燃比afLeanと目標リッチ空燃比afRichとの差の大きさ=|afLean-afRich|が大きくなるほど、触媒43の最大酸素吸蔵量Cmaxは増大し、触媒43の浄化能力はより高くなる。そこで、第1制御装置は、目標リーン空燃比afLeanと目標リッチ空燃比afRichとの差の大きさ=|afLean-afRich|が大きいほど、パージされる蒸発燃料の量が大きくなるように、パージ制御弁55の開度デューティ比DPGを制御する。この結果、第1制御装置は、エミッションが悪化する可能性を低く維持しながら、蒸発燃料をパージさせることができる。実際の作動次に、第1制御装置の実際の作動について説明する。<燃料噴射量制御>第1制御装置のCPUは、図5に示した燃料噴射量制御ルーチンを、任意の気筒のクランク角がその気筒の吸気上死点前の所定クランク角度例えば、BTDC90°CAとなる毎に、その気筒以下、燃料噴射気筒とも称呼する。に対して繰り返し実行するようになっている。従って、所定のタイミングになると、CPUはステップ500から処理を開始し、以下に述べるステップ510乃至ステップ570の処理を順に行い、その後、ステップ595に進んで本ルーチンを一旦終了する。ステップ510:CPUはエアフローメータ61により計測された吸入空気量Ga、及び、機関回転速度NEをルックアップテーブルMapMcに適用することにより、現時点において燃料噴射気筒に吸入される吸入空気量筒内吸入空気量Mckを求める。筒内吸入空気量Mckは、各吸気行程に対応されながらRAM内に記憶される。ステップ520:CPUは、メインFB学習値メインフィードバック学習値KGをバックアップRAMから読み出す。メインFB学習値KGは、後述する図8に示したメインフィードバック学習ルーチンにより別途求められ、バックアップRAM内に記憶されている。ステップ530:CPUは、後述する図6に示した上流側目標空燃比設定ルーチンにより別途求められている上流側目標空燃比abyfr=abyfrkをRAMから読み出す。ステップ540:CPUは、下記1式に示したように、筒内吸入空気量Mckを、ステップ530にて読み出した上流側目標空燃比abyfrによって除することにより、基本燃料噴射量Fbkを求める。基本燃料噴射量Fbkは、各吸気行程に対応されながらRAM内に記憶される。Fbk=Mck/abyfr...1ステップ550:CPUはパージ補正係数FPGを下記の2式に従って求める。2式において、PGTは目標パージ率である。目標パージ率PGTは、後述する図9のステップ935において求められている。FGPGは蒸発燃料ガス濃度学習値である。蒸発燃料ガス濃度学習値FGPGは、後述する図10に示したルーチンにより求められ、バックアップRAM内に記憶されている。FPG=1PGTFGPG-1...2ステップ560:CPUは、基本燃料噴射量Fbkを下記3式に従って補正することにより、最終的な燃料噴射量の指令値である指示燃料噴射量Fiを求める。3式の右辺における各値は以下の通りである。これらの値は後述するルーチンにより別途求められている。FPG:パージ補正係数。KG:メインFB学習値KG。FAF:メインフィードバック制御により更新されるメインフィードバック係数。Fi=FPG{KGFAFFbk}...3ステップ570:CPUは、指示燃料噴射量Fiの燃料が燃料噴射気筒に対応して設けられている燃料噴射弁33から噴射されるように、その燃料噴射弁33に指示信号を送出する。<上流側目標空燃比設定>CPUは図6にフローチャートにより示した上流側目標空燃比設定ルーチンを所定時間の経過毎に繰り返し実行している。従って、所定のタイミングになると、CPUはステップ600から処理を開始し、フィードバック制御フラグXFBの値が1であるか否かを判定する。フィードバック制御フラグXFBの値は、フィードバック制御条件が成立しているときに1に設定され、フィードバック制御条件が成立していないときに0に設定される。換言すると、空燃比のフィードバック制御メインフィードバック制御及びサブフィードバック制御が実行されているとき、フィードバック制御フラグXFBの値は1に設定される。フィードバック制御条件は、例えば、以下の総ての条件が成立したときに成立する。A1上流側空燃比センサ66が活性化している。A2下流側空燃比センサ67が活性化している。A3機関の負荷KLが閾値KLth以下である。このとき、フィードバック制御フラグXFBの値が1でなければ、CPUはステップ610にてNoと判定してステップ620に進み、上流側目標空燃比abyfrを理論空燃比stoich例えば、14.6に設定する。その後、CPUはステップ695に進んで、本ルーチンを一旦終了する。一方、CPUがステップ610の処理を実行する時点において、フィードバック制御フラグXFBの値が1であると、CPUはそのステップ610にてYesと判定してステップ630に進み、リッチ要求フラグXRichreqの値が1であるか否かを判定する。リッチ要求フラグXRichreqの値は、後述する図11に示した空燃比要求触媒状態決定ルーチンにより1及び0の何れかに設定される。リッチ要求フラグXRichreqの値が1であることは、触媒43の状態は酸素過剰状態であり、触媒43に過剰な未燃物を流入させるべきであることを意味する。即ち、空燃比要求はリッチ要求である。リッチ要求フラグXRichreqの値が0であることは、触媒43の状態は酸素不足状態であり、触媒43に過剰な酸素を流入させるべきであることを意味する。即ち、空燃比要求はリーン要求である。ステップ630は、触媒43の状態が酸素過剰状態であると判定されているか否かを判定するステップに置換することもできる。リッチ要求フラグXRichreqの値が1であると、CPUはステップ630にてYesと判定してステップ640に進み、目標リッチ空燃比afRich理論空燃比よりも小さい空燃比を吸入空気量Gaに基づいて決定するとともに、上流側目標空燃比abyfr=今回の目標空燃比abyfrkをその目標リッチ空燃比afRichに設定する。このステップ640において、目標リッチ空燃比afRichは、吸入空気量Gaが第1の値Ga1のとき第1目標リッチ空燃比afRich1となり、吸入空気量Gaが第1の値Ga1と相違する大きい第2の値Ga2のとき第1目標リッチ空燃比afRich1よりも小さい第2目標リッチ空燃比afRich2となるように決定される。その後、CPUはステップ695に進んで、本ルーチンを一旦終了する。他方、CPUがステップ630の処理を実行する時点において、リッチ要求フラグXRichreqの値が0であると、CPUはステップ630にてNoと判定してステップ650に進み、目標リーン空燃比afLean理論空燃比よりも大きい空燃比を吸入空気量Gaに基づいて決定するとともに、上流側目標空燃比abyfr=今回の目標空燃比abyfrkをその目標リーン空燃比afLeanに設定する。このステップ650において、目標リーン空燃比afLeanは、吸入空気量Gaが第1の値Ga1のとき第1目標リーン空燃比afLean1となり、吸入空気量Gaが第1の値Ga1と相違する大きい第2の値Ga2のとき第1目標リーン空燃比afLean1よりも大きい第2目標リーン空燃比afLean2となるように決定される。その後、CPUはステップ695に進んで、本ルーチンを一旦終了する。なお、上流側目標空燃比abyfrは、各吸気行程に対応されながらRAM内に記憶される。<メインフィードバック制御>CPUは図7にフローチャートにより示したメインフィードバック制御ルーチンを所定時間の経過毎に繰り返し実行している。従って、所定のタイミングになると、CPUはステップ700から処理を開始し、ステップ710に進んでフィードバック制御フラグXFBの値が1であるか否かを判定する。いま、フィードバック制御フラグXFBの値が1であるとして説明を続ける。この場合、CPUはステップ710にてYesと判定して以下に述べるステップ715乃至ステップ750の処理を順に行い、その後、ステップ795に進んで本ルーチンを一旦終了する。ステップ715:CPUは、上流側空燃比センサ66の出力値Vabyfsを図2に示したテーブルMapabyfsに適用することにより上流側空燃比abyfsを取得する。ステップ720:CPUは、現時点よりもNサイクル即ち、N720°クランク角前の時点における筒内吸入空気量Mck-Nを、上流側空燃比abyfsで除すことにより、現時点よりもNサイクル前の時点において燃焼室21に実際に供給された燃料の量である筒内燃料供給量Fck-Nを求める。このように、現時点からNサイクル前の筒内燃料供給量Fck-Nを求めるために、現時点からNサイクル前の筒内吸入空気量Mck-Nを上流側空燃比abyfsで除すのは、燃焼室21内で燃焼された混合気が上流側空燃比センサ66に到達するまでにNサイクルに相当する時間を要するからである。ステップ725:CPUは、現時点からNサイクル前の筒内吸入空気量Mck-Nを現時点からNサイクル前の上流側目標空燃比abyfrk-Nで除すことにより現時点からNサイクル前の目標筒内燃料供給量Fcrk-Nを求める。ステップ730:CPUは、目標筒内燃料供給量Fcrk-Nから筒内燃料供給量Fck-Nを減じた値を筒内燃料供給量偏差DFcとして設定する。この筒内燃料供給量偏差DFc=Fcrk-N-Fck-Nは、Nサイクル前の時点で機関10に供給された燃料の過不足分を表す量となる。ステップ735:CPUは、下記4式に基いてメインフィードバック値DFiを求める。この4式において、Gpは予め設定された比例ゲイン、Giは予め設定された積分ゲインである。4式の値SDFcは筒内燃料供給量偏差DFcの積分値であり、次のステップ740にて求められる。つまり、第1制御装置は、上流側空燃比abyfsを上流側目標空燃比abyfrに一致させる比例積分制御PI制御によりメインフィードバック値DFiを算出する。DFi=GpDFcGiSDFc...4ステップ740:CPUは、その時点における筒内燃料供給量偏差DFcの積分値SDFcに上記ステップ730にて求められた筒内燃料供給量偏差DFcを加えることにより、新たな筒内燃料供給量偏差の積分値SDFcを取得する。ステップ745:CPUは、メインフィードバック値DFi及び基本燃料噴射量Fbk-Nを下記5式に適用することによりメインフィードバック係数FAFを算出する。即ち、メインフィードバック係数FAFは、現時点からNサイクル前の基本燃料噴射量Fbk-Nにメインフィードバック値DFiを加えた値を基本燃料噴射量Fbk-Nで除すことにより求められる。FAF=Fbk-NDFi/Fbk-N...5ステップ750:CPUは、下記6式に従ってメインフィードバック係数FAFの加重平均値をメインフィードバック係数平均FAFAV以下、補正係数平均FAFAVとも称呼する。として求める。6式においてFAFAVnewは更新後の補正係数平均FAFAVであり、そのFAFAVnewが新たな補正係数平均FAFAVとして格納される。また、6式において、値qは0より大きく1より小さい定数である。この補正係数平均FAFAVは、後述するように、メインFB学習値KG及び蒸発燃料ガス濃度学習値FGPGを求める際に用いられる。FAFAVnew=qFAF1-qFAFAV...6以上により、メインフィードバック値DFiが比例積分制御により求められ、このメインフィードバック値DFiがメインフィードバック係数FAFへと変換される。メインフィードバック係数FAFは、上述した図5のステップ560において指示燃料噴射量Fiに反映される。この結果、燃料供給量の過不足が補償されるので、機関の空燃比従って、上流側触媒43に流入するガスの空燃比の平均値が上流側目標空燃比abyfrと略一致させられる。これに対し、ステップ710の判定時において、フィードバック制御フラグXFBの値が0である場合、CPUはそのステップ710にてNoと判定し、以下に述べるステップ755乃至ステップ770の処理を順に行い、その後、ステップ795に進む。ステップ755:CPUはメインフィードバック値DFiの値を0に設定する。ステップ760:CPUは筒内燃料供給量偏差の積分値SDFcを0に設定する。ステップ765:CPUはメインフィードバック係数FAFの値を1に設定する。ステップ770:CPUは補正係数平均FAFAVの値を1に設定する。このように、フィードバック制御フラグXFBの値が0であるときフィードバック制御条件が不成立であるとき、メインフィードバック値DFiの値は0に設定され、メインフィードバック係数FAFの値は1に設定される。従って、基本燃料噴射量Fbkのメインフィードバック係数FAFによる補正は行われない。但し、このような場合であっても、基本燃料噴射量FbkはメインFB学習値KGによって補正される。<メインフィードバック学習ベース空燃比学習>第1制御装置はパージ制御弁55を完全に閉じた状態に維持する指示信号がパージ制御弁55に送出されている期間パージ制御弁閉弁指示期間、デューティ比DPGが0である期間において、メインフィードバック係数FAFを基本値1に近づけるように、補正係数平均FAFAVに基いてメインFB学習値KGを更新する。このメインFB学習値KGの更新を行うために、CPUは図8に示したメインフィードバック学習ルーチンを所定時間が経過する毎に実行するようになっている。従って、CPUは所定のタイミングになるとステップ800から処理を開始し、ステップ805に進んでフィードバック制御フラグXFBの値が1であるか否かを判定する。このとき、フィードバック制御フラグXFBの値が1でなければ即ち、メインフィードバック制御が実行されていなければ、CPUはそのステップ805にてNoと判定し、ステップ895に直接進んで本ルーチンを一旦終了する。この結果、メインFB学習値KGの更新は行われない。一方、フィードバック制御フラグXFBの値が1であるときメインフィードバック制御が実行中であるとき、CPUはステップ805にてYesと判定してステップ810に進み、蒸発燃料のパージが行われていないか否かを判定する。より具体的には、CPUは後述する図9のルーチンにより決定されるデューティ比DPGが0であるか否かを判定する。このとき、蒸発燃料のパージが行われているとデューティ比DPGが0でないと、CPUはそのステップ810にてNoと判定し、ステップ895に直接進んで本ルーチンを一旦終了する。この結果、メインFB学習値KGの更新は行われない。他方、CPUがステップ810の処理を実行する時点において蒸発燃料のパージが行われていなければデューティ比DPGが0であると、CPUはそのステップ810にてYesと判定してステップ815に進み、補正係数平均FAFAVの値が値1α以上であるか否かを判定する。ここで、αは、0より大きく1より小さい所定値であり、例えば、0.02である。このとき、補正係数平均FAFAVの値が値1α以上であると、CPUはステップ820に進んでメインFB学習値KGを正の所定値Xだけ増大させる。その後、CPUはステップ835に進む。これに対し、CPUがステップ815の処理を実行する時点において補正係数平均FAFAVの値が値1αよりも小さいと、CPUはステップ825に進んで補正係数平均FAFAVの値が値1-α以下であるか否かを判定する。このとき、補正係数平均FAFAVの値が値1-α以下であると、CPUはステップ830に進んでメインFB学習値KGを正の所定値Xだけ減少させる。その後、CPUはステップ835に進む。更に、CPUはステップ835に進んだとき、そのステップ835にてメインフィードバック学習完了フラグメインFB学習完了フラグXKGの値を0に設定する。メインFB学習完了フラグXKGは、その値が1であるときにメインフィードバック学習が完了しており、その値が0であるときにメインフィードバック学習が完了していないことを示す。次いで、CPUはステップ840に進み、メイン学習カウンタCKGの値を0に設定する。なお、メイン学習カウンタCKGの値は、機関10が搭載された車両の図示しないイグニッションキースイッチがオフ位置からオン位置へと変更された際に実行されるイニシャルルーチンにても0に設定されるようになっている。その後、CPUはステップ895に進み、本ルーチンを一旦終了する。CPUがステップ825の処理を実行する時点において、補正係数平均FAFAVの値が値1-αよりも大きいと即ち、補正係数平均FAFAVの値が値1-αと値1αの間の値であると、CPUはステップ845に進んでメイン学習カウンタCKGの値を1だけ増大する。次に、CPUはステップ850に進み、メイン学習カウンタCKGの値が所定のメイン学習カウンタ閾値CKGth以上であるか否かを判定する。そして、メイン学習カウンタCKGの値が所定のメイン学習カウンタ閾値CKGth以上であれば、CPUはステップ850にてYesと判定してステップ855に進み、メインFB学習完了フラグXKGの値を1に設定する。即ち、機関10の始動後において補正係数平均FAFAVの値が値1-αと値1αの間の値である回数継続時間がメイン学習カウンタ閾値CKGth以上となると、メインFB学習値KGの学習は完了したと見做される。その後、CPUはステップ895に進んで、本ルーチンを一旦終了する。これに対し、CPUがステップ850の処理を実行する時点において、メイン学習カウンタCKGの値が所定のメイン学習カウンタ閾値CKGthよりも小さければ、CPUはそのステップ850にてNoと判定し、ステップ850からステップ895に直接進んで本ルーチンを一旦終了する。以上により、メインフィードバック制御中であって蒸発燃料のパージが行われていない間にメインFB学習値KGが更新される。<パージ制御弁駆動>一方、CPUは図9に示したパージ制御弁駆動ルーチンを所定時間の経過毎に実行するようになっている。従って、所定のタイミングになるとCPUはステップ900から処理を開始し、ステップ910に進んでパージ条件が成立しているか否かを判定する。このパージ条件は、例えば、以下の総ての条件が成立したときに成立する。B1フィードバック制御フラグXFBの値が1であるメインフィードバック制御が実行中である。。B2機関10が定常運転されている例えば、機関の負荷を表すスロットル弁開度TAの単位時間あたりの変化量が所定値以下である。。いま、パージ条件が成立していると仮定する。この場合、CPUは図9のステップ910にてYesと判定してステップ920に進み、メインFB学習完了フラグXKGの値が1であるか否か即ち、メインフィードバック学習が完了しているか否かを判定する。このとき、メインFB学習完了フラグXKGの値が1であると、CPUはステップ920にてYesと判定し、以下に述べるステップ930乃至ステップ970の処理を順に行い、ステップ995に進んで本ルーチンを一旦終了する。ステップ930:CPUは、目標リーン空燃比afLeanから目標リッチ空燃比afRichを減じることにより空燃比振幅ΔAFを求める。即ち、空燃比振幅ΔAFは、目標リーン空燃比afLeanと目標リッチ空燃比afRichとの差の大きさ|afLean-afRich|と等しい。ステップ935:CPUは、空燃比振幅ΔAFに基づいて目標パージ率PGTを決定する。目標パージ率PGTは、空燃比振幅ΔAFが大きくなるほど大きくなるように設定される。なお、パージ率は、吸入空気量Gaに対するパージ流量KPの比パージ率=KP/Gaである。即ち、パージ流量KPは、機関10に吸入される吸気通路に導入される蒸発燃料ガスの流量であり、蒸発燃料ガスパージ量KPとも称呼される。パージ率は、吸入空気量Gaと蒸発燃料ガスパージ量KPとの和GaKPに対する蒸発燃料ガスパージ量KPの比パージ率=KP/GaKPとして表されてもよい。ステップ940:CPUは、目標パージ率PGTと吸入空気量流量Gaとの積をパージ流量KPとして算出する。ステップ950:CPUは、機関回転速度NE及び負荷KLをマップMapPGRMXに適用することにより、全開パージ率PGRMXを求める。この全開パージ率PGRMXは、パージ制御弁55を全開にしたときのパージ率である。マップMapPGRMXは実験又はシミュレーションの結果に基づき予め取得され、ROM内に格納されている。マップMapPGRMXによれば、全開パージ率PGRMXは機関回転速度NEが大きくなるほど、又は、負荷KLが大きくなるほど、小さくなる。ステップ960:CPUは、目標パージ率PGTを全開パージ率PGRMXで除した値に100を乗ずることによりデューティ比DPGを算出する。ステップ970:CPUは、パージ制御弁55をデューティ比DPGに基いて開閉制御する。これに対し、CPUは、パージ条件が成立していていない場合、ステップ910にてNoと判定してステップ980に進み、パージ流量KPを0に設定する。次いで、CPUは、ステップ990にてデューティ比DPGを0に設定した後、ステップ970へと進む。この場合、デューティ比DPGは0に設定されているからパージ制御弁55は完全に閉じられた状態となる。その後、CPUはステップ995に進んで本ルーチンを一旦終了する。更に、CPUがステップ920の処理を実行する時点において、メインFB学習完了フラグXKGの値が0である場合、CPUはそのステップ920にてNoと判定し、ステップ980、ステップ990及びステップ970の処理を実行する。この場合においても、デューティ比DPGは0に設定されているからパージ制御弁55は完全に閉じられた状態となる。その後、CPUはステップ995に進んで本ルーチンを一旦終了する。<蒸発燃料ガス濃度学習>更に、CPUは、所定時間が経過する毎に図10に示した蒸発燃料ガス濃度学習ルーチンを実行するようになっている。この蒸発燃料ガス濃度学習ルーチンの実行によって、蒸発燃料ガス濃度学習値FGPGの更新が行われる。CPUは所定のタイミングになるとステップ1000から処理を開始してステップ1005に進み、フィードバック制御フラグXFBの値が1であるか否かを判定するメインフィードバック制御が実行中であるか否かを判定する。このとき、フィードバック制御フラグXFBの値が0であれば、CPUはそのステップ1005にてNoと判定し、ステップ1095に直接進んで本ルーチンを一旦終了する。この結果、蒸発燃料ガス濃度学習値FGPGの更新は行われない。一方、フィードバック制御フラグXFBの値が1であるとき、CPUはステップ1005にてYesと判定してステップ1010に進み、蒸発燃料のパージが行われているか否か具体的には、図9のルーチンにより求められるデューティ比DPGが0でないか否かを判定する。このとき、蒸発燃料のパージが行われていないと、CPUはそのステップ1010にてNoと判定し、ステップ1095に直接進んで本ルーチンを一旦終了する。この結果、蒸発燃料ガス濃度学習値FGPGの更新は行われない。これに対し、CPUがステップ1010に進んだ際に蒸発燃料のパージが行われていると、CPUはステップ1010にてYesと判定してステップ1015に進み、補正係数平均FAFAVから1を減じた値の絶対値|FAFAV-1|が所定値β以上であるか否かを判定する。ここで、βは0より大きく1より小さい微小な所定値であり、例えば、0.02である。このとき、絶対値|FAFAV-1|が所定値β以上であると、CPUはステップ1015にてYesと判定してステップ1020に進み、下記7式に従って更新値tFGを求める。7式における目標パージ率PGTは、図9のステップ935にて設定されている。7式から明らかなように、更新値tFGは目標パージ率1当たりの補正量偏差εa=FAFAV-1である。その後、CPUはステップ1030に進む。tFG=FAFAV-1/PGT...7蒸発燃料のパージが行われている場合、蒸発燃料ガスの濃度が高いほど、上流側空燃比abyfsは理論空燃比よりもより小さい空燃比理論空燃比よりもリッチ側の空燃比となる。従って、メインフィードバック係数FAFはより小さい値になるので、補正係数平均FAFAVも1より小さい値となる。その結果、FAFAV-1は負の値となるので、更新値tFGは負の値となる。更に、更新値tFGの絶対値は、FAFAVが小さいほど1から乖離するほど大きな値となる。つまり、蒸発燃料ガスの濃度が高いほど、更新値tFGはその絶対値の大きい負の値となる。これに対し、絶対値|FAFAV-1|が所定値β以下である場合、CPUはステップ1015にてNoと判定してステップ1025に進み、更新値tFGを0に設定する。その後、CPUはステップ1030に進む。CPUは、ステップ1030において、下記8式に従って蒸発燃料ガス濃度学習値FGPGを更新し、ステップ1095に進んで本ルーチンを一旦終了する。8式においてFGPGnewは更新後の蒸発燃料ガス濃度学習値FGPGである。この結果、蒸発燃料ガス濃度学習値FGPGは、蒸発燃料ガスの濃度が高いほど小さい値になる。なお、蒸発燃料ガス濃度学習値FGPGの初期値は1に設定されている。FGPGnew=FGPGtFG...8蒸発燃料のパージは、メインフィードバック学習が完了しているときメインFB学習完了フラグXKGの値が1であるときに行われる図9のステップ920を参照。。更に、指示燃料噴射量Fiは、上記3式に示したように、パージ補正係数FPGにより補正される。しかも、パージ補正係数FPGは、上記2式に示したように、蒸発燃料ガス濃度学習値FGPGに基づいて算出される。それ故、パージ中のメインフィードバック係数FAFの1からの乖離の程度を示す値即ち、絶対値|FAFAV-1|は、蒸発燃料ガス濃度学習値FGPGの真値適正値からの乖離の程度を表す。そこで、上述したように、絶対値|FAFAV-1|が所定値βよりも大きいとき、蒸発燃料ガス濃度学習値FGPGが更新される。<空燃比要求触媒状態決定>CPUは、図11にフローチャートにより示した空燃比要求触媒状態決定ルーチンを所定時間tsの経過毎に繰り返し実行している。従って、所定のタイミングになると、CPUはステップ1100から処理を開始してステップ1110に進み、現時点の下流側空燃比センサ67の出力値Voxsから前回の下流側空燃比センサ67の出力値Voxsoldを減じることにより、所定時間ts単位時間あたりの出力値Voxsの変化量ΔVoxsを算出する。前回の出力値Voxsoldは、次のステップ1120にて更新される値であり、現時点から所定時間tsだけ前の時点の出力値Voxs本ルーチンが前回実行されたときの出力値Voxsである。次に、CPUはステップ1120に進み、現時点の出力値Voxsを前回の出力値Voxsoldとして記憶する。次に、CPUはステップ1130に進み、リッチ要求フラグXRichreqの値が1であるか否かを判定する。リッチ要求フラグXRichreqは、上述したイニシャルルーチンにおいて1に設定されるようになっている。更に、リッチ要求フラグXRichreqの値は、後述するように、下流側空燃比センサ67の出力値Voxsに基づいて触媒43の状態が酸素不足状態リッチ状態であると判定されたときに0に設定され、下流側空燃比センサ67の出力値Voxsに基づいて触媒43の状態が酸素過剰状態リーン状態であると判定されたときに1に設定される。いま、リッチ要求フラグXRichreqの値が1であると仮定する。この場合、CPUはステップ1130にてYesと判定してステップ1140に進み、変化速度ΔVoxsが正であるか否かを判定する。即ち、CPUは、出力値Voxsが増大しているか否かを判定する。このとき、変化速度ΔVoxsが正でなければ、CPUはステップ1140にてNoと判定し、ステップ1195に直接進んで本ルーチンを一旦終了する。これに対し、変化速度ΔVoxsが正であると、CPUはステップ1140にてYesと判定してステップ1150に進み、変化速度ΔVoxsの大きさ|ΔVoxs|がリッチ判定閾値dRichthよりも大きいか否かを判定する。このとき、大きさ|ΔVoxs|がリッチ判定閾値dRichth以下であると、CPUはステップ1150にてNoと判定し、ステップ1195に直接進んで本ルーチンを一旦終了する。これに対し、変化速度ΔVoxsの大きさ|ΔVoxs|がリッチ判定閾値dRichthよりも大きいと、CPUはステップ1150にてYesと判定してステップ1160に進み、リッチ要求フラグXRichreqの値を0に設定する。即ち、出力値Voxsが増大していて且つその変化速度ΔVoxsの大きさがリッチ判定閾値dRichthよりも大きい場合、CPUは触媒43の状態が酸素不足状態である。と判定し、リッチ要求フラグXRichreqの値を0に設定する。この状態即ち、リッチ要求フラグXRichreqの値が0に設定された状態において、CPUがステップ1100から処理を再び開始すると、CPUはステップ1110及びステップ1120を経由してステップ1130に進み、そのステップ1130にてNoと判定してステップ1170に進む。CPUは、ステップ1170にて変化速度ΔVoxsが負であるか否かを判定する。即ち、CPUは、出力値Voxsが減少しているか否かを判定する。このとき、変化速度ΔVoxsが負でなければ、CPUはステップ1170にてNoと判定し、ステップ1195に直接進んで本ルーチンを一旦終了する。これに対し、変化速度ΔVoxsが負であると、CPUはステップ1170にてYesと判定してステップ1180に進み、変化速度ΔVoxsの大きさ|ΔVoxs|がリーン判定閾値dLeanthよりも大きいか否かを判定する。このとき、大きさ|ΔVoxs|がリーン判定閾値dLeanth以下であると、CPUはステップ1180にてNoと判定し、ステップ1195に直接進んで本ルーチンを一旦終了する。これに対し、変化速度ΔVoxsの大きさ|ΔVoxs|がリーン判定閾値dLeanthよりも大きいと、CPUはステップ1180にてYesと判定してステップ1190に進み、リッチ要求フラグXRichreqの値を1に設定する。即ち、出力値Voxsが減少していて且つその変化速度ΔVoxsの大きさがリーン判定閾値dLeanthよりも大きい場合、CPUは触媒43の状態が酸素過剰状態である。と判定し、リッチ要求フラグXRichreqの値を1に設定する。なお、CPUは、リッチ要求フラグXRichreqの値が1であるとき、出力値Voxsがリッチ判定閾値VRichthよりも大きくなったとき、リッチ要求フラグXRichreqの値を0に設定してもよい。同様に、リッチ要求フラグXRichreqの値が0であるとき、出力値Voxsがリーン判定閾値VLeanthよりも小さくなったとき、リッチ要求フラグXRichreqの値を1に設定してもよい。この場合、リッチ判定閾値VRichthは中央値Vmid以下の値であってもよい。リーン判定閾値VLeanthは中央値Vmid以上の値であってもよい。このようにリッチ要求フラグXRichreqの値は、下流側空燃比センサ67の出力値Voxsに基づいて、1と0との何れかの値に交互に設定される。そして、設定されたリッチ要求フラグXRichreqに応じて上流側目標空燃比abyfrが決定され図6のルーチンを参照。、その上流側目標空燃比abyfrに基づいて指示燃料噴射量Fiが決定される図5のルーチンを参照。。以上、説明したように、第1制御装置は、触媒43に流入するガスの空燃比の目標値である上流側目標空燃比abyfrを下流側空燃比センサ67の出力値Voxsに基づいて目標リッチ空燃比afRichと目標リーン空燃比afLeanとに交互に設定する目標空燃比設定手段図11のルーチンを参照。と、機関10に対して燃料を噴射する燃料噴射弁33と、燃料噴射弁33から噴射される燃料の量である燃料噴射量指示燃料噴射量Fiを上流側目標空燃比abyfrに応じて決定するとともに同決定した燃料噴射量の燃料を燃料噴射弁33から噴射させる燃料噴射制御手段図5のステップ530乃至ステップ570を参照。と、燃料噴射弁33に供給される燃料を貯蔵する燃料タンク51内に発生した蒸発燃料を機関10の吸気通路に導入する蒸発燃料パージ手段キャニスタ52、ベーパ捕集管53、パージ流路管54、及び、パージ制御弁55等を参照。と、前記蒸発燃料パージ手段により前記吸気通路に導入される蒸発燃料の量であるパージ量目標パージ率PGT、又は、パージ流量KP、従って、デューティ比DPGを制御する蒸発燃料パージ量制御手段図9のルーチンを参照。と、を備える。更に、第1制御装置において、前記目標空燃比設定手段は、機関10の運転状態を表す運転状態指標量吸入空気量Gaが第1の値Ga1であるとき、前記目標リッチ空燃比afRichを理論空燃比よりも小さい第1目標リッチ空燃比afRich1に設定するとともに前記目標リーン空燃比afLeanを理論空燃比よりも大きい第1目標リーン空燃比afLean1に設定し、且つ、運転状態指標量吸入空気量Gaが前記第1の値Ga1と異なる第2の値Ga2であるとき、前記目標リッチ空燃比afRichを前記第1目標リッチ空燃比afRich1よりも小さい第2目標リッチ空燃比afRich2に設定するとともに前記目標リーン空燃比afLeanを前記第1目標リーン空燃比afLean1よりも大きい第2目標リーン空燃比afLean2に設定するように構成され図6のステップ640及びステップ650を参照。、前記蒸発燃料パージ量制御手段は、前記目標リーン空燃比afLeanと前記目標リッチ空燃比afRichとの差の大きさ=空燃比振幅ΔAF=|afLean-afRich|が大きいほど前記パージ量を増大するように構成されている図9のステップ930、ステップ935、及び、ステップ940~ステップ970を参照。。第1制御装置においては、空燃比振幅ΔAFが大きくなるほど、目標リッチ空燃比afRichは小さくなり、目標リーン空燃比afLeanは大きくなる。従って、例えば、蒸発燃料のパージが開始されたときに蒸発燃料ガス濃度学習値FGPGの値が適正値から乖離していることに起因して触媒流入ガスの空燃比が大きく乱れたとしても、その影響が下流側空燃比センサの出力値Voxsに現れたときに触媒流入ガスの空燃比がその乖離を迅速に吸収するような値へと変化する。よって、触媒43の酸素吸蔵量が最大酸素吸蔵量Cmax又は0に維持されている期間即ち、エミッションが悪化する期間は短くなる。逆に、空燃比振幅ΔAFが小さい場合、パージされる蒸発燃料の量は少なくなる。従って、パージの開始に伴う触媒流入ガスの空燃比が乱れる程度を小さくすることができる。その結果、空燃比振幅ΔAFが小さい場合であっても、触媒43の酸素吸蔵量が最大酸素吸蔵量Cmax又は0に維持されている期間が長くならないようにすることができる。よって、第1制御装置は、エミッションが悪化する可能性を低く維持しながら、蒸発燃料のパージを行うことができる。また、異なる見方をすると、空燃比振幅ΔAFが大きい場合の触媒43の最大酸素吸蔵量Cmaxは、空燃比振幅ΔAFが小さい場合の触媒43の最大酸素吸蔵量Cmaxよりも大きくなる。つまり、より大きい目標リーン空燃比afLean及びより小さい目標リッチ空燃比afRichを交互に設定している場合、触媒43はより多くの酸素を吸蔵及び吐出することができる。従って、そのような場合にパージ量を多くすることにより、エミッションの悪化を回避しながらパージを迅速に行うことができる。なお、第1制御装置は、図9のステップ935のブロック内において破線により示したように、空燃比振幅ΔAFが閾値空燃比振幅ΔAFthよりも小さいとき、目標パージ率PGTを0に設定し、蒸発燃料のパージを停止禁止してもよい。更に、第1制御装置において、目標リッチ空燃比afRich及び目標リーン空燃比afLeanを決定するための運転状態指標量は吸入空気量Gaであったが、この運転状態指標量はスロットル弁開度TA、機関10の負荷KL、機関回転速度NE、冷却水温THW、及び、蒸発燃料ガス濃度学習値FGPG等の機関10の運転状態を示す一つ以上のパラメータであってもよい。更に、目標リッチ空燃比afRich及び目標リーン空燃比afLeanはステップ640及びステップ650に示したように運転状態指標量に対して連続的に変化する値であってもよく、運転状態指標量に対して離散的ステップ状に変化する値であってもよい。<第2実施形態>次に、本発明の第2実施形態に係る内燃機関の制御装置以下、第2制御装置とも称呼する。について説明する。キャニスタ52は有限量の吸着剤を保持しているから、キャニスタ52による蒸発燃料の吸着量には上限がある。この上限はキャニスタ飽和蒸発燃料量とも称呼される。キャニスタ52に吸着されている蒸発燃料の量がキャニスタ飽和蒸発燃料量に近づくほど、蒸発燃料ガスの濃度は高くなるので、蒸発燃料ガス濃度学習値FGPGは小さくなる。そこで、第2制御装置は、1から蒸発燃料ガス濃度学習値FGPGを減じた値1-FGPGをキャニスタ52に吸着されている蒸発燃料の量を表す値、即ち、蒸発燃料吸着推定量として取得する。そして、第2制御装置は、蒸発燃料吸着推定量とキャニスタ飽和蒸発燃料量との差が所定量以下になると即ち、キャニスタ飽和状態となると、蒸発燃料吸着推定量とキャニスタ飽和蒸発燃料量との差が前記所定量よりも大きい場合に比較して、目標リッチ空燃比afRichをより小さくするとともに、目標リーン空燃比afLeanをより大きくする。これにより、目標リーン空燃比と目標リッチ空燃比との差の大きさ空燃比振幅ΔAF=|afLean-afRich|が大きくなるので、目標パージ率PGT従って、パージ流量KPを大きくすることができる。その結果、キャニスタ52が蒸発燃料を更に吸着することができる量を迅速にある程度の大きさにまで回復することができる。実際の作動次に、第2制御装置の実際の作動について説明する。第2制御装置のCPUは、図6に示したルーチンを除き、第1制御装置のCPUが実行するルーチンを実行する。更に、第2制御装置のCPUは、所定時間が経過する毎に図6に代わる図12にフローチャートにより示した目標空燃比決定ルーチンを実行するようになっている。従って、以下、主として図12を参照しながら第2制御装置の作動について説明する。図12に示したルーチンは図6に示したルーチンと類似している。図12に示されたステップであって図6にも示されたステップには、図6に示されたステップと同一の符号が付されている。これらのステップの詳細な説明は適宜省略される。図12に示したルーチンは、図6に示したステップ640の後にステップ1210及びステップ1220を追加し、更に、図6に示したステップ650の後にステップ1230及びステップ1240を追加したルーチンである。より具体的に述べると、CPUは、リッチ要求フラグXRichreqの値が1である場合、ステップ640にて目標リッチ空燃比afRichを機関10の運転状態指標量吸入空気量Gaに基づいて決定し、その後、ステップ1210に進んで値1-FGPGが閾値Lth以上であるか否かを判定する。即ち、CPUは、蒸発燃料ガス濃度学習値FGPGにより示された蒸発燃料吸着推定量1-FGPGとキャニスタ飽和蒸発燃料量との差が所定量以下であるか否かを判定する。そして、蒸発燃料吸着推定量1-FGPGが閾値Lth以上である場合即ち、蒸発燃料吸着推定量とキャニスタ飽和蒸発燃料量との差が所定量以下である場合、CPUはステップ1210にてYesと判定してステップ1220に進み、目標リッチ空燃比afRichを所定空燃比afRだけ小さくした値=afRich-afRを目標リッチ空燃比afRichとして再設定する。その後、CPUはステップ1295に進む。なお、第2制御装置において、便宜上、ステップ1220にて再設定される前の目標リッチ空燃比afRichは第1目標リッチ空燃比afRich1とも称呼され、ステップ1220にて再設定された後の目標リッチ空燃比afRichは第2目標リッチ空燃比afRich2とも称呼される。これに対し、蒸発燃料吸着推定量1-FGPGが閾値Lth未満であれば、CPUはステップ1210にてNoと判定し、ステップ1295に直接進んで本ルーチンを一旦終了する。同様に、リッチ要求フラグXRichreqの値が0である場合、CPUはステップ650にて目標リーン空燃比afLeanを決定し、その後、ステップ1230に進んで蒸発燃料吸着推定量1-FGPGが閾値Lth以上であるか否かを判定する。即ち、CPUは、蒸発燃料ガス濃度学習値FGPGにより示された蒸発燃料吸着推定量1-FGPGとキャニスタ飽和蒸発燃料量との差が所定量以下であるか否かを判定する。そして、蒸発燃料吸着推定量1-FGPGが閾値Lth以上である場合、CPUはステップ1230にてYesと判定してステップ1240に進み、目標リーン空燃比afLeanを所定空燃比afLだけ大きくした値=afLeanafLを目標リーン空燃比afLeanとして再設定する。その後、CPUはステップ1295に進む。なお、第2制御装置において、便宜上、ステップ1240にて再設定される前の目標リーン空燃比afLeanは第1目標リーン空燃比afLean1とも称呼され、ステップ1240にて再設定された後の目標リーン空燃比afLeanは第2目標リーン空燃比afLean2とも称呼される。これに対し、蒸発燃料吸着推定量1-FGPGが閾値Lth未満であれば、CPUはステップ1230にてNoと判定し、ステップ1295に直接進んで本ルーチンを一旦終了する。以上、説明したように、第2制御装置は、触媒43に流入するガスの空燃比の目標値である上流側目標空燃比abyfrを下流側空燃比センサ67の出力値Voxsに基づいて目標リッチ空燃比afRichと目標リーン空燃比afLeanとに交互に設定する目標空燃比設定手段図11及び図12を参照。を備える。そして、前記目標空燃比設定手段は、キャニスタ52に吸着されている蒸発燃料の量に応じた値である蒸発燃料吸着推定量1-FGPGを取得するとともに、蒸発燃料吸着推定量1-FGPGが所定量Lth未満であるとき前記目標リッチ空燃比afRichを理論空燃比よりも小さい第1目標リッチ空燃比図12のステップ640にて決定される目標リッチ空燃比に設定するとともに図12のステップ640前記目標リーン空燃比afLeanを理論空燃比よりも大きい第1目標リーン空燃比図12のステップ650にて決定される目標リーン空燃比に設定し図12のステップ650、且つ、前記蒸発燃料吸着推定量1-FGPGが前記所定量Lth以上であるとき前記目標リッチ空燃比afRichを前記第1目標リッチ空燃比よりもafRだけ小さい第2目標リッチ空燃比に設定する図12のステップ1210及びステップ1220とともに前記目標リーン空燃比afLeanを前記第1目標リーン空燃比よりもafLだけ大きい第2目標リーン空燃比に設定する図12のステップ1230及びステップ1240ように構成されている。更に、第2制御装置の蒸発燃料パージ量制御手段は、第1制御装置の蒸発燃料パージ量制御手段と同様、前記目標リーン空燃比と前記目標リッチ空燃比との差の大きさ空燃比振幅ΔAF=|afLean-afRich|が大きいほど前記パージ量を増大するように構成されている図9のステップ930乃至ステップ970を参照。。従って、キャニスタ52に吸着された蒸発燃料の量蒸発燃料吸着推定量がキャニスタ飽和蒸発燃料量に近づくほど、パージ量を増大することができる。よって、キャニスタ52にある程度の量の蒸発燃料を吸着することができる余力を与えておくことができる。これにより、仮に燃料タンク51内に蒸発燃料が急激且つ多量に発生した場合であっても、その蒸発燃料をキャニスタ52に吸着させることができる可能性が高まる。その結果、蒸発燃料が大気中に排出されてしまう可能性を低減することができる。更に、パージ量が大きくなるほど、目標リーン空燃比afLeanはより大きい空燃比となり、目標リッチ空燃比afRichはより小さい空燃比となるので、蒸発燃料のパージによってエミッションが悪化してしまう可能性を低減することができる。なお、第2制御装置は、ステップ1210を省略するとともに、ステップ1220の値afRを蒸発燃料吸着推定量1-FGPGが大きくなるほど大きくなる値に設定するように即ち、目標リッチ空燃比afRichをより小さくするように構成され得る。同様に、第2制御装置は、ステップ1230を省略するとともに、ステップ1240の値afLを蒸発燃料吸着推定量1-FGPGが大きくなるほど大きくなる値に設定するように即ち、目標リーン空燃比afLeanをより大きくするように構成され得る。更に、第2制御装置は、ステップ640において上流側目標空燃比abyfrを一定のリッチ空燃比に設定し、ステップ650において上流側目標空燃比abyfrを一定のリーン空燃比に設定するように構成されてもよい。この場合、前記目標空燃比設定手段は、前記運転状態指標量として前記キャニスタ52に吸着されている蒸発燃料の量に応じた値である蒸発燃料吸着推定量1-FGPGを取得するとともに、前記蒸発燃料吸着推定量1-FGPGが所定量Lth未満であるとき前記運転状態指標量が前記第1の値であると判定し、それによって、前記目標リッチ空燃比afRichを理論空燃比よりも小さい第1目標リッチ空燃比afRich1に設定するとともに前記目標リーン空燃比afLeanを理論空燃比よりも大きい第1目標リーン空燃比afLean1に設定し、且つ、前記蒸発燃料吸着推定量1-FGPGが前記所定量Lth以上であるとき前記運転状態指標量が前記第2の値であると判定し、それによって、前記目標リッチ空燃比afRichを前記第1目標リッチ空燃比よりも小さい第2目標リッチ空燃比afRich2に設定するとともに前記目標リーン空燃比afLeanを前記第1目標リーン空燃比よりも大きい第2目標リーン空燃比afLean2に設定するように構成されていると表現することもできるステップ1210乃至ステップ1240を参照。。以上、説明したように、本発明による制御装置の種々の実施形態によれば、蒸発燃料のパージをエミッションの悪化を招くことなく行うことができる。なお、本発明は上記実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、蒸発燃料吸着推定量は、複数のセンサの出力値から推定することもできる。より具体的に述べると、制御装置は、タンクポート52aと、パージポート52bと、大気ポート52cと、のそれぞれに、HC濃度センサ及び流量センサを備えることができる。そして、制御装置は、それぞれのポートにおいて、流量とHC濃度との積を通過蒸発燃料量として積算する。更に、制御装置は、タンクポート52aの通過蒸発燃料量から、パージポート52bの通過蒸発燃料量と、大気ポート52cの通過蒸発燃料量と、を減じることにより、蒸発燃料吸着推定量を推定することができる。更に、上記各実施形態の制御装置は、運転状態指標量が増大するにつれて目標リッチ空燃比afRichを理論空燃比よりも小さい範囲において減少させ且つ目標リーン空燃比afLeanを理論空燃比よりも大きい範囲において増大させ、或いは、運転状態指標量が増大するにつれて目標リッチ空燃比afRichを理論空燃比よりも小さい範囲において増大させ且つ目標リーン空燃比afLeanを理論空燃比よりも大きい範囲において減少させるように構成されていると表現することもできるステップ640及びステップ650を参照。。加えて、上記各実施形態の制御装置は、パージ補正係数FPG、メインFB学習値KG及びメインフィードバック係数FAFにより基本燃料噴射量Fbkを補正して指示燃料噴射量Fiを求めているが、メインフィードバック係数FAFのみにより、又は、メインFB学習値KG及びメインフィードバック係数FAFにより、基本燃料噴射量Fbkを補正して指示燃料噴射量Fiを求めてもよい。"