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