(57)【特許請求の範囲】
【請求項１】
多気筒内燃機関の異常判定装置であって、
それぞれが前記機関の複数の気筒のそれぞれの燃焼室に供給される混合気に含まれる燃料を噴射するように構成された複数の燃料噴射弁と、
前記燃料噴射弁に供給される燃料を貯蔵する燃料タンク内に発生した蒸発燃料を前記機関の吸気通路に導入する蒸発燃料パージ手段と、
前記機関の運転状態に応じて前記吸気通路に導入される蒸発燃料の量であるパージ量を制御する蒸発燃料パージ量制御手段と、
前記複数の気筒の排ガスが集合する前記機関の排気通路の排気集合部よりも下流側の部位に配設されるとともにその配設された部位を通過する排ガスの空燃比に応じた出力値を発生する空燃比センサと、
前記空燃比センサの出力値により表される空燃比が所定の目標空燃比に一致するように前記燃料噴射弁から噴射される燃料の量をフィードバック補正することにより前記複数の燃料噴射弁のそれぞれから噴射される燃料の量の指示値である指示燃料噴射量を決定する指示燃料噴射量決定手段と、
前記指示燃料噴射量に応じた量の燃料が前記複数の燃料噴射弁のそれぞれから噴射されるように前記複数の燃料噴射弁に噴射指示信号を送出する噴射指示信号送出手段と、
前記複数の気筒のそれぞれに供給される混合気の空燃比である気筒別空燃比の同複数の気筒の間における不均一性の程度が大きくなるほど大きくなる空燃比不均衡指標値を前記空燃比センサの出力値に基いて取得する指標値取得手段と、
前記空燃比不均衡指標値に基いて異常判定を行う異常判定手段と、
を備え、
前記指標値取得手段は、
前記機関に供給される燃料の総量に対する前記機関に供給される蒸発燃料の量の比である蒸発燃料比が第１所定値以上である期間において前記指標値取得手段によって取得される前記空燃比不均衡指標値をパージ量大時パラメータとして取得するとともに、前記蒸発燃料比が前記第１所定値以下の第２所定値未満である期間において前記指標値取得手段によって取得される前記空燃比不均衡指標値をパージ量小時パラメータとして取得するように構成され、
前記異常判定手段は、
前記パージ量小時パラメータと前記パージ量大時パラメータとの差の大きさが第１異常判定用閾値未満であり、且つ、前記パージ量小時パラメータが第２異常判定用閾値以上であるとき又は前記パージ量大時パラメータが第３異常判定用閾値以上であるとき、前記複数の気筒のそれぞれに供給される吸入空気の量の同複数の気筒間における不均一性の程度が許容値以上であるという吸入空気量異常状態が発生していると判定するように構成された異常判定装置。
【請求項２】
請求項１に記載の異常判定装置において、
前記異常判定手段は、
前記パージ量小時パラメータと前記パージ量大時パラメータとの差の大きさが前記第１異常判定用閾値以上である場合に前記燃料噴射弁が異常であると判定するように構成された異常判定装置。
【請求項３】
請求項２に記載の異常判定装置において、
前記蒸発燃料パージ量制御手段は、
前記機関の運転状態に基づいてパージ禁止要求が発生した場合に前記パージ量を０に制御するとともに、前記異常判定手段により前記燃料噴射弁が異常であると判定された場合には前記パージ禁止要求が発生したときであっても前記パージ量を０以外の所定値に制御することを許容するように構成された異常判定装置。
【請求項４】
請求項１乃至請求項３の何れか一項に記載の異常判定装置において、
前記蒸発燃料パージ量制御手段は、
前記パージ量大時パラメータが既に取得され且つ前記パージ量小時パラメータが未だ取得されていない場合、前記パージ量大時パラメータ及び前記パージ量小時パラメータの何れもが未だ取得されていない場合に比べ、前記蒸発燃料比が前記第２所定値未満となる機会が増大するように、前記パージ量を制御する異常判定装置。
【請求項５】
請求項１乃至請求項４の何れか一項に記載の異常判定装置において、
前記蒸発燃料パージ量制御手段は、
前記パージ量小時パラメータが既に取得され且つ前記パージ量大時パラメータが未だ取得されていない場合、前記パージ量大時パラメータ及び前記パージ量小時パラメータの何れもが未だ取得されていない場合に比べ、前記蒸発燃料比が前記第１所定値以上となる機会が増大するように、前記パージ量を制御する異常判定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、燃料タンク内に発生した蒸発燃料を機関の吸気通路に導入する蒸発燃料パージ手段を備える多気筒内燃機関に適用され、「複数の気筒のそれぞれに供給される吸入空気の量の同複数の気筒間における不均一性の程度（ばらつき）が許容値以上である」という吸入空気量異常状態が発生しているか否かを判定することができる異常判定装置に関する。
【背景技術】
【０００２】
広く採用されている電子燃料噴射式内燃機関は、各気筒又は各気筒に連通した吸気ポートに少なくとも一つの燃料噴射弁を備えている。従って、ある特定の気筒の燃料噴射弁の特性が「指示された燃料噴射量（指示燃料噴射量）よりも過小な量の燃料を噴射する特性」となると、その特定の気筒に供給される混合気の空燃比のみが大きくリーン側に変化する。この結果、気筒間における空燃比の不均一性が大きくなる。換言すると、各気筒に供給される混合気の空燃比である気筒別空燃比の間に不均衡が生じている状態（即ち、空燃比気筒間インバランス状態）が発生する。空燃比気筒間インバランス状態は、特定の気筒の燃料噴射弁の特性が「指示燃料噴射量よりも過大な量の燃料を噴射する特性」となった場合等においても発生する。
【０００３】
なお、本明細書において、供給される混合気の空燃比が正常な値（一般に、略理論空燃比）である気筒は「非インバランス気筒」又は「正常気筒」と称呼される。非インバランス気筒に供給される混合気の空燃比は「非インバランス気筒の空燃比」又は「正常気筒の空燃比」とも称呼される。一方、非インバランス気筒に供給される混合気の空燃比から乖離した空燃比の混合気が供給される気筒は「インバランス気筒」とも称呼される。インバランス気筒に供給される混合気の空燃比は「インバランス気筒の空燃比」とも称呼される。
【０００４】
空燃比気筒間インバランス状態が発生すると、インバランス気筒からの排ガスと非インバランス気筒からの排ガスとが交互に排気通路に排出される。従って、排ガスの空燃比が比較的大きく変動するから、複数の気筒からの排ガスが集合する排気集合部に配設された空燃比センサの出力値も大きく変動する。そこで、従来の異常判定装置の一つは、空燃比センサの出力値の軌跡長を取得し、その軌跡長と「機関回転速度に応じて変化する参照値」とを比較し、その比較結果に基づいて空燃比気筒間インバランス状態が発生したか否かを判定するようになっている（例えば、特許文献１を参照。）
【０００５】
上記空燃比センサの出力値の軌跡長のように、空燃比センサの出力値に基いて求められるパラメータであって、「気筒別空燃比の不均一性の程度が大きいほど大きくなる排気空燃比の変動の大きさ」を反映したパラメータは、空燃比不均衡指標値又はインバランス判定用パラメータとも称呼される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第７，１５２，５９４号明細書
【発明の概要】
【０００７】
ところで、空燃比気筒間インバランス状態は、特定気筒の燃料噴射弁の特性が異常となることにより各気筒に供給される燃料噴射量（気筒別燃料噴射量）の気筒間における不均一性が大きくなった場合（燃料噴射量の気筒間ばらつきが発生した場合）のみならず、各気筒に供給される空気量（気筒別吸入空気量）の気筒間における不均一性が大きくなった場合（吸入空気量の気筒間ばらつきが発生した場合）にも発生する。吸入空気量の気筒間ばらつきが発生した場合にも排ガスの空燃比が比較的大きく変動するから、空燃比不均衡指標値は大きくなる。
【０００８】
従って、空燃比不均衡指標値が大きくなった場合、その原因が「燃料噴射量の気筒間ばらつきが発生したから」であるのか、或いは、吸気系部品等が異常となったために「吸入空気量の気筒間ばらつきが発生したから」であるのか、を識別することができない。この点について、図１を参照しながら詳述する。
【０００９】
図１の（Ａ１）、（Ａ２）及び（Ａ３）は、「特定気筒（図１においては第４気筒）に吸入される吸入空気の量」が「残りの気筒（第１〜第３気筒）のそれぞれに吸入される吸入空気の量」の２倍になった場合における、各気筒の「吸入空気量、燃料噴射量、及び、空燃比」をそれぞれ示している。
【００１０】
図１の（Ｂ１）、（Ｂ２）及び（Ｂ３）は、「特定気筒（図１においては第４気筒）の燃焼噴射弁から噴射される燃料の量」が「残りの気筒（第１〜第３気筒）のそれぞれの燃料噴射弁から噴射される燃料の量」の１／２倍（半分）になった場合における、各気筒の「吸入空気量、燃料噴射量、及び、空燃比」をそれぞれ示している。
【００１１】
なお、図１の（Ａ１）及び（Ｂ１）は、第１気筒の吸入空気量を「１」とした場合の他の気筒のそれぞれの吸入空気量を示す。図１の（Ａ２）及び（Ｂ２）は、第１気筒の燃料噴射量を「１」とした場合の他の気筒のそれぞれの燃料噴射量を示す。更に、図１の（Ａ３）及び（Ｂ３）は、第１気筒の空燃比を「１」とした場合の他の気筒のそれぞれの空燃比を示す。
【００１２】
図１の（Ａ１）、（Ａ２）及び（Ａ３）に示したように、第４気筒の吸入空気量が他の気筒のそれぞれの吸入空気量の２倍となるような「吸入空気量の気筒間ばらつき」が発生した場合、第４気筒の空燃比は他の気筒の空燃比の２倍になる。図１の（Ｂ１）、（Ｂ２）及び（Ｂ３）に示したように、第４気筒に対する燃料噴射量が他の気筒のそれぞれに対する燃料噴射量の半分となるような「燃料噴射量のばらつき」が発生した場合、第４気筒の空燃比は他の気筒の空燃比の２倍になる。この結果、何れの場合においても、空燃比不均衡指標値は実質的に同じ値になる。
【００１３】
しかしながら、従来の異常判定装置は、「吸入空気量の気筒間ばらつき異常」と「燃料噴射量の気筒間ばらつき異常」とを区別していないので、例えば、実際には「吸入空気量の気筒間ばらつき異常」が発生しているにも拘わらず、「燃料噴射量の気筒間ばらつき異常」が発生していると判定していた。従って、本発明の目的の一つは、「吸入空気量の気筒間ばらつき異常が発生したか否か」を判定することが可能な「多気筒内燃機関の異常判定装置」を提供することにある。
【００１４】
本発明者は、「燃料タンク内に発生した蒸発燃料を多量にパージしている場合（即ち、燃料タンク内に発生した蒸発燃料を多量に吸気通路に導入することにより機関に供給している場合）における空燃比不均衡指標値と、燃料タンク内に発生した蒸発燃料を多量にパージしていない場合における空燃比不均衡指標値と、の両者を取得するとともに、これらの値が互いに近い値であって、且つ、それらの少なくとも一方が閾値以上である場合には、吸入空気量の気筒間ばらつき異常が発生したと判定することができる。」との知見を得た。この知見について、図２及び図３を参照しながら、より具体的に説明する。
【００１５】
図２は、燃料噴射量の気筒間ばらつき異常は発生しておらず、且つ、吸入空気量の気筒間ばらつき異常が発生した場合の各値を示している。
【００１６】
図２の（Ａ１）、（Ａ２）及び（Ａ３）は、「第４気筒（インバランス気筒）に吸入される吸入空気の量」が「第１〜第３気筒（正常気筒）のそれぞれに吸入される吸入空気の量」の２倍になった場合であって、且つ、蒸発燃料比（又はパージ率）が小さい（この例では「０％」である。）場合における、各気筒の「実際の吸入空気量、実際の燃料噴射量、及び、実際の空燃比」をそれぞれ示している。但し、これらの図において、正常気筒の一つである第１気筒の「実際の吸入空気量、実際の燃料噴射量、及び、実際の空燃比」をそれぞれ「１」としている。この場合、図２の（Ａ３）に示したように、第４気筒（インバランス気筒）の空燃比は正常気筒（第１〜第３気筒）の空燃比の２倍になる。
【００１７】
なお、蒸発燃料比は、総燃料供給量ＴＦ（＝燃料噴射弁の燃料噴射により機関に供給される燃料量（ＡInj）と蒸発燃料のパージにより機関に供給される燃料量（ＡPrg）との和（ＡInj＋ＡPrg））に対する、蒸発燃料のパージにより機関に供給される燃料量（ＡPrg）の比である。即ち、蒸発燃料比γは、ＡInj／（ＡInj＋ＡPrg）である。以下、蒸発燃料のパージにより機関に供給される燃料量を「パージ量」とも称呼する。
【００１８】
これに対し、図２の（Ｂ１）、（Ｂ２）及び（Ｂ３）は、「第４気筒（インバランス気筒）に吸入される吸入空気の量」が「第１〜第３気筒（正常気筒）のそれぞれに吸入される吸入空気の量」の２倍になった場合であって、且つ、蒸発燃料比（又はパージ率）が大きい（この例では「約５０％」である。）場合における、各気筒の「実際の吸入空気量、実際の燃料噴射量、及び、実際の空燃比」をそれぞれ示している。但し、これらの図において、正常気筒の一つである第１気筒の「実際の吸入空気量、実際の燃料噴射量、及び、実際の空燃比」をそれぞれ「１」としている。
【００１９】
ところで、燃料噴射弁に与えられる指示燃料噴射量は、空燃比センサにより検出される排ガスの空燃比が目標空燃比（例えば、理論空燃比）に一致するように、複数の気筒に対して共通のフィードバック量によりフィードバック制御される。従って、蒸発燃料比が５０％であるときの各燃料噴射弁への指示燃料噴射量は、蒸発燃料比が０％であるときの各燃料噴射弁への指示燃料噴射量の１／２になる。この場合、各燃料噴射弁は正常であるので、図２の（Ｂ２）に示したように、実際の燃料噴射量は「図２の（Ａ２）に示した実際の燃料噴射量の１／２」になる。その結果、各気筒に供給される燃料量は互いに等しい。従って、この場合においても、図２の（Ｂ３）に示したように、第４気筒（インバランス気筒）の空燃比は正常気筒（第１〜第３気筒）の空燃比の２倍になる。
【００２０】
このように、吸入空気量の気筒間ばらつき異常が発生した場合、蒸発燃料比が大きい場合と小さい場合とにおいて、気筒別空燃比の不均一性の程度は実質的に同じになる。従って、空燃比不均衡指標値も実質的に同じ値になる。
【００２１】
図３は、燃料噴射量の気筒間ばらつき異常が発生し、且つ、吸入空気量の気筒間ばらつき異常は発生していない場合の各値を示している。
【００２２】
図３の（Ａ１）、（Ａ２）及び（Ａ３）は、「第４気筒（インバランス気筒）の燃焼噴射弁から噴射される燃料量」が「第１〜第３気筒（正常気筒）のそれぞれの燃料噴射弁から噴射される燃料量」の１／２倍になった場合であって、且つ、蒸発燃料比（又はパージ率）が小さい（この例では「０％」である。）場合における、各気筒の「実際の吸入空気量、実際の燃料噴射量、及び、実際の空燃比」をそれぞれ示している。但し、これらの図において、正常気筒の一つである第１気筒の「実際の吸入空気量、実際の燃料噴射量、及び、実際の空燃比」をそれぞれ「１」としている。この場合、図３の（Ａ３）に示したように、第４気筒（インバランス気筒）の空燃比は正常気筒（第１〜第３気筒）の空燃比の２倍になる。
【００２３】
これに対し、図３の（Ｂ１）、（Ｂ２）及び（Ｂ３）は、「第４気筒（インバランス気筒）の燃焼噴射弁から噴射される燃料量」が「第１〜第３気筒（正常気筒）のそれぞれの燃料噴射弁から噴射される燃料量」の１／２倍になった場合であって、且つ、蒸発燃料比（又はパージ率）が大きい（この例では「約５０％」である。）場合における、各気筒の「実際の吸入空気量、実際の燃料噴射量、及び、実際の空燃比」をそれぞれ示している。但し、これらの図において、正常気筒の一つである第１気筒の「実際の吸入空気量、実際の燃料噴射量、及び、実際の空燃比」をそれぞれ「１」としている。
【００２４】
この例において、第４気筒の燃料噴射弁は指示燃料噴射量の５０％（１／２）の量の燃料量を噴射し、他の気筒の燃料噴射弁は指示燃料噴射量の１００％の量の燃料量を噴射する。従って、第１気筒に供給される燃料の総量「１」の半分「０．５」が蒸発燃料であり且つ残りの半分「０．５」が第１気筒に対する燃料噴射弁から噴射された燃料であるとき、第４気筒に供給される蒸発燃料の量は「０．５」であり且つ第４気筒に対する燃料噴射弁から第４気筒に供給される燃料噴射量は０．２５（＝０．５・５０％）となる。即ち、この場合、第１気筒に供給される燃料の総量を「１」としたとき、第４気筒に供給される燃料の総量は「０．７５」となる。この結果、図２の（Ｂ３）に示したように、第４気筒（インバランス気筒）の空燃比は正常気筒（第１〜第３気筒）の空燃比の約１．３３（＝１／０．７５）倍になる。
【００２５】
このように、燃料噴射量の気筒間ばらつき異常が発生した場合、蒸発燃料比が大きい場合と小さい場合とにおいて、気筒別空燃比の不均一性の程度は大きく相違する。従って、空燃比不均衡指標値も大きく相違した値になる。
【００２６】
以上の説明から理解されるように、空燃比不均衡指標値が大きくなった場合であっても、蒸発燃料比が大きい場合の空燃比不均衡指標値と蒸発燃料比が小さい場合の空燃比不均衡指標値との差の大きさが小さい場合、燃料噴射量の気筒間ばらつき異常が発生しているのではなく、吸入空気量の気筒間ばらつき異常が発生していると判定することができる。
【００２７】
本発明による多気筒内燃機関の異常判定装置（以下、「本判定装置」とも称呼する。）は、上述した知見に基いて構成された装置である。
【００２８】
より具体的に述べると、本判定装置は、
それぞれが前記機関の複数の気筒のそれぞれの燃焼室に供給される混合気に含まれる燃料を噴射するように構成された複数の燃料噴射弁と、
前記燃料噴射弁に供給される燃料を貯蔵する燃料タンク内に発生した蒸発燃料を前記機関の吸気通路に導入する蒸発燃料パージ手段と、
前記機関の運転状態（例えば、機関の負荷及び機関回転速度等）に応じて前記吸気通路に導入される蒸発燃料の量であるパージ量を制御する蒸発燃料パージ量制御手段と、
を備える。
【００２９】
更に、本判定装置は、
前記複数の気筒の排ガスが集合する前記機関の排気通路の排気集合部よりも下流側の部位に配設されるとともに、「その配設された部位を通過する排ガスの空燃比」に応じた出力値を発生する空燃比センサと、
前記空燃比センサの出力値により表される空燃比が所定の目標空燃比に一致するように前記燃料噴射弁から噴射される燃料の量をフィードバック補正することにより「前記複数の燃料噴射弁のそれぞれから噴射される燃料の量の指示値」である指示燃料噴射量を決定する指示燃料噴射量決定手段と、
前記指示燃料噴射量に応じた量の燃料が前記複数の燃料噴射弁のそれぞれから噴射されるように前記複数の燃料噴射弁に噴射指示信号を送出する噴射指示信号送出手段と、
前記複数の気筒のそれぞれに供給される混合気の空燃比である気筒別空燃比の同複数の気筒の間における不均一性の程度が大きくなるほど大きくなる空燃比不均衡指標値を前記空燃比センサの出力値に基いて取得する指標値取得手段と、
前記空燃比不均衡指標値に基いて異常判定を行う異常判定手段と、
を備える。
【００３０】
前記空燃比不均衡指標値は、後述するように、種々の手法に基いて算出され得る。
【００３１】
加えて、前記指標値取得手段は、前記機関に供給される燃料の総量に対する前記機関に供給される蒸発燃料の量の比である蒸発燃料比が第１所定値以上である期間において前記指標値取得手段によって取得される前記空燃比不均衡指標値をパージ量大時パラメータとして取得する。更に、前記指標値取得手段は、前記蒸発燃料比が「前記第１所定値以下の第２所定値」未満である期間において前記指標値取得手段によって取得される前記空燃比不均衡指標値をパージ量小時パラメータとして取得するように構成されている。
【００３２】
前記異常判定手段は、
前記パージ量小時パラメータと前記パージ量大時パラメータとの差の大きさが第１異常判定用閾値未満であり、且つ、前記パージ量小時パラメータが第２異常判定用閾値以上であるとき又は前記パージ量大時パラメータが第３異常判定用閾値以上であるとき、「前記複数の気筒のそれぞれに供給される吸入空気の量の同複数の気筒間における不均一性の程度が許容値以上である」という「吸入空気量異常状態が発生している」と判定するように構成される。
【００３３】
前述したように、吸入空気量の気筒間ばらつき異常が発生した場合、前記パージ量小時パラメータと前記パージ量大時パラメータとの差の大きさは所定値（即ち、第１異常判定用閾値）未満であり、且つ、前記パージ量小時パラメータ及び前記パージ量大時パラメータの少なくも一方が、それぞれに対応する所定値以上となる。これに対し、燃料噴射量の気筒間ばらつき異常が発生した場合、、前記パージ量小時パラメータと前記パージ量大時パラメータとの差の大きさは所定値（即ち、第１異常判定用閾値）以上となる。
【００３４】
従って、本判定装置によれば、吸入空気量の気筒間ばらつき異常が発生したことを確実に判定することができる。
【００３５】
本判定装置の一つの態様において、
前記異常判定手段は、前記パージ量小時パラメータと前記パージ量大時パラメータとの差の大きさが前記第１異常判定用閾値以上である場合に前記燃料噴射弁が異常である（燃料噴射量の気筒間ばらつき異常が発生した）と判定するように構成される。
【００３６】
この場合、前記蒸発燃料パージ量制御手段は、
前記機関の運転状態に基づいてパージ禁止要求が発生した場合に前記パージ量を０に制御するとともに、前記異常判定手段により前記燃料噴射弁が異常であると判定された場合には前記パージ禁止要求が発生したときであっても前記パージ量を０以外の所定値に制御することを許容するように構成される。
【００３７】
機関の運転状態によっては、蒸発燃料を前記機関の吸気通路に導入することを禁止する要求が発せられる。一方、蒸発燃料を前記機関の吸気通路に導入する場合、その分に見合った分だけ燃料噴射量は減少補正（フィードバック補正）される。即ち、指示燃料噴射量は小さくなる。従って、燃料噴射量の気筒間ばらつき異常が発生したと判定された場合には、蒸発燃料を前記機関の吸気通路に導入することを禁止する要求が発生した場合であっても、蒸発燃料を前記機関の吸気通路に導入すること（前記パージ量を０以外の所定値に制御すること）を許容することにより、燃料噴射量の気筒間ばらつきの影響を小さくする機会を増大することができる。その結果、エミッションの悪化を抑制することができる。
【００３８】
本判定装置の他の態様において、前記蒸発燃料パージ量制御手段は、
前記パージ量大時パラメータが既に取得され且つ前記パージ量小時パラメータが未だ取得されていない場合、前記パージ量大時パラメータ及び前記パージ量小時パラメータの何れもが未だ取得されていない場合に比べ、前記蒸発燃料比が前記第２所定値未満となる機会が増大するように、前記パージ量を制御する。
【００３９】
これによれば、前記パージ量大時パラメータが既に取得され且つ前記パージ量小時パラメータが未だ取得されていない場合において、パージ量小時パラメータを算出する機会を増大させることができる。その結果、パージ量大時パラメータ及びパージ量小時パラメータの両者を早期に取得することができるので、前記異常判定を早期に実施することが可能となる。
【００４０】
同様に、本判定装置の他の態様において、前記蒸発燃料パージ量制御手段は、
前記パージ量小時パラメータが既に取得され且つ前記パージ量大時パラメータが未だ取得されていない場合、前記パージ量大時パラメータ及び前記パージ量小時パラメータの何れもが未だ取得されていない場合に比べ、前記蒸発燃料比が前記第１所定値以上となる機会が増大するように、前記パージ量を制御する。
【００４１】
これによれば、前記パージ量小時パラメータが既に取得され且つ前記パージ量大時パラメータが未だ取得されていない場合において、パージ量大時パラメータを算出する機会を増大させることができる。その結果、パージ量大時パラメータ及びパージ量小時パラメータの両者を早期に取得することができるので、前記異常判定を早期に実施することが可能となる。
【００４２】
本発明装置の他の目的、他の特徴及び付随する利点は、以下の図面を参照しつつ記述される本発明の各実施形態についての説明から容易に理解されるであろう。
【図面の簡単な説明】
【００４３】
【図１】図１は、吸入空気量の気筒間ばらつき異常が発生した場合と、燃料噴射量の気筒間ばらつき異常が発生した場合と、における、吸入空気量、燃料噴射量及び空燃比を示したグラフである。
【図２】図２は、吸入空気量の気筒間ばらつき異常が発生した場合において、蒸発燃料比が小さい場合と、蒸発燃料比が大きい場合と、における、吸入空気量、燃料噴射量及び空燃比を示したグラフである。
【図３】図３は、燃料噴射量の気筒間ばらつき異常が発生した場合において、蒸発燃料比が小さい場合と、蒸発燃料比が大きい場合と、における、吸入空気量、燃料噴射量及び空燃比を示したグラフである。
【図４】図４は、本発明の各実施形態に係る異常判定装置が適用される内燃機関の概略平面図である。
【図５】図５の（Ａ）〜（Ｃ）は、図４に示した上流側空燃比センサ（空燃比センサ）が備える空燃比検出素子の概略断面図である。
【図６】図６は、排ガスの空燃比と空燃比センサの限界電流値との関係を示したグラフである。
【図７】図７は、排ガスの空燃比と空燃比センサの出力値との関係を示したグラフである。
【図８】図８は、排ガスの空燃比と図４に示した下流側空燃比センサの出力値との関係を示したグラフである。
【図９】図９は、燃料噴射量の気筒間ばらつき異常が発生したのか、吸入空気量の気筒間ばらつき異常が発生したのか、を示す領域を示した領域図である。
【図１０】図１０は、本発明の第１実施形態に係る異常判定装置（第１判定装置）のＣＰＵが実行するルーチンを示したフローチャートである。
【図１１】図１１は、第１判定装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図１２】図１２は、第１判定装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図１３】図１３は、第１判定装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図１４】図１４は、第１判定装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図１５】図１５は、第１判定装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図１６】図１６は、気筒別空燃比の不均一性の程度が大きい場合（空燃比気筒間インバランス状態が発生した場合）と、気筒別空燃比の不均一性の程度が小さい場合（空燃比気筒間インバランス状態が発生していない場合）と、のそれぞれの場合における、空燃比不均衡指標値に関連する各値の挙動を示したタイムチャートである。
【図１７】図１７は、実際のインバランス割合と、上流側空燃比センサの微分値に相関する空燃比不均衡指標値と、の関係を示したグラフである。
【図１８】図１８は、第１判定装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図１９】図１９は、第１判定装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図２０】図２０は、第１判定装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図２１】図２１は、本発明の第２実施形態に係る異常判定装置（第２判定装置）のＣＰＵが実行するルーチンを示したフローチャートである。
【図２２】図２２は、第２判定装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図２３】図２３は、第２判定装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図２４】図２４は、本発明の第３実施形態に係る異常判定装置（第３判定装置）の効果を説明するための図である。
【図２５】図２５は、第３判定装置のＣＰＵが実行するルーチンを示したフローチャートである。
【発明を実施するための形態】
【００４４】
以下、本発明の各実施形態に係る多気筒内燃機関の異常判定装置（以下、単に「判定装置」とも称呼する。）について図面を参照しながら説明する。この判定装置は、内燃機関に供給される混合気の空燃比（機関の空燃比）を制御する空燃比制御装置の一部であり、更に、燃料噴射量を制御する燃料噴射量制御装置及び蒸発燃料パージ量制御装置の一部でもある。
【００４５】
＜第１実施形態＞
（構成）
図４は、第１実施形態に係る判定装置（以下、「第１判定装置」とも称呼する。）を、４サイクル・火花点火式・多気筒（直列４気筒）・内燃機関１０に適用したシステムの概略構成を示している。
【００４６】
内燃機関１０は、機関本体部２０と、吸気系統３０と、排気系統４０と、蒸発燃料供給系統５０と、を含む。
【００４７】
機関本体部２０は、シリンダブロック部及びシリンダヘッド部を含む。機関本体部２０は、複数の気筒（燃焼室）２１を備えている。各気筒は、図示しない「吸気ポート及び排気ポート」と連通している。吸気ポートと燃焼室２１との連通部は図示しない吸気弁により開閉される。排気ポートと燃焼室２１との連通部は図示しない排気弁により開閉される。各燃焼室２１には図示しない点火プラグが配設されている。
【００４８】
吸気系統３０は、インテークマニホールド３１、吸気管３２、複数の燃料噴射弁３３、及び、スロットル弁３４を備えている。
【００４９】
インテークマニホールド３１は、複数の枝部３１ａとサージタンク３１ｂとを備えている。複数の枝部３１ａのそれぞれの一端は、複数の吸気ポートのそれぞれに接続されている。複数の枝部３１ａの他端はサージタンク３１ｂに接続されている。
【００５０】
吸気管３２の一端はサージタンク３１ｂに接続されている。吸気管３２の他端には図示しないエアフィルタが配設されている。
【００５１】
燃料噴射弁３３は、一つの気筒（燃焼室）２１に対して一つずつ配設されている。燃料噴射弁３３は吸気ポートに設けられている。即ち、複数の気筒のそれぞれは、他の気筒とは独立して燃料供給を行う燃料噴射弁３３を備えている。燃料噴射弁３３は、噴射指示信号に応答し、正常である場合に「その噴射指示信号に含まれる指示燃料噴射量の燃料」を吸気ポート（従って、燃料噴射弁３３に対応する気筒２１）内に噴射するようになっている。
【００５２】
より具体的に述べると、燃料噴射弁３３は、指示燃料噴射量に応じた時間だけ開弁する。燃料噴射弁３３には、後述する燃料タンク５１に接続された燃料供給管５７を介して燃料が供給されている。燃料噴射弁３３に供給されている燃料の圧力は、その燃料の圧力と吸気ポート内の圧力との差圧が一定になるように図示しないプレッシャレギュレータにより制御されている。従って、燃料噴射弁３３が正常であれば、燃料噴射弁３３は指示燃料噴射量と等量の燃料を噴射する。しかしながら、燃料噴射弁３３に異常が発生すると、燃料噴射弁３３は指示燃料噴射量とは相違する量の燃料を噴射するようになる。これにより、気筒別空燃比の気筒間における不均一性が発生する。
【００５３】
スロットル弁３４は、吸気管３２内に回動可能に配設されている。スロットル弁３４は、吸気通路の開口断面積を可変とするようになっている。スロットル弁３４は、図示しないスロットル弁アクチュエータにより吸気管３２内で回転駆動されるようになっている。
【００５４】
排気系統４０は、エキゾーストマニホールド４１、エキゾーストパイプ４２、エキゾーストパイプ４２に配設された上流側触媒４３、及び、上流側触媒４３よりも下流においてエキゾーストパイプ４２に配設された「図示しない下流側触媒」を備えている。
【００５５】
エキゾーストマニホールド４１は、複数の枝部４１ａと集合部４１ｂとを備えている。複数の枝部４１ａのそれぞれの一端は、複数の排気ポートのそれぞれに接続されている。複数の枝部４１ａのそれぞれの他端は集合部４１ｂに集合している。この集合部４１ｂは、複数（２以上であり、本例では４つ）の気筒から排出された排ガスが集合する部分であるから、排気集合部ＨＫとも称呼される。
【００５６】
エキゾーストパイプ４２は集合部４１ｂに接続されている。排気ポート、エキゾーストマニホールド４１及びエキゾーストパイプ４２は、排気通路を構成している。
【００５７】
上流側触媒４３及び下流側触媒のそれぞれは、所謂、白金、ロジウム及びパラジウム等の貴金属（触媒物質）からなる活性成分を担持する三元触媒装置（排気浄化用の触媒）である。各触媒は、各触媒に流入するガスの空燃比が「三元触媒のウインドウ内の空燃比（例えば、理論空燃比）」であるとき、ＨＣ，ＣＯ，Ｈ２などの未燃成分を酸化するとともに窒素酸化物（ＮＯｘ）を還元する機能を有する。この機能は触媒機能とも称呼される。更に、各触媒は、酸素を吸蔵（貯蔵）する酸素吸蔵機能を有する。各触媒は、酸素吸蔵機能により空燃比が理論空燃比から偏移したとしても未燃成分及び窒素酸化物を浄化することができる。つまり、酸素吸蔵機能により、ウインドウの幅が拡大する。酸素吸蔵機能は、触媒に担持されているセリア（ＣｅＯ２）等の酸素吸蔵材によってもたらされる。
【００５８】
蒸発燃料供給系統５０は、燃料タンク５１、キャニスタ５２、ベーパ捕集管５３、パージ流路管５４、パージ制御弁５５、及び、燃料ポンプ５６を備えている。
【００５９】
燃料タンク５１は、燃料噴射弁３３から機関１０に供給される燃料を貯留する。
【００６０】
キャニスタ５２は、燃料タンク５１内にて発生した蒸発燃料（蒸発燃料ガス）を吸蔵する「周知のチャコールキャニスタ」である。キャニスタ５２は、タンクポート５２ａと、パージポート５２ｂと、大気に曝されている大気ポート５２ｃと、が形成された筐体を備える。キャニスタ５２は、その筐体内に、蒸発燃料を吸着するための吸着剤５２ｄを収納している。
【００６１】
ベーパ捕集管５３の一端は燃料タンク５１の上部に接続され、ベーパ捕集管５３の他端はタンクポート５２ａに接続されている。ベーパ捕集管５３は、燃料タンク５１内に発生した蒸発燃料を燃料タンク５１からキャニスタ５２へと導入するための管である。
【００６２】
パージ流路管５４の一端はパージポート５２ｂに接続され、パージ流路管５４の他端はサージタンク３１ｂ（即ち、スロットル弁３４よりも下流の吸気通路）に接続されている。パージ流路管５４は、キャニスタ５２の吸着剤５２ｄから脱離した蒸発燃料をサージタンク３１ｂへと導入するための管である。ベーパ捕集管５３及びパージ流路管５４はパージ通路（パージ通路部）を構成している。
【００６３】
パージ制御弁５５はパージ流路管５４に介装されている。パージ制御弁５５は、指示信号であるデューティ比ＤＰＧを表す駆動信号により開度（開弁期間）が調節されることにより、パージ流路管５４の通路断面積を変更するようになっている。パージ制御弁５５は、デューティ比ＤＰＧが「０」であるときにパージ流路管５４を完全に閉じるようになっている。
【００６４】
燃料ポンプ５６は、燃料タンク５１に貯留されている燃料を燃料供給管５７を通して燃料噴射弁３３に供給するようになっている。
【００６５】
このように構成された蒸発燃料供給系統５０において、パージ制御弁５５が完全に閉じられている場合、燃料タンク５１内で発生した蒸発燃料はキャニスタ５２に吸蔵される。パージ制御弁５５が開かれている場合、キャニスタ５２に吸蔵された蒸発燃料はパージ流路管５４を通してサージタンク３１ｂ（スロットル弁３４よりも下流の吸気通路）に放出され、燃焼室２１（機関１０）へ供給される。即ち、パージ制御弁５５が開かれているとき、蒸発燃料ガスパージ（「蒸発燃料パージ」又は「エバポパージ」とも称呼される。）が行われる。
【００６６】
このシステムは、熱線式エアフローメータ６１、スロットルポジションセンサ６２、水温センサ６３、クランクポジションセンサ６４、インテークカムポジションセンサ６５、上流側空燃比センサ６６、下流側空燃比センサ６７、及び、アクセル開度センサ６８を備えている。なお、本明細書において、上流側空燃比センサ６６は単に「空燃比センサ」とも称呼される。
【００６７】
エアフローメータ６１は、吸気管３２内を流れる吸入空気の質量流量（吸入空気流量）Ｇａに応じた信号を出力するようになっている。即ち、吸入空気量Ｇａは、単位時間あたりに機関１０に吸入される吸入空気量を表す。
【００６８】
スロットルポジションセンサ６２は、スロットル弁３４の開度（スロットル弁開度）を検出し、スロットル弁開度ＴＡを表す信号を出力するようになっている。
【００６９】
水温センサ６３は、内燃機関１０の冷却水の温度を検出し、冷却水温ＴＨＷを表す信号を出力するようになっている。冷却水温ＴＨＷは、機関１０の暖機状態（機関１０の温度）を表すパラメータである。
【００７０】
クランクポジションセンサ６４は、クランク軸が１０°回転する毎に幅狭のパルスを有するとともに同クランク軸が３６０°回転する毎に幅広のパルスを有する信号を出力するようになっている。この信号は、後述する電気制御装置７０によって機関回転速度ＮＥに変換される。
【００７１】
インテークカムポジションセンサ６５は、インテークカムシャフトが所定角度から９０度、次いで９０度、更に１８０度回転する毎に一つのパルスを出力するようになっている。後述する電気制御装置７０は、クランクポジションセンサ６４及びインテークカムポジションセンサ６５からの信号に基づいて、基準気筒（例えば第１気筒）の圧縮上死点を基準とした絶対クランク角度ＣＡを取得するようになっている。この絶対クランク角度ＣＡは、基準気筒の圧縮上死点において「０°クランク角度」に設定され、クランク軸の回転角度に応じて７２０°クランク角度まで増大し、その時点にて再び０°クランク角度に設定される。
【００７２】
上流側空燃比センサ６６は、エキゾーストマニホールド４１の集合部４１ｂ（排気集合部ＨＫ）と上流側触媒４３との間の位置において「エキゾーストマニホールド４１及びエキゾーストパイプ４２の何れか」に配設されている。
【００７３】
上流側空燃比センサ６６は、例えば、特開平１１−７２４７３号公報、特開２０００−６５７８２号公報及び特開２００４−６９５４７号公報等に開示された「拡散抵抗層を備える限界電流式広域空燃比センサ」である。
【００７４】
上流側空燃比センサ６６は、図５に示したように、空燃比検出部６６ａを有している。空燃比検出部６６ａは、図示しない「金属からなる中空円筒体の保護カバー」の内部に収容されている。保護カバーの側面及び下面には貫通孔が設けられている。排ガスは、側面の貫通孔を通して保護カバー内に流入し、空燃比検出部６６ａに到達し、その後、下面の貫通孔を通して保護カバー外に流出する。
【００７５】
即ち、保護カバーに到達した排ガスは、保護カバーの下面の貫通孔近傍を流れる排ガスの流れにより、保護カバーの内部へと吸い込まれる。このため、保護カバーの内部における排ガスの流速は、保護カバーの下面の貫通孔近傍を流れる排ガスの流速（従って、単位時間あたりの吸入空気量である吸入空気量Ｇａ）に応じて変化する。従って、上流側空燃比センサ６６の「排気通路を流れる排ガスの空燃比」に対する出力応答性（応答性）は、吸入空気量Ｇａが大きいほど高くなるが、機関回転速度ＮＥには殆ど依存しない。
【００７６】
図５の（Ａ）〜（Ｃ）に示したように、空燃比検出部６６ａは、固体電解質層６６１と、排ガス側電極層６６２と、大気側電極層（基準ガス側電極層）６６３と、拡散抵抗層６６４と、第一壁部６６５と、触媒部６６６と、第二壁部６６７と、ヒータ６６８と、を含んでいる。
【００７７】
固体電解質層６６１は酸素イオン導電性酸化物焼結体である。本例において、固体電解質層６６１は、ＺｒＯ２（ジルコニア）にＣａＯを安定剤として固溶させた「安定化ジルコニア素子」である。固体電解質層６６１は、その温度が活性温度以上であるとき、周知の「酸素電池特性」及び「酸素ポンプ特性」を発揮する。
【００７８】
排ガス側電極層６６２は、白金（Ｐｔ）等の触媒活性の高い貴金属からなる。排ガス側電極層６６２は、固体電解質層６６１の一つの面上に形成されている。排ガス側電極層６６２は、化学メッキ等により浸透性を十分に有するように（即ち、多孔質状に）形成されている。
【００７９】
大気側電極層６６３は、白金（Ｐｔ）等の触媒活性の高い貴金属からなる。大気側電極層６６３は、固体電解質層６６１の他の面上であって、固体電解質層６６１を挟んで排ガス側電極層６６２に対向するように形成されている。大気側電極層６６３は、化学メッキ等により浸透性を十分に有するように（即ち、多孔質状に）形成されている。大気側電極層６６３は、基準ガス側電極層とも称呼される。
【００８０】
拡散抵抗層（拡散律速層）６６４は、多孔質セラミック（耐熱性無機物質）からなる多孔質層である。拡散抵抗層６６４は、排ガス側電極層６６２の外側表面を覆うように、例えば、プラズマ溶射法等により形成されている。
【００８１】
第一壁部６６５は、緻密であってガスを透過させないアルミナセラミックスからなる。第一壁部６６５は拡散抵抗層６６４の角部（一部）を除いて拡散抵抗層６６４を覆うように形成されている。即ち、第一壁部６６５は拡散抵抗層６６４の一部を外部に露呈させる貫通部を備えている。
【００８２】
触媒部６６６は、第一壁部６６５の貫通部を閉じるように貫通部に形成されている。触媒部６６６は、上流側触媒４３と同様、酸化還元反応を促進する触媒物質及び酸素吸蔵機能を発揮する酸素吸蔵材を担持している。触媒部６６６は多孔質体である。従って、図５の（Ｂ）及び図５の（Ｃ）に白抜きの矢印により示したように、排ガス（前述した保護カバーの内部に流入した排ガス）は、触媒部６６６を通過して拡散抵抗層６６４に到達し、その排ガスは更に拡散抵抗層６６４を通過して（即ち、拡散して）排ガス側電極層６６２に到達する。
【００８３】
第二壁部６６７は、緻密であってガスを透過させないアルミナセラミックスからなる。第二壁部６６７は大気側電極層６６３を収容する空間である「大気室６６Ａ」を形成するように構成されている。大気室６６Ａには大気が導入されている。
【００８４】
上流側空燃比センサ６６には電源６６９が接続されている。電源６６９は、大気側電極層６６３側が高電位となり、排ガス側電極層６６２が低電位となるように、電圧Ｖ（＝Ｖｐ）を印加する。
【００８５】
ヒータ６６８は第二壁部６６７に埋設されている。ヒータ６６８は後述する電気制御装置７０によって通電されたときに発熱し、固体電解質層６６１、排ガス側電極層６６２及び大気側電極層６６３を加熱し、それらの温度を調整するようになっている。
【００８６】
このような構造を有する上流側空燃比センサ６６は、図５の（Ｂ）に示したように、排ガスの空燃比が理論空燃比よりもリーン側の空燃比であるとき、拡散抵抗層６６４を通って排ガス側電極層６６２に到達した酸素をイオン化して大気側電極層６６３へと通過させる。この結果、電源６６９の正極から負極へと電流Ｉが流れる。この電流Ｉの大きさは、図６に示したように、電圧Ｖを所定電圧Ｖｐに設定すると、排ガス側電極層６６２に到達した酸素の量（酸素分圧、酸素濃度、従って、排ガスの空燃比）に比例した一定値となる。上流側空燃比センサ６６は、この電流（即ち、限界電流Ｉｐ）を電圧に変換した値を出力値Vabyfsとして出力する。
【００８７】
これに対し、図５の（Ｃ）に示したように、排ガスの空燃比が理論空燃比よりもリッチ側の空燃比であるとき、上流側空燃比センサ６６は、大気室６６Ａに存在する酸素をイオン化して排ガス側電極層６６２へと導き、拡散抵抗層６６４を通って排ガス側電極層６６２に到達する未燃物（ＨＣ，ＣＯ及びＨ２等）を酸化する。この結果、電源６６９の負極から正極へと電流Ｉが流れる。この電流Ｉの大きさも、図６に示したように、電圧Ｖを所定電圧Ｖｐに設定すると、排ガス側電極層６６２に到達した未燃物の量（未燃物の分圧、未燃物の濃度、即ち、排ガスの空燃比）に比例した一定値となる。上流側空燃比センサ６６は、この電流（即ち、限界電流Ｉｐ）を電圧に変換した値を出力値Vabyfsとして出力する。
【００８８】
即ち、空燃比検出部６６ａは、図７に示したように、上流側空燃比センサ６６の配設位置を流れ、且つ、保護カバーの貫通孔を通って空燃比検出部６６ａに到達しているガスの空燃比に応じた出力値Vabyfsを「空燃比センサ出力」として出力する。換言すると、上流側空燃比センサ６６は、空燃比検出部６６ａの拡散抵抗層６６４を通過して排ガス側電極層６６２に到達したガスの「酸素分圧（酸素濃度、酸素量）及び未燃物の分圧（未燃物の濃度、未燃物量）」に応じて変化する出力値Vabyfsを出力する。出力値Vabyfsは、空燃比検出部６６ａに到達しているガスの空燃比が理論空燃比であるとき、理論空燃比相当値Ｖstoichに一致する。
【００８９】
以上から明らかなように、上流側空燃比センサ６６は、排気通路であって排気集合部ＨＫと三元触媒（上流側触媒４３）との間の位置に配設されるとともに、空燃比検出素子（固体電解質層）６６１と、前記空燃比検出素子を挟んで対向するように配設された排ガス側電極層６６２及び基準ガス側電極層（大気側電極層）６６３と、前記排ガス側電極層６６２を覆う多孔質層（拡散抵抗層）６６４と、を有する空燃比センサ６６である。更に、上流側空燃比センサ６６は、「上流側空燃比センサ６６が配設された位置を通過する排ガス」のうち「前記多孔質層（拡散抵抗層）６６４を通って前記排ガス側電極層６６２に到達した排ガス」に含まれる「酸素の量及び未燃物の量」に応じた出力値Vabyfsを出力する。
【００９０】
なお、排ガスに含まれる水素を含む未燃物は、触媒部６６６においてある程度まで浄化される。しかし、排ガスに多量の未燃物が含まれる場合、その未燃物を触媒部６６６において完全に浄化することはできない。その結果、拡散抵抗層６６４の外表面には、「酸素、及び、その酸素に対して過剰な未燃物」が到達する場合が生じる。更に、水素は他の未燃物よりも分子径が小さいので、水素は他の未燃物と比較して拡散抵抗層６６４を優先的に拡散する。気筒別空燃比の不均一性の程度が大きくなると、その空燃比が大きくリッチ側の空燃比となった気筒から多量の未燃物が排出される。従って、機関の空燃比の平均がある値であったとしても、気筒別空燃比の不均一性の程度が大きいほど多量の水素が拡散抵抗層６６４の外表面に到達する。その結果、気筒別空燃比の不均一性の程度が大きくなるほど、出力値Vabyfsはよりリッチ側の値へと偏移する。
【００９１】
再び、図４を参照すると、下流側空燃比センサ６７は、エキゾーストパイプ４２内に配設されている。下流側空燃比センサ６７の配設位置は、上流側触媒４３よりも下流側であり、且つ、下流側触媒よりも上流側（即ち、上流側触媒４３と下流側触媒との間の排気通路）である。下流側空燃比センサ６７は、周知の起電力式の酸素濃度センサ（安定化ジルコニア等の固体電解質を用いた周知の濃淡電池型の酸素濃度センサ）である。下流側空燃比センサ６７は、排気通路であって下流側空燃比センサ６７が配設されている部位を通過するガスである被検出ガスの空燃比に応じた出力値Voxsを発生するようになっている。換言すると、出力値Voxsは、上流側触媒４３から流出し且つ下流側触媒に流入するガスの空燃比に応じた値である。
【００９２】
この出力値Voxsは、図８に示したように、被検出ガスの空燃比が理論空燃比よりもリッチのとき最大出力値max（例えば、約０．９Ｖ〜１．０Ｖ）となる。出力値Voxsは、被検出ガスの空燃比が理論空燃比よりもリーンのとき最小出力値min（例えば、約０．１Ｖ〜０Ｖ）となる。更に、出力値Voxsは、被検出ガスの空燃比が理論空燃比であるとき最大出力値maxと最小出力値minの略中間の電圧Ｖst（中間電圧Ｖst、例えば、約０．５Ｖ）となる。出力値Voxsは、被検出ガスの空燃比が理論空燃比よりもリッチな空燃比からリーンな空燃比へと変化する際に最大出力値maxから最小出力値minへと急変する。同様に、出力値Voxsは、被検出ガスの空燃比が理論空燃比よりもリーンな空燃比からリッチな空燃比へと変化する際に最小出力値minから最大出力値maxへと急変する。
【００９３】
なお、下流側空燃比センサ６７も、固体電解質層と、固体電解質層を挟んで対向するように固体電解質層の両面に配設された「排ガス側電極層及び大気側（基準ガス側）電極層」とを備える。更に、排ガス側電極層は多孔質層（保護層）により覆われている。従って、被検出ガスは、多孔質層を通過する際に酸素平衡後ガス（酸素及び未燃物が化合した後のガス）へと変化し、排ガス側電極層に到達する。水素は、他の未燃物よりも、その多孔質層を容易に通過する。但し、上流側触媒４３により、「気筒別空燃比の不均一性が生じた際に発生する過剰な水素」は特別な場合を除き浄化される。従って、下流側空燃比センサ６７の出力値Voxsは、特別な場合を除き、気筒別空燃比の不均一性の程度によって変化しない。
【００９４】
図４に示したアクセル開度センサ６８は、運転者によって操作されるアクセルペダルＡＰの操作量Accp（アクセルペダル操作量、アクセルペダルＡＰの開度）を表す信号を出力するようになっている。アクセルペダル操作量Accpは、アクセルペダルＡＰの操作量が大きくなるとともに大きくなる。
【００９５】
電気制御装置７０は、「ＣＰＵ、ＣＰＵが実行するプログラム、テーブル（マップ、関数）及び定数等を予め記憶したＲＯＭ、ＣＰＵが必要に応じてデータを一時的に格納するＲＡＭ、バックアップＲＡＭ、並びに、ＡＤコンバータを含むインターフェース等」からなる周知のマイクロコンピュータである。
【００９６】
バックアップＲＡＭは、機関１０を搭載した車両の図示しないイグニッション・キー・スイッチの位置（オフ位置、始動位置及びオン位置等の何れか）に関わらず、車両に搭載されたバッテリから電力の供給を受けるようになっている。バックアップＲＡＭは、バッテリから電力の供給を受けている場合、ＣＰＵの指示に応じてデータを格納する（データが書き込まれる）とともに、そのデータを読み出し可能となるように保持（記憶）する。従って、バックアップＲＡＭは、機関１０の運転停止中においてもデータを保持することができる。
【００９７】
バックアップＲＡＭは、バッテリが車両から取り外される等によりバッテリからの電力供給が遮断されると、データを保持することができない。そこで、ＣＰＵは、バックアップＲＡＭへの電力供給が再開されたとき、バックアップＲＡＭに保持されるべきデータを初期化（デフォルト値に設定）するようになっている。なお、バックアップＲＡＭは、ＥＥＰＲＯＭ等の読み書き可能な不揮発性メモリであってもよい。
【００９８】
電気制御装置７０は、上述したセンサ等と接続され、ＣＰＵにそれらのセンサからの信号を供給するようになっている。更に、電気制御装置７０は、ＣＰＵの指示に応じて、各気筒に対応して設けられた点火プラグ（実際にはイグナイタ）、各気筒に対応して設けられた燃料噴射弁３３、パージ制御弁５５、及び、スロットル弁アクチュエータ等に駆動信号（指示信号）を送出するようになっている。
【００９９】
なお、電気制御装置７０は、取得されたアクセルペダルの操作量Accpが大きくなるほどスロットル弁開度ＴＡが大きくなるように、スロットル弁アクチュエータに指示信号を送出するようになっている。即ち、電気制御装置７０は、運転者により変更される機関１０の加速操作量（アクセルペダル操作量Accp）に応じて「機関１０の吸気通路に配設されたスロットル弁３４」の開度を変更するスロットル弁駆動手段を備えている。
【０１００】
（第１判定装置の作動の概要）
第１判定装置は、上述した知見に基づき、吸入空気量の気筒間ばらつき異常が発生したか、燃料噴射量の気筒間ばらつき異常が発生したか、或いは、それらの何れもが発生していないかを、空燃比不均衡指標値に基いて判定する。
【０１０１】
より具体的に述べると、第１判定装置は、蒸発燃料比（機関１０への総燃料供給量に対する機関１０に供給される蒸発燃料の量の比）が第１所定値以上である期間において、空燃比不均衡指標値を取得する。この場合に取得される空燃比不均衡指標値は、パージ量大時パラメータＰｏｎとも称呼される。更に、第１判定装置は、蒸発燃料比が「第１所定値以下の第２所定値」未満である期間において、空燃比不均衡指標値を取得する。この場合に取得される空燃比不均衡指標値は、パージ量小時パラメータＰｏｆｆとも称呼される。
【０１０２】
空燃比不均衡指標値は、複数の気筒のそれぞれに供給される混合気の空燃比である気筒別空燃比の同複数の気筒の間における不均一性の程度が大きくなるほど大きくなるパラメータであり、後述するように種々の手法により取得される。第１判定装置は、空燃比不均衡指標値（即ち、パージ量大時パラメータＰｏｎ及びパージ量小時パラメータＰｏｆｆ）として、上流側空燃比センサ６６の出力値Vabyfsの微分値d(Vabyfs)/dtに相関する値を取得する。気筒別空燃比の不均一性の程度が大きくなると、排ガスの空燃比の変動が大きくなる。従って、出力値Vabyfsは大きく変動するから、微分値d(Vabyfs)/dtも大きくなる。よって、微分値d(Vabyfs)/dtに相関する空燃比不均衡指標値は、気筒別空燃比の不均一性の程度が大きくなるほど大きくなる。
【０１０３】
そして、第１判定装置は、以下に述べる条件１及び条件２の何れかが成立したとき、吸入空気量の気筒間ばらつき異常が発生したと判定する。
（条件１）パージ量小時パラメータＰｏｆｆとパージ量大時パラメータＰｏｎとの差の大きさ（｜Ｐｏｆｆ−Ｐｏｎ｜）が、第１異常判定用閾値ΔＰｔｈ（＝２・ΔＰinj）未満であり、且つ、パージ量小時パラメータＰｏｆｆが第２異常判定用閾値（パージ量小時閾値）Ｐｏｆｆｔｈ以上であるとき。
（条件２）パージ量小時パラメータＰｏｆｆとパージ量大時パラメータＰｏｎとの差の大きさ（｜Ｐｏｆｆ−Ｐｏｎ｜）が、第１異常判定用閾値ΔＰｔｈ（＝２・ΔＰinj）未満であり、且つ、パージ量大時パラメータＰｏｎが第３異常判定用閾値（パージ量大時閾値）Ｐｏｎｔｈ以上であるとき。
【０１０４】
即ち、第１判定装置は、パージ量大時パラメータＰｏｎ及びパージ量小時パラメータＰｏｆｆが図９に示した領域Ａ（直線Ｌ２，Ｌ３，Ｌ４及びＬ５により囲まれた領域）にある場合、吸入空気量の気筒間ばらつき異常が発生したと判定する。
【０１０５】
これに対し、第１判定装置は、以下に述べる条件３が成立したとき、燃料噴射量の気筒間ばらつき異常が発生したと判定する。
【０１０６】
（条件３）パージ量小時パラメータＰｏｆｆとパージ量大時パラメータＰｏｎとの差の大きさ（｜Ｐｏｆｆ−Ｐｏｎ｜）が、第１異常判定用閾値ΔＰｔｈ（＝２・ΔＰinj）以上であるとき。
【０１０７】
即ち、第１判定装置は、パージ量大時パラメータＰｏｎ及びパージ量小時パラメータＰｏｆｆが、図９に示した領域Ｂ（直線Ｌ２とＹ軸とにより囲まれた領域）にある場合、又は図９に示した領域Ｃ（直線Ｌ３とＸ軸とに囲まれた領域）にある場合、燃料噴射量の気筒間ばらつき異常が発生したと判定する。
【０１０８】
更に、第１判定装置は、上記条件１乃至条件３の何れもが成立していないとき、機関１０は正常である（吸入空気量の気筒間ばらつき異常及び燃料噴射量の気筒間ばらつき異常の何れもが発生していない）と判定する。
【０１０９】
（実際の作動）
次に、第１判定装置の実際の作動について説明する。
＜燃料噴射量制御＞
第１判定装置のＣＰＵは、図１０に示した燃料噴射量制御ルーチンを、任意の気筒のクランク角がその気筒の吸気上死点前の所定クランク角度（例えば、ＢＴＤＣ９０°ＣＡ）となる毎に、その気筒（以下、「燃料噴射気筒」とも称呼する。）に対して繰り返し実行するようになっている。
【０１１０】
従って、所定のタイミングになると、ＣＰＵはステップ１０００から処理を開始し、以下に述べるステップ１０１０乃至ステップ１０６０の処理を順に行い、ステップ１０９５に進んで本ルーチンを一旦終了する。
【０１１１】
ステップ１０１０：ＣＰＵは「エアフローメータ６１により計測された吸入空気量Ｇａ、及び、機関回転速度ＮＥ」をルックアップテーブルMapMcに適用することにより現時点において燃料噴射気筒に吸入される吸入空気量（筒内吸入空気量）Ｍｃ（ｋ）を求める。
【０１１２】
ステップ１０２０：ＣＰＵは、メインＦＢ学習値ＫＧをバックアップＲＡＭから読み出す。メインＦＢ学習値ＫＧは、後述する図１２に示したメインフィードバック学習ルーチンにより別途求められ、バックアップＲＡＭ内に格納されている。
【０１１３】
ステップ１０３０：ＣＰＵは、下記（１）式に示したように、筒内吸入空気量Ｍｃ（ｋ）を現時点における上流側目標空燃比abyfr（目標空燃比abyfr）によって除すことにより基本燃料噴射量Ｆｂ（ｋ）を求める。
Ｆｂ（ｋ）＝Ｍｃ（ｋ）／abyfr    …（１）
【０１１４】
上流側目標空燃比abyfrは、機関暖機中、フューエルカット復帰後増量中及び触媒過熱防止増量中等の特殊な場合を除き、理論空燃比stoichに設定される。なお、本例において、上流側目標空燃比abyfrは常に理論空燃比stoichに設定されている。基本燃料噴射量Ｆｂ（ｋ）は、各吸気行程に対応されながらＲＡＭ内に記憶される。
【０１１５】
ステップ１０４０：ＣＰＵはパージ補正係数ＦＰＧを下記の（２）式に従って求める。（２）式において、ＰＧＴは目標パージ率である。目標パージ率ＰＧＴは、後述する図１３のステップ１３３０において機関１０の運転状態に基いて求められている。ＦＧＰＧは蒸発燃料ガス濃度学習値である。蒸発燃料ガス濃度学習値ＦＧＰＧは、後述する図１４に示したルーチンにより求められている。
ＦＰＧ＝１＋ＰＧＴ（ＦＧＰＧ−１）  …（２）
【０１１６】
ステップ１０５０：ＣＰＵは、基本燃料噴射量Ｆｂ（ｋ）を下記（３）式に従って補正することにより、最終的な燃料噴射量の指令値である指示燃料噴射量Ｆｉを求める。（３）式の右辺における各値は以下の通りである。これらの値は後述するルーチンにより別途求められている。
ＫＧ：メインフィードバック係数の学習値（メインＦＢ学習値ＫＧ）。
ＦＰＧ：パージ補正係数。
ＦＡＦ：メインフィードバック制御により更新（算出）されるメインフィードバック係数。
Ｆｉ＝ＦＰＧ・｛ＫＧ・ＦＡＦ・Ｆｂ（ｋ）｝    …（３）
【０１１７】
ステップ１０６０：ＣＰＵは、指示燃料噴射量Ｆｉの燃料が燃料噴射気筒に対応して設けられている燃料噴射弁３３から噴射されるように、その燃料噴射弁３３に指示信号を送出する。
【０１１８】
以上により、基本燃料噴射量Ｆｂ（ｋ）がメインフィードバック値ＤＦｉ（実際にはメインフィードバック係数ＦＡＦ）等により補正されることにより指示燃料噴射量Ｆｉが算出される。そして、燃料噴射気筒に対して設けられた燃料噴射弁３３の特性が正常である限り、指示燃料噴射量Ｆｉの燃料が燃料噴射気筒に対して噴射される。
【０１１９】
＜メインフィードバック制御＞
ＣＰＵは図１１にフローチャートにより示したメインフィードバック制御ルーチンを所定時間の経過毎に繰り返し実行している。従って、所定のタイミングになると、ＣＰＵはステップ１１００から処理を開始し、ステップ１１０５に進んでメインフィードバック制御条件（上流側空燃比フィードバック制御条件）が成立しているか否かを判定する。メインフィードバック制御条件は、例えば、フューエルカット中でなく、機関の冷却水温ＴＨＷが第１所定温度以上であり、負荷ＫＬが所定値以下であり、且つ、上流側空燃比センサ６６が活性化しているときに成立する。
【０１２０】
なお、負荷ＫＬは、本例において負荷率（充填率）ＫＬであり、下記の（４）式に基いて算出される。この（４）式において、ρは空気密度（単位は（ｇ／ｌ））、Ｌは機関１０の排気量（単位は（ｌ））、４は機関１０の気筒数である。但し、負荷ＫＬは、筒内吸入空気量Ｍｃ、スロットル弁開度ＴＡ及びアクセルペダル操作量Accp等であってもよい。
ＫＬ＝｛Ｍｃ（ｋ）／（ρ・Ｌ／４）｝・１００（％）  …（４）
【０１２１】
いま、メインフィードバック制御条件が成立しているものとして説明を続ける。この場合、ＣＰＵはステップ１１０５にて「Ｙｅｓ」と判定して以下に述べるステップ１１１０乃至ステップ１１５０の処理を順に行い、ステップ１１９５に進んで本ルーチンを一旦終了する。
【０１２２】
ステップ１１１０：ＣＰＵは、下記（５）式に従ってフィードバック制御用出力値Vabyfcを取得する。（５）式において、Vabyfsは上流側空燃比センサ６６の出力値、Vafsfbは下流側空燃比センサ６７の出力値Voxsに基いて算出されるサブフィードバック量、Vafsfbgはサブフィードバック量の学習値である。サブフィードバック量Vafsfb及びサブフィードバック量の学習値Vafsfbgの算出方法は後述される。
Vabyfc＝Vabyfs＋Vafsfb＋Vafsfbg    …（５）
【０１２３】
ステップ１１１５：ＣＰＵは、下記（６）式に従ってフィードバック制御用空燃比abyfscを取得する。即ち、ＣＰＵは、フィードバック制御用出力値Vabyfcを図７に示したテーブルMapabyfsに適用することによりフィードバック制御用空燃比abyfscを得る。
abyfsc＝Mapabyfs（Vabyfc）    …（６）
【０１２４】
ステップ１１２０：ＣＰＵは、下記（７）式に示したように、現時点よりもＮサイクル（即ち、Ｎ・７２０°クランク角）前の時点における筒内吸入空気量Ｍｃ（ｋ−Ｎ）を、上記フィードバック制御用空燃比abyfscで除すことにより、現時点よりもＮサイクル前の時点において燃焼室２１に実際に供給された燃料の量である「筒内燃料供給量Ｆｃ（ｋ−Ｎ）」を求める。
Ｆｃ（ｋ−Ｎ）＝Ｍｃ（ｋ−Ｎ）／abyfsc    …（７）
【０１２５】
このように、現時点からＮサイクル前の筒内燃料供給量Ｆｃ（ｋ−Ｎ）を求めるために、現時点からＮストローク前の筒内吸入空気量Ｍｃ（ｋ−Ｎ）をフィードバック制御用空燃比abyfscで除すのは、燃焼室２１内で燃焼された混合気が上流側空燃比センサ６６に到達するまでにＮストロークに相当する時間を要するからである。但し、実際には、上流側空燃比センサ６６には各気筒から排出された排ガスがある程度混合された後に到達する。
【０１２６】
ステップ１１２５：ＣＰＵは、下記（８）式に示したように、「現時点からＮストローク前の筒内吸入空気量Ｍｃ（ｋ−Ｎ）」を「現時点からＮストローク前の上流側目標空燃比abyfr（ｋ−Ｎ）」で除すことにより「現時点からＮストローク前の目標筒内燃料供給量Ｆｃｒ（ｋ−Ｎ）」を求める。なお、上述したように、本例において上流側目標空燃比abyfrは一定であるので、（８）式においては単にabyfrと表記されている。
Ｆｃｒ（ｋ−Ｎ）＝Ｍｃ（ｋ−Ｎ）／abyfr    …（８）
【０１２７】
ステップ１１３０：ＣＰＵは、下記（９）式に示したように、目標筒内燃料供給量Ｆｃｒ（ｋ−Ｎ）から筒内燃料供給量Ｆｃ（ｋ−Ｎ）を減じた値を筒内燃料供給量偏差ＤＦｃとして設定する。この筒内燃料供給量偏差ＤＦｃは、Ｎストローク前の時点で機関１０に供給された燃料の過不足分を表す量となる。
ＤＦｃ＝Ｆｃｒ（ｋ−Ｎ）−Ｆｃ（ｋ−Ｎ）    …（９）
【０１２８】
ステップ１１３５：ＣＰＵは、下記（１０）式に基いてメインフィードバック値ＤＦｉを求める。この（１０）式において、Ｇｐは予め設定された比例ゲイン、Ｇｉは予め設定された積分ゲインである。（１０）式の値ＳＤＦｃは筒内燃料供給量偏差ＤＦｃの積分値であり、次のステップ１１４０にて求められる。つまり、第１制御装置は、フィードバック制御用空燃比abyfscを上流側目標空燃比abyfrに一致させる比例・積分制御（ＰＩ制御）によりメインフィードバック値ＤＦｉを算出する。
ＤＦｉ＝Ｇｐ・ＤＦｃ＋Ｇｉ・ＳＤＦｃ    …（１０）
【０１２９】
ステップ１１４０：ＣＰＵは、その時点における筒内燃料供給量偏差ＤＦｃの積分値ＳＤＦｃに上記ステップ１１３０にて求められた筒内燃料供給量偏差ＤＦｃを加えることにより、新たな筒内燃料供給量偏差の積分値ＳＤＦｃを取得する。
【０１３０】
ステップ１１４５：ＣＰＵは、メインフィードバック値ＤＦｉ及び基本燃料噴射量Ｆｂ（ｋ−Ｎ）を下記（１１）式に適用することによりメインフィードバック係数ＦＡＦを算出する。即ち、メインフィードバック係数ＦＡＦは、「現時点からＮストローク前の基本燃料噴射量Ｆｂ（ｋ−Ｎ）にメインフィードバック値ＤＦｉを加えた値」を「基本燃料噴射量Ｆｂ（ｋ−Ｎ）」で除すことにより求められる。
ＦＡＦ＝（Ｆｂ（ｋ−Ｎ）＋ＤＦｉ）／Ｆｂ（ｋ−Ｎ）    …（１１）
【０１３１】
ステップ１１５０：ＣＰＵは、下記（１２）式に従ってメインフィードバック係数ＦＡＦの加重平均値をメインフィードバック係数平均ＦＡＦＡＶ（以下、「補正係数平均ＦＡＦＡＶ」とも称呼する。）として求める。（１２）式においてＦＡＦＡＶnewは更新後の補正係数平均ＦＡＦＡＶであり、そのＦＡＦＡＶnewが新たな補正係数平均ＦＡＦＡＶとして格納される。また、（１２）式において、値ｑは０より大きく１より小さい定数である。この補正係数平均ＦＡＦＡＶは、後述するように、「メインＦＢ学習値ＫＧ及び蒸発燃料ガス濃度学習値ＦＧＰＧ」を求める際に用いられる。
ＦＡＦＡＶnew＝ｑ・ＦＡＦ＋（１−ｑ）・ＦＡＦＡＶ    …（１２）
【０１３２】
以上により、メインフィードバック値ＤＦｉが比例積分制御により求められ、このメインフィードバック値ＤＦｉがメインフィードバック係数ＦＡＦへと変換される。メインフィードバック係数ＦＡＦは、上述した図１０のステップ１０５０において指示燃料噴射量Ｆｉに反映される。この結果、燃料供給量の過不足が補償されるので、機関の空燃比（従って、上流側触媒４３に流入するガスの空燃比）の平均値が上流側目標空燃比abyfrと略一致させられる。
【０１３３】
一方、ステップ１１０５の判定時において、メインフィードバック制御条件が不成立であると、ＣＰＵはそのステップ１１０５にて「Ｎｏ」と判定してステップ１１５５に進み、メインフィードバック値ＤＦｉの値を「０」に設定する。次いで、ＣＰＵは、ステップ１１６０にて筒内燃料供給量偏差の積分値ＳＤＦｃを「０」に設定し、ステップ１１６５にてメインフィードバック係数ＦＡＦの値を「１」に設定し、ステップ１１７０にて補正係数平均ＦＡＦＡＶの値を「１」に設定する。
【０１３４】
その後、ＣＰＵは、ステップ１１９５に進んで本ルーチンを一旦終了する。このように、メインフィードバック制御条件が不成立であるとき、メインフィードバック値ＤＦｉの値は「０」に設定され、メインフィードバック係数ＦＡＦの値は「１」に設定される。従って、基本燃料噴射量Ｆｂ（ｋ）のメインフィードバック係数ＦＡＦによる補正は行わない。但し、このような場合であっても、基本燃料噴射量Ｆｂ（ｋ）はメインＦＢ学習値ＫＧによって補正される。
【０１３５】
＜メインフィードバック学習（ベース空燃比学習）＞
第１制御装置はパージ制御弁５５を完全に閉じた状態に維持する指示信号が同パージ制御弁に送出されている「パージ制御弁閉弁指示期間（デューティ比ＤＰＧが「０」である期間）」において、メインフィードバック係数ＦＡＦを基本値「１」に近づけるように、補正係数平均ＦＡＦＡＶに基いてメインＦＢ学習値ＫＧを更新する。
【０１３６】
このメインＦＢ学習値ＫＧの更新を行うために、ＣＰＵは図１２に示したメインフィードバック学習ルーチンを所定時間が経過する毎に実行するようになっている。従って、ＣＰＵは所定のタイミングになるとステップ１２００から処理を開始し、ステップ１２０５に進んでメインフィードバック制御が実行中であるか否か（即ち、メインフィードバック条件が成立しているか否か）を判定する。
【０１３７】
このとき、メインフィードバック制御が実行されていなければ、ＣＰＵはそのステップ１２０５にて「Ｎｏ」と判定し、ステップ１２９５に直接進んで本ルーチンを一旦終了する。この結果、メインＦＢ学習値ＫＧの更新は行われない。
【０１３８】
一方、メインフィードバック制御が実行中であるとき、ＣＰＵはステップ１２１０に進んで「蒸発燃料ガスパージが行われていないか否か（具体的には、後述する図１３のルーチンにより求められる目標パージ率ＰＧＴが「０」であるか否か）」を判定する。このとき、蒸発燃料ガスパージが行われていると、ＣＰＵはそのステップ１２１０にて「Ｎｏ」と判定し、ステップ１２９５に直接進んで本ルーチンを一旦終了する。この結果、メインＦＢ学習値ＫＧの更新は行われない。
【０１３９】
他方、ＣＰＵがステップ１２１０の処理を実行する時点において蒸発燃料ガスパージが行われていなければ、ＣＰＵはそのステップ１２１０にて「Ｙｅｓ」と判定してステップ１２１５に進み、補正係数平均ＦＡＦＡＶの値が値１＋α（αは０より大きく１より小さい微小な所定値であり、例えば、０．０２）以上であるか否かを判定する。このとき、補正係数平均ＦＡＦＡＶの値が値１＋α以上であると、ＣＰＵはステップ１２２０に進んでメインＦＢ学習値ＫＧを正の所定値Ｘだけ増大させる。その後、ＣＰＵはステップ１２３５に進む。
【０１４０】
これに対し、ＣＰＵがステップ１２１５の処理を実行する時点において補正係数平均ＦＡＦＡＶの値が値１＋αよりも小さいと、ＣＰＵはステップ１２２５に進んで補正係数平均ＦＡＦＡＶの値が値１−α以下であるか否かを判定する。このとき、補正係数平均ＦＡＦＡＶの値が値１−α以下であると、ＣＰＵはステップ１２３０に進んでメインＦＢ学習値ＫＧを正の所定値Ｘだけ減少させる。その後、ＣＰＵはステップ１２３５に進む。
【０１４１】
更に、ＣＰＵはステップ１２３５に進んだとき、そのステップ１２３５にてメインフィードバック学習完了フラグ（メインＦＢ学習完了フラグ）ＸＫＧの値を「０」に設定する。メインＦＢ学習完了フラグＸＫＧは、その値が「１」であるときにメインフィードバック学習が完了しており、その値が「０」であるときにメインフィードバック学習が完了していないことを示す。
【０１４２】
次いで、ＣＰＵはステップ１２４０に進み、メイン学習カウンタＣＫＧの値を「０」に設定する。なお、メイン学習カウンタＣＫＧの値は、機関１０が搭載された車両の図示しないイグニッション・キー・スイッチがオフ位置からオン位置へと変更された際に実行されるイニシャルルーチンにても「０」に設定されるようになっている。その後、ＣＰＵはステップ１２９５に進み、本ルーチンを一旦終了する。
【０１４３】
加えて、ＣＰＵがステップ１２２５の処理を実行する時点において、補正係数平均ＦＡＦＡＶの値が値１−αよりも大きいと（即ち、補正係数平均ＦＡＦＡＶの値が値１−αと値１＋αの間の値であると）、ＣＰＵはステップ１２４５に進んでメイン学習カウンタＣＫＧの値を「１」だけ増大する。
【０１４４】
次に、ＣＰＵはステップ１２５０に進み、メイン学習カウンタＣＫＧの値が所定のメイン学習カウンタ閾値ＣＫＧｔｈ以上であるか否かを判定する。そして、メイン学習カウンタＣＫＧの値が所定のメイン学習カウンタ閾値ＣＫＧｔｈ以上であれば、ＣＰＵはステップ１２５５に進んでメインＦＢ学習完了フラグＸＫＧの値を「１」に設定する。
【０１４５】
即ち、機関１０の始動後において補正係数平均ＦＡＦＡＶの値が値１−αと値１＋αの間の値である回数がメイン学習カウンタ閾値ＣＫＧｔｈ以上となると、メインＦＢ学習値ＫＧの学習は完了したと見做される。その後、ＣＰＵはステップ１２９５に進んで、本ルーチンを一旦終了する。
【０１４６】
これに対し、ＣＰＵがステップ１２５０の処理を実行する時点において、メイン学習カウンタＣＫＧの値が所定のメイン学習カウンタ閾値ＣＫＧｔｈよりも小さければ、ＣＰＵはそのステップ１２５０からステップ１２９５に直接進んで本ルーチンを一旦終了する。
【０１４７】
以上により、メインフィードバック制御中であって蒸発燃料ガスパージが行われていない間にメインＦＢ学習値ＫＧが更新される。
【０１４８】
＜パージ制御弁駆動＞
一方、ＣＰＵは図１３に示したパージ制御弁駆動ルーチンを所定時間の経過毎に実行するようになっている。従って、所定のタイミングになるとＣＰＵはステップ１３００から処理を開始し、ステップ１３１０に進んでパージ条件が成立しているか否かを判定する。このパージ条件は、例えば、メインフィードバック制御が実行中であり、且つ、機関１０が定常運転されているとき（例えば、機関の負荷を表すスロットル弁開度ＴＡの単位時間あたりの変化量が所定値以下のとき）に成立する。
【０１４９】
いま、パージ条件が成立していると仮定する。この場合、ＣＰＵは図１３のステップ１３１０にて「Ｙｅｓ」と判定してステップ１３２０に進み、メインＦＢ学習完了フラグＸＫＧの値が「１」であるか否か（即ち、メインフィードバック学習が完了しているか否か）を判定する。このとき、メインＦＢ学習完了フラグＸＫＧの値が「１」であると、ＣＰＵはステップ１３２０にて「Ｙｅｓ」と判定し、以下に述べるステップ１３３０乃至ステップ１３７０の処理を順に行い、ステップ１３９５に進んで本ルーチンを一旦終了する。
【０１５０】
ステップ１３３０：ＣＰＵは、目標パージ率ＰＧＴを機関１０の運転状態（例えば、機関の負荷ＫＬ及び機関回転速度ＮＥ）に基いて設定する。また、目標パージ率ＰＧＴは、補正係数平均ＦＡＦＡＶの値が値１＋αと値１−αの間にある場合、所定量ずつ増大されてもよい。
【０１５１】
ステップ１３４０：ＣＰＵは、下記（１３）式に従って目標パージ率ＰＧＴ及び吸入空気量（流量）Ｇａから「蒸発燃料ガスの流量であるパージ流量（蒸発燃料ガスパージ量）ＫＰ」を算出する。換言すると、パージ率は、吸入空気量Ｇａに対するパージ流量ＫＰの比（パージ率＝ＫＰ／Ｇａ）である。なお、パージ率は、「吸入空気量Ｇａと蒸発燃料ガスパージ量ＫＰとの和（Ｇａ＋ＫＰ）」に対する蒸発燃料ガスパージ量ＫＰの比（パージ率＝（ＫＰ／（Ｇａ＋ＫＰ））として表されてもよい。
ＫＰ＝Ｇａ・ＰＧＴ  …（１３）
【０１５２】
ステップ１３５０：ＣＰＵは、下記（１４）式に示したように、機関回転速度ＮＥ及び負荷ＫＬをマップMapPGRMXに適用することにより、全開パージ率PGRMXを求める。この全開パージ率PGRMXは、パージ制御弁５５を全開にしたときのパージ率である。マップMapPGRMXは実験又はシミュレーションの結果に基づき予め取得され、ＲＯＭ内に格納されている。マップMapPGRMXによれば、全開パージ率PGRMXは機関回転速度ＮＥが大きくなるほど、又は、負荷ＫＬが大きくなるほど、小さくなる。
PGRMX＝MapPGRMX（ＮＥ，ＫＬ）  …（１４）
【０１５３】
ステップ１３６０：ＣＰＵは、下記（１５）式に従って全開パージ率PGRMX及び目標パージ率ＰＧＴを用いてデューティ比ＤＰＧを算出する。
ＤＰＧ＝（ＰＧＴ／PGRMX）・１００  …（１５）
【０１５４】
ステップ１３７０：ＣＰＵは、パージ制御弁５５をデューティ比ＤＰＧに基いて開閉制御する。
【０１５５】
これに対し、ＣＰＵは、パージ条件が成立していていない場合にはステップ１３１０にて「Ｎｏ」と判定してステップ１３８０に進み、パージ流量ＫＰを「０」に設定する。次いで、ＣＰＵは、ステップ１３９０にてデューティ比ＤＰＧを「０」に設定した後、ステップ１３７０へと進む。この場合、デューティ比ＤＰＧは「０」に設定されているからパージ制御弁５５は完全に閉じられた状態となる。その後、ＣＰＵはステップ１３９５に進んで本ルーチンを一旦終了する。
【０１５６】
更に、ＣＰＵがステップ１３２０の処理を実行する時点において、メインＦＢ学習完了フラグＸＫＧの値が「０」である場合、ＣＰＵはそのステップ１３２０にて「Ｎｏ」と判定し、ステップ１３８０、ステップ１３９０及びステップ１３７０の処理を実行する。この場合においても、デューティ比ＤＰＧは「０」に設定されているからパージ制御弁５５は完全に閉じられた状態となる。その後、ＣＰＵはステップ１３９５に進んで本ルーチンを一旦終了する。
【０１５７】
＜蒸発燃料ガス濃度学習＞
更に、ＣＰＵは、所定時間が経過する毎に図１４に示した蒸発燃料ガス濃度学習ルーチンを実行するようになっている。この蒸発燃料ガス濃度学習ルーチンの実行によって、蒸発燃料ガス濃度学習値ＦＧＰＧの更新が行われる。
【０１５８】
ＣＰＵは所定のタイミングになるとステップ１４００から処理を開始してステップ１４０５に進み、メインフィードバック制御が実行中であるか否かを判定する。このとき、メインフィードバック制御が実行されていなければ、ＣＰＵはそのステップ１４０５にて「Ｎｏ」と判定し、ステップ１４９５に直接進んで本ルーチンを一旦終了する。この結果、蒸発燃料ガス濃度学習値ＦＧＰＧの更新は行われない。
【０１５９】
一方、メインフィードバック制御が実行中であるとき、ＣＰＵはステップ１４１０に進んで「蒸発燃料ガスパージが行われているか否か（具体的には、図１３のルーチンにより求められるデューティ比ＤＰＧが「０」か否か）」を判定する。このとき、蒸発燃料ガスパージが行われていないと、ＣＰＵはそのステップ１４１０にて「Ｎｏ」と判定し、ステップ１４９５に直接進んで本ルーチンを一旦終了する。この結果、蒸発燃料ガス濃度学習値ＦＧＰＧの更新は行われない。
【０１６０】
他方、ＣＰＵがステップ１４１０に進んだ際に蒸発燃料ガスパージが行われていると、ＣＰＵはステップ１４１０にて「Ｙｅｓ」と判定してステップ１４１５に進み、補正係数平均ＦＡＦＡＶから「１」を減じた値の絶対値｜ＦＡＦＡＶ−１｜が所定値β以上であるか否かを判定する。ここで、βは０より大きく１より小さい微小な所定値であり、例えば、０．０２である。
【０１６１】
このとき、絶対値｜ＦＡＦＡＶ−１｜がβ以上であると、ＣＰＵはステップ１４１５にて「Ｙｅｓ」と判定してステップ１４２０に進み、下記（１６）式に従って更新値ｔＦＧを求める。（１６）式における目標パージ率ＰＧＴは、図１３のステップ１３３０にて設定されている。（１６）式から明らかなように、更新値ｔＦＧは目標パージ率１％当たりの「偏差εa（ＦＡＦＡＶの１からの差＝ＦＡＦＡＶ−１）」である。その後、ＣＰＵはステップ１４３０に進む。
ｔＦＧ＝（ＦＡＦＡＶ−１）／ＰＧＴ  …（１６）
【０１６２】
蒸発燃料ガスに含まれる蒸発燃料ガスの濃度が高いほど、上流側空燃比abyfsは理論空燃比よりもより小さい空燃比（理論空燃比よりもリッチ側の空燃比）となる。従って、メインフィードバック係数ＦＡＦはより小さい値になるので、補正係数平均ＦＡＦＡＶも「１」より小さい値となる。その結果、ＦＡＦＡＶ−１は負の値となるので、更新値ｔＦＧは負の値となる。更に、更新値ｔＦＧの絶対値は、ＦＡＦＡＶが小さいほど（「１」から乖離するほど）大きな値となる。つまり、蒸発燃料ガスの濃度が高いほど、更新値ｔＦＧはその絶対値の大きい負の値となる。
【０１６３】
これに対し、絶対値｜ＦＡＦＡＶ−１｜が値β以下である場合、ＣＰＵはステップ１４１５にて「Ｎｏ」と判定してステップ１４２５に進み、更新値ｔＦＧを「０」に設定する。その後、ＣＰＵはステップ１４３０に進む。
【０１６４】
ＣＰＵは、ステップ１４３０において、下記（１７）式に従って蒸発燃料ガス濃度学習値ＦＧＰＧを更新し、ステップ１４９５に進んで本ルーチンを一旦終了する。（１７）式においてＦＧＰＧnewは更新後の蒸発燃料ガス濃度学習値ＦＧＰＧである。この結果、蒸発燃料ガス濃度学習値ＦＧＰＧは、蒸発燃料ガスの濃度が高いほど小さい値になる。なお、蒸発燃料ガス濃度学習値ＦＧＰＧの初期値は「１」に設定されている。
ＦＧＰＧnew＝ＦＧＰＧ＋ｔＦＧ  …（１７）
【０１６５】
＜サブフィードバック量及びサブＦＢ学習値算出＞
ＣＰＵは、サブフィードバック量Vafsfb及びサブフィードバック量Vafsfbの学習値Vafsfbgを算出するために、図１５に示したルーチンを所定時間の経過毎に実行している。
【０１６６】
従って、所定のタイミングになると、ＣＰＵはステップ１５００から処理を開始し、ステップ１５０５に進んでサブフィードバック制御条件が成立しているか否かを判定する。サブフィードバック制御条件は、例えば、前述した図１１のステップ１１０５にて判定されるメインフィードバック制御条件が成立し、上流側目標空燃比abyfrが理論空燃比に設定され、機関の冷却水温ＴＨＷが前記第１所定温度よりも高い第２所定温度以上であり、且つ、下流側空燃比センサ６７が活性化しているときに成立する。
【０１６７】
いま、サブフィードバック制御条件が成立していると仮定して説明を続ける。この場合、ＣＰＵはステップ１５０５にて「Ｙｅｓ」と判定し、以下に述べるステップ１５１０乃至ステップ１５５５の処理を順に行い、ステップ１５９５に進んで本ルーチンを一旦終了する。
【０１６８】
ステップ１５１０：ＣＰＵは、下記（１８）式に示したように、下流側目標値Voxsrefから現時点の下流側空燃比センサ６７の出力値Voxsを減じることにより出力偏差量DVoxsを求める。（１８）式における下流側目標値Voxsrefは、上流側触媒４３の浄化効率が良好となるように定められる。下流側目標値Voxsrefは、本例において理論空燃比に相当する値（理論空燃比相当値）Ｖstに設定される。
DVoxs＝Voxsref−Voxs    …（１８）
【０１６９】
ステップ１５１５：ＣＰＵは、下記（１９）式に基いてサブフィードバック量Vafsfbを求める。（１９）式において、Ｋｐは比例ゲイン（比例定数）、Ｋｉは積分ゲイン（積分定数）、Ｋｄは微分ゲイン（微分定数）である。また、SDVoxsは、出力偏差量DVoxsの積分値（時間積分値）、DDVoxsは出力偏差量DVoxsの微分値（時間微分値）である。
Vafsfb＝Ｋｐ・DVoxs＋Ｋｉ・SDVoxs＋ｋｄ・DDVoxs    …（１９）
【０１７０】
ステップ１５２０：ＣＰＵは、その時点における出力偏差量の積分値SDVoxsに上記ステップ１５１０にて求めた出力偏差量DVoxsを加えて、新たな出力偏差量の積分値SDVoxsを取得する。
【０１７１】
ステップ１５２５：ＣＰＵは、「上記ステップ１５１０にて算出した出力偏差量DVoxs」から「本ルーチンを前回実行した際に算出された出力偏差量である前回出力偏差量DVoxsold」を減じることにより、新たな出力偏差量の微分値DDVoxsを求める。
【０１７２】
ステップ１５３０：ＣＰＵは、「上記ステップ１５１０にて算出した出力偏差量DVoxs」を「前回出力偏差量DVoxsold」として格納する。
【０１７３】
このように、ＣＰＵは、下流側空燃比センサ６７の出力値Voxsを下流側目標値Voxsrefに一致させる比例・積分・微分制御（ＰＩＤ制御）によりサブフィードバック量Vafsfbを算出する。このサブフィードバック量Vafsfbは、上述したように、フィードバック制御用出力値Vabyfcを算出するために使用される。
【０１７４】
ステップ１５３５：ＣＰＵは、その時点のサブＦＢ学習値Vafsfbgを更新前学習値Vafsfbg0として格納する。
【０１７５】
ステップ１５４０：ＣＰＵは、下記（２０）式に基いてサブフィードバック量Vafsfbの学習値Vafsfbgを更新する。（２０）式の左辺Vafsfbgnewは更新後の学習値Vafsfbgを表す。つまり、サブＦＢ学習値Vafsfbgは、「サブフィードバック量Vafsfbの定常成分」を取り込むように更新される。（２０）式の値ｐは、０より大きく１より小さい所定値である。更新されたサブＦＢ学習値Vafsfbg（＝Vafsfbgnew）はバックアップＲＡＭに格納される。
Vafsfbgnew＝（１−ｐ）・Vafsfbg＋ｐ・Ｋｉ・SDVoxs    …（２０）
【０１７６】
なお、学習値Vafsfbgは下記の（２１）式に示したように更新されてもよい。
Vafsfbgnew＝（１−ｐ）・Vafsfbg＋ｐ・Vafsfb    …（２１）
【０１７７】
ステップ１５４５：ＣＰＵは、下記（２２）式に従ってサブＦＢ学習値Vafsfbgの変更量（更新量）ΔＧを算出する。
ΔＧ＝Vafsfbg−Vafsfbg0      …（２２）
【０１７８】
ステップ１５５０：ＣＰＵは、下記（２３）式に従ってサブフィードバック量Vafsfbを変更量ΔＧにより補正する。
Vafsfbnew＝Vafsfb−ΔＧ      …（２３）
【０１７９】
ステップ１５５５：ＣＰＵは、下記（２４）式に従って積分項Ｋｉ・SDVoxsを変更量ΔＧに基いて補正する。なお、ステップ１５５５を省略してもよい。また、ステップ１５４５乃至ステップ１５５５を省略してもよい。
SDVoxsnew＝SDVoxs−ΔＧ/Ｋｉ    …（２４）
【０１８０】
以上の処理により、所定時間の経過毎にサブフィードバック量VafsfbとサブＦＢ学習値Vafsfbgとが更新される。なお、サブＦＢ学習値Vafsfbgは、サブフィードバック量Vafsfbが更新される時間間隔よりも長い時間間隔毎に更新されてもよい。
【０１８１】
一方、サブフィードバック制御条件が成立していない場合、ＣＰＵは図１５のステップ１５０５にて「Ｎｏ」と判定し、以下に述べるステップ１５６０及びステップ１５６５の処理を順に行い、ステップ１５９５に進んで本ルーチンを一旦終了する。
【０１８２】
ステップ１５６０：ＣＰＵはサブフィードバック量Vafsfbの値を「０」に設定する。
ステップ１５６５：ＣＰＵは出力偏差量の積分値SDVoxsの値を「０」に設定する。
【０１８３】
これにより、フィードバック制御用出力値Vabyfcは、上流側空燃比センサ６６の出力値VabyfsとサブＦＢ学習値Vafsfbgとの和となる。即ち、この場合、「サブフィードバック量Vafsfbの更新」及び「サブフィードバック量Vafsfbの指示燃料噴射量Ｆｉへの反映」は停止される。但し、少なくとも、サブフィードバック量Vafsfbの積分項（定常成分）に対応するサブＦＢ学習値Vafsfbgは指示燃料噴射量Ｆｉに反映される。
【０１８４】
＜空燃比不均衡指標値（インバランス判定用パラメータ）＞
ところで、前述したように、吸入空気量の気筒間ばらつき異常及び燃料噴射量の気筒間ばらつき異常が発生したことを判定する際、ＣＰＵは空燃比不均衡指標値（パージ量小時パラメータＰｏｆｆ及びパージ量大時パラメータＰｏｎ）を求める。本例において、空燃比不均衡指標値は、上流側空燃比センサ６６の出力値Vabyfsの微分値d(Vabyfs)/dtの平均値に応じた値である。以下、この空燃比不均衡指標値（微分値d(Vabyfs)/dtの平均値に応じた値）が、気筒別空燃比の不均一性の程度の程度が大きくなるほど大きくなるパラメータであることについてより詳細に説明する。
【０１８５】
上流側空燃比センサ６６には、各気筒からの排ガスが点火順（故に、排気順）に到達する。気筒別空燃比の不均一性が生じていない場合（気筒別空燃比差がない場合）、各気筒から排出され且つ上流側空燃比センサ６６に到達する排ガスの空燃比は互いに略同一である。従って、気筒別空燃比差がない場合の「上流側空燃比センサ６６の出力値Vabyfs（従って、検出空燃比abyfs）」は、例えば、図１６の（Ｂ）において破線Ｃ１により示したように変化する。即ち、気筒間における空燃比の不均一性がない場合、出力値Vabyfsの波形は略平坦である。このため、図１６の（Ｃ）において破線Ｃ３により示したように、気筒別空燃比の不均一性がない場合、「出力値Vabyfsの傾きである微分値d(Vabyfs)/dt」の絶対値は小さい。
【０１８６】
一方、「特定気筒（例えば、第１気筒）」の空燃比が他の気筒の空燃比に対して大きく相違したと仮定する。即ち、その特定気筒の排ガスの空燃比（インバランス気筒の空燃比）と、その特定気筒以外の気筒の排ガスの空燃比（非インバランス気筒の空燃比）と、が大きく相違すると仮定する。
【０１８７】
この場合、出力値Vabyfsは、例えば図１６の（Ｂ）の実線Ｃ２により示したように、単位燃焼サイクル期間毎に大きく変動する。このため、図１６の（Ｃ）において実線Ｃ４により示したように、気筒別空燃比の不均一性の程度が大きい場合（空燃比気筒間インバランス状態が発生している場合）、微分値d(Vabyfs)/dtの絶対値は大きくなる。
【０１８８】
なお、単位燃焼サイクル期間は、一つの上流側空燃比センサ６６に到達する排ガスを排出している気筒の総てにおいて、各一回の燃焼行程が終了するのに要するクランク角度が経過する期間である。本例の機関１０は、直列４気筒・４サイクル・エンジンであり、且つ、一つの上流側空燃比センサ６６には第１〜第４気筒からの排ガスが到達する。よって、単位燃焼サイクル期間は７２０°クランク角度が経過する期間である。
【０１８９】
しかも、微分値d(Vabyfs)/dtの絶対値｜d(Vabyfs)/dt｜は、インバランス気筒の空燃比が非インバランス気筒の空燃比から乖離するほど大きく変動する。例えば、インバランス気筒の空燃比と非インバランス気筒の空燃比との差の大きさが第１の値であるときの出力値Vabyfs（又は検出空燃比abyfs）が図１６（Ｂ）の実線Ｃ２のように変化するとすれば、インバランス気筒の空燃比と非インバランス気筒の空燃比との差の大きさが「第１の値の値よりも大きい第２の値」であるときの出力値Vabyfs（又は検出空燃比abyfs）は図１６（Ｂ）の一点鎖線Ｃ２ａのように変化する。
【０１９０】
従って、図１７に示したように、微分値d(Vabyfs)/dtの絶対値｜d(Vabyfs)/dt｜の「複数の単位燃焼サイクル期間」における平均値ＡｖｅΔＡＦに相関する値（空燃比不均衡指標値ＲＩＭＢ）は、実際のインバランス割合が大きくなるほど（即ち、インバランス気筒の空燃比が非インバランス気筒の空燃比から乖離するほど）大きくなる。即ち、空燃比不均衡指標値ＲＩＭＢは、気筒別空燃比の不均一性の程度が大きくなるほど大きくなる。
【０１９１】
なお、図１７の横軸はインバランス割合である。インバランス割合は、非インバランス気筒に供給される燃料量を「１」とし、インバランス気筒に供給される燃料量を「１＋α」としたとき、「α」となる値である。インバランス割合は、通常、α・１００％の形で表記される。
【０１９２】
ＣＰＵは、蒸発燃料比が第１所定値以上である場合の空燃比不均衡指標値ＲＩＭＢをパージ量大時パラメータＰｏｎとして求めるとともに、蒸発燃料比が「前記第１所定値以下の第２所定値未満」である場合の空燃比不均衡指標値ＲＩＭＢをパージ量小時パラメータＰｏｆｆとして求める。
【０１９３】
＜＜パージ量大時パラメータＰｏｎの取得＞＞
ＣＰＵは、４ｍｓ（４ミリ秒＝所定の一定サンプリング時間ｔｓ）が経過する毎に、図１８にフローチャートにより示したルーチンを実行するようになっている。
【０１９４】
従って、所定のタイミングになると、ＣＰＵはステップ１８００から処理を開始してステップ１８０５に進み、パラメータ取得許可フラグＸkyokaの値が「１」であるか否かを判定する。
【０１９５】
このパラメータ取得許可フラグＸkyokaは、上述したイニシャルルーチンにおいて「０」に設定されるようになっている。更に、パラメータ取得許可フラグＸkyokaは、図示しないルーチンを実行することにより、基準気筒（本例では第１気筒）が圧縮上死点に達した時点において、パラメータ取得条件が成立しているとき「１」に設定される。パラメータ取得許可フラグＸkyokaは、パラメータ取得条件が不成立であるとき直ちに「０」に設定される。
【０１９６】
パラメータ取得条件は、以下の総ての条件（条件Ｃ１乃至条件Ｃ５）が成立したときに成立する。従って、パラメータ取得条件は、以下の総ての条件（条件Ｃ１乃至条件Ｃ５）のうちの少なくとも一つが不成立であるとき、成立しない。勿論、パラメータ取得条件を構成する条件は、以下の条件Ｃ１乃至条件Ｃ５に限定されることはない。
【０１９７】
（条件Ｃ１）エアフローメータ６１により取得される吸入空気量Ｇａが、所定範囲内である。即ち、吸入空気量Ｇａが、低側閾値空気流量ＧａＬｏｔｈ以上であり且つ高側閾値空気流量ＧａＨｉｔｈ以下である。この条件Ｃ１により、出力値Vabyfsの応答性が吸入空気量Ｇａの影響を受けて変化することに起因する「空燃比不均衡指標値ＲＩＭＢの精度の悪化」を回避することができる。
（条件Ｃ２）機関回転速度ＮＥが所定範囲内である。即ち、機関回転速度ＮＥが、低側閾値機関回転速度ＮＥＬｏｔｈ以上であり且つ高側閾値機関回転速度ＮＥＨｉｔｈ以下である。
（条件Ｃ３）冷却水温ＴＨＷが閾値冷却水温ＴＨＷｔｈ以上である。
（条件Ｃ４）メインフィードバック制御条件が成立している。
（条件Ｃ５）フューエルカット制御中でない。
【０１９８】
ところで、上記（３）式及び図１０のステップ１０４０に示したように、指示燃料噴射量Ｆｉは、Ｆｉ＝ＦＰＧ・｛ＫＧ・ＦＡＦ・Ｆｂ（ｋ）｝という式に従って求められる。ここで、例えば、目標パージ率ＰＧＴが「０」である場合、図１０のステップ１０４０にて算出されるパージ補正係数ＦＰＧが「１」になることからも理解されるように、値｛ＫＧ・ＦＡＦ・Ｆｂ（ｋ）｝は、蒸発燃料パージが全く行われていない場合において目標空燃比abyfr（例えば、理論空燃比stoich）を得るために必要な燃料量である。
【０１９９】
従って、値（１−ＦＰＧ）・｛ＫＧ・ＦＡＦ・Ｆｂ（ｋ）｝に相当する量の燃料が蒸発燃料としてもたらされていることを意味する。よって、「機関１０に供給される総燃料量｛ＫＧ・ＦＡＦ・Ｆｂ（ｋ）｝」に対する「蒸発燃料の量（１−ＦＰＧ）｛ＫＧ・ＦＡＦ・Ｆｂ（ｋ）｝」の比は値（１−ＦＰＧ）である。この比（１−ＦＰＧ）は蒸発燃料比γとも称呼される。
【０２００】
そこで、ＣＰＵは、パラメータ取得許可フラグＸkyokaの値が「１」である場合、ステップ１８０５にて「Ｙｅｓ」と判定してステップ１８１０に進み、値（１−ＦＰＧ）が閾値Ｐｔｈ以上であるか否かを判定する。閾値Ｐｔｈは、便宜上、第１所定値とも称呼される。閾値Ｐｔｈは、蒸発燃料が十分に機関１０に供給されていると見做される値（例えば、０．５＝５０％）に設定されている。従って、ＣＰＵはステップ１８１０にて、蒸発燃料比が第１所定値以上であるか否かを判定する。
【０２０１】
なお、ＣＰＵは、ステップ１８０５にて、値（１−ＦＰＧ）が閾値Ｐｔｈ以上であり且つ閾値（Ｐｔｈ＋Ａ）未満であるか否かを判定してもよい。値Ａは正の値である。値Ａは、蒸発燃料比が第１所定値の近傍値であることを保証するように小さいな値に定められてる。従って、この場合、ＣＰＵは、蒸発燃料比が十分に大きい所定値（Ｐｔｈ）に実質的に一致しているか否かを判定する。
【０２０２】
いま、値（１−ＦＰＧ）が閾値Ｐｔｈ以上であると仮定する。この場合、ＣＰＵはステップ１８１０にて「Ｙｅｓ」と判定し、以下に述べるステップ１８１５乃至ステップ１８２５の処理を順に行ってステップ１８３０に進む。
【０２０３】
ステップ１８１５：ＣＰＵは、本ルーチンを前回実行したときに読み込んだ出力値Vabyfsを前回の出力値Vabyfsとして記憶する。即ち、前回の出力値Vabyfsoldは、現時点から４ｍｓ（サンプリング時間ｔｓ）前の時点における出力値Vabyfsである。なお、出力値Vabyfsの初期値は上述したイニシャルルーチンにおいて理論空燃比に相当する値に設定されている。
【０２０４】
ステップ１８２０：ＣＰＵは、その時点の上流側空燃比センサ６６の出力値Vabyfsを読み込む。
【０２０５】
ステップ１８２５：ＣＰＵは、蒸発燃料比が第１所定値よりも大きいとき（本例において、蒸発燃料比＝５０％）の微分値d(abyfs)/dtであるΔＡＦon、その微分値ΔＡＦonの絶対値の積算値ＳＡＦＤon及び積算回数カウンタＣｎonの値を更新する。以下、これらの更新方法について具体的に説明する。
【０２０６】
（Ａ）微分値ΔＡＦonの更新。
ＣＰＵは、微分値ΔＡＦonを、今回の出力値Vabyfsから前回の出力値Vabyfsoldを減じることによって取得する。即ち、今回の出力値VabyfsをVabyfs（ｎ）、前回の出力値VabyfsをVabyfs（ｎ−１）と表記すると、ＣＰＵはステップ１８２５にて「今回の微分値ΔＡＦon（ｎ）」を下記の（２５）式に従って求める。本ルーチンは極めて短い時間間隔（４ｍｓ）毎に実行されるので、値ΔＡＦon（ｎ）は微分値d(Vabyfs)/dtと見做すことができる。
ΔＡＦon（ｎ）＝Vabyfs（ｎ）−Vabyfs（ｎ−１）  …（２５）
【０２０７】
（Ｂ）微分値ΔＡＦonの絶対値｜ΔＡＦon｜の積算値ＳＡＦＤonの更新。
ＣＰＵは今回の積算値ＳＡＦＤon（ｎ）を下記の（２６）式に従って求める。即ち、ＣＰＵは、ステップ１８２５に進んだ時点における前回の積算値ＳＡＦＤon（ｎ−１）に上記算出した今回の微分値ΔＡＦon（ｎ）の絶対値｜ΔＡＦon（ｎ）｜を加えることにより、積算値ＳＡＦＤonを更新する。
ＳＡＦＤon（ｎ）＝ＳＡＦＤon（ｎ−１）＋｜ΔＡＦon（ｎ）｜  …（２６）
【０２０８】
積算値ＳＡＦＤonに「今回の微分値の絶対値｜ΔＡＦon（ｎ）｜」を積算する理由は、図１６の（Ｂ）及び（Ｃ）からも理解されるように、微分値ΔＡＦon（ｎ）は正の値にも負の値にもなるからである。なお、積算値ＳＡＦＤonも、上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
【０２０９】
（Ｃ）微分値ΔＡＦonの絶対値の、積算値ＳＡＦＤonへの積算回数を示すカウンタＣｎonの更新。
ＣＰＵは、下記の（２７）式に従って、カウンタＣｎonの値を「１」だけ増大する。Ｃｎon（ｎ）は更新後のカウンタＣｎonであり、Ｃｎon（ｎ−１）は更新前のカウンタＣｎonである。このカウンタＣｎonの値は上述したイニシャルルーチンにおいて「０」に設定されるとともに、後述するステップ１８５５にても「０」に設定される。従って、カウンタＣｎonの値は、積算値ＳＡＦＤonに積算された微分値ΔＡＦonの絶対値｜ΔＡＦon｜のデータ数を示す。
Ｃｎon（ｎ）＝Ｃｎon（ｎ−１）＋１  …（２７）
【０２１０】
次に、ＣＰＵはステップ１８３０に進み、第１気筒の圧縮上死点を基準としたクランク角ＣＡ（絶対クランク角ＣＡ）が７２０°クランク角になっているか否かを判定する。このとき、絶対クランク角ＣＡが７２０°クランク角未満であると、ＣＰＵはステップ１８３０にて「Ｎｏ」と判定してステップ１８９５に直接進み、本ルーチンを一旦終了する。
【０２１１】
なお、ステップ１８３０は、微分値ΔＡＦonの絶対値｜ΔＡＦon｜の平均値を求めるための最小単位の期間（単位燃焼サイクル期間）を定めるステップであり、ここでは７２０°クランク角がその最小期間に相当する。もちろん、この最小期間を定めるクランク角は７２０°クランク角よりも短くてもよい。但し、最小期間は、サンプリング時間ｔｓの複数倍の長さ以上の期間であることが望ましい。
【０２１２】
一方、ＣＰＵがステップ１８３０の処理を行う時点において、絶対クランク角ＣＡが７２０°クランク角になっていると、ＣＰＵはそのステップ１８３０にて「Ｙｅｓ」と判定してステップ１８３５に進む。ＣＰＵは、そのステップ１８３５にて、
（Ｄ）微分値ΔＡＦonの絶対値｜ΔＡＦon｜の平均値ＡｖｅΔＡＦonの算出、
（Ｅ）平均値ＡｖｅΔＡＦonの積算値Ｓａｖｅonの算出、及び、
（Ｆ）積算回数カウンタＣｓonのインクリメント、
を行う。以下、これらの更新方法について具体的に説明する。
【０２１３】
（Ｄ）微分値ΔＡＦonの絶対値｜ΔＡＦon｜の平均値ＡｖｅΔＡＦon算出。
ＣＰＵは、積算値ＳＡＦＤonをカウンタＣｎonの値により除することにより、直前の単位燃焼サイクル期間における絶対値｜ΔＡＦon｜の平均値ＡｖｅΔＡＦon（＝ＳＡＦＤon／Ｃｎon）を算出する。この後、ＣＰＵは積算値ＳＡＦＤon及びカウンタＣｎonの値を「０」に設定する。
【０２１４】
（Ｅ）平均値ＡｖｅΔＡＦonの積算値Ｓａｖｅonの算出。
ＣＰＵは今回の積算値Ｓａｖｅon（ｎ）を下記の（２８）式に従って求める。即ち、ＣＰＵは、ステップ１８３５に進んだ時点における前回の積算値Ｓａｖｅon（ｎ−１）に上記算出した今回の平均値ＡｖｅΔＡＦonを加えることにより、積算値Ｓａｖｅonを更新する。この積算値Ｓａｖｅonの値は上述したイニシャルルーチンにおいて「０」に設定される。
Ｓａｖｅon（ｎ）＝Ｓａｖｅon（ｎ−１）＋ＡｖｅΔＡＦon  …（２８）
【０２１５】
（Ｆ）積算回数カウンタＣｓonのインクリメント。
ＣＰＵは、下記の（２９）式に従って、カウンタＣｓonの値を「１」だけ増大する。Ｃｓon（ｎ）は更新後のカウンタＣｓonであり、Ｃｓon（ｎ−１）は更新前のカウンタＣｓonである。このカウンタＣｓonの値は上述したイニシャルルーチンにおいて「０」に設定される。従って、カウンタＣｓonの値は、積算値Ｓａｖｅonに積算された平均値ＡｖｅΔＡＦonのデータ数を示す。
Ｃｓon（ｎ）＝Ｃｓon（ｎ−１）＋１  …（２９）
【０２１６】
次に、ＣＰＵはステップ１８４０に進み、カウンタＣｓonの値が閾値Ｃｓonth以上であるか否かを判定する。このとき、カウンタＣｓonの値が閾値Ｃｓonth未満であると、ＣＰＵはそのステップ１８４０にて「Ｎｏ」と判定し、ステップ１８９５に直接進んで本ルーチンを一旦終了する。なお、閾値Ｃｓonthは自然数であり、２以上であることが望ましい。
【０２１７】
一方、ＣＰＵがステップ１８４０の処理を行う時点において、カウンタＣｓonの値が閾値Ｃｓonth以上であると、ＣＰＵはそのステップ１８４０にて「Ｙｅｓ」と判定してステップ１８４５に進み、パージ量大時パラメータＰｏｎを算出する。
【０２１８】
より具体的に述べると、ＣＰＵは下記（３０）式に従って積算値ＳａｖｅonをカウンタＣｓonの値（＝Ｃｓonth）によって除することにより、パージ量大時パラメータＰｏｎを算出する。このパージ量大時パラメータＰｏｎは、蒸発燃料比が第１所定値以上である期間において、微分値ΔＡＦonの絶対値｜ΔＡＦon｜の一つの単位燃焼サイクル期間における平均値を、複数（Ｃｓonth回分）の単位燃焼サイクル期間について平均した値である。従って、パージ量大時パラメータＰｏｎは、気筒別空燃比の不均一性の程度が大きいほど大きくなるインバランス判定用パラメータである。
Ｐon＝Ｓａｖｅon／Ｃｓonth    …（３０）
【０２１９】
次いで、ＣＰＵはステップ１８５０に進み、パージ量大時パラメータ算出完了フラグＸＰonの値を「１」に設定する。その後、ＣＰＵはステップ１８９５に進んで、本ルーチンを一旦終了する。なお、パージ量大時パラメータ算出完了フラグＸＰonの値は、上述したイニシャルルーチンにおいて「０」に設定されるようになっている。従って、パージ量大時パラメータ算出完了フラグＸＰonは、その値が「１」であるとき「今回の機関１０の運転開始後においてパージ量大時パラメータＰｏｎが取得されたこと」を示し、その値が「０」であるとき「今回の機関１０の運転開始後においてパージ量大時パラメータＰｏｎが未だ取得されていないこと」を示す。
【０２２０】
一方、ＣＰＵがステップ１８０５に進んだ際にパラメータ取得許可フラグＸkyokaの値が「１」でない場合、及び、ＣＰＵがステップ１８１０に進んだ際に値（１−ＦＰＧ）が閾値Ｐｔｈ以上でない場合、ＣＰＵはステップ１８５５に進む。そして、ＣＰＵはステップ１８５５にて各値（例えば、ΔＡＦon，ＳＡＦＤon，Ｃｎon等）を「０」に設定（クリア）し、その後、ステップ１８９５に直接進んで本ルーチンを一旦終了する。以上のようにして、パージ量大時パラメータＰｏｎが取得される。
【０２２１】
＜＜パージ量小時パラメータＰｏｆｆの取得＞＞
ＣＰＵは、４ｍｓが経過する毎に、図１９にフローチャートにより示したルーチンを実行するようになっている。ＣＰＵは、このルーチンにより、パージ量小時パラメータＰｏｆｆをパージ量大時パラメータＰｏｎと同じ手法に基いて算出する。
【０２２２】
従って、所定のタイミングになると、ＣＰＵはステップ１９００から処理を開始してステップ１９０５に進み、前述したパラメータ取得許可フラグＸkyokaの値が「１」であるか否かを判定する。
【０２２３】
いま、パラメータ取得許可フラグＸkyokaの値が「１」であると仮定する。この場合、ＣＰＵは、ステップ１９０５にて「Ｙｅｓ」と判定してステップ１９１０に進み、値（１−ＦＰＧ）が閾値（Ｐｔｈ−Ｂ）未満であるか否かを判定する。値Ｂは正の値である。閾値（Ｐｔｈ−Ｂ）は、第２所定値とも称呼され、第１所定値（Ｐｔｈ）よりも小さい値である。閾値（Ｐｔｈ−Ｂ）は、蒸発燃料が機関１０に実質的に供給されていないと見做される値（例えば、０％）に設定されている。
【０２２４】
いま、値（１−ＦＰＧ）が閾値（Ｐｔｈ−Ｂ）未満であると仮定する。この場合、ＣＰＵはステップ１９１０にて「Ｙｅｓ」と判定し、以下に述べるステップ１９１５乃至ステップ１９２５の処理を順に行ってステップ１９３０に進む。
【０２２５】
ステップ１９１５：ＣＰＵは、本ルーチンを前回実行したときに読み込んだ出力値Vabyfsを前回の出力値Vabyfsとして記憶する。
ステップ１９２０：ＣＰＵは、その時点の上流側空燃比センサ６６の出力値Vabyfsを読み込む。
【０２２６】
ステップ１９２５：ＣＰＵは、蒸発燃料比が第２所定値よりも小さいとき（本例において、蒸発燃料比＝０％）の微分値d(abyfs)/dtであるΔＡＦoff、その微分値ΔＡＦoffの絶対値の積算値ＳＡＦＤoff及び積算回数カウンタＣｎoffの値を更新する。これらの更新方法は、ステップ１８２５における処理と同様である。以下、これらの処理について簡単に説明する。
【０２２７】
（Ｇ）微分値ΔＡＦoffの更新。
ＣＰＵは、今回の微分値ΔＡＦoff（ｎ）を下記の（３１）式に従って求める。
ΔＡＦoff（ｎ）＝Vabyfs（ｎ）−Vabyfs（ｎ−１）  …（３１）
【０２２８】
（Ｈ）微分値ΔＡＦoffの絶対値｜ΔＡＦoff｜の積算値ＳＡＦＤoffの更新。
ＣＰＵは今回の積算値ＳＡＦＤoff（ｎ）を下記の（３２）式に従って求める。積算値ＳＡＦＤoff（ｎ−１）は、ステップ１９２５に進んだ時点における前回の積算値ＳＡＦＤoffである。
ＳＡＦＤoff（ｎ）＝ＳＡＦＤoff（ｎ−１）＋｜ΔＡＦoff（ｎ）｜  …（３２）
【０２２９】
（Ｉ）微分値ΔＡＦoffの絶対値の、積算値ＳＡＦＤoffへの積算回数カウンタＣｎoffの更新。
ＣＰＵは、下記の（３３）式に従って、カウンタＣｎoffの値を「１」だけ増大する。Ｃｎoff（ｎ）は更新後のカウンタＣｎoffであり、Ｃｎoff（ｎ−１）は更新前のカウンタＣｎoffである。このカウンタＣｎoffの値は上述したイニシャルルーチンにおいて「０」に設定されるとともに、後述するステップ１９５５にても「０」に設定される。従って、カウンタＣｎoffの値は、積算値ＳＡＦＤoffに積算された微分値ΔＡＦoffの絶対値｜ΔＡＦoff｜のデータ数を示す。
Ｃｎoff（ｎ）＝Ｃｎoff（ｎ−１）＋１  …（３３）
【０２３０】
次に、ＣＰＵはステップ１９３０に進み、第１気筒の圧縮上死点を基準としたクランク角ＣＡ（絶対クランク角ＣＡ）が７２０°クランク角になっているか否かを判定する。このとき、絶対クランク角ＣＡが７２０°クランク角未満であると、ＣＰＵはステップ１９３０にて「Ｎｏ」と判定してステップ１９９５に直接進み、本ルーチンを一旦終了する。このステップの意義は、ステップ１８３０の意義と同じである。
【０２３１】
一方、ＣＰＵがステップ１９３０の処理を行う時点において、絶対クランク角ＣＡが７２０°クランク角になっていると、ＣＰＵはそのステップ１９３０にて「Ｙｅｓ」と判定してステップ１９３５に進む。ＣＰＵは、そのステップ１９３５にて、
（Ｊ）微分値ΔＡＦoffの絶対値｜ΔＡＦoff｜の平均値ＡｖｅΔＡＦoffの算出、
（Ｋ）平均値ＡｖｅΔＡＦoffの積算値Ｓａｖｅoffの算出、及び、
（Ｌ）積算回数カウンタＣｓoffのインクリメント、
を行う。これらの更新方法は、ステップ１８４５における処理と同様である。以下、これらの処理について簡単に説明する。
【０２３２】
（Ｊ）微分値ΔＡＦoffの絶対値｜ΔＡＦoff｜の平均値ＡｖｅΔＡＦoff算出。
ＣＰＵは、積算値ＳＡＦＤoffをカウンタＣｎoffの値により除することにより、直前の単位燃焼サイクル期間における絶対値｜ΔＡＦoff｜の平均値ＡｖｅΔＡＦoff（＝ＳＡＦＤoff／Ｃｎoff）を算出する。この後、ＣＰＵは積算値ＳＡＦＤoff及びカウンタＣｎoffの値を「０」に設定する。
【０２３３】
（Ｋ）平均値ＡｖｅΔＡＦoffの積算値Ｓａｖｅoffの算出。
ＣＰＵは今回の積算値Ｓａｖｅoff（ｎ）を下記の（３４）式に従って求める。積算値Ｓａｖｅoff（ｎ−１）は、ステップ１９３５に進んだ時点における前回の積算値Ｓａｖｅoffである。この積算値Ｓａｖｅoffの値は上述したイニシャルルーチンにおいて「０」に設定される。
Ｓａｖｅoff（ｎ）＝Ｓａｖｅoff（ｎ−１）＋ＡｖｅΔＡＦoff  …（３４）
【０２３４】
（Ｌ）積算回数カウンタＣｓoffのインクリメント。
ＣＰＵは、下記の（３５）式に従って、カウンタＣｓoffの値を「１」だけ増大する。Ｃｓoff（ｎ）は更新後のカウンタＣｓoffであり、Ｃｓoff（ｎ−１）は更新前のカウンタＣｓoffである。このカウンタＣｓoffの値は上述したイニシャルルーチンにおいて「０」に設定される。従って、カウンタＣｓoffの値は、積算値Ｓａｖｅoffに積算された平均値ＡｖｅΔＡＦoffのデータ数を示す。
Ｃｓoff（ｎ）＝Ｃｓoff（ｎ−１）＋１  …（３５）
【０２３５】
次に、ＣＰＵはステップ１９４０に進み、カウンタＣｓoffの値が閾値Ｃｓoffth以上であるか否かを判定する。このとき、カウンタＣｓoffの値が閾値Ｃｓoffth未満であると、ＣＰＵはそのステップ１９４０にて「Ｎｏ」と判定し、ステップ１９９５に直接進んで本ルーチンを一旦終了する。なお、閾値Ｃｓoffthは自然数であり、閾値Ｃｓonthと同じ値であることが望ましい。
【０２３６】
一方、ＣＰＵがステップ１９４０の処理を行う時点において、カウンタＣｓoffの値が閾値Ｃｓoffth以上であると、ＣＰＵはそのステップ１９４０にて「Ｙｅｓ」と判定してステップ１９４５に進み、パージ量小時パラメータＰｏｆｆを算出する。
【０２３７】
より具体的に述べると、ＣＰＵは下記（３６）式に従って積算値ＳａｖｅoffをカウンタＣｓoffの値（＝Ｃｓoffth）によって除することにより、パージ量小時パラメータＰｏｆｆを算出する。このパージ量小時パラメータＰｏｆｆは、蒸発燃料比が「第１所定値以下の第２所定値」未満である期間において、微分値ΔＡＦoffの絶対値｜ΔＡＦoff｜の一つの単位燃焼サイクル期間における平均値を、複数（Ｃｓoffth回分）の単位燃焼サイクル期間について平均した値である。従って、パージ量小時パラメータＰｏｆｆは、気筒別空燃比の不均一性の程度が大きいほど大きくなるインバランス判定用パラメータである。
Ｐoff＝Ｓａｖｅoff／Ｃｓoffth    …（３６）
【０２３８】
次いで、ＣＰＵはステップ１９５０に進み、パージ量小時パラメータ算出完了フラグＸＰoffの値を「１」に設定する。その後、ＣＰＵはステップ１９９５に進んで、本ルーチンを一旦終了する。なお、パージ量小時パラメータ算出完了フラグＸＰoffの値は、上述したイニシャルルーチンにおいて「０」に設定されるようになっている。従って、パージ量小時パラメータ算出完了フラグＸＰoffは、その値が「１」であるとき「今回の機関１０の運転開始後においてパージ量小時パラメータＰｏｆｆが取得されたこと」を示し、その値が「０」であるとき「今回の機関１０の運転開始後においてパージ量小時パラメータＰｏｆｆが未だ取得されていないこと」を示す。
【０２３９】
一方、ＣＰＵがステップ１９０５に進んだ際にパラメータ取得許可フラグＸkyokaの値が「１」でない場合、及び、ＣＰＵがステップ１９１０に進んだ際に「値（１−ＦＰＧ）が閾値Ｐｔｈ−Ｂ未満」でない場合、ＣＰＵはステップ１９５５に進む。そして、ＣＰＵはステップ１９５５にて各値（例えば、ΔＡＦoff，ＳＡＦＤoff，Ｃｎoff等）を「０」に設定（クリア）し、その後、ステップ１９９５に直接進んで本ルーチンを一旦終了する。以上のようにして、パージ量小時パラメータＰｏｆｆが取得される。
【０２４０】
＜異常判定＞
次に、「異常判定」を行うための処理について説明する。ＣＰＵは、所定時間が経過する毎に、図２０にフローチャートにより示したルーチンを実行するようになっている。
【０２４１】
従って、所定のタイミングになると、ＣＰＵは図２０のステップ２０００から処理を開始してステップ２００５に進み、異常判定完了フラグＸＦＩＮの値が「１」であるか否かを判定する。この異常判定完了フラグＸＦＩＮの値は、上述したイニシャルルーチンにおいて「０」に設定され、異常判定が終了したときに後述するステップ２０４０にて「１」に設定される。
【０２４２】
いま、異常判定完了フラグＸＦＩＮの値が「０」であると仮定する。この場合、ＣＰＵはステップ２００５にて「Ｎｏ」と判定してステップ２０１０に進み、パージ量大時パラメータ算出完了フラグＸＰonの値が「１」であるか否かを判定する。このとき、フラグＸＰonの値が「１」でなければ（即ち、パージ量大時パラメータＰｏｎが未だ取得されていなければ）、ＣＰＵはステップ２０１０にて「Ｎｏ」と判定し、ステップ２０９５に直接進んで本ルーチンを一旦終了する。
【０２４３】
一方、パージ量大時パラメータ算出完了フラグＸＰonの値が「１」であると、ＣＰＵはステップ２０１０にて「Ｙｅｓ」と判定してステップ２０１５に進み、パージ量小時パラメータ算出完了フラグＸＰoffの値が「１」であるか否かを判定する。このとき、フラグＸＰoffの値が「１」でなければ（即ち、パージ量小時パラメータＰoffが未だ取得されていなければ）、ＣＰＵはステップ２０１５にて「Ｎｏ」と判定し、ステップ２０９５に直接進んで本ルーチンを一旦終了する。
【０２４４】
これに対し、パージ量小時パラメータ算出完了フラグＸＰoffの値が「１」であると、ＣＰＵはステップ２０１５にて「Ｙｅｓ」と判定してステップ２０２０に進む。即ち、ＣＰＵは、パージ量大時パラメータＰｏｎ及びパージ量小時パラメータＰｏｆｆの双方が、今回の機関１０の始動後において取得された場合、ステップ２０２０に進む。
【０２４５】
ＣＰＵは、ステップ２０２０に進んだとき、下記の（３７）式に従って、パージ量大時パラメータＰｏｎからパージ量小時パラメータＰｏｆｆを減じることにより、パラメータ差相関値DPimbを算出する。
DPimb＝Ｐon −
Ｐoff    …（３７）
【０２４６】
次に、ＣＰＵはステップ２０２５に進み、パラメータ差相関値DPimbの大きさ（｜DPimb｜）が第１異常判定用閾値Dpinjth以上であるか否かを判定する。そして、パラメータ差相関値DPimbの大きさ（｜DPimb｜）が第１異常判定用閾値Dpinjth以上であるとき、ＣＰＵは「燃料噴射量の気筒間ばらつき異常が発生した」と判定してステップ２０３０に進み、燃料噴射量ばらつき異常発生フラグＸＩＮＪＩＭＢの値を「１」に設定する。即ち、ＣＰＵは燃料噴射量の気筒間ばらつき異常が発生した旨を記録する。なお、燃料噴射量ばらつき異常発生フラグＸＩＮＪＩＭＢの値はバックアップＲＡＭに格納される。この燃料噴射量ばらつき異常発生フラグＸＩＮＪＩＭＢの値は上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
【０２４７】
次に、ＣＰＵはステップ２０３５に進み、吸入空気量ばらつき異常発生フラグＸＡＩＲＩＭＢの値を「２」に設定する。即ち、ＣＰＵは、吸入空気量の気筒間ばらつき異常は発生していない旨を記録する。なお、吸入空気量ばらつき異常発生フラグＸＡＩＲＩＭＢの値はバックアップＲＡＭに格納される。この吸入空気量ばらつき異常発生フラグＸＡＩＲＩＭＢの値も上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
【０２４８】
その後、ＣＰＵはステップ２０４０に進んで判定完了フラグＸＦＩＮの値を「１」に設定し、その後、ステップ２０９５に進んで本ルーチンを一旦終了する。これにより、ＣＰＵが本ルーチンを所定時間後に再び開始すると、ＣＰＵはステップ２００５にて「Ｙｅｓ」と判定し、ステップ２０９５に直接進んで本ルーチンを一旦終了する。
【０２４９】
これに対し、ＣＰＵがステップ２０２５の処理を実行する時点において、パラメータ差相関値DPimbが第１異常判定用閾値Dpinjth未満であると、ＣＰＵは燃料噴射量の気筒間ばらつき異常は発生していないと判定してステップ２０４５に進む。
【０２５０】
ＣＰＵはステップ２０４５にて、パージ量小時パラメータＰｏｆｆが第２異常判定用閾値Ｐｏｆｆｔｈ以上であるか、又は、パージ量大時パラメータＰｏｎが第３異常判定用閾値Ｐｏｎｔｈ以上であるか、を判定する。
【０２５１】
このとき、パージ量小時パラメータＰｏｆｆが第２異常判定用閾値Ｐｏｆｆｔｈ以上である場合、及び、パージ量大時パラメータＰｏｎが第３異常判定用閾値Ｐｏｎｔｈ以上である場合、の何れかが成立していると、ＣＰＵは「吸入空気量の気筒間ばらつき異常が発生した」と判定して、以下に述べるステップ２０５０及びステップ２０５５の処理を順に行い、ステップ２０４０に進む。
【０２５２】
ステップ２０５０：ＣＰＵは、燃料噴射量ばらつき異常発生フラグＸＩＮＪＩＭＢの値を「２」に設定する。即ち、ＣＰＵは、燃料噴射量の気筒間ばらつき異常は発生していない旨を記録する。
ステップ２０５５：ＣＰＵは、吸入空気量ばらつき異常発生フラグＸＡＩＲＩＭＢの値を「１」に設定する。即ち、ＣＰＵは、吸入空気量の気筒間ばらつき異常が発生した旨を記録する。
【０２５３】
これに対し、ＣＰＵがステップ２０４５の処理を実行する時点において、パージ量小時パラメータＰｏｆｆが第２異常判定用閾値Ｐｏｆｆｔｈ未満であり且つパージ量大時パラメータＰｏｎが第３異常判定用閾値Ｐｏｎｔｈ未満である場合、ＣＰＵは、燃料噴射量の気筒間ばらつき異常及び吸入空気量の気筒間ばらつき異常の何れもが発生していないと判定する。即ち、この場合、ＣＰＵはステップ２０４５にて「Ｎｏ」と判定して以下に述べるステップ２０６０及びステップ２０６５の処理を順に行い、ステップ２０４０に進む。
【０２５４】
ステップ２０６０：ＣＰＵは、燃料噴射量ばらつき異常発生フラグＸＩＮＪＩＭＢの値を「２」に設定する。即ち、ＣＰＵは、燃料噴射量の気筒間ばらつき異常は発生していない旨を記録する。
ステップ２０６５：ＣＰＵは、吸入空気量ばらつき異常発生フラグＸＡＩＲＩＭＢの値を「２」に設定する。即ち、ＣＰＵは、吸入空気量の気筒間ばらつき異常は発生していない旨を記録する。
【０２５５】
以上、説明したように、第１判定装置は、
燃料タンク５１内に発生した蒸発燃料を機関１０の吸気通路に導入する蒸発燃料パージ手段（パージ制御弁５５等）と、
機関１０の運転状態に応じて前記吸気通路に導入される蒸発燃料の量であるパージ量を制御する蒸発燃料パージ量制御手段（図１３のルーチン）と、
空燃比センサ（上流側空燃比センサ６６）の出力値Vabyfsにより表される空燃比（出力値Vabyfsそのものであってもよい）が所定の目標空燃比abyfr（目標空燃比abyfrに対応する値）に一致するように、燃料噴射弁３３から噴射される燃料の量をフィードバック補正することにより指示燃料噴射量Ｆｉを決定する指示燃料噴射量決定手段（図１０乃至図１２のルーチン、図１４及び図１５のルーチン）と、
指示燃料噴射量Ｆｉに応じた量の燃料が複数の燃料噴射弁３３のそれぞれから噴射されるように前記複数の燃料噴射弁３３に噴射指示信号を送出する噴射指示信号送出手段（図１０のステップ１０６０）と、
を備える。
【０２５６】
更に、１判定装置は、
「複数の気筒のそれぞれに供給される混合気の空燃比（気筒別空燃比）の、同複数の気筒の間における不均一性の程度が大きくなるほど大きくなる空燃比不均衡指標値（パージ量大時パラメータＰｏｎ及びパージ量小時パラメータＰｏｆｆ）を上流側空燃比センサ６６の出力値Vabyfsに基いて取得する指標値取得手段（図１８及び図１９のルーチン）を備える。
【０２５７】
この指標値取得手段は、「機関１０に供給される燃料の総量」に対する「機関１０に供給される蒸発燃料の量」の比（蒸発燃料比）が第１所定値以上である期間において前記指標値取得手段によって取得される前記空燃比不均衡指標値をパージ量大時パラメータＰｏｎとして取得する（図１８のルーチン）とともに、蒸発燃料比が「前記第１所定値以下の第２所定値未満」である期間において前記指標値取得手段によって取得される前記空燃比不均衡指標値をパージ量小時パラメータＰｏｆｆとして取得する（図１９のルーチン）。
【０２５８】
加えて、１判定装置は、パージ量大時パラメータＰｏｎとパージ量小時パラメータＰｏｆｆとの差の大きさ（｜パラメータ差相関値DPimb｜）が第１異常判定用閾値（燃料噴射弁異常判定値Dpinjth）未満であり（図２０のステップ２０２０及びステップ２０２５）、且つ、パージ量小時パラメータＰｏｆｆが第２異常判定用閾値（Ｐｏｆｆｔｈ）以上であるとき又はパージ量大時パラメータＰｏｎが第３異常判定用閾値（Ｐｏｎｔｈ）以上であるとき（図２０のステップ２０４５）、複数の気筒のそれぞれに供給される吸入空気の量の同複数の気筒間における不均一性の程度が許容値以上であるという吸入空気量異常状態が発生していると判定する異常判定手段（図２０のステップ２０５５）を備える。
【０２５９】
更に、この異常判定手段は、前記差の大きさ（｜パラメータ差相関値DPimb｜）が前記第１異常判定用閾値（Dpinjth）以上である場合に燃料噴射弁３３が異常である（燃料噴射量の気筒間ばらつき異常が発生した）と判定するように構成されている（図２０のステップ２０２５及びステップ２０３０）。
【０２６０】
従って、第１判定装置によれば、吸入空気量の気筒間ばらつき異常が発生したことを、燃料噴射量の気筒間ばらつき異常が発生したことと区別しながら、確実に検出することができる。
【０２６１】
＜第２実施形態＞
次に、本発明の第２実施形態に係る判定装置（以下、単に「第２判定装置」と称呼する。）について説明する。第２判定装置は、パージ量大時パラメータＰｏｎ及びパージ量小時パラメータＰｏｆｆのうち何れかが先に既に取得された場合、未だ取得されていないパージが迅速に取得されるように蒸発燃料のパージ量を変更する（蒸発燃料パージ制御を変更する。）点のみにおいて、第１判定装置と相違している。従って、以下、この相違点を中心として説明する。
【０２６２】
第２判定装置のＣＰＵは、次のように蒸発燃料パージ制御を変更する。
（場合１）ＣＰＵは、パージ量大時パラメータＰｏｎが既に取得されていて且つパージ量小時パラメータＰｏｆｆが未だ取得されていない場合、蒸発燃料パージを禁止する（或いは、蒸発燃料のパージ量（吸気通路に導入される蒸発燃料の量）を小さい値に制限する。）。
（場合２）ＣＰＵは、パージ量小時パラメータＰｏｆｆが既に取得されていて且つパージ量大時パラメータＰｏｎが未だ取得されていない場合、他の制御から「蒸発燃料パージを禁止する要求」があったとしても、その要求を無視する（或いは、蒸発燃料のパージ量（吸気通路に導入される蒸発燃料の量）を大きい値に設定する。）。
【０２６３】
第２判定装置のＣＰＵは、第１判定装置と同様、図１０乃至図１２と、図１４及び図１５と、図１８乃至図２０と、に示したルーチンを実行する。更に、第２判定装置のＣＰＵは、図２１乃至図２３にフローチャートにより示したルーチンを実行する。以下、図２１乃至図２３に示したルーチンを参照しながら、第２判定装置の作動について説明する。
【０２６４】
図２１に示したルーチンは、図１３に示したルーチンのステップ１３１０を、ステップ２１１０に置換した点のみにおいて、図１３に示したルーチンと相違している。即ち、ＣＰＵはステップ２１１０に進むと、パージ実行許容フラグＸＰＲＧｅｘｅの値が「１」であるか否かを判定する。
【０２６５】
パージ実行許容フラグＸＰＲＧｅｘｅの値は、後述する図２３に示したルーチンのステップ２３３０にて「０」に設定され、ステップ２３６０にて「１」に設定される。ＣＰＵは、パージ実行許容フラグＸＰＲＧｅｘｅの値が「１」であるとき、ステップ２１１０にて「Ｙｅｓ」と判定してステップ１３２０以降に進む。これに対し、パージ実行許容フラグＸＰＲＧｅｘｅの値が「０」であるとき、ＣＰＵはステップ２１１０にて「Ｎｏ」と判定してステップ１３８０以降に進む。従って、この場合、蒸発燃料パージは実行されない。
【０２６６】
ＣＰＵは、所定時間が経過する毎に図２２に示した「フラグ操作ルーチン」を実行するとともに、そのフラグ操作ルーチンに続いて図２３に示した「パージ実行許容フラグ設定ルーチン」を実行するようになっている。なお、ＣＰＵは、これらのルーチンにおいて用いられる「パージ禁止要求フラグＸＰｉｎｈ及び他制御からのパージ禁止要求を無効化するフラグＸＰＴinhclr」の値を、上述したイニシャルルーチンにおいて「０」に設定するようになっている。なお、他制御からのパージ禁止要求とは、例えば、目標空燃比abyfrを理論空燃比よりもリッチ側又はリーン側に設定する要求が発生したときに発生する。
【０２６７】
（仮定１）
いま、パージ量大時パラメータＰｏｎ及びパージ量小時パラメータＰｏｆｆの何れもが今回の機関１０の始動後において取得されていないと仮定する。この場合、パージ量大時パラメータ算出完了フラグＸＰonの値及びパージ量小時パラメータ算出完了フラグＸＰoffの値は、何れも「０」である。更に、異常判定完了フラグＸＦＩＮの値も「０」である。
【０２６８】
所定のタイミングになると、ＣＰＵは図２２のステップ２２００から処理を開始してステップ２２０５に進み、異常判定完了フラグＸＦＩＮの値が「１」であるか否かを判定する。上述の仮定１に従えば、異常判定完了フラグＸＦＩＮの値は「０」である。従って、ＣＰＵはステップ２２０５にて「Ｎｏ」と判定してステップ２２１０に進み、フラグＸＰonの値が「１」であり且つフラグＸＰoffの値が「１」であるか否かを判定する。
【０２６９】
上述の仮定１に従えば、フラグＸＰonの値及びフラグＸＰoffの値は何れも「０」である。従って、ＣＰＵはステップ２２１０にて「Ｎｏ」と判定してステップ２２１５に進み、フラグＸＰonの値が「１」であり且つフラグＸＰoffの値が「０」であるか否かを判定する。
【０２７０】
上述の仮定１に従えば、フラグＸＰonの値及びフラグＸＰoffの値は何れも「０」である。従って、ＣＰＵはステップ２２１５にて「Ｎｏ」と判定してステップ２２２０に進み、フラグＸＰonの値が「０」であり且つフラグＸＰoffの値が「１」であるか否かを判定する。
【０２７１】
上述の仮定１に従えば、フラグＸＰonの値及びフラグＸＰoffの値は何れも「０」である。従って、ＣＰＵはステップ２２２０にて「Ｎｏ」と判定してステップ２２２５に進み、パージ禁止要求フラグＸＰｉｎｈの値を「０」に設定する。次いで、ＣＰＵはステップ２２３０に進み、他制御からのパージ禁止要求を無効化するフラグＸＰＴinhclrの値を「０」に設定する。その後、ＣＰＵはステップ２２９５に進んで本ルーチンを一旦終了する。
【０２７２】
次いで、ＣＰＵは図２３のステップ２３００から処理を開始してステップ２３１０に進み、前述したパージ条件が成立しているか否かを判定する。このとき、パージ条件が成立していなければ、ＣＰＵはステップ２３３０に直接進んでパージ実行許容フラグＸＰＲＧｅｘｅの値を「０」に設定する。この結果、図２１のステップ２１１０にて「Ｎｏ」との判定がなされるので、蒸発燃料パージは実行されない（蒸発燃料パージが禁止される）。
【０２７３】
これに対し、パージ条件が成立していると、ＣＰＵはステップ２３１０にて「Ｙｅｓ」と判定してステップ２３２０に進み、パージ禁止要求フラグＸＰｉｎｈの値が「１」であるか否かを判定する。前述したように、現時点におけるパージ禁止要求フラグＸＰｉｎｈの値は「０」である。従って、ＣＰＵはステップ２３２０にて「Ｎｏ」と判定してステップ２３４０に進み、他制御からのパージ禁止要求が発生しているか否かを判定する。
【０２７４】
このとき、他制御からのパージ禁止要求が発生していなければ、ＣＰＵはステップ２３４０にて「Ｎｏ」と判定してステップ２３６０に進み、パージ実行許容フラグＸＰＲＧｅｘｅの値を「１」に設定する。この結果、図２１のステップ２１１０にて「Ｙｅｓ」との判定がなされるので、蒸発燃料パージが実行され得る状態になる。
【０２７５】
更に、ＣＰＵがステップ２３４０の処理を実行する時点において、他制御からのパージ禁止要求が発生していると、ＣＰＵはそのステップ２３４０にて「Ｙｅｓ」と判定してステップ２３５０に進み、他制御からのパージ禁止要求を無効化するフラグＸＰＴinhclrの値が「０」であるか否かを判定する。前述したように、現時点におけるフラグＸＰＴinhclrの値は「０」である。従って、ＣＰＵはステップ２３５０にて「Ｙｅｓ」と判定してステップ２３３０に進み、パージ実行許容フラグＸＰＲＧｅｘｅの値を「０」に設定する。この結果、図２１のステップ２１１０にて「Ｎｏ」との判定がなされるので、蒸発燃料パージは実行されない（蒸発燃料パージが禁止される）。
【０２７６】
即ち、フラグＸＰoff及びフラグＸＰonの値が共に「０」である場合、パージ禁止要求フラグＸＰｉｎｈ及び他制御からのパージ禁止要求を無効化するフラグＸＰＴinhclrの値は共に「０」に設定され、その結果、パージ実行許容フラグＸＰＲＧｅｘｅの値は、パージ条件が成立していて且つ他制御からのパージ禁止要求が発生していない場合に「１」に設定され、パージ条件が成立していて且つ他制御からのパージ禁止要求が発生している場合及びパージ条件が成立していない場合に「０」に設定される。
【０２７７】
（仮定２）
次に、パージ量大時パラメータＰｏｎは取得されていないが、パージ量小時パラメータＰｏｆｆが取得されたと仮定する。この場合、パージ量大時パラメータ算出完了フラグＸＰonの値は「０」に設定され、パージ量小時パラメータ算出完了フラグＸＰoffの値は「１」に設定される。異常判定完了フラグＸＦＩＮの値は「０」である。
【０２７８】
上述の仮定２に従えば、ＣＰＵは図２２のステップ２２０５、ステップ２２１０及びステップ２２１５の各ステップにおいて「Ｎｏ」と判定し、ステップ２２２０にて「Ｙｅｓ」と判定する。そして、ＣＰＵは以下に述べるステップ２２３５及びステップ２２４０の処理を順に行い、ステップ２２９５に進む。
【０２７９】
ステップ２２３５：ＣＰＵは、パージ禁止要求フラグＸＰｉｎｈの値を「０」に設定する。
ステップ２２４０：ＣＰＵは、他制御からのパージ禁止要求を無効化するフラグＸＰＴinhclrの値を「１」に設定する。
【０２８０】
次いで、ＣＰＵは図２３のステップ２３００から処理を開始してステップ２３１０に進み、前述したパージ条件が成立しているか否かを判定する。このとき、パージ条件が成立していなければ、ＣＰＵはステップ２３３０に直接進んでパージ実行許容フラグＸＰＲＧｅｘｅの値を「０」に設定する。この結果、図２１のステップ２１１０にて「Ｎｏ」との判定がなされるので、蒸発燃料パージは実行されない（蒸発燃料パージが禁止される）。
【０２８１】
これに対し、パージ条件が成立していると、ＣＰＵはステップ２３１０にて「Ｙｅｓ」と判定してステップ２３２０に進む。前述したように、現時点におけるパージ禁止要求フラグＸＰｉｎｈの値は「０」である。従って、ＣＰＵはステップ２３２０にて「Ｎｏ」と判定してステップ２３４０に進む。
【０２８２】
このとき、他制御からのパージ禁止要求が発生していなければ、ＣＰＵはステップ２３４０にて「Ｎｏ」と判定してステップ２３６０に進み、パージ実行許容フラグＸＰＲＧｅｘｅの値を「１」に設定する。この結果、図２１のステップ２１１０にて「Ｙｅｓ」との判定がなされるので、蒸発燃料パージが実行され得る状態になる。
【０２８３】
更に、ＣＰＵがステップ２３４０の処理を実行する時点において、他制御からのパージ禁止要求が発生していると、ＣＰＵはそのステップ２３４０にて「Ｙｅｓ」と判定してステップ２３５０に進む。前述したように、現時点における「他制御からのパージ禁止要求を無効化するフラグＸＰＴinhclr」の値は「１」である。従って、ＣＰＵはステップ２３５０にて「Ｎｏ」と判定してステップ２３６０に進み、パージ実行許容フラグＸＰＲＧｅｘｅの値を「１」に設定する。この結果、図２１のステップ２１１０にて「Ｙｅｓ」との判定がなされるので、蒸発燃料パージが実行され得る状態になる。
【０２８４】
即ち、フラグＸＰoffの値が「１」であり且つフラグＸＰonの値が「０」である場合、パージ禁止要求フラグＸＰｉｎｈの値は「０」に設定されるとともに他制御からのパージ禁止要求を無効化するフラグＸＰＴinhclrの値は「１」に設定される。その結果、パージ実行許容フラグＸＰＲＧｅｘｅの値は、パージ条件が不成立であるときに「０」に設定され、パージ条件が成立している場合には他制御からのパージ禁止要求が発生しているか否かに拘わらず（即ち、他制御からのパージ禁止要求が発生していても）「１」に設定される。
【０２８５】
（仮定３）
次に、パージ量大時パラメータＰｏｎは取得されているが、パージ量小時パラメータＰｏｆｆが取得されていない仮定する。この場合、パージ量大時パラメータ算出完了フラグＸＰonの値は「１」に設定され、パージ量小時パラメータ算出完了フラグＸＰoffの値は「０」に設定される。異常判定完了フラグＸＦＩＮの値は「０」である。
【０２８６】
上述の仮定３に従えば、ＣＰＵは図２２のステップ２２０５及びステップ２２１０の各ステップにおいて「Ｎｏ」と判定し、ステップ２２１５にて「Ｙｅｓ」と判定する。そして、ＣＰＵは以下に述べるステップ２２４５及びステップ２２５０の処理を順に行い、ステップ２２９５に進む。
【０２８７】
ステップ２２４５：ＣＰＵは、パージ禁止要求フラグＸＰｉｎｈの値を「１」に設定する。
ステップ２２５０：ＣＰＵは、他制御からのパージ禁止要求を無効化するフラグＸＰＴinhclrの値を「０」に設定する。
【０２８８】
次いで、ＣＰＵは図２３のステップ２３００から処理を開始してステップ２３１０に進み、前述したパージ条件が成立しているか否かを判定する。このとき、パージ条件が成立していなければ、ＣＰＵはステップ２３３０に直接進んでパージ実行許容フラグＸＰＲＧｅｘｅの値を「０」に設定する。この結果、図２１のステップ２１１０にて「Ｎｏ」との判定がなされるので、蒸発燃料パージは実行されない（蒸発燃料パージが禁止される）。
【０２８９】
これに対し、パージ条件が成立していると、ＣＰＵはステップ２３１０にて「Ｙｅｓ」と判定してステップ２３２０に進む。前述したように、現時点におけるパージ禁止要求フラグＸＰｉｎｈの値は「１」である。従って、ＣＰＵはステップ２３２０にて「Ｙｅｓ」と判定してステップ２３３０に進む。この結果、パージ実行許容フラグＸＰＲＧｅｘｅの値が「０」に設定されるので、パージ条件が成立していても蒸発燃料パージは実行されない。
【０２９０】
このように、パージ量大時パラメータＰｏｎは取得されているが、パージ量小時パラメータＰｏｆｆが取得されていない場合、蒸発燃料パージは禁止される。
【０２９１】
（仮定４）
次に、パージ量大時パラメータＰｏｎ及びパージ量小時パラメータＰｏｆｆの両者が取得されているものの、異常判定は未だ実施されていないと仮定する。この場合、パージ量大時パラメータ算出完了フラグＸＰonの値は「１」に設定され、パージ量小時パラメータ算出完了フラグＸＰoffの値は「１」に設定される。異常判定完了フラグＸＦＩＮの値は「０」である。
【０２９２】
上述の仮定４に従えば、ＣＰＵは図２２のステップ２２０５にて「Ｎｏ」と判定し、ステップ２２１０にて「Ｙｅｓ」と判定し、以下に述べるステップ２２５５及びステップ２２６０の処理を順に行い、その後、ステップ２２９５に進む。
【０２９３】
ステップ２２５５：ＣＰＵは、パージ禁止要求フラグＸＰｉｎｈの値を「０」に設定する。
ステップ２２６０：ＣＰＵは、他制御からのパージ禁止要求を無効化するフラグＸＰＴinhclrの値を「０」に設定する。
【０２９４】
次いで、ＣＰＵは図２３のステップ２３００から処理を開始してステップ２３１０に進み、前述したパージ条件が成立しているか否かを判定する。このとき、パージ条件が成立していなければ、ＣＰＵはステップ２３３０に直接進んでパージ実行許容フラグＸＰＲＧｅｘｅの値を「０」に設定する。この結果、図２１のステップ２１１０にて「Ｎｏ」との判定がなされるので、蒸発燃料パージは実行されない（蒸発燃料パージが禁止される）。
【０２９５】
これに対し、パージ条件が成立していると、ＣＰＵはステップ２３１０にて「Ｙｅｓ」と判定してステップ２３２０に進む。前述したように、現時点におけるパージ禁止要求フラグＸＰｉｎｈの値は「０」である。従って、ＣＰＵはステップ２３２０にて「Ｎｏ」と判定してステップ２３４０に進む。
【０２９６】
このとき、他制御からのパージ禁止要求が発生していなければ、ＣＰＵはステップ２３４０にて「Ｎｏ」と判定してステップ２３６０に進み、パージ実行許容フラグＸＰＲＧｅｘｅの値を「１」に設定する。この結果、図２１のステップ２１１０にて「Ｙｅｓ」との判定がなされるので、蒸発燃料パージが実行され得る状態になる。
【０２９７】
更に、ＣＰＵがステップ２３４０の処理を実行する時点において、他制御からのパージ禁止要求が発生していると、ＣＰＵはそのステップ２３４０にて「Ｙｅｓ」と判定してステップ２３５０に進む。前述したように、現時点における「他制御からのパージ禁止要求を無効化するフラグＸＰＴinhclr」の値は「０」である。従って、ＣＰＵはステップ２３５０にて「Ｙｅｓ」と判定してステップ２３３０に進み、パージ実行許容フラグＸＰＲＧｅｘｅの値を「０」に設定する。この結果、図２１のステップ２１１０にて「Ｎｏ」との判定がなされるので、蒸発燃料パージは実行されない（蒸発燃料パージが禁止される）。      
【０２９８】
（仮定５）
次に、パージ量大時パラメータＰｏｎ及びパージ量小時パラメータＰｏｆｆの両者が取得されたことにより、異常判定が実施されたと仮定する。この場合、異常判定完了フラグＸＦＩＮの値は「１」に設定される。
【０２９９】
この場合、ＣＰＵは図２２のステップ２２０５にて「Ｙｅｓ」と判定し、ステップ２２５５及びステップ２２６０の処理を実行する。従って、ＣＰＵは、パージ量大時パラメータＰｏｎ及びパージ量小時パラメータＰｏｆｆの両者が取得されている場合と同様な作動を行う。
【０３００】
即ち、パージ量大時パラメータＰｏｎ及びパージ量小時パラメータＰｏｆｆの両者が取得されている場合、及び、異常判定が実施された場合、には、パージ量大時パラメータＰｏｎ及びパージ量小時パラメータＰｏｆｆの何れもが取得されていない場合と同様にパージ制御が実行される。
【０３０１】
以上、説明したように、第２判定装置は、
パージ量大時パラメータＰｏｎが既に取得され且つパージ量小時パラメータＰｏｆｆが未だ取得されていない場合（上記仮定３を参照。）に蒸発燃料パージを禁止することにより、パージ量大時パラメータＰｏｎ及びパージ量小時パラメータＰｏｆｆの何れもが未だ取得されていない場合（上記仮定１を参照。）に比べ、蒸発燃料比が第２所定値（Ｐｔｈ−Ｂ）未満となる機会が増大するようにパージ量を制御する蒸発燃料パージ量制御手段（図２２のステップ２２１５、ステップ２２４５及びステップ２２５０、図２３のステップ２３２０及びステップ２３３０、図２１のステップ２１１０を参照。）を備える。
【０３０２】
従って、パージ量小時パラメータＰｏｆｆを算出する機会を増大させることができる。その結果、パージ量大時パラメータＰｏｎ及びパージ量小時パラメータＰｏｆｆの両者を早期に取得することができるので、異常判定を早期に実施することが可能となる。
【０３０３】
更に、第２判定装置の蒸発燃料パージ量制御手段は、
パージ量小時パラメータＰｏｆｆが既に取得され且つパージ量大時パラメータＰｏｎが未だ取得されていない場合（上記仮定２を参照。）、他制御からのパージ禁止要求が発生していてもそのパージ禁止要求を無効化（無視）することにより、パージ量大時パラメータＰｏｎ及びパージ量小時パラメータＰｏｆｆの何れもが未だ取得されていない場合（上記仮定１を参照。）に比べ、蒸発燃料比が第１所定値（Ｐｔｈ）以上となる機会が増大するようにパージ量を制御する（図２２のステップ２２２０、ステップ２２３５及びステップ２２４０、図２３のステップ２３２０、ステップ２３４０、ステップ２３５０及びステップ２３６０、図２１のステップ２１１０を参照。）。
【０３０４】
従って、パージ量大時パラメータＰｏｎを算出する機会を増大させることができる。その結果、パージ量大時パラメータＰｏｎ及びパージ量小時パラメータＰｏｆｆの両者を早期に取得することができるので、異常判定を早期に実施することが可能となる。
【０３０５】
なお、第２判定装置は、例えば、次の変形例のように構成されてもよい。即ち、第２判定装置の変形例は、パージ量大時パラメータＰｏｎ及びパージ量小時パラメータＰｏｆｆの両者が何れも取得されていないとき、負荷ＫＬ及び機関回転速度ＮＥが「所定領域（第１領域）」内にあるときに蒸発燃料比が第１所定値（Ｐｔｈ）以上となるようにパージ量を制御し（例えば、目標パージ率ＰＧＴを極めて大きい第１所定値に設定し）、負荷ＫＬ及び機関回転速度ＮＥが「所定領域（第１領域）」内にないときに蒸発燃料比が第２所定値（Ｐｔｈ−Ｂ）未満となるようにパージ量を制御する（例えば、目標パージ率ＰＧＴを第１所定値よりも小さい第２所定値（例えば「０」）に設定する。）。
【０３０６】
第２判定装置の変形例は、パージ量大時パラメータＰｏｎが既に取得され且つパージ量小時パラメータＰｏｆｆが未だ取得されていない場合、負荷ＫＬ及び機関回転速度ＮＥが「第１領域よりも狭い領域（第２領域）」内にあるときに蒸発燃料比が第１所定値（Ｐｔｈ）以上となるようにパージ量を制御し、負荷ＫＬ及び機関回転速度ＮＥが「第２領域」内にないときに蒸発燃料比が第２所定値（Ｐｔｈ−Ｂ）未満となるようにパージ量を制御する。
【０３０７】
更に、第２判定装置の変形例は、パージ量小時パラメータＰｏｆｆが既に取得され且つパージ量大時パラメータＰｏｎが未だ取得されていない場合、負荷ＫＬ及び機関回転速度ＮＥが「第１領域よりも広い領域（第３領域）」内にあるときに蒸発燃料比が第１所定値（Ｐｔｈ）以上となるようにパージ量を制御し、負荷ＫＬ及び機関回転速度ＮＥが「第３領域」内にないときに蒸発燃料比が第２所定値（Ｐｔｈ−Ｂ）未満となるようにパージ量を制御する。
【０３０８】
この変形例によっても、未だ取得されていない方のパラメータを取得する機会を増大することができる。
【０３０９】
＜第３実施形態＞
次に、本発明の第３実施形態に係る判定装置（以下、単に「第３判定装置」と称呼する。）について説明する。
【０３１０】
図３の（Ｂ１）、（Ｂ２）及び（Ｂ３）と、図３の（Ａ１）、（Ａ２）及び（Ａ３）と、の比較から理解されるように、燃料噴射量の気筒間ばらつき異常が発生している場合、蒸発燃料パージを実行した方が、気筒別空燃比の不均一性の程度は小さくなる。従って、燃料噴射量の気筒間ばらつき異常が発生したと判定された場合、蒸発燃料パージを実行することにより、エミッションの排出量（特に、インバランス気筒の燃料噴射弁が指示燃料噴射量Ｆｉに比べて小さい量の燃料を噴射する特性になった場合にはＮＯｘの排出量）を図２４の点Ｐ１の排出量から点Ｐ２の排出量へと減少することが可能となる。
【０３１１】
そこで、第３判定装置は、異常判定を実施した結果、燃料噴射量の気筒間ばらつき異常が発生したと判定された場合（フラグＸＩＮＪＩＭＢ＝１）、パージ条件が成立している限り、他制御からのパージ禁止要求が発生していても、そのパージ禁止要求を無視して蒸発燃料パージを実行する。その他の点は、第１制御装置と同様である。
【０３１２】
（実際の作動）
第３制御装置のＣＰＵは、第１制御装置のＣＰＵが実行するルーチンに加え、図２５に示した「パージ実行許容フラグ設定ルーチン」を所定時間が経過する毎に実行する。更に、第３制御装置のＣＰＵは、図１３に代えて図２１に示したルーチンを実行する。従って、所定のタイミングになると、ＣＰＵは図２５のステップ２５００から処理を開始してステップ２５０５に進み、異常判定完了フラグＸＦＩＮの値が「１」であるか否かを判定する。
【０３１３】
ここで、今回の機関１０の始動後において異常判定は実行されていないと仮定する。この場合、異常判定完了フラグＸＦＩＮの値は「０」に設定されている。従って、ＣＰＵはステップ２５０５にて「Ｎｏ」と判定してステップ２５１０に進み、パージ条件が成立しているか否かを判定する。
【０３１４】
このとき、パージ条件が成立していると、ＣＰＵはステップ２５１０にて「Ｙｅｓ」と判定してステップ２５１５に進み、他制御からのパージ禁止要求が発生していないか否かを判定する。そして、他制御からのパージ禁止要求が発生していなければ、ＣＰＵはステップ２５１５にて「Ｙｅｓ」と判定してステップ２５２０に進み、パージ実行許容フラグＸＰＲＧｅｘｅの値を「１」に設定する。この結果、蒸発燃料パージの実行が許容される。
【０３１５】
一方、ＣＰＵがステップ２５１５の処理を実行する時点において、他制御からのパージ禁止要求が発生していると、ＣＰＵはステップ２５１５にて「Ｎｏ」と判定してステップ２５２５に進み、パージ実行許容フラグＸＰＲＧｅｘｅの値を「０」に設定する。この結果、蒸発燃料パージの実行は禁止される。
【０３１６】
加えて、ＣＰＵがステップ２５１０の処理を実行する時点において、パージ条件が成立していなければ、ＣＰＵはステップ２５２５に進んでパージ実行許容フラグＸＰＲＧｅｘｅの値を「０」に設定する。この結果、蒸発燃料パージの実行は禁止される。
【０３１７】
次に、異常判定が実行されたと仮定する。この場合、異常判定完了フラグＸＦＩＮの値は「１」に設定される。従って、ＣＰＵはステップ２５０５に進んだとき、そのステップ２５０５にて「Ｙｅｓ」と判定してステップ２５３０に進み、パージ条件が成立しているか否かを判定する。
【０３１８】
このとき、パージ条件が成立していると、ＣＰＵはステップ２５３０にて「Ｙｅｓ」と判定してステップ２５３５に進み、他制御からのパージ禁止要求が発生していないか否かを判定する。そして、他制御からのパージ禁止要求が発生していなければ、ＣＰＵはステップ２５４０に進んでパージ実行許容フラグＸＰＲＧｅｘｅの値を「１」に設定する。この結果、蒸発燃料パージの実行が許容される。
【０３１９】
一方、ＣＰＵがステップ２５３５の処理を実行する時点において、他制御からのパージ禁止要求が発生していると、ＣＰＵはそのステップ２５３５にて「Ｎｏ」と判定してステップ２５４５に進み、燃料噴射量ばらつき異常発生フラグＸＩＮＪＩＭＢの値が「１」であるか否かを判定する。
【０３２０】
このとき、燃料噴射量ばらつき異常発生フラグＸＩＮＪＩＭＢの値が「１」に設定されていると、ＣＰＵはステップ２５４５にて「Ｙｅｓ」と判定してステップ２５４０に進み、パージ実行許容フラグＸＰＲＧｅｘｅの値を「１」に設定する。即ち、燃料噴射量の気筒間ばらつき異常が発生したと判定されている場合、パージ条件が成立していれば、他制御からのパージ禁止要求が発生していたとしても、蒸発燃料パージの実行が許容される。この結果、エミッションが良好になる。
【０３２１】
これに対し、ＣＰＵがステップ２５４５の処理を実行する時点において、燃料噴射量ばらつき異常発生フラグＸＩＮＪＩＭＢの値が「１」に設定されていなければ、ＣＰＵはそのステップ２５４５にて「Ｎｏ」と判定してステップ２５５０に進み、パージ実行許容フラグＸＰＲＧｅｘｅの値を「０」に設定する。この結果、蒸発燃料パージの実行は禁止される。
【０３２２】
更に、ＣＰＵがステップ２５３０の処理を実行する時点において、パージ条件が成立していなければ、ＣＰＵはステップ２５３０にて「Ｎｏ」と判定してステップ２５５０に進み、パージ実行許容フラグＸＰＲＧｅｘｅの値を「０」に設定する。この結果、蒸発燃料パージの実行は禁止される。
【０３２３】
以上、説明したように、第３判定装置は、
機関１０の運転状態に基づいてパージ禁止要求（他制御からのパージ禁止要求）が発生した場合にパージ量を０に制御するとともに（図２５のステップ２５１５及びステップ２５２５）、異常判定手段により「燃料噴射弁３３が異常であると判定された場合（フラグＸＩＮＪＩＭＢ＝１）」にはパージ禁止要求が発生したときであってもパージ量を０以外の所定値に制御することを許容する（パージ実行許容フラグＸＰＲＧｅｘｅの値を「１」に設定する）ように構成された蒸発燃料パージ量制御手段を備える（図２５のステップ２５３５、ステップ２５４５及びステップ２５４０）。
【０３２４】
燃料噴射弁３３は、異常となったとき、指示燃料噴射量Ｆｉの所定割合（例えば、Ｘ）の燃料を噴射する。従って、インバランス気筒の燃料噴射弁３３はＸ・Ｆｉの量の燃料を噴射し、非インバランス気筒の燃料噴射弁３３はＦｉの燃料を噴射する。よって、燃料噴射量の差は、（１−Ｘ）・Ｆｉである。よって、指示燃料噴射量Ｆｉの大きさを小さくすることにより、燃料噴射量の気筒間ばらつきの空燃比に及ぼす影響を小さくすることができる。指示燃料噴射量Ｆｉはパージ量により補正されるので、指示燃料噴射量Ｆｉの大きさを小さくするには、パージ量を大きくすればよい。
【０３２５】
従って、第３判定装置は、燃料噴射量の気筒間ばらつき異常が発生したときに、気筒別空燃比の不均一性の程度を小さくすることができるので、エミッションの悪化を抑制することができる。
【０３２６】
以上、説明したように、本発明の実施形態に係る判定装置は、吸入空気量の気筒間ばらつき異常が発生したか否かを精度良く判定することができる。なお、本発明は上記実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、パージ量大時パラメータＰｏｎ及びパージ量小時パラメータＰｏｆｆ（即ち、空燃比不均衡指標値）は、以下に述べるような種々の方法により取得することができる。
【０３２７】
（Ａ−１）
判定装置は、上流側空燃比センサ６６の出力値Vabyfsにより表される検出空燃比abyfs（出力値Vabyfsを図７に示したテーブルMapabyfsに適用することにより得られる空燃比）の時間についての微分値d(abyfs)/dtを取得するとともに、その取得した微分値d(abyfs)/dt値に相関する値を空燃比不均衡指標値として取得するように構成され得る。
【０３２８】
取得した微分値d(abyfs)/dt値に相関する値の一例は、単位燃焼サイクル又は単位燃焼サイクルの自然数倍の期間において複数個取得された微分値d(abyfs)/dtの絶対値の平均値である。取得した微分値d(abyfs)/dtに相関する値の他の一例は、単位燃焼サイクルにおいて複数個取得された微分値d(abyfs)/dtの絶対値の最大値を、複数の単位燃焼サイクルについて平均化した値である。
【０３２９】
（Ａ−２）
判定装置は、上流側空燃比センサ６６の出力値Vabyfsの時間についての二階微分値d2(Vabyfs)/dt2を取得するとともに、その取得した二階微分値d2(Vabyfs)/dt2に相関する値を空燃比不均衡指標値として取得するように構成され得る。二階微分値d2(Vabyfs)/dt2は、気筒別空燃比差が小さい場合には図１６の（Ｄ）の破線Ｃ５に示したように相対的に小さい値となり、気筒別空燃比差が大きい場合には図１６の（Ｄ）の実線Ｃ６に示したように相対的に大きい値となる。
【０３３０】
なお、二階微分値d2(Vabyfs)/dt2は、現時点の出力値Vabyfsから一定のサンプリング時間前の出力値Vabyfsを減じることにより、一定のサンプリング時間毎の微分値d(Vabyfs)/dtを求め、新たに求められた微分値d(Vabyfs)/dtから一定のサンプリング時間前の微分値d(Vabyfs)/dtを減じることにより求めることができる。
【０３３１】
取得した二階微分値d2(Vabyfs)/dt2値に相関する値の一例は、単位燃焼サイクル又は単位燃焼サイクルの自然数倍の期間において複数個取得された二階微分値d2(Vabyfs)/dt2の絶対値の平均値である。取得した二階微分値d2(Vabyfs)/dt2値に相関する値の他の一例は、単位燃焼サイクルにおいて複数個取得された二階微分値d2(Vabyfs)/dt2値の絶対値の最大値を、複数の単位燃焼サイクルについて平均化した値である。
【０３３２】
（Ａ−３）
判定装置は、検出空燃比abyfsの時間についての二階微分値d2(abyfs)/dt2を取得するとともに、その取得した二階微分値d2(abyfs)/dt2に相関する値を空燃比不均衡指標値として取得するように構成され得る。出力値Vabyfsと検出空燃比abyfsとは実質的に比例関係にあるので（図７を参照。）、二階微分値d2(abyfs)/dt2は二階微分値d2(Vabyfs)/dt2と同様の傾向を示す。
【０３３３】
取得した二階微分値d2(abyfs)/dt2値に相関する値の一例は、単位燃焼サイクル又は単位燃焼サイクルの自然数倍の期間において複数個取得された二階微分値d2(abyfs)/dt2の絶対値の平均値である。取得した二階微分値d2(abyfs)/dt2に相関する値の他の一例は、単位燃焼サイクルにおいて複数個取得された二階微分値d2(abyfs)/dt2の絶対値の最大値を、複数の単位燃焼サイクルについて平均化した値である。
【０３３４】
なお、「微分値d(Vabyfs)/dt、微分値d(abyfs)/dt、二階微分値d2(Vabyfs)/dt2、及び、二階微分値d2(abyfs)/dt2」のそれぞれに相関する値は、吸入空気量Ｇａの影響を受けるものの、機関回転速度ＮＥの影響を受け難い。これは、上流側空燃比センサ６６の保護カバーの内部における排ガスの流速が、保護カバーの流出孔近傍を流れる排ガスＥＸの流速（従って、単位時間あたりの吸入空気量である吸入空気量Ｇａ）に応じて変化するからである。従って、これらの値に基いて得られる空燃比不均衡指標値は、機関回転速度ＮＥの影響を受けることなく気筒別空燃比差を精度よく表す。
【０３３５】
（Ａ−４）
判定装置は、上流側空燃比センサ６６の出力値Vabyfsの所定期間（例えば、単位燃焼サイクル期間の自然数倍の期間）における最大値と最小値との差ΔＸに相関する値、又は、上流側空燃比センサ６６の出力値Vabyfsにより表される検出空燃比abyfsの所定期間における最大値と最小値との差ΔＹに相関する値を、空燃比不均衡指標値として取得するように構成され得る。
【０３３６】
図１６の（Ｂ）に示した実線Ｃ２及び破線Ｃ１から明らかなように、この差ΔＹ（ΔＹの絶対値）は、気筒別空燃比差が大きいほど大きくなる。従って、差ΔＸ（ΔＸの絶対値）は、気筒別空燃比差が大きいほど大きくなる。差ΔＸ（又は差ΔＹ）に相関する値の一例は、単位燃焼サイクル又は単位燃焼サイクルの自然数倍の期間において複数個取得された差ΔＸ（又はΔＹ）の絶対値の平均値である。
【０３３７】
（Ａ−５）
判定装置は、空燃比不均衡指標値して、上流側空燃比センサ６６の出力値Vabyfsの所定期間おける軌跡長に相関する値、又は、上流側空燃比センサ６６の出力値Vabyfsにより表される検出空燃比abyfsの前記所定期間における軌跡長に相関する値を取得するように構成され得る。これらの軌跡長は、図１６の（Ｂ）からも明らかなように、気筒別空燃比差が大きいほど大きくなる。軌跡長に相関する値は、例えば、単位燃焼サイクル又は単位燃焼サイクルの自然数倍の期間において複数個取得された軌跡長の絶対値の平均値である。
【０３３８】
なお、例えば、検出空燃比abyfsの軌跡長は、一定サンプリング時間ｔｓが経過する毎に出力値Vabyfsを取得するとともに、その出力値Vabyfsを検出空燃比abyfsへと変換し、その検出空燃比abyfsと、一定サンプリング時間ｔｓ前に取得した検出空燃比abyfsと、の差の絶対値を積算することによって求めることができる。
【０３３９】
なお、判定装置は、サブＦＢ学習値ＫＳＦＢｇが大きくなるほど大きくなる値を空燃比不均衡指標値として取得してもよい。
【０３４０】
加えて、上記各判定装置は、Ｖ型エンジンにも適用することができる。その場合、Ｖ型エンジンは右バンクに属する２以上の気筒の排気集合部よりも下流に右バンク上流側触媒を備える。更に、そのＶ型エンジンは、左バンクに属する２以上の気筒の排気集合部よりも下流に左バンク上流側触媒を備える。
【０３４１】
加えて、そのＶ型エンジンは、右バンク上流側触媒の上流及び下流に右バンク用の上流側空燃比センサ及び下流側空燃比センサをそれぞれ備え、左バンク上流側触媒の上流及び下流に左バンク用の上流側空燃比センサ及び下流側空燃比センサをそれぞれ備えることができる。各上流側空燃比センサは、上記上流側空燃比センサ６６と同様、各バンクの排気集合部と各バンクの上流側触媒との間に配設される。この場合、右バンク用のメインフィードバック制御及びサブフィードバック制御が実行され、それとは独立して左バンク用のメインフィードバック制御及びサブフィードバック制御が実行される。
【０３４２】
この場合、判定装置は、右バンク用の上流側空燃比センサの出力値に基いて「右バンク用の空燃比不均衡指標値（パージ量大時パラメータＰｏｎ及びパージ量小時パラメータＰｏｆｆ）」を求め、右バンクに属する気筒についてそれらのパラメータに基いて上記異常判定を実施すればよい。同様に、判定装置は、左バンク用の上流側空燃比センサの出力値に基いて「左バンク用の空燃比不均衡指標値（パージ量大時パラメータＰｏｎ及びパージ量小時パラメータＰｏｆｆ）」を求め、左バンクに属する気筒についてそれらのパラメータに基いて上記異常判定を実施すればよい。
【０３４３】
更に、上流側空燃比センサ６６は、下流側空燃比センサ６７と同様、濃淡電池型（起電力式）の酸素濃度センサであってもよい。加えて、各判定装置は、図２０のステップ２０２５において「パージ量大時パラメータＰｏｎとパージ量小時パラメータＰｏｆｆとの比、又は、その比の逆数」を用いて、パージ量大時パラメータＰｏｎとパージ量小時パラメータＰｏｆｆとの差が所定の第１異常判定用閾値Dpinjth以上であるか否かを判定するように構成されてもよい。
【符号の説明】
【０３４４】
１０…内燃機関、２１…燃焼室（気筒）、３１…インテークマニホールド、３１ａ…枝部、３１ｂ…サージタンク、３２…吸気管、３３…燃料噴射弁、３４…スロットル弁、４１…エキゾーストマニホールド、４１ｂ…集合部（排気集合部）、４２…エキゾーストパイプ、４３…上流側触媒、５１…燃料タンク、５２…キャニスタ、５３…ベーパ捕集管、５４…パージ流路管、５５…パージ制御弁、５７…燃料供給管、６６…上流側空燃比センサ、７０…電気制御装置。
【図１】
0005494317.tif 000002
【図２】
0005494317.tif 000003
【図３】
0005494317.tif 000004
【図４】
0005494317.tif 000005
【図５】
0005494317.tif 000006
【図６】
0005494317.tif 000007
【図７】
0005494317.tif 000008
【図８】
0005494317.tif 000009
【図９】
0005494317.tif 000010
【図１０】
0005494317.tif 000011
【図１１】
0005494317.tif 000012
【図１２】
0005494317.tif 000013
【図１３】
0005494317.tif 000014
【図１４】
0005494317.tif 000015
【図１５】
0005494317.tif 000016
【図１６】
0005494317.tif 000017
【図１７】
0005494317.tif 000018
【図１８】
0005494317.tif 000019
【図１９】
0005494317.tif 000020
【図２０】
0005494317.tif 000021
【図２１】
0005494317.tif 000022
【図２２】
0005494317.tif 000023
【図２３】
0005494317.tif 000024
【図２４】
0005494317.tif 000025
【図２５】
0005494317.tif 000026