(57)【要約】      （修正有）【課題】第１気筒群及び第２気筒群の排気通路のそれぞれに触媒を備えた機関において、エミッションの悪化と不快な振動の発生を回避できる内燃機関の空燃比制御装置を提供する。【解決手段】右バンク用の排気通路に配設された触媒４３及び下流側空燃比センサ６７Ｒと、左バンク用の排気通路に配設された触媒５３及び下流側空燃比センサ６７Ｌとを備える。制御装置は、通常時において、下流側空燃比センサ６７Ｒの出力値に基いて右バンク用の目標空燃比を設定し、下流側空燃比センサ６７Ｌの出力値に基いて左バンク用の目標空燃比を設定する。これらの目標空燃比が同期すると機関１０に不快な振動が発生する。制御装置は、不快な振動が発生していると判定すると、触媒４３及び触媒５３のうち最大酸素吸蔵量が小さいほうの触媒の下流側に設けられている下流側空燃比センサの出力値のみに基いて、両バンクの目標空燃比が互いに逆位相になるように制御する。【選択図】図２
2013002408.tif 000002
【特許請求の範囲】
【請求項１】
複数の気筒を含む第１気筒群及び複数の気筒を含む第２気筒群を備える本体部を有する内燃機関に適用され、
前記第１気筒群の前記複数の気筒から排出される排ガスを通過させる第１排気通路に配設された第１触媒と、
前記第１排気通路の前記第１触媒の下流に配設された第１下流側空燃比センサと、
前記第２気筒群の前記複数の気筒から排出される排ガスを通過させる第２排気通路に配設された第２触媒と、
前記第２排気通路の前記第２触媒の下流に配設された第２下流側空燃比センサと、
を備える内燃機関の空燃比制御装置であって、
前記第１触媒及び前記第２触媒のうち最大酸素吸蔵量が小さい方の特定触媒の下流に配設されている前記第１下流側空燃比センサ及び前記第２下流側空燃比センサのうちの何れか一方の出力値に相関を有する値である選択下流側空燃比センサ出力相関値と所定のリーン要求判定値との比較の結果に基づいて同特定触媒に対するリーン要求が発生したか否かを判定するとともに、前記選択下流側空燃比センサ出力相関値と所定のリッチ要求判定値との比較に基づいて前記特定触媒に対するリッチ要求が発生したか否かを判定し、
前記リーン要求が発生したと判定された時点から前記リッチ要求が発生したと判定される時点までのリーン要求発生期間において前記特定触媒に排ガスを排出する前記第１気筒群及び前記第２気筒群のうちの一方の前記複数の気筒のそれぞれに供給される混合気の空燃比を理論空燃比よりも大きい空燃比に制御するとともに前記第１気筒群及び前記第２気筒群のうちの他方の前記複数の気筒のそれぞれに供給される混合気の空燃比を理論空燃比よりも小さい空燃比に制御し、
前記リッチ要求が発生したと判定された時点から前記リーン要求が発生したと判定される時点までのリッチ要求発生期間において前記特定触媒に排ガスが供給される前記第１気筒群及び前記第２気筒群のうちの一方の前記複数の気筒のそれぞれに供給される混合気の空燃比を理論空燃比よりも小さい空燃比に制御するとともに前記第１気筒群及び前記第２気筒群のうちの他方の前記複数の気筒のそれぞれに供給される混合気の空燃比を理論空燃比よりも大きい空燃比に制御する、
逆相制御を実行する空燃比制御手段、を備える空燃比制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、少なくとも２系統の排気通路を有し、それぞれの排気通路に触媒を配設した内燃機関の空燃比制御装置に関する。
【背景技術】
【０００２】
従来より、内燃機関から排出される排ガスを浄化するために同機関の排気通路に三元触媒（排ガス浄化用の触媒ユニット）が配設されている。三元触媒は、周知のように、その三元触媒に流入する酸素を吸蔵し且つその吸蔵した酸素を放出する「酸素吸蔵機能」を有する。
【０００３】
以下、三元触媒を単に「触媒」と称呼し、触媒に流入する排ガスを「触媒流入ガス」と称呼し、触媒から流出する排ガスを「触媒流出ガス」と称呼する。更に、理論空燃比よりも小さい空燃比を「リッチ空燃比」と称呼し、理論空燃比よりも大きい空燃比を「リーン空燃比」と称呼し、機関に供給される混合気の空燃比を「機関の空燃比」と称呼する。
【０００４】
従来の空燃比制御装置の一つ（以下、「従来装置」と称呼する。）は下流側空燃比センサを備える。下流側空燃比センサは、機関の排気通路であって触媒の下流に配設される。従来装置は、下流側空燃比センサの出力値が理論空燃比に相当する値に一致するように、機関の空燃比（従って、触媒流入ガスの空燃比）を制御する（例えば、特許文献１を参照。）。
【０００５】
より具体的に述べると、従来装置は、下流側空燃比センサの出力値がリッチ空燃比に相当する値になったとき、触媒流入ガスの空燃比がリーン空燃比となるように機関の空燃比を制御する。換言すると、従来装置は、下流側空燃比センサの出力値がリッチ空燃比に相当する値になったとき、触媒の状態が「酸素不足状態（リッチ状態）」であり、従って、リーン要求が発生したと判定し、機関の空燃比をリーン空燃比に制御する。
【０００６】
更に、従来装置は、下流側空燃比センサの出力値がリーン空燃比に相当する値になったとき、触媒流入ガスの空燃比がリッチ空燃比となるように機関の空燃比を制御する。換言すると、従来装置は、下流側空燃比センサの出力値がリーン空燃比に相当する値になったとき、触媒の状態が「酸素過剰状態（リーン状態）」であり、従って、リッチ要求が発生したと判定し、機関の空燃比をリッチ空燃比に制御する。これにより、触媒の状態が「酸素不足状態及び酸素過剰状態の何れかの状態」である期間を短くすることができるので、エミッションが悪化する期間を短くすることができる。なお、リーン要求及びリッチ要求は、以下において、単に「空燃比要求」とも総称される。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平０８−１５８９１５号公報
【発明の概要】
【０００８】
ところで、出願人は、触媒の状態が「酸素不足状態（リッチ状態）」である場合の機関の空燃比を一定のリーン空燃比に制御し、触媒の状態が「酸素過剰状態（リーン状態）」である場合の機関の空燃比を一定のリッチ空燃比に制御する空燃比制御装置を開発している。この制御装置によれば、機関の空燃比及び排ガスの空燃比は略矩形波状に変化する。
【０００９】
一方、例えば、Ｖ型６気筒エンジン、直列６気筒エンジン及びＶ型８気筒エンジン等のように、複数の気筒を含む第１気筒群（例えば、Ｖ６エンジンの右バンク）及び複数の気筒を含む第２気筒群（例えば、Ｖ６エンジンの左バンク）を備える本体部を有する内燃機関は、第１気筒群及び第２気筒群のそれぞれに対応した２系統の排気通路を備えることが多い。更に、このような機関はそれぞれの排気通路に触媒を備えることが多い。
【００１０】
この場合、各排気通路の各触媒の下流に下流側空燃比センサが配設される。そして、空燃比制御装置は、各触媒の状態（各触媒に対する空燃比要求）を各下流側空燃比センサの出力値に基いて判定し、その判定の結果に応じて「第１気筒群に属する複数の気筒（第１気筒群の複数の気筒）に供給される混合気の空燃比及び第２気筒群に属する複数の気筒（第２気筒群の複数の気筒）に供給される混合気の空燃比」を互いに独立して制御する。
【００１１】
ところが、図１の（Ａ）に示したように、第１の気筒群（図１において右バンク）の複数の気筒に供給される混合気の空燃比の目標値（第１気筒群目標空燃比）と、第２の気筒群（図１において左バンク）の複数の気筒に供給される混合気の空燃比の目標値（第２気筒群目標空燃比）と、が実質的に同期すると、第１気筒群目標空燃比及び第２気筒群目標空燃比が何れもリーン空燃比である場合には、第１気筒群に属する気筒における燃焼により発生するトルク及び第２気筒群に属する気筒における燃焼により発生するトルクは何れも小さくなる。更に、第１気筒群目標空燃比と第２気筒群目標空燃比とが実質的に同期すると、第１気筒群目標空燃比及び第２気筒群目標空燃比が何れもリッチ空燃比である場合には、第１気筒群に属する気筒における燃焼により発生するトルク及び第２気筒群に属する気筒における燃焼により発生するトルクは何れも大きくなる。この結果、機関及び同機関を搭載した車両は「長い周期を有し且つ大きい振幅」を有するように振動する（図１の曲線Ｃａを参照。）。運転者は、そのような振動を不快に感じることがある。なお、このような状態は、各触媒の最大酸素吸蔵量が互いに一致していない限り、比較的長い時間が経過すれば解消する。但し、このような状態が解消するまで、不快な振動（非許容振動）が発生し続ける。
【００１２】
本発明は、係る課題を解決するためになされたものである。即ち、本発明の目的の一つは、第１気筒群及び第２気筒群のそれぞれに対応した２系統の排気通路のそれぞれに触媒を備えた機関において、最大酸素吸蔵量が小さいほうの触媒の下流に設けられている下流側空燃比センサの出力値に基いて、「第１気筒群及び第２気筒群の両群に属する気筒」に供給される混合気の空燃比を互いに逆位相（逆相）の矩形波状に制御することにより、エミッションが悪化することを回避し且つ上述した不快な振動が発生することを回避することができる内燃機関の空燃比制御装置を提供することにある。
【００１３】
本発明による内燃機関の空燃比制御装置（本発明制御装置）は、「複数の気筒を含む第１気筒群」及び「複数の気筒を含む第２気筒群」を備える本体部を有する内燃機関に適用される。
【００１４】
更に、本発明制御装置は、
前記第１気筒群の前記複数の気筒から排出される排ガスを通過させる第１排気通路に配設された第１触媒と、
前記第１排気通路の前記第１触媒の下流に配設された第１下流側空燃比センサと、
前記第２気筒群の前記複数の気筒から排出される排ガスを通過させる第２排気通路に配設された第２触媒と、
前記第２排気通路の前記第２触媒の下流に配設された第２下流側空燃比センサと、
を備える。
【００１５】
更に、本発明制御装置は、空燃比制御手段を備える。この空燃比制御手段は、前記第１触媒及び前記第２触媒のうち「最大酸素吸蔵量が小さい方の特定触媒」の下流に配設されている「前記第１下流側空燃比センサ及び前記第２下流側空燃比センサのうちの何れか一方（選択下流側空燃比センサ）」の出力値に相関を有する値（選択下流側空燃比センサ出力相関値）と所定のリーン要求判定値（リッチ判定値）との比較の結果に基づいて同特定触媒に対するリーン要求が発生したか否かを判定する。換言すると、空燃比制御手段は、選択下流側空燃比センサ出力相関値とリーン要求判定値との比較の結果に基づいて、特定触媒の状態が「酸素不足状態（リッチ状態）」であるか否かを判定する。
【００１６】
加えて、この空燃比制御手段は、前記選択下流側空燃比センサ出力相関値と所定のリッチ要求判定値（リーン判定値）との比較に基づいて前記特定触媒に対するリッチ要求が発生したか否かを判定する。換言すると、空燃比制御手段は、選択下流側空燃比センサ出力相関値とリッチ要求判定値との比較の結果に基づいて、特定触媒の状態が「酸素過剰状態（リーン状態）」であるか否かを判定する。
【００１７】
この場合、選択下流側空燃比センサ出力相関値は、例えば、選択下流側空燃比センサの出力値の単位時間あたりの変化量（即ち、選択下流側空燃比センサの出力値の変化速度、選択下流側空燃比センサの出力値の時間微分値）であってもよく、選択下流側空燃比センサの出力値そのものであってもよい。選択下流側空燃比センサ出力相関値が、選択下流側空燃比センサの出力値の単位時間あたりの変化量である場合、例えば、選択下流側空燃比センサの出力値が増大している場合であってその変化量（変化速度）の大きさがリーン要求判定値（リッチ判定値）値以上となったとき、リーン要求が発生したと判定され得る。更に、選択下流側空燃比センサ出力相関値が、選択下流側空燃比センサの出力値の単位時間あたりの変化量である場合、例えば、選択下流側空燃比センサの出力値が減少している場合であってその変化量（変化速度）の大きさがリッチ要求判定値（リーン判定値）以上となったとき、リッチ要求が発生したと判定され得る。
【００１８】
更に、前記空燃比制御手段は、「前記リーン要求が発生したと判定された時点から前記リッチ要求が発生したと判定される時点まで」の「リーン要求発生期間」において、前記特定触媒に排ガスを排出する「前記第１気筒群及び前記第２気筒群のうちの一方」の前記複数の気筒のそれぞれに供給される混合気の空燃比を「理論空燃比よりも大きい空燃比（リーン空燃比）」に制御する。このとき、前記空燃比制御手段は、「前記第１気筒群及び前記第２気筒群のうちの他方」の前記複数の気筒のそれぞれに供給される混合気の空燃比を「理論空燃比よりも小さい空燃比（リッチ空燃比）」に制御する。
【００１９】
加えて、前記空燃比制御手段は、「前記リッチ要求が発生したと判定された時点から前記リーン要求が発生したと判定される時点まで」の「リッチ要求発生期間」において、前記特定触媒に排ガスを排出する「前記第１気筒群及び前記第２気筒群のうちの一方」の前記複数の気筒のそれぞれに供給される混合気の空燃比を「理論空燃比よりも小さい空燃比（リッチ空燃比）」に制御する。このとき、前記空燃比制御手段は、「前記第１気筒群及び前記第２気筒群のうちの他方」の前記複数の気筒のそれぞれに供給される混合気の空燃比を「理論空燃比よりも大きい空燃比（リーン空燃比）」に制御する。
このような制御は、便宜上「逆相制御」と称呼される。
【００２０】
この結果、最大酸素吸蔵量が小さい方の触媒（前記特定触媒）の下流側空燃比センサの出力値に基づいて、即ち、前記特定触媒の状態（前記特定触媒に対する空燃比要求）に応じて、前記特定触媒に排ガスを供給する気筒群に属する気筒に供給される混合気の空燃比が制御される。従って、前記特定触媒に排ガスを供給する気筒群から排出される排ガスは前記特定触媒により浄化され得る。
【００２１】
加えて、最大酸素吸蔵量が大きい方の触媒（非特定触媒）に排ガスを供給する気筒群に属する気筒に供給される混合気の空燃比の切替周期は、「最大酸素吸蔵量が小さい方の触媒である前記特定触媒」の状態（前記特定触媒に対する空燃比要求）の変化の周期と一致するので、非特定触媒の酸素吸蔵量は、「０」よりも大きく非特定触媒の最大酸素吸蔵量よりも小さい範囲内で変化する。その結果、前記非特定触媒に排ガスを供給する気筒群から排出される排ガスも前記非特定触媒により浄化され得る。
【００２２】
更に、図１の（Ｂ）に示したように、前記第１気筒群（図１において右バンク）の複数の気筒に供給される空燃比がリッチ空燃比であるとき、前記第２気筒群（図１において左バンク）の複数の気筒に供給される空燃比はリーン空燃比となる。加えて、前記第１気筒群（図１において右バンク）の複数の気筒に供給される空燃比がリーン空燃比であるとき、前記第２気筒群（図１において左バンク）の複数の気筒に供給される空燃比はリッチ空燃比となる。
【００２３】
一般に、このような機関において、第１気筒群に属する気筒の点火と第２気筒群に属する気筒の点火は交互に行われるから、機関の発生トルクは図１の（Ｂ）に示したように、極めて短時間にて増減する。例えば、前記第１気筒群の複数の気筒に供給される空燃比がリッチ空燃比であるとき、前記第２気筒群の複数の気筒に供給される空燃比はリーン空燃比となるから、第１気筒群に属する気筒における燃焼により発生するトルクは相対的に大きくなり、第２気筒群に属する気筒における燃焼により発生するトルクは相対的に小さくなる。
【００２４】
そして、このように機関発生トルクが高い周波数（短い周期）にて変動する場合、発生するトルク変動に起因する「機関及び同機関を搭載した車両の振動」は減衰され易いので、同機関及び同機関を搭載した車両は「短い周期を有し且つ小さい振幅」を有するように振動する（図１（Ｂ）の曲線Ｃｂを参照。）。この結果、運転者に不快な振動を与えることを回避することができる。
【００２５】
本発明装置の他の目的、他の特徴及び付随する利点は、以下の図面を参照しつつ記述される本発明装置の各実施形態についての説明から容易に理解されるであろう。
【図面の簡単な説明】
【００２６】
【図１】図１は、各バンクに対する目標空燃比、機関トルク、及び、機関等に生じる振動の変化の様子を示したタイムチャートである。
【図２】本発明の第１実施形態に係る空燃比制御装置（第１制御装置）を適用した内燃機関の概略図である。
【図３】図３は、図２に示した「右バンク用上流側空燃比センサ又は左バンク用上流側空燃比センサ」の出力値と、空燃比と、の関係を示したグラフである。
【図４】図４は、図２に示した「右バンク用下流側空燃比センサ又は左バンク用下流側空燃比センサ」の出力値と、空燃比と、の関係を示したグラフである。
【図５】図５は、第１制御装置の作用を説明するために各値を示したタイムチャートである。
【図６】図６は、第１制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図７】図７は、第１制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図８】図８は、第１制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図９】図９は、第１制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図１０】図１０は、第１制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図１１】図１１は、第１制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【発明を実施するための形態】
【００２７】
以下、本発明による内燃機関の空燃比制御装置の各実施形態について図面を参照しつつ説明する。
【００２８】
＜第１実施形態＞
（構成）
図２は、第１実施形態に係る制御装置（以下、「第１制御装置」とも称呼する。）が適用された内燃機関１０の概略構成を示している。機関１０は、４サイクル・火花点火式・Ｖ型６気筒エンジンである。機関１０は、機関本体部２０と、吸気系統３０と、右バンク排気系統４０と、左バンク排気系統５０と、を含む。
【００２９】
機関本体部２０は、シリンダブロック部及びシリンダヘッド部を含む。機関本体部２０は、６個の気筒（燃焼室）２１を備えている。第１気筒（＃１）、第３気筒（＃３）及び第５気筒（＃５）は右バンクＲＢに備えられている。第１気筒（＃１）、第３気筒（＃３）及び第５気筒（＃５）を含む気筒群は、第１気筒群とも称呼される。第２気筒（＃２）、第４気筒（＃４）及び第６気筒（＃６）は左バンクＬＢに備えられている。第２気筒（＃２）、第４気筒（＃４）及び第６気筒（＃６）を含む気筒群は、第２気筒群とも称呼される。
【００３０】
各気筒は、図示しない「吸気ポート及び排気ポート」と連通している。吸気ポートと燃焼室２１との連通部は図示しない吸気弁により開閉される。排気ポートと燃焼室２１との連通部は図示しない排気弁により開閉される。各燃焼室２１には図示しない点火プラグが配設されている。
【００３１】
吸気系統３０は、インテークマニホールド及び吸気管からなる吸気通路部３１、スロットル弁３２、及び、複数の燃料噴射弁３３、を備えている。
【００３２】
吸気通路部３１の一端には図示しないエアフィルタが配設されている。吸気通路部３１の他端は図示しない複数の枝部に分かれ、その複数の枝部のそれぞれは複数の吸気ポートのそれぞれに接続されている。
【００３３】
スロットル弁３２は、吸気通路部３１の吸気管内に回動可能に配設されている。スロットル弁３２は、吸気通路部３１の通路断面積を可変とするようになっている。スロットル弁３２は、図示しないスロットル弁アクチュエータにより回転駆動されるようになっている。
【００３４】
燃料噴射弁３３は、一つの気筒（燃焼室）２１に対して一つずつ配設されている。燃料噴射弁３３は、噴射指示信号に応答し、「その噴射指示信号に含まれる指示燃料噴射量の燃料」を吸気ポート（従って、燃料噴射弁３３に対応する気筒２１）に対して噴射するようになっている。
【００３５】
右バンク排気系統４０は、右バンク用エキゾーストマニホールド４１、右バンク用エキゾーストパイプ４２、右バンク用エキゾーストパイプ４２に配設された右バンク用上流側触媒４３、及び、右バンク用上流側触媒４３よりも下流において右バンク用エキゾーストパイプ４２に配設された「図示しない右バンク用下流側触媒」を備えている。
【００３６】
右バンク用エキゾーストマニホールド４１は、複数の枝部４１ａと集合部４１ｂとを備えている。複数の枝部４１ａのそれぞれの一端は、右バンクに属する複数の気筒の排気ポートのそれぞれに接続されている。複数の枝部４１ａのそれぞれの他端は集合部４１ｂに集合している。この集合部４１ｂは、右バンク用排気集合部ＨＫ（Ｒ）とも称呼される。
【００３７】
右バンク用エキゾーストパイプ４２は集合部４１ｂに接続されている。右バンクＲＢに属する複数の気筒の排気ポート、右バンク用エキゾーストマニホールド４１及び右バンク用エキゾーストパイプ４２は、右バンク用の排気通路を構成している。
【００３８】
右バンク用上流側触媒４３及び右バンク用下流側触媒のそれぞれは、所謂、白金、ロジウム及びパラジウム等の貴金属（触媒物質）からなる活性成分を担持する三元触媒装置（排気浄化用の触媒）である。各触媒は、各触媒に流入するガスの空燃比が「三元触媒のウインドウ内の空燃比（例えば、理論空燃比）」であるとき、ＨＣ，ＣＯ，Ｈ２などの未燃成分を酸化するとともに窒素酸化物（ＮＯｘ）を還元する機能を有する。この機能は触媒機能とも称呼される。
【００３９】
更に、各触媒は、酸素を吸蔵（貯蔵）する酸素吸蔵機能を有する。即ち、各触媒は、その触媒に流入するガス（触媒流入ガス）に過剰の酸素が含まれているとき、その酸素を吸蔵するとともにＮＯｘを浄化する。各触媒は、触媒流入ガスに過剰な未燃物が含まれているとき、吸蔵している酸素を放出してその未燃物を浄化する。この酸素吸蔵機能は、触媒に担持されているセリア（ＣｅＯ２）等の酸素吸蔵材によってもたらされる。各触媒は、酸素吸蔵機能により空燃比が理論空燃比から偏移したとしても未燃成分及び窒素酸化物を浄化することができる。
【００４０】
左バンク排気系統５０は、左バンク用エキゾーストマニホールド５１、左バンク用エキゾーストパイプ５２、左バンク用エキゾーストパイプ５２に配設された左バンク用上流側触媒５３、及び、左バンク用上流側触媒５３よりも下流において左バンク用エキゾーストパイプ５２に配設された「図示しない左バンク用下流側触媒」を備えている。
【００４１】
左バンク用エキゾーストマニホールド５１は、複数の枝部５１ａと集合部５１ｂとを備えている。複数の枝部５１ａのそれぞれの一端は、左バンクに属する複数の気筒の排気ポートのそれぞれに接続されている。複数の枝部５１ａのそれぞれの他端は集合部５１ｂに集合している。この集合部５１ｂは、左バンク用排気集合部ＨＫ（Ｌ）とも称呼される。
【００４２】
左バンク用エキゾーストパイプ５２は集合部５１ｂに接続されている。左バンクＬＢに属する複数の気筒の排気ポート、左バンク用エキゾーストマニホールド５１及び左バンク用エキゾーストパイプ５２は、左バンク用の排気通路を構成している。
【００４３】
左バンク用上流側触媒５３は右バンク用上流側触媒４３と同じ三元触媒である。左バンク用下流側触媒は右バンク用下流側触媒と同じ三元触媒である。
【００４４】
このシステムは、熱線式エアフローメータ６１、スロットルポジションセンサ６２、水温センサ６３、クランクポジションセンサ６４、インテークカムポジションセンサ６５、右バンク用上流側空燃比センサ６６Ｒ、左バンク用上流側空燃比センサ６６Ｌ、右バンク用下流側空燃比センサ６７Ｒ、左バンク用下流側空燃比センサ６７Ｌ、及び、アクセル開度センサ６８を備えている。
【００４５】
エアフローメータ６１は、吸気通路部３１を流れる吸入空気の質量流量（吸入空気流量）Ｇａに応じた信号を出力するようになっている。即ち、吸入空気量Ｇａは、単位時間あたりに機関１０に吸入される吸入空気量を表す。
【００４６】
スロットルポジションセンサ６２は、スロットル弁３２の開度（スロットル弁開度）を検出し、スロットル弁開度ＴＡを表す信号を出力するようになっている。
【００４７】
水温センサ６３は、内燃機関１０の冷却水の温度を検出し、冷却水温ＴＨＷを表す信号を出力するようになっている。冷却水温ＴＨＷは、機関１０の暖機状態（機関１０の温度）を表す運転状態指標量である。
【００４８】
クランクポジションセンサ６４は、クランク軸が１０°回転する毎に幅狭のパルスを有するとともに同クランク軸が３６０°回転する毎に幅広のパルスを有する信号を出力するようになっている。この信号は、後述する電気制御装置７０によって機関回転速度ＮＥに変換される。
【００４９】
インテークカムポジションセンサ６５は、インテークカムシャフトが所定角度から９０度、次いで９０度、更に１８０度回転する毎に一つのパルスを出力するようになっている。後述する電気制御装置７０は、クランクポジションセンサ６４及びインテークカムポジションセンサ６５からの信号に基づいて、基準気筒（例えば第１気筒）の圧縮上死点を基準とした絶対クランク角度ＣＡを取得するようになっている。この絶対クランク角度ＣＡは、基準気筒の圧縮上死点において「０°クランク角度」に設定され、クランク軸の回転角度に応じて７２０°クランク角度まで増大し、その時点にて再び０°クランク角度に設定される。
【００５０】
右バンク用上流側空燃比センサ６６Ｒは、右バンク用エキゾーストマニホールド４１の集合部４１ｂ（右バンク用排気集合部ＨＫ（Ｒ））と右バンク用上流側触媒４３との間の位置において「右バンク用エキゾーストマニホールド４１及び右バンク用エキゾーストパイプ４２の何れか」に配設されている。
【００５１】
右バンク用上流側空燃比センサ６６Ｒは、例えば、特開平１１−７２４７３号公報、特開２０００−６５７８２号公報及び特開２００４−６９５４７号公報等に開示された「拡散抵抗層を備える限界電流式広域空燃比センサ」である。
【００５２】
右バンク用上流側空燃比センサ６６Ｒは、右バンク用上流側空燃比センサ６６Ｒの配設位置を流れる排ガスの空燃比（右バンク用上流側触媒４３に流入するガスである「触媒流入ガス」の空燃比、右バンク上流側空燃比abyfs(R)＝右バンク検出空燃比abyfs(R)）に応じた出力値Vabyfs(R)を出力する。出力値Vabyfs(R)は、図３に示したように、右バンク用上流側触媒４３に流入するガスの空燃比abyfs(R)が大きくなるほど（リーン側の空燃比になるほど）増大する。
【００５３】
電気制御装置７０は、出力値Vabyfs(R)と右バンク上流側空燃比abyfs(R)との図３に示した関係を規定した空燃比変換テーブル（マップ）Mapabyfsを記憶している。電気制御装置７０は、出力値Vabyfs(R)を空燃比変換テーブルMapabyfsに適用することにより、実際の右バンク上流側空燃比abyfs(R)を検出する（右バンク検出空燃比abyfs(R)を取得する）。
【００５４】
再び、図２を参照すると、右バンク用下流側空燃比センサ６７Ｒは、右バンク用エキゾーストパイプ４２内に配設されている。右バンク用下流側空燃比センサ６７Ｒの配設位置は、右バンク用上流側触媒４３よりも下流側であり、且つ、右バンク用下流側触媒よりも上流側（即ち、右バンク用上流側触媒４３と右バンク用下流側触媒との間の排気通路）である。右バンク用下流側空燃比センサ６７Ｒは、周知の起電力式の酸素濃度センサ（安定化ジルコニア等の固体電解質を用いた周知の濃淡電池型の酸素濃度センサ）である。右バンク用下流側空燃比センサ６７Ｒは、右バンク用の排気通路であって右バンク用下流側空燃比センサ６７Ｒが配設されている部位を通過するガスである被検出ガスの空燃比に応じた出力値Voxs(R)を発生するようになっている。換言すると、出力値Voxs(R)は、右バンク用上流側触媒４３から流出し且つ右バンク用下流側触媒に流入するガスの空燃比に応じた値である。
【００５５】
この出力値Voxs(R)は、図４に示したように、右バンク用上流側触媒４３から流出したガスの空燃比が理論空燃比よりもリッチのとき最大出力値max（例えば、約０．９Ｖ〜１．０Ｖ）となる。出力値Voxs(R)は、右バンク用上流側触媒４３から流出したガスの空燃比が理論空燃比よりもリーンのとき最小出力値min（例えば、約０．１Ｖ〜０Ｖ）となる。更に、出力値Voxs(L)は、右バンク用上流側触媒４３から流出したガスの空燃比が理論空燃比であるとき最大出力値maxと最小出力値minの略中間の電圧Ｖst（中央値Vmid、中間電圧Ｖst、例えば、約０．５Ｖ）となる。出力値Voxs(R)は、右バンク用上流側触媒４３から流出したガスの空燃比が理論空燃比よりもリッチな空燃比からリーンな空燃比へと変化する際に最大出力値maxから最小出力値minへと急変する。同様に、出力値Voxs(R)は、右バンク用上流側触媒４３から流出したガスの空燃比が理論空燃比よりもリーンな空燃比からリッチな空燃比へと変化する際に最小出力値minから最大出力値maxへと急変する。
【００５６】
再び、図２を参照すると、左バンク用上流側空燃比センサ６６Ｌは、左バンク用エキゾーストマニホールド５１の集合部５１ｂ（左バンク用排気集合部ＨＫ（Ｌ））と左バンク用上流側触媒５３との間の位置において「左バンク用エキゾーストマニホールド５１及び左バンク用エキゾーストパイプ５２の何れか」に配設されている。左バンク用上流側空燃比センサ６６Ｌは、右バンク用上流側空燃比センサ６６Ｒと同じ「拡散抵抗層を備える限界電流式広域空燃比センサ」である。
【００５７】
左バンク用上流側空燃比センサ６６Ｌは、左バンク用上流側空燃比センサ６６Ｌの配設位置を流れる排ガスの空燃比（左バンク用上流側触媒５３に流入するガスである「触媒流入ガス」の空燃比、左バンク上流側空燃比abyfs(L)＝左バンク検出空燃比abyfs(L)）に応じた出力値Vabyfs(L)を出力する。出力値Vabyfs(L)は、図３に示したように、左バンク用上流側触媒５３に流入するガスの空燃比が大きくなるほど（リーン側の空燃比になるほど）増大する。
【００５８】
電気制御装置７０は、出力値Vabyfs(L)と左バンク上流側空燃比abyfs(L)との図３に示した関係を規定した空燃比変換テーブル（マップ）Mapabyfsを記憶している。電気制御装置７０は、出力値Vabyfs(L)を空燃比変換テーブルMapabyfsに適用することにより、実際の左バンク上流側空燃比abyfs(L)を検出する（左バンク検出空燃比abyfs(L)を取得する）。
【００５９】
再び、図２を参照すると、左バンク用下流側空燃比センサ６７Ｌは、左バンク用エキゾーストパイプ５２内に配設されている。左バンク用下流側空燃比センサ６７Ｌの配設位置は、左バンク用上流側触媒５３よりも下流側であり、且つ、左バンク用下流側触媒よりも上流側（即ち、左バンク用上流側触媒５３と左バンク用下流側触媒との間の排気通路）である。左バンク用下流側空燃比センサ６７Ｌは、右バンク用下流側空燃比センサ６７Ｒと同じ起電力式の酸素濃度センサである。
【００６０】
従って、左バンク用下流側空燃比センサ６７Ｌは、左バンク用の排気通路であって左バンク用下流側空燃比センサ６７Ｌが配設されている部位を通過するガスである被検出ガスの空燃比に応じた出力値Voxs(L)を発生するようになっている（図４を参照。）。
【００６１】
図２に示したアクセル開度センサ６８は、運転者によって操作されるアクセルペダルＡＰの操作量Accp（アクセルペダル操作量、アクセルペダルＡＰの開度）を表す信号を出力するようになっている。アクセルペダル操作量Accpは、アクセルペダルＡＰの操作量が大きくなるとともに大きくなる。
【００６２】
電気制御装置７０は、「ＣＰＵ、ＣＰＵが実行するプログラム、テーブル（マップ、関数）及び定数等を予め記憶したＲＯＭ、ＣＰＵが必要に応じてデータを一時的に格納するＲＡＭ、バックアップＲＡＭ（Ｂ−ＲＡＭ）、並びに、ＡＤコンバータを含むインターフェース等」からなる周知のマイクロコンピュータである。
【００６３】
バックアップＲＡＭは、機関１０を搭載した車両の図示しないイグニッション・キー・スイッチの位置（オフ位置、始動位置及びオン位置等の何れか）に関わらず、車両に搭載されたバッテリから電力の供給を受けるようになっている。バックアップＲＡＭは、バッテリから電力の供給を受けている場合、ＣＰＵの指示に応じてデータを格納する（データが書き込まれる）とともに、そのデータを読み出し可能となるように保持（記憶）する。従って、バックアップＲＡＭは、機関１０の運転停止中においてもデータを保持することができる。
【００６４】
バックアップＲＡＭは、バッテリが車両から取り外される等によりバッテリからの電力供給が遮断されると、データを保持することができない。そこで、ＣＰＵは、バックアップＲＡＭへの電力供給が再開されたとき、バックアップＲＡＭに保持されるべきデータを初期化（デフォルト値に設定）するようになっている。なお、バックアップＲＡＭは、ＥＥＰＲＯＭ等の読み書き可能な不揮発性メモリであってもよい。
【００６５】
電気制御装置７０は、上述したセンサ等と接続され、ＣＰＵにそれらのセンサからの信号を供給するようになっている。更に、電気制御装置７０は、ＣＰＵの指示に応じて、各気筒に対応して設けられた点火プラグ（実際にはイグナイタ）、各気筒に対応して設けられた燃料噴射弁３３、及び、スロットル弁アクチュエータ等に駆動信号（指示信号）を送出するようになっている。
【００６６】
なお、電気制御装置７０は、取得されたアクセルペダルの操作量Accpが大きくなるほどスロットル弁開度ＴＡが大きくなるように、スロットル弁アクチュエータに指示信号を送出するようになっている。即ち、電気制御装置７０は、運転者により変更される機関１０の加速操作量（アクセルペダル操作量Accp）に応じて「機関１０の吸気通路に配設されたスロットル弁３２」の開度を変更するスロットル弁駆動手段を備えている。また、機関１０における点火順序は、例えば、第１気筒、第２気筒、第３気筒、第４気筒、第５気筒、第６気筒の順である。この点火順序に限定はされないが、機関１０においては、第１気筒群（右バンク）に属する気筒の点火と第２気筒群（左バンク）に属する気筒の点火は交互に行われるようになっている。
【００６７】
（作動の概要）
次に、上記のように構成された第１制御装置の作動の概略について説明する。
第１制御装置は、右バンクフィードバック制御条件が成立すると、右バンク用下流側空燃比センサ６７Ｒの出力値Voxs(R)に基いて「右バンク用上流側触媒４３が酸素過剰状態にあるか酸素不足状態にあるか」を判定する。換言すると、出力値Voxs(R)に基いて、右バンクに属する複数の気筒に対する空燃比要求（右バンク空燃比要求）がリッチ要求であるのかリーン要求であるのかを判定する。
【００６８】
より具体的に述べると、第１制御装置は、出力値Voxs(R)が増大している場合であってその変化量（変化速度）の大きさが右バンク用リッチ判定値（右バンク用リーン要求判定値）ｄRichRth以上となったとき、右バンク用上流側触媒４３の状態が酸素不足状態（リッチ状態）にあり、従って、右バンクに対してリーン要求が発生したと判定する。更に、第１制御装置は、出力値Voxs(R)が減少している場合であってその変化量（変化速度）の大きさが右バンク用リーン判定値（右バンク用リッチ要求判定値）ｄLeanRth以上となったとき、右バンク用上流側触媒４３の状態が酸素過剰状態（リーン状態）にあり、従って、右バンクに対してリッチ要求が発生したと判定する。
【００６９】
同様に、第１制御装置は、左バンクフィードバック制御条件が成立すると、左バンク用下流側空燃比センサ６７Ｌの出力値Voxs(L)に基いて「左バンク用上流側触媒５３が酸素過剰状態にあるか酸素不足状態にあるか」を判定する。換言すると、出力値Voxs(L)に基いて、左バンクに属する複数の気筒に対する空燃比要求（左バンク空燃比要求）がリッチ要求であるのかリーン要求であるのかを判定する。
【００７０】
より具体的に述べると、第１制御装置は、出力値Voxs(L)が増大している場合であってその変化量（変化速度）の大きさが左バンク用リッチ判定値（左バンク用リーン要求判定値）ｄRichLth以上となったとき、左バンク用上流側触媒５３の状態が酸素不足状態（リッチ状態）にあり、従って、左バンクに対してリーン要求が発生したと判定する。更に、第１制御装置は、出力値Voxs(L)が減少している場合であってその変化量（変化速度）の大きさが左バンク用リーン判定値（左バンク用リッチ要求判定値）ｄLeanLth以上となったとき、左バンク用上流側触媒５３の状態が酸素過剰状態（リーン状態）にあり、従って、左バンクに対してリッチ要求が発生したと判定する。
【００７１】
なお、リッチ要求が発生したと判定されてからリーン要求が発生したと判定されるまでの期間は、「リッチ要求発生期間」と称呼される。リーン要求が発生したと判定されてからリッチ要求が発生したと判定されるまでの期間は、「リーン要求発生期間」と称呼される。
【００７２】
そして、第１制御装置は、右バンク空燃比要求に基いて、右バンクに属する複数の気筒に供給される混合気の空燃比（右バンク空燃比）の目標値（右バンク目標空燃比abyfrR）を決定し、実際の右バンク空燃比（即ち、右バンク用上流側空燃比センサ６６Ｒの出力値Vabyfs(R)に基いて取得される右バンク上流側空燃比abyfs(R)）が右バンク目標空燃比abyfrRに一致するように、右バンク空燃比（右バンクに属する複数の気筒に対する燃料噴射量）を制御する。即ち、右バンクメインフィードバック制御を実行する。
【００７３】
同様に、第１制御装置は、左バンク空燃比要求に基いて、左バンクに属する複数の気筒に供給される混合気の空燃比（左バンク空燃比）の目標値（左バンク目標空燃比abyfrL）を決定し、実際の左バンク空燃比（即ち、左バンク用上流側空燃比センサ６６Ｌの出力値Vabyfs(L)に基いて取得される左バンク上流側空燃比abyfs(L)）が左バンク目標空燃比abyfrLに一致するように、左バンク空燃比（左バンクに属する複数の気筒に対する燃料噴射量）を制御する。即ち、左バンクメインフィードバック制御を実行する。
【００７４】
この状態において、図５の（Ａ）に示したように、右バンク目標空燃比abyfrR（即ち、右バンク空燃比要求）と左バンク目標空燃比abyfrL（即ち、左バンク空燃比要求）とが偶発的且つ実質的に同期すると、図１を参照して説明したように、機関１０に「振幅が大きく且つ周期が長い振動」が発生する。但し、この場合、右バンク目標空燃比abyfrRの目標リッチ空燃比afRich及び目標リーン空燃比afLeanの間の切り替え周期と、左バンク目標空燃比abyfrLの目標リッチ空燃比afRich及び目標リーン空燃比afLeanの間の切り替え周期と、は本来は互いに相違する（後述する非特定触媒に対応するバンクに対する目標空燃比の切り替え周期の方が長い）。
【００７５】
そこで、第１制御装置は、右バンク目標空燃比abyfrRと左バンク目標空燃比abyfrLとが実質的に同期しているか否かを判定する。更に、第１制御装置は、それらが同期していると判定したとき（このタイミングを同期時と称呼する。）、右バンク用上流側触媒４３の最大酸素吸蔵量ＣmaxＲと左バンク用上流側触媒５３の最大酸素吸蔵量ＣmaxＬとのうち何れが大きいかを判定する。
【００７６】
なお、右バンク用上流側触媒４３と左バンク用上流側触媒５３とのうち、最大酸素吸蔵量が小さい方の触媒を「特定触媒」と称呼する。右バンク用上流側触媒４３と左バンク用上流側触媒５３とのうち、最大酸素吸蔵量が大きい方の触媒を「非特定触媒」と称呼する。更に、特定触媒の下流の位置に配設されている下流側空燃比センサ（右バンク用下流側空燃比センサ６７Ｒ及び左バンク用下流側空燃比センサ６７Ｌのうちの一方）を「選択下流側空燃比センサ」と称呼し、残りの下流側空燃比センサ（非特定触媒の下流の位置に配設されている下流側空燃比センサ）を「非選択下流側空燃比センサ」と称呼する。加えて、特定触媒に排ガスを供給しているバンクを「特定バンク」、特定バンクに属する複数の気筒を「特定バンク気筒」、非特定触媒に排ガスを供給しているバンクを「非特定バンク」、非特定バンクに属する複数の気筒を「非特定バンク気筒」と称呼する。
【００７７】
そして、第１制御装置は、非特定バンク気筒に対するリッチ判定値を小さくするとともに、非特定バンク気筒に対するリーン判定値を小さくする。これにより、非特定バンクに対する空燃比要求（非特定バンク上流側空燃比）の切り替え周期が次第に短くなる。即ち、図５の（Ｂ）に示したように非特定バンク気筒（図５の例においては左バンク気筒）に対する目標空燃比の周期が次第に短くなる。
【００７８】
この状態が継続すると、図５の（Ｃ）に示したように、特定バンクに対する目標空燃比（図５の例においては右バンク目標空燃比abyfrR）と非特定バンクに対する目標空燃比（図５の例においては左バンク目標空燃比abyfrL）とが、実質的に同じ周期（周期の差が所定値以内）であり、且つ、互いに逆相となるように変化するように変化する。
【００７９】
即ち、特定バンクに対する目標空燃比がリーン空燃比からリッチ空燃比へと切り替わるタイミングにて非特定バンクに対する目標空燃比がリッチ空燃比からリーン空燃比へと切り替わり、特定バンクに対する目標空燃比がリッチ空燃比からリーン空燃比へと切り替わるタイミングにて非特定バンクに対する目標空燃比がリーン空燃比からリッチ空燃比へと切り替わる。このタイミングを逆相成立時と称呼する。また、同期時から逆相成立時までの制御（非特定バンクに対する目標空燃比を特定バンクに対する目標空燃比と逆相になるようにする制御）を逆相制御への移行制御と称呼する。
【００８０】
逆相制御への移行制御時以降において、第１制御装置は、選択下流側空燃比センサの出力値に基いて特定触媒の状態を判定し（即ち、特定バンクに対する空燃比要求を決定し）、その特定触媒の状態（その特定バンクに対する空燃比要求）に基いて特定バンクの空燃比（特定バンク気筒に対する燃料噴射量）を制御する。
【００８１】
更に、第１制御装置は、非特定バンクの目標空燃比が特定バンクの目標空燃比に対して理論空燃比を挟んで反対の空燃比になるように非特定バンクの目標空燃比を設定し、その設定された非特定バンクの目標空燃比に基いて非特定バンク空燃比（非特定バンク気筒に対する燃料噴射量）を制御する。即ち、第１制御装置は、特定バンクの目標空燃比がリッチ空燃比であれば非特定バンクの目標空燃比をリーン空燃比に設定し、特定バンクの目標空燃比がリーン空燃比であれば非特定バンクの目標空燃比をリッチ空燃比に設定する。この選択下流側空燃比センサの出力値に基く両バンクの空燃比制御を、逆相制御と称呼する（図５の（Ｃ）を参照。）。この結果、図１の（Ｂ）を参照して説明したように、機関１０の振動は小さくなる。
【００８２】
（作動の詳細）
次に、上記のように構成された第１制御装置の作動の詳細について説明する。
＜右バンク燃料噴射制御＞
第１制御装置のＣＰＵは、図６に示した右バンク燃料噴射制御ルーチンを、任意の気筒のクランク角が吸気上死点前の所定クランク角度（例えば、ＢＴＤＣ９０°ＣＡ）となる毎に繰り返し実行するようになっている。この「クランク角が吸気上死点前の所定クランク角度に一致した気筒」は燃料噴射気筒とも称呼される。
【００８３】
従って、所定のタイミングになると、ＣＰＵはステップ６００から処理を開始してステップ６０５に進み、燃料噴射気筒が右バンクに属する気筒（右バンク気筒）であるか否かを判定する。このとき、燃料噴射気筒が右バンク気筒でなければ、ＣＰＵはステップ６０５にて「Ｎｏ」と判定し、ステップ６９５に直接進んで本ルーチンを一旦終了する。
【００８４】
これに対し、燃料噴射気筒が右バンク気筒であると、ＣＰＵはステップ６０５にて「Ｙｅｓ」と判定してステップ６１０に進み、「エアフローメータ６１により計測された吸入空気量Ｇａ、クランクポジションセンサ６４の信号に基いて取得された機関回転速度ＮＥ、及び、ルックアップテーブルMapMc」に基いて「燃料噴射気筒に吸入される空気量」である「筒内吸入空気量Ｍｃ（ｋ）」を取得する。筒内吸入空気量Ｍｃ（ｋ）は、各吸気行程に対応されながらＲＡＭ内に記憶される。筒内吸入空気量Ｍｃ（ｋ）は、周知の空気モデルにより算出されてもよい。
【００８５】
次に、ＣＰＵはステップ６１５に進み、右バンクフィードバック制御フラグＸＦＢＲの値が「１」であるか否かを判定する。この右バンクフィードバック制御フラグＸＦＢＲの値は、右バンクに対する空燃比のフィードバック制御条件が成立しているときに「１」に設定され、右バンクに対するフィードバック制御条件が成立していないときに「０」に設定される。更に、右バンクフィードバック制御フラグＸＦＢＲの値は、イニシャルルーチンにおいて「０」に設定されるようになっている。イニシャルルーチンは、機関１０を搭載した車両のイグニッション・キー・スイッチの位置がオフ位置からオン位置へと変更されたときにＣＰＵにより実行される初期化ルーチンである。
【００８６】
右バンクに対するフィードバック制御条件は、例えば、以下の総ての条件が成立したときに成立する。
（Ａ１）右バンク用上流側空燃比センサ６６Ｒが活性化している。
（Ａ２）右バンク用下流側空燃比センサ６７Ｒが活性化している。
（Ａ３）機関の負荷ＫＬが閾値負荷ＫＬfbｔｈ以下である。
【００８７】
なお、負荷ＫＬは、本例において負荷率（充填率）ＫＬであり、下記の（１）式に基いて算出される。この（１）式において、ρは空気密度（単位は（ｇ／ｌ））、Ｌは機関１０の排気量（単位は（ｌ））、６は機関１０の気筒数である。但し、負荷ＫＬは、筒内吸入空気量Ｍｃ、スロットル弁開度ＴＡ及びアクセルペダル操作量Accp等であってもよい。
ＫＬ＝｛Ｍｃ（ｋ）／（ρ・Ｌ／６）｝・100（％）…（１）
【００８８】
右バンクフィードバック制御フラグＸＦＢＲの値が「１」でなければ、ＣＰＵはステップ６１５にて「Ｎｏ」と判定してステップ６２０に進み、右バンク目標空燃比abyfrRを理論空燃比stoich（例えば、１４．６）に設定する。
【００８９】
次に、ＣＰＵは以下に述べるステップ６２５乃至ステップ６４０の処理を順に行い、ステップ６９５に進んで本ルーチンを一旦終了する。
【００９０】
ステップ６２５：ＣＰＵは、筒内吸入空気量Ｍｃを右バンク目標空燃比abyfrRで除することによって基本燃料噴射量Ｆｂａｓｅを算出する。
【００９１】
ステップ６３０：ＣＰＵは、図示しないルーチンにより別途計算されている右バンクメインフィードバック量ＫＦmainRを読み込む。右バンクメインフィードバック量ＫＦmainRは右バンク上流側空燃比abyfs(R)（＝右バンク検出空燃比abyfs(R)）が右バンク目標空燃比abyfrRに一致するように周知のＰＩＤ制御に基づいて算出される。なお、右バンクメインフィードバック量ＫＦmainRは、右バンクフィードバック制御フラグＸＦＢＲの値が「０」であるとき「１」に設定される。更に、右バンクメインフィードバック量ＫＦmainRは常に「１」に設定されてもよい。即ち、右バンクメインフィードバック量ＫＦmainRを用いたフィードバック制御は本実施形態において必須ではない。
【００９２】
ステップ６３５：ＣＰＵは、基本燃料噴射量Ｆｂａｓｅを右バンクメインフィードバック量ＫＦmainRにより補正することによって指示燃料噴射量Ｆｉを算出する。より具体的に述べると、ＣＰＵは、基本燃料噴射量Ｆｂａｓｅに右バンクメインフィードバック量ＫＦmainRを乗じることによって指示燃料噴射量Ｆｉを算出する。
【００９３】
ステップ６４０：ＣＰＵは、「指示燃料噴射量Ｆｉの燃料」を「燃料噴射気筒に対応して設けられている燃料噴射弁３３」から噴射させるための噴射指示信号を、その燃料噴射弁３３に送出する。
【００９４】
この結果、右バンク空燃比を右バンク目標空燃比abyfrRに一致させるために必要な量の燃料が燃料噴射気筒の燃料噴射弁３３から噴射させられる。即ち、ステップ６２５乃至ステップ６４０は、「右バンク空燃比が右バンク目標空燃比abyfrRに一致するように指示燃料噴射量Ｆｉを制御する」右バンク指示燃料噴射量制御手段を構成している。
【００９５】
一方、ＣＰＵがステップ６１５の処理を行う時点において、右バンクフィードバック制御フラグＸＦＢＲの値が「１」であると、ＣＰＵはステップ６１５にて「Ｙｅｓ」と判定してステップ６４５に進み、逆相制御実行フラグＸgyakusoの値が「０」であるか否かを判定する。この逆相制御実行フラグＸgyakusoの値は上述したイニシャルルーチンにおいて「０」に設定されるようになっている。更に、逆相制御実行フラグＸgyakusoの値は後述するルーチンにより、逆相制御の実行が開始される時点にて「１」に設定される。
【００９６】
いま、逆相制御実行フラグＸgyakusoの値が「０」であると仮定する。この場合、ＣＰＵはステップ６４５にて「Ｙｅｓ」と判定してステップ６５０に進み、右バンク触媒リーン状態表示フラグＸLeanRに右バンク用上流側触媒４３の状態を示すフラグＸCCLeanRの値を格納する。右バンク用上流側触媒４３の状態を示すフラグＸCCLeanRの値は、後述するルーチンにより右バンク用下流側空燃比センサ６７Ｒの出力値Voxs(R)に基いて設定される。即ち、フラグＸCCLeanRの値は、右バンク用上流側触媒４３の状態が酸素過剰状態であると判定されたとき「１」に設定され、右バンク用上流側触媒４３の状態が酸素不足状態であると判定されたとき「０」に設定される。
【００９７】
次に、ＣＰＵはステップ６５５に進み、右バンク触媒リーン状態表示フラグＸLeanRの値が「１」であるか否かを判定する。即ち、この場合、右バンク用上流側触媒４３の状態を示すフラグＸCCLeanRの値が「１」であるか否かが実質的に判定される。このとき、右バンク触媒リーン状態表示フラグＸLeanRの値が「１」であると、ＣＰＵはステップ６５５にて「Ｙｅｓ」と判定してステップ６６０に進み、右バンク目標空燃比abyfrRを目標リッチ空燃比afRich（理論空燃比よりも小さい一定の空燃比、例えば、１４．２）」に設定する。その後、ＣＰＵはステップ６２５以降に進む。従って、右バンク空燃比は目標リッチ空燃比afRichに一致させられる。
【００９８】
これに対し、ＣＰＵがステップ６５５の処理を実行する時点において、右バンク触媒リーン状態表示フラグＸLeanRの値が「０」であると、ＣＰＵはステップ６５５にて「Ｎｏ」と判定してステップ６６５に進み、右バンク目標空燃比abyfrRを「所定の目標リーン空燃比afLean（理論空燃比よりも大きい一定の空燃比、例えば、１５．０）」に設定する。その後、ＣＰＵはステップ６２５以降に進む。従って、右バンク空燃比は目標リーン空燃比afLeanに一致させられる。
【００９９】
このように、逆相制御実行フラグＸgyakusoの値が「０」であるとき、右バンク目標空燃比abyfrR（従って、右バンクの空燃比）は右バンク用上流側触媒４３の状態を示すフラグＸCCLeanRに基いて制御される。即ち、右バンク空燃比は、右バンク用下流側空燃比センサ６７Ｒの出力値Voxs(R)に基いて決定される右バンク用上流側触媒４３の状態に応じて制御される。
【０１００】
これに対し、ＣＰＵがステップ６４５の処理を実行する時点において、逆相制御実行フラグＸgyakusoの値が「１」であると、ＣＰＵはそのステップ６４５にて「Ｎｏ」と判定してステップ６７０に進み、右バンク用上流側触媒４３の最大酸素吸蔵量ＣmaxＲが左バンク用上流側触媒５３の最大酸素吸蔵量ＣmaxＬよりも小さいか否かを判定する。なお、最大酸素吸蔵量ＣmaxＲ及び最大酸素吸蔵量ＣmaxＬは、後述するように周知の手法に基いて別途算出されている。
【０１０１】
このとき、右バンク用上流側触媒４３の最大酸素吸蔵量ＣmaxＲが左バンク用上流側触媒５３の最大酸素吸蔵量ＣmaxＬよりも小さいと、ＣＰＵはステップ６７０にて「Ｙｅｓ」と判定してステップ６５０に進み、右バンク触媒リーン状態表示フラグＸLeanRに右バンク用上流側触媒４３の状態を示すフラグＸCCLeanRの値を格納する。その結果、右バンク目標空燃比abyfrR（従って、右バンクの空燃比）は、「最大酸素吸蔵量が小さい方の触媒である右バンク用上流側触媒４３（特定触媒）の下流側空燃比センサ（選択下流側空燃比センサ）である右バンク用下流側空燃比センサ６７Ｒ」の出力値Voxs(R)に基いて制御される。即ち、右バンクの空燃比は、特定触媒である右バンク用上流側触媒４３の状態に基く空燃比要求に従って制御される。
【０１０２】
これに対し、右バンク用上流側触媒４３の最大酸素吸蔵量ＣmaxＲが左バンク用上流側触媒５３の最大酸素吸蔵量ＣmaxＬよりも大きいと、ＣＰＵはステップ６７０にて「Ｎｏ」と判定してステップ６７５に進み、右バンク触媒リーン状態表示フラグＸLeanRに「左バンク用上流側触媒５３の状態を示すフラグＸCCLeanLの反転値」を格納する。なお、任意のフラグＸの反転値とは、フラグＸが「１」であるとき「０」となり、フラグＸが「０」であるとき「１」となる値である。
【０１０３】
この結果、右バンクの空燃比は、「最大酸素吸蔵量が小さい方の触媒である左バンク用上流側触媒５３（特定触媒）の下流側空燃比センサ（選択下流側空燃比センサ）である左バンク用下流側空燃比センサ６７Ｌ」の出力値Voxs(L)に基いて制御される。即ち、右バンクの空燃比は、特定触媒である左バンク用上流側触媒５３の状態に基く空燃比要求に従って制御される。一方、後述する図７の「ステップ７７０及びステップ７５０」に示したように、この場合、左バンク触媒リーン状態表示フラグＸLeanLに「左バンク用上流側触媒５３の状態を示すフラグＸCCLeanLの値」が設定される。その結果、右バンク目標空燃比abyfrRは左バンク目標空燃比abyfrLと逆相にて変化する。換言すると、右バンクの空燃比は、左バンク用上流側触媒５３の状態に応じて制御される。
【０１０４】
＜左バンク燃料噴射量制御＞
第１制御装置のＣＰＵは、図７に示した左バンク燃料噴射制御ルーチンを、任意の気筒のクランク角が吸気上死点前の所定クランク角度（例えば、ＢＴＤＣ９０°ＣＡ）となる毎に繰り返し実行するようになっている。
【０１０５】
従って、所定のタイミングになると、ＣＰＵはステップ７００から処理を開始してステップ７０５に進み、燃料噴射気筒が左バンクに属する気筒（左バンク気筒）であるか否かを判定する。このとき、燃料噴射気筒が左バンク気筒でなければ、ＣＰＵはステップ７０５にて「Ｎｏ」と判定し、ステップ７９５に直接進んで本ルーチンを一旦終了する。
【０１０６】
これに対し、燃料噴射気筒が左バンク気筒であると、ＣＰＵはステップ７０５にて「Ｙｅｓ」と判定してステップ７１０に進み、ステップ６１０と同様に「筒内吸入空気量Ｍｃ（ｋ）」を取得する。
【０１０７】
次に、ＣＰＵはステップ７１５に進み、左バンクフィードバック制御フラグＸＦＢＬの値が「１」であるか否かを判定する。この左バンクフィードバック制御フラグＸＦＢＬの値は、左バンクに対する空燃比のフィードバック制御条件が成立しているときに「１」に設定され、左バンクに対するフィードバック制御条件が成立していないときに「０」に設定される。更に、左バンクフィードバック制御フラグＸＦＢＬの値は、上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
【０１０８】
左バンクに対するフィードバック制御条件は、例えば、以下の総ての条件が成立したときに成立する。
（Ａ１）左バンク用上流側空燃比センサ６６Ｌが活性化している。
（Ａ２）左バンク用下流側空燃比センサ６７Ｌが活性化している。
（Ａ３）機関の負荷ＫＬが閾値負荷ＫＬfbｔｈ以下である。
【０１０９】
左バンクフィードバック制御フラグＸＦＢＬの値が「１」でなければ、ＣＰＵはステップ７１５にて「Ｎｏ」と判定してステップ７２０に進み、左バンク目標空燃比abyfrLを理論空燃比stoichに設定する。
【０１１０】
次に、ＣＰＵは以下に述べるステップ７２５乃至ステップ７４０の処理を順に行い、ステップ７９５に進んで本ルーチンを一旦終了する。
【０１１１】
ステップ７２５：ＣＰＵは、筒内吸入空気量Ｍｃを左バンク目標空燃比abyfrLで除することによって基本燃料噴射量Ｆｂａｓｅを算出する。
【０１１２】
ステップ７３０：ＣＰＵは、図示しないルーチンにより別途計算されている左バンクメインフィードバック量ＫＦmainLを読み込む。左バンクメインフィードバック量ＫＦmainLは左バンク上流側空燃比abyfs(L)（＝左バンク検出空燃比abyfs(L)）が左バンク目標空燃比abyfrLに一致するように周知のＰＩＤ制御に基づいて算出される。なお、左バンクメインフィードバック量ＫＦmainLは、左バンクフィードバック制御フラグＸＦＢＬの値が「０」であるとき「１」に設定される。更に、左バンクメインフィードバック量ＫＦmainLは常に「１」に設定されてもよい。即ち、左バンクメインフィードバック量ＫＦmainLを用いたフィードバック制御は本実施形態において必須ではない。
【０１１３】
ステップ７３５：ＣＰＵは、基本燃料噴射量Ｆｂａｓｅを左バンクメインフィードバック量ＫＦmainLにより補正することによって指示燃料噴射量Ｆｉを算出する。より具体的に述べると、ＣＰＵは、基本燃料噴射量Ｆｂａｓｅに左バンクメインフィードバック量ＫＦmainLを乗じることによって指示燃料噴射量Ｆｉを算出する。
【０１１４】
ステップ７４０：ＣＰＵは、「指示燃料噴射量Ｆｉの燃料」を「燃料噴射気筒に対応して設けられている燃料噴射弁３３」から噴射させるための噴射指示信号を、その燃料噴射弁３３に送出する。
【０１１５】
この結果、左バンク空燃比を左バンク目標空燃比abyfrLに一致させるために必要な量の燃料が燃料噴射気筒の燃料噴射弁３３から噴射させられる。即ち、ステップ７２５乃至ステップ７４０は、「左バンク空燃比が左バンク目標空燃比abyfrLに一致するように指示燃料噴射量Ｆｉを制御する」左バンク指示燃料噴射量制御手段を構成している。
【０１１６】
一方、ＣＰＵがステップ７１５の処理を行う時点において、左バンクフィードバック制御フラグＸＦＢＬの値が「１」であると、ＣＰＵはステップ７１５にて「Ｙｅｓ」と判定してステップ７４５に進み、逆相制御実行フラグＸgyakusoの値が「０」であるか否かを判定する。
【０１１７】
いま、逆相制御実行フラグＸgyakusoの値が「０」であると仮定する。この場合、ＣＰＵはステップ７４５にて「Ｙｅｓ」と判定してステップ７５０に進み、左バンク触媒リーン状態表示フラグＸLeanLに左バンク用上流側触媒５３の状態を示すフラグＸCCLeanLの値を格納する。左バンク用上流側触媒５３の状態を示すフラグＸCCLeanLの値は、後述するルーチンにより左バンク用下流側空燃比センサ６７Ｌの出力値Voxs(L)に基いて設定される。即ち、フラグＸCCLeanLの値は、左バンク用上流側触媒５３の状態が酸素過剰状態であると判定されたとき「１」に設定され、左バンク用上流側触媒５３の状態が酸素不足状態であると判定されたとき「０」に設定される。
【０１１８】
次に、ＣＰＵはステップ７５５に進み、左バンク触媒リーン状態表示フラグＸLeanLの値が「１」であるか否かを判定する。即ち、この場合、左バンク用上流側触媒５３の状態を示すフラグＸCCLeanLの値が「１」であるか否かが実質的に判定される。このとき、左バンク触媒リーン状態表示フラグＸLeanLの値が「１」であると、ＣＰＵはステップ７５５にて「Ｙｅｓ」と判定してステップ７６０に進み、左バンク目標空燃比abyfrLを目標リッチ空燃比afRichに設定する。その後、ＣＰＵはステップ７２５以降に進む。従って、左バンク空燃比は目標リッチ空燃比afRichに一致させられる。
【０１１９】
これに対し、ＣＰＵがステップ７５５の処理を実行する時点において、左バンク触媒リーン状態表示フラグＸLeanLの値が「０」であると、ＣＰＵはステップ７５５にて「Ｎｏ」と判定してステップ７６５に進み、左バンク目標空燃比abyfrLを目標リーン空燃比afLeanに設定する。その後、ＣＰＵはステップ７２５以降に進む。従って、左バンク空燃比は目標リーン空燃比afLeanに一致させられる。
【０１２０】
このように、逆相制御実行フラグＸgyakusoの値が「０」であるとき、左バンク目標空燃比abyfrL（従って、左バンクの空燃比）は左バンク用上流側触媒５３の状態を示すフラグＸCCLeanLに基いて制御される。即ち、左バンク空燃比は、左バンク用下流側空燃比センサ６７Ｌの出力値Voxs(L)に基いて決定される左バンク用上流側触媒５３の状態に応じて制御される。
【０１２１】
これに対し、ＣＰＵがステップ７４５の処理を実行する時点において、逆相制御実行フラグＸgyakusoの値が「１」であると、ＣＰＵはそのステップ７４５にて「Ｎｏ」と判定してステップ７７０に進み、左バンク用上流側触媒５３の最大酸素吸蔵量ＣmaxＬが右バンク用上流側触媒４３の最大酸素吸蔵量ＣmaxＲよりも小さいか否かを判定する。
【０１２２】
このとき、左バンク用上流側触媒５３の最大酸素吸蔵量ＣmaxＬが右バンク用上流側触媒４３の最大酸素吸蔵量ＣmaxＲよりも小さいと、ＣＰＵはステップ７７０にて「Ｙｅｓ」と判定してステップ７５０に進み、左バンク触媒リーン状態表示フラグＸLeanLに左バンク用上流側触媒５３の状態を示すフラグＸCCLeanLの値を格納する。その結果、左バンク目標空燃比abyfrL（従って、左バンクの空燃比）は、「最大酸素吸蔵量が小さい方の触媒である左バンク用上流側触媒５３（特定触媒）の下流側空燃比センサ（選択下流側空燃比センサ）である左バンク用下流側空燃比センサ６７Ｌ」の出力値Voxs(L)に基いて制御される。即ち、左バンクの空燃比は、特定触媒である左バンク用上流側触媒５３の状態に基く空燃比要求に従って制御される。
【０１２３】
これに対し、左バンク用上流側触媒５３の最大酸素吸蔵量ＣmaxＬが右バンク用触媒４３の最大酸素吸蔵量ＣmaxＲよりも大きいと、ＣＰＵはステップ７７０にて「Ｎｏ」と判定してステップ７７５に進み、左バンク触媒リーン状態表示フラグＸLeanLに「右バンク用上流側触媒４３の状態を示すフラグＸCCLeanRの反転値」を格納する。
【０１２４】
この結果、左バンクの空燃比は、「最大酸素吸蔵量が小さい方の触媒である右バンク用上流側触媒４３（特定触媒）の下流側空燃比センサ（選択下流側空燃比センサ）である右バンク用下流側空燃比センサ６７Ｒ」の出力値Voxs(R)に基いて制御される。即ち、左バンクの空燃比は、特定触媒である右バンク用上流側触媒４３の状態に基く空燃比要求に従って制御される。一方、この場合、前述した図６の「ステップ６７０及びステップ６５０」に示したように、右バンク触媒リーン状態表示フラグＸLeanRに「右バンク用上流側触媒４３の状態を示すフラグＸCCLeanRの値」が設定される。その結果、左バンク目標空燃比abyfrLは右バンク目標空燃比abyfrRと逆相にて変化する。即ち、左バンクの空燃比は、右バンク用上流側触媒４３の状態に応じて制御される。
【０１２５】
＜触媒状態判定＞
ＣＰＵは図８にフローチャートにより示した「触媒状態判定ルーチン（要求空燃比決定ルーチン）」を所定時間ｔｓの経過毎に繰り返し実行している。従って、所定のタイミングになると、ＣＰＵはステップ８００から処理を開始してステップ８１０に進み、「現時点の右バンク用下流側空燃比センサ６７Ｒの出力値Voxs(R)」から「前回の右バンク用下流側空燃比センサ６７Ｒの出力値VoxsRold」を減じることにより、所定時間ｔｓ（単位時間）あたりの出力値Voxs(R)の変化量ΔVoxsRを算出する。前回の出力値VoxsRoldは、次のステップ８１５にて更新される値であり、現時点から所定時間ｔｓだけ前の時点の出力値Voxs(R)（本ルーチンが前回実行されたときの出力値Voxs(R)）である。変化量ΔVoxsRは変化速度ΔVoxsR（第１下流側空燃比センサ出力相関値）とも称呼される。次に、ＣＰＵはステップ８１５に進み、現時点の出力値Voxs(R)を「前回の出力値VoxsRold」として記憶する。
【０１２６】
次に、ＣＰＵはステップ８２０に進み、右バンク用上流側触媒４３の状態を示すフラグＸCCLeanRの値が「１」であるか否かを判定する。右バンク用上流側触媒４３の状態を示すフラグＸCCLeanRの値は、上述したイニシャルルーチンにおいて「１」に設定されるようになっている。更に、右バンク用上流側触媒４３の状態を示すフラグＸCCLeanRの値は、後述するように、右バンク用下流側空燃比センサ６７Ｒの出力値Voxs(R)に基づいて触媒４３の状態が酸素不足状態（リッチ状態）であると判定されたときに「０」に設定され、右バンク用下流側空燃比センサ６７Ｒの出力値Voxs(R)に基づいて触媒４３の状態が酸素過剰状態（リーン状態）であると判定されたときに「１」に設定される。
【０１２７】
いま、右バンク用上流側触媒４３の状態を示すフラグＸCCLeanRの値が「１」であると仮定する。この場合、ＣＰＵはステップ８２０にて「Ｙｅｓ」と判定してステップ８２５に進み、変化速度ΔVoxsRが正であるか否かを判定する。即ち、ＣＰＵは、出力値Voxs(R)が増大しているか否かを判定する。このとき、変化速度ΔVoxsRが正でなければ、ＣＰＵはステップ８２５にて「Ｎｏ」と判定し、ステップ８５５に直接進む。
【０１２８】
これに対し、変化速度ΔVoxsRが正であると、ＣＰＵはステップ８２５にて「Ｙｅｓ」と判定してステップ８３０に進み、変化速度ΔVoxsRの大きさ｜ΔVoxsR｜が右バンク用リッチ判定値ｄRichRthよりも大きいか否かを判定する。このとき、大きさ｜ΔVoxsR｜が右バンク用リッチ判定値ｄRichRth以下であると、ＣＰＵはステップ８３０にて「Ｎｏ」と判定し、ステップ８５５に直接進む。なお、右バンク用リッチ判定値ｄRichRthの値は、後述する図１０のルーチンにより変更される。
【０１２９】
ＣＰＵがステップ８３０の処理を実行する時点において、変化速度ΔVoxsRの大きさ｜ΔVoxsR｜が右バンク用リッチ判定値ｄRichRthよりも大きいと、ＣＰＵはそのステップ８３０にて「Ｙｅｓ」と判定してステップ８３５に進み、右バンク用上流側触媒４３の状態を示すフラグＸCCLeanRの値を「０」に設定する。即ち、出力値Voxs(R)が増大していて且つその変化速度ΔVoxsRの大きさ｜ΔVoxsR｜が右バンク用リッチ判定値ｄRichRthよりも大きい場合、ＣＰＵは「右バンク用上流側触媒４３の状態は酸素不足状態である。」と判定し、右バンク用上流側触媒４３の状態を示すフラグＸCCLeanRの値を「０」に設定する。
【０１３０】
この状態（即ち、右バンク用上流側触媒４３の状態を示すフラグＸCCLeanRの値が「０」に設定された状態）において、ＣＰＵが所定時間ｔｓ後にステップ８００から処理を再び開始すると、ＣＰＵはステップ８１０及びステップ８１５を経由してステップ８２０に進み、そのステップ８２０にて「Ｎｏ」と判定してステップ８４０に進む。
【０１３１】
ＣＰＵは、ステップ８４０にて変化速度ΔVoxsRが負であるか否かを判定する。即ち、ＣＰＵは、出力値Voxs(R)が減少しているか否かを判定する。このとき、変化速度ΔVoxsRが負でなければ、ＣＰＵはステップ８４０にて「Ｎｏ」と判定し、ステップ８５５に直接進む。
【０１３２】
これに対し、変化速度ΔVoxsRが負であると、ＣＰＵはステップ８４０にて「Ｙｅｓ」と判定してステップ８４５に進み、変化速度ΔVoxsRの大きさ｜ΔVoxsR｜が右バンク用リーン判定値ｄLeanRthよりも大きいか否かを判定する。このとき、大きさ｜ΔVoxsR｜が右バンク用リーン判定値ｄLeanRth以下であると、ＣＰＵはステップ８４５にて「Ｎｏ」と判定し、ステップ８５５に直接進む。なお、右バンク用リーン判定値ｄLeanRthの値は、後述する図１０のルーチンにより変更される。
【０１３３】
これに対し、変化速度ΔVoxsRの大きさ｜ΔVoxsR｜が右バンク用リーン判定値ｄLeanRthよりも大きいと、ＣＰＵはステップ８４５にて「Ｙｅｓ」と判定してステップ８５０に進み、右バンク用上流側触媒４３の状態を示すフラグＸCCLeanRの値を「１」に設定する。即ち、出力値Voxs(R)が減少していて且つその変化速度ΔVoxsRの大きさ｜ΔVoxsR｜が右バンク用リーン判定値ｄLeanRthよりも大きい場合、ＣＰＵは「右バンク用上流側触媒４３の状態が酸素過剰状態である。」と判定し、右バンク用上流側触媒４３の状態を示すフラグＸCCLeanRを「１」に設定する。
【０１３４】
なお、ＣＰＵは、右バンク用上流側触媒４３の状態を示すフラグＸCCLeanRの値が「１」である場合、出力値Voxs(R)がリッチ判定閾値VRichthよりも大きくなったとき、右バンク用上流側触媒４３の状態を示すフラグＸCCLeanRの値を「０」に設定してもよい。同様に、右バンク用上流側触媒４３の状態を示すフラグＸCCLeanRの値が「０」である場合、出力値Voxs(R)がリーン判定閾値VLeanthよりも小さくなったとき、右バンク用上流側触媒４３の状態を示すフラグＸCCLeanRの値を「１」に設定してもよい。この場合、リッチ判定閾値VRichthは中央値Vmid以下の値であってもよい。リーン判定閾値VLeanthは中央値Vmid以上の値であってもよい。
【０１３５】
このように右バンク用上流側触媒４３の状態を示すフラグＸCCLeanRの値は、右バンク用下流側空燃比センサ６７Ｒの出力値Voxs(R)に基づいて、「１」と「０」との何れかの値に交互に設定される。
【０１３６】
ＣＰＵは、図８のステップ８５５に進んだとき、「現時点の左バンク用下流側空燃比センサ６７Ｌの出力値Voxs(L)」から「前回の左バンク用下流側空燃比センサ６７Ｌの出力値VoxsLold」を減じることにより、所定時間ｔｓ（単位時間）あたりの出力値Voxs(L)の変化量ΔVoxsLを算出する。前回の出力値VoxsLoldは、次のステップ８６０にて更新される値であり、現時点から所定時間ｔｓだけ前の時点の出力値Voxs(L)（本ルーチンが前回実行されたときの出力値Voxs(L)）である。変化量ΔVoxsLは変化速度ΔVoxsL（第２下流側空燃比センサ出力相関値）とも称呼される。次に、ＣＰＵはステップ８６０に進み、現時点の出力値Voxs(L)を「前回の出力値VoxsLold」として記憶する。
【０１３７】
次に、ＣＰＵはステップ８６５に進み、左バンク用上流側触媒５３の状態を示すフラグＸCCLeanLの値が「１」であるか否かを判定する。左バンク用上流側触媒５３の状態を示すフラグＸCCLeanLの値は、上述したイニシャルルーチンにおいて「１」に設定されるようになっている。更に、左バンク用上流側触媒５３の状態を示すフラグＸCCLeanLの値は、後述するように、左バンク用下流側空燃比センサ６７Ｌの出力値Voxs(L)に基づいて触媒５３の状態が酸素不足状態（リッチ状態）であると判定されたときに「０」に設定され、左バンク用下流側空燃比センサ６７Ｌの出力値Voxs(L)に基づいて触媒５３の状態が酸素過剰状態（リーン状態）であると判定されたときに「１」に設定される。
【０１３８】
いま、左バンク用上流側触媒５３の状態を示すフラグＸCCLeanLの値が「１」であると仮定する。この場合、ＣＰＵはステップ８６５にて「Ｙｅｓ」と判定してステップ８７０に進み、変化速度ΔVoxsLが正であるか否かを判定する。即ち、ＣＰＵは、出力値Voxs(L)が増大しているか否かを判定する。このとき、変化速度ΔVoxsLが正でなければ、ＣＰＵはステップ８７０にて「Ｎｏ」と判定し、ステップ８９５に直接進んで本ルーチンを一旦終了する。
【０１３９】
これに対し、変化速度ΔVoxsLが正であると、ＣＰＵはステップ８７０にて「Ｙｅｓ」と判定してステップ８７５に進み、変化速度ΔVoxsLの大きさ｜ΔVoxsL｜が左バンク用リッチ判定値ｄRichLthよりも大きいか否かを判定する。このとき、大きさ｜ΔVoxsL｜が左バンク用リッチ判定値ｄRichLth以下であると、ＣＰＵはステップ８７５にて「Ｎｏ」と判定し、ステップ８９５に直接進んで本ルーチンを一旦終了する。なお、左バンク用リッチ判定値ｄRichLthの値は、後述する図１０のルーチンにより変更される。
【０１４０】
ＣＰＵがステップ８７５の処理を実行する時点において、変化速度ΔVoxsLの大きさ｜ΔVoxsL｜が左バンク用リッチ判定値ｄRichLthよりも大きいと、ＣＰＵはそのステップ８７５にて「Ｙｅｓ」と判定してステップ８８０に進み、左バンク用上流側触媒５３の状態を示すフラグＸCCLeanLの値を「０」に設定する。即ち、出力値Voxs(L)が増大していて且つその変化速度ΔVoxsLの大きさ｜ΔVoxsL｜が左バンク用リッチ判定値ｄRichLthよりも大きい場合、ＣＰＵは「左バンク用上流側触媒５３の状態は酸素不足状態である。」と判定し、左バンク用上流側触媒５３の状態を示すフラグＸCCLeanLの値を「０」に設定する。
【０１４１】
この状態（即ち、左バンク用上流側触媒５３の状態を示すフラグＸCCLeanLの値が「０」に設定された状態）において、ＣＰＵが所定時間ｔｓ後にステップ８６５に進むと、ＣＰＵは、そのステップ８６５にて「Ｎｏ」と判定してステップ８８５に進む。
【０１４２】
ＣＰＵは、ステップ８８５にて変化速度ΔVoxsLが負であるか否かを判定する。即ち、ＣＰＵは、出力値Voxs(L)が減少しているか否かを判定する。このとき、変化速度ΔVoxsLが負でなければ、ＣＰＵはステップ８８５にて「Ｎｏ」と判定し、ステップ８９５に直接進んで本ルーチンを一旦終了する。
【０１４３】
これに対し、変化速度ΔVoxsLが負であると、ＣＰＵはステップ８８５にて「Ｙｅｓ」と判定してステップ８９０に進み、変化速度ΔVoxsLの大きさ｜ΔVoxsL｜が左バンク用リーン判定値ｄLeanLthよりも大きいか否かを判定する。このとき、大きさ｜ΔVoxsL｜が左バンク用リーン判定値ｄLeanLth以下であると、ＣＰＵはステップ８９０にて「Ｎｏ」と判定し、ステップ８９５に直接進んで本ルーチンを一旦終了する。なお、左バンク用リーン判定値ｄLeanLthの値は、後述する図１０のルーチンにより変更される。
【０１４４】
これに対し、変化速度ΔVoxsLの大きさ｜ΔVoxsL｜が左バンク用リーン判定値ｄLeanLthよりも大きいと、ＣＰＵはステップ８９０にて「Ｙｅｓ」と判定してステップ８９２に進み、左バンク用上流側触媒５３の状態を示すフラグＸCCLeanLの値を「１」に設定する。即ち、出力値Voxs(L)が減少していて且つその変化速度ΔVoxsLの大きさ｜ΔVoxsL｜が左バンク用リーン判定値ｄLeanLthよりも大きい場合、ＣＰＵは「左バンク用上流側触媒５３の状態が酸素過剰状態である。」と判定し、左バンク用上流側触媒５３の状態を示すフラグＸCCLeanLを「１」に設定する。
【０１４５】
なお、ＣＰＵは、左バンク用上流側触媒５３の状態を示すフラグＸCCLeanLの値が「１」である場合、出力値Voxs(L)がリッチ判定閾値VRichthよりも大きくなったとき、左バンク用上流側触媒５３の状態を示すフラグＸCCLeanLの値を「０」に設定してもよい。同様に、左バンク用上流側触媒５３の状態を示すフラグＸCCLeanLの値が「０」である場合、出力値Voxs(L)がリーン判定閾値VLeanthよりも小さくなったとき、左バンク用上流側触媒５３の状態を示すフラグＸCCLeanLの値を「１」に設定してもよい。
【０１４６】
このように左バンク用上流側触媒５３の状態を示すフラグＸCCLeanLの値は、左バンク用下流側空燃比センサ６７Ｌの出力値Voxs(L)に基づいて、「１」と「０」との何れかの値に交互に設定される。
【０１４７】
＜非許容振動発生判定＞
ＣＰＵは図９にフローチャートにより示した「非許容振動発生判定ルーチン」を所定時間ｔｓの経過毎に繰り返し実行している。従って、所定のタイミングになると、ＣＰＵはステップ９００から処理を開始してステップ９１０に進み、逆相制御実行フラグＸgyakusoの値が「０」か否かを判定する。このとき、逆相制御実行フラグＸgyakusoの値が「１」であると、ＣＰＵはステップ９１０にて「Ｎｏ」と判定し、ステップ９９５に直接進んで本ルーチンを一旦終了する。
【０１４８】
これに対し、逆相制御実行フラグＸgyakusoの値が「０」であると、ＣＰＵはステップ９１０にて「Ｙｅｓ」と判定してステップ９２０に進み、逆相制御移行要求フラグＸshiftの値が「０」であるか否かを判定する。この逆相制御移行要求フラグＸshiftの値は上述したイニシャルルーチンにおいて「０」に設定されるようになっている。更に、逆相制御移行要求フラグＸshiftの値は後述するルーチンにより、逆相制御への移行制御を実行する必要が生じた場合（非許容振動発生が発生していると判定された場合）に「１」に設定される。このとき、逆相制御移行要求フラグＸshiftの値が「１」であると、ＣＰＵはステップ９２０にて「Ｎｏ」と判定し、ステップ９９５に直接進んで本ルーチンを一旦終了する。
【０１４９】
これに対し、逆相制御移行要求フラグＸshiftの値が「０」であると、ＣＰＵはステップ９２０にて「Ｙｅｓ」と判定してステップ９３０に進み、「右バンク用上流側触媒４３の状態を示すフラグＸCCLeanRが「１」から「０」へと変化した最新のタイミング（第１タイミング）」と「左バンク用上流側触媒５３の状態を示すフラグＸCCLeanLの値が「１」から「０」へと変化した最新のタイミング（第２タイミング）」との時間差が極めて小さい所定値である閾値時間（例えば、実質的に「０」に近い値）Ｔｔｈ以内であるか否かを判定する。即ち、ＣＰＵは、第１タイミングと第２タイミングとが同期しているか否かを判定する。このとき、第１タイミングと第２タイミングとが同期していなければ、ＣＰＵはステップ９３０にて「Ｎｏ」と判定し、ステップ９９５に直接進んで本ルーチンを一旦終了する。
【０１５０】
これに対し、第１タイミングと第２タイミングとが同期していると、ＣＰＵはステップ９３０にて「Ｙｅｓ」と判定してステップ９４０に進み、「右バンク用上流側触媒４３の状態を示すフラグＸCCLeanRが「０」から「１」へと変化した最新のタイミング（第３タイミング）」と「左バンク用上流側触媒５３の状態を示すフラグＸCCLeanLの値が「０」から「１」へと変化した最新のタイミング（第４タイミング）」との時間差が極めて小さい所定値である閾値時間（例えば、実質的に「０」に近い値）Ｔｔｈ以内であるか否かを判定する。即ち、ＣＰＵは、第３タイミングと第４タイミングとが同期しているか否かを判定する。このとき、第３タイミングと第４タイミングとが同期していなければ、ＣＰＵはステップ９４０にて「Ｎｏ」と判定し、ステップ９９５に直接進んで本ルーチンを一旦終了する。
【０１５１】
これに対し、第３タイミングと第４タイミングとが同期していると、ＣＰＵはステップ９４０にて「Ｙｅｓ」と判定してステップ９５０に進み、触媒状態の切替わり周期相関時間（目標空燃比周期相関時間）を取得する。より具体的に述べると、ＣＰＵは、「右バンク用上流側触媒４３の状態を示すフラグＸCCLeanRが「１」から「０」へと変化した最新のタイミング（第１タイミング）」から「フラグＸCCLeanRが「０」から「１」へと変化した最新のタイミング（第３タイミング）」までの時間を触媒状態の切替わり周期相関時間Ｔとして取得する。
【０１５２】
なお、ＣＰＵは、第３タイミングから第１タイミングまでの時間、前回の第１タイミングから今回の第１タイミングまでの時間、前回の第３タイミングから今回の第３タイミングまでの時間、第２タイミングから第４タイミングまでの時間、第４タイミングから第２タイミングまでの時間、前回の第２タイミングから今回の第２タイミングまでの時間、及び、前回の第４タイミングから今回の第４タイミングまでの時間、を触媒状態の切替わり周期相関時間Ｔとして取得してもよい。
【０１５３】
次いで、ＣＰＵはステップ９６０に進み、空燃比差ΔＡＦに基づいてトルク段差ΔＴｑを取得する。空燃比差ΔＡＦは、目標リーン空燃比afLeanと目標リッチ空燃比afRichとの差の大きさである。トルク段差ΔＴｑは、ある気筒に供給される混合気の空燃比が目標リッチ空燃比afRichに一致している場合にその気筒における燃焼により発生する機関１０の発生トルクから、ある気筒に供給される混合気の空燃比が目標リーン空燃比afLeanに一致している場合にその気筒における燃焼により発生する機関１０の発生トルクを、減じた値である（図１の（Ａ）を参照。）。トルク段差ΔＴｑは、図９のブロックＢ１内に示したように、空燃比差ΔＡＦが大きいほど大きい値となるように求められる。なお、本実施形態において、目標リーン空燃比afLeanは一定値でり、且つ、目標リッチ空燃比afRichは一定値である。従って、空燃比差ΔＡＦは一定値であるので、ステップ９６０は省略され得る。即ち、ＣＰＵは、ステップ９６０にて、予めＲＯＭに記憶しているトルク段差ΔＴｑを読み込んでもよい。
【０１５４】
次に、ＣＰＵはステップ９７０に進み、ステップ９５０にて取得された周期相関時間Ｔと、ステップ９６０にて取得されたトルク段差ΔＴｑと、に基いて、現時点において許容し難い振動（非許容振動）が発生しているか否かを判定する。より具体的に述べると、ＣＰＵは、図９のブロックＢ２内に示したマップを記憶している。このマップは、周期相関時間Ｔとトルク段差ΔＴｑとの組み合わせにより表される領域を、非許容振動発生領域と非許容振動非発生領域とに区分している。ＣＰＵは、このマップにステップ９５０にて取得された周期相関時間Ｔと、ステップ９６０にて取得されたトルク段差ΔＴｑと、を適用することにより、現時点の周期相関時間Ｔ及びトルク段差ΔＴｑが非許容振動発生領域内にあるか否かを判定することにより、非許容振動が発生しているか否かを判定する。このマップによれば、周期相関時間Ｔが大きくなるほど、より小さいトルク段差ΔＴｑにて非許容振動が発生すると判定される。なお、本例において、空燃比差ΔＡＦは一定値であるから、ステップ９７０は、周期相関時間Ｔが許容閾値時間以上であるか否かを判定するステップに置換され得る。
【０１５５】
そして、ＣＰＵはステップ９７０にて非許容振動が発生していると判定した場合、ステップ９８０に進んで逆相制御移行要求フラグＸshiftの値を「１」に設定し、その後、ステップ９９５に進んで本ルーチンを一旦終了する。これに対し、ＣＰＵはステップ９７０にて非許容振動が発生していないと判定した場合、ステップ９９０に進んで逆相制御移行要求フラグＸshiftの値を「０」に設定し、その後、ステップ９９５に進んで本ルーチンを一旦終了する。
【０１５６】
このように、ＣＰＵは、右バンク用上流側触媒４３の状態を示すフラグＸCCLeanRの値の変化と、左バンク用上流側触媒５３の状態を示すフラグＸCCLeanLの値の変化と、が偶発的且つ実質的に同期している場合であり、且つ、非許容振動が発生していると判定した場合、逆相制御移行要求フラグＸshiftの値を「１」に設定する。なお、フラグＸCCLeanRの値の位相と、フラグＸCCLeanLの値の位相と、は特別の処理を行わない場合であっても、時間の経過に応じて次第に異なる位相に変化する（同期状態が次第に崩れる）。
【０１５７】
＜閾値設定＞
ＣＰＵは図１０にフローチャートにより示した「閾値設定ルーチン」を所定時間ｔｓの経過毎に繰り返し実行している。従って、所定のタイミングになると、ＣＰＵはステップ１０００から処理を開始してステップ１０１０に進み、逆相制御実行フラグＸgyakusoの値が「０」か否かを判定する。
【０１５８】
いま、逆相制御実行フラグＸgyakusoの値が「０」であり、且つ、逆相制御移行要求フラグＸshiftの値も「０」であると仮定する。この場合、ＣＰＵはステップ１０１０にて「Ｙｅｓ」と判定してステップ１０２０に進み、逆相制御移行要求フラグＸshiftの値が「０」であるか否かを判定する。更に、この場合、ＣＰＵはステップ１０２０にて「Ｙｅｓ」と判定してステップ１０３０に進み、以下に述べるの処理を行い、その後、ステップ１０９５に進んで本ルーチンを一旦終了する。なお、ＣＰＵは、逆相制御実行フラグＸgyakusoの値が「１」である場合にも、ステップ１０１０からステップ１０３０に直接進む。
【０１５９】
ＣＰＵは、右バンク用リッチ判定値ｄRichRthに基準右バンク用リッチ判定値ｄRichRth0を格納する。
ＣＰＵは、右バンク用リーン判定値ｄLeanRthに基準右バンク用リーン判定値ｄLeanRth0を格納する。
ＣＰＵは、左バンク用リッチ判定値ｄRichLthに基準左バンク用リッチ判定値ｄRichLth0を格納する。
ＣＰＵは、左バンク用リーン判定値ｄLeanLthに基準左バンク用リーン判定値ｄLeanLth0を格納する。
【０１６０】
この状態において、非許容振動が発生していると判定され、それにより、逆相制御移行要求フラグＸshiftの値が「１」に設定されると、ＣＰＵはステップ１０２０に進んだとき、そのステップ１０２０にて「Ｎｏ」と判定してステップ１０４０に進み、右バンク用上流側触媒４３の右バンク用上流側触媒４３の最大酸素吸蔵量ＣmaxＲが左バンク用上流側触媒５３の最大酸素吸蔵量ＣmaxＬよりも大きいか否かを判定する。
【０１６１】
なお、右バンク用上流側触媒４３及び左バンク用上流側触媒５３の各最大酸素吸蔵量は周知の手法により別途取得される。例えば、右バンク用上流側触媒４３の最大酸素吸蔵量ＣmaxＲは、右バンク用上流側触媒４３の状態が酸素不足状態であると判定された時点において右バンク目標空燃比abyfrRを所定のリーン空燃比に設定し、その後に右バンク上流側空燃比abyfs(R)と理論空燃比stoichとの差に基いて酸素の過不足量ΔＯ２（ΔＯ２＝ｋ・ｍｆｒ・（abyfs(R)−stoich））を所定時間の経過毎に求め（ｋは大気中の酸素の比率であり０．２３、ｍｆｒはその所定時間に右バンク気筒に供給された燃料量）、その過不足量ΔＯ２を「右バンク用上流側触媒４３の状態が酸素過剰状態であると判定される時点」まで積算することにより求められる。
【０１６２】
このとき、右バンク用上流側触媒４３の最大酸素吸蔵量ＣmaxＲが左バンク用上流側触媒５３の最大酸素吸蔵量ＣmaxＬよりも大きいと、ＣＰＵはステップ１０４０にて「Ｙｅｓ」と判定してステップ１０５０に進み、基準右バンク用リッチ判定値ｄRichRth0から正の所定値（微小な値）Ａを減じた値を新たな右バンク用リッチ判定値ｄRichRthに設定する。更に、ＣＰＵは、ステップ１０５０にて、基準右バンク用リーン判定値ｄLeanRth0から正の所定値（微小な値）Ｂを減じた値を新たな右バンク用リーン判定値ｄLeanRthに設定する。この結果、図８の「ステップ８３０及びステップ８４５」での「Ｙｅｓ」との判定が、「右バンク用リーン判定値ｄLeanRthが基準右バンク用リーン判定値ｄLeanRth0に設定され、且つ、右バンク用リッチ判定値ｄRichRthが基準右バンク用リッチ判定値ｄRichRth0に設定されている場合」よりも早期に発生する。従って、右バンクに対する目標空燃比(右バンク目標空燃比abyfrR）の周期が短くなる。
【０１６３】
なお、ＣＰＵは、所定値Ａ及び所定値Ｂと、右バンク用上流側触媒４３の状態を示すフラグＸCCLeanRの周期（従って、右バンク目標空燃比abyfrRの周期）と、の関係をＲＯＭに記憶していて、その関係に「前記同期時における触媒状態の切替わり周期相関時間Ｔ」を適用することにより、所定値Ａ及び所定値Ｂを決定してもよい。更に、ＣＰＵは、右バンク用上流側触媒４３の触媒状態の切替わり周期相関時間と、左バンク用上流側触媒５３の触媒状態の切替わり周期相関時間と、が一致するように、それらの時間を計測し、計測された時間の差に基いて所定値Ａ及び所定値Ｂを変更してもよい。
【０１６４】
これに対し、ＣＰＵがステップ１０４０の処理を実行する時点において、右バンク用上流側触媒４３の最大酸素吸蔵量ＣmaxＲが左バンク用上流側触媒５３の最大酸素吸蔵量ＣmaxＬ以下であると、ＣＰＵはそのステップ１０４０にて「Ｎｏ」と判定してステップ１０６０に進み、基準左バンク用リッチ判定値ｄRichLth0から正の所定値（微小な値）Ｃを減じた値を新たな左バンク用リッチ判定値ｄRichLthに設定する。更に、ＣＰＵは、ステップ１０６０にて、基準左バンク用リーン判定値ｄLeanLth0から正の所定値（微小な値）Ｄを減じた値を新たな左バンク用リーン判定値ｄLeanLthに設定する。この結果、図９の「ステップ８７５及びステップ８９０」での「Ｙｅｓ」との判定が「左バンク用リッチ判定値ｄRichLthが基準左バンク用リッチ判定値ｄRichLth0に設定され、且つ、左バンク用リーン判定値ｄLeanLthが基準左バンク用リーン判定値ｄLeanLth0に設定されている場合」よりも早期に発生する。従って、左バンクに対する目標空燃比の周期が短くなる。
【０１６５】
なお、ＣＰＵは、所定値Ｃ及び所定値Ｄと、左バンク用上流側触媒５３の状態を示すフラグＸCCLeanLの周期（従って、左バンク目標空燃比abyfrLの周期）と、の関係をＲＯＭに記憶していて、その関係に「前記同期時における触媒状態の切替わり周期相関時間Ｔ」を適用することにより、所定値Ｃ及び所定値Ｄを決定してもよい。更に、ＣＰＵは、右バンク用上流側触媒４３の触媒状態の切替わり周期相関時間と、左バンク用上流側触媒５３の触媒状態の切替わり周期相関時間と、が一致するように、それらの時間を計測し、計測された時間の差に基いて所定値Ｃ及び所定値Ｄを変更してもよい。
【０１６６】
この状態が継続すると、最大酸素吸蔵量が大きい方の触媒である「非特定触媒」を排気通路に備えるバンク（非特定バンク、図５において左バンク）の目標空燃比の周期が次第に短くなる。よって、図５の（Ｂ）に示したように、左バンク触媒リーン状態表示フラグＸLeanLの変化タイミングと同期する左バンク目標空燃比abyfrLの変化タイミングと、右バンク触媒リーン状態表示フラグＸLeanRと同期する右バンク目標空燃比abyfrRの変化タイミングと、の同期が崩れ、やがて、図５の（Ｃ）に示したように、右バンク目標空燃比abyfrRと左バンク目標空燃比abyfrLとは互いに逆相にて変化するようになる。この時点（逆相成立時）は、次に述べる図１１に示したルーチンにより検出される。
【０１６７】
＜逆相制御への移行制御終了判定＞
ＣＰＵは図１１にフローチャートにより示した「逆相制御への移行制御終了判定ルーチン」を所定時間ｔｓの経過毎に繰り返し実行している。従って、所定のタイミングになると、ＣＰＵはステップ１１００から処理を開始してステップ１１１０に進み、逆相制御移行要求フラグＸshiftの値が「１」であるか否かを判定する。
【０１６８】
このとき、逆相制御移行要求フラグＸshiftの値が「０」であると、ＣＰＵはステップ１１１０にて「Ｎｏ」と判定し、ステップ１１９５に直接進んで本ルーチンを一旦終了する。
【０１６９】
これに対し、逆相制御移行要求フラグＸshiftの値が「１」であると、ＣＰＵはステップ１１１０にて「Ｙｅｓ」と判定してステップ１１２０に進み、「右バンク用上流側触媒４３の状態を示すフラグＸCCLeanRが「１」から「０」へと変化した最新のタイミング（第１タイミング）」と「左バンク用上流側触媒５３の状態を示すフラグＸCCLeanLの値が「０」から「１」へと変化した最新のタイミング（第４タイミング）」との時間差が極めて小さい所定値である閾値時間（例えば、実質的に「０」に近い値）Ｔｔｈ以内であるか否かを判定する。即ち、ＣＰＵは、第１タイミングと第４タイミングとが同期しているか否かを判定する。
【０１７０】
このとき、第１タイミングと第４タイミングとが同期していると、ＣＰＵはステップ１１２０にて「Ｙｅｓ」と判定してステップ１１３０に進み、逆相制御移行要求フラグＸshiftの値を「０」に設定する。次いで、ＣＰＵはステップ１１４０に進み、逆相制御実行フラグＸgyakusoの値を「１」に設定する。その後、ＣＰＵは１１９５に進み本ルーチンを一旦終了する。この結果、逆相制御への移行制御が終了し、逆相制御が開始する。
【０１７１】
これに対し、第１タイミングと第４タイミングとが同期していなければ、ＣＰＵはステップ１１２０にて「Ｎｏ」と判定し、ステップ１１５０に進み、「右バンク用上流側触媒４３の状態を示すフラグＸCCLeanRが「０」から「１」へと変化した最新のタイミング（第３タイミング）」と「左バンク用上流側触媒５３の状態を示すフラグＸCCLeanLの値が「１」から「０」へと変化した最新のタイミング（第２タイミング）」との時間差が極めて小さい所定値である閾値時間（例えば、実質的に「０」に近い値）Ｔｔｈ以内であるか否かを判定する。即ち、ＣＰＵは、第２タイミングと第３タイミングとが同期しているか否かを判定する。このとき、第２タイミングと第３タイミングとが同期していなければ、ＣＰＵはステップ１１５０にて「Ｎｏ」と判定し、ステップ１１９５に直接進んで本ルーチンを一旦終了する。
【０１７２】
これに対し、第２タイミングと第３タイミングとが同期していると、ＣＰＵはステップ１１５０にて「Ｙｅｓ」と判定してステップ１１３０に進み、逆相制御移行要求フラグＸshiftの値を「０」に設定する。次いで、ＣＰＵはステップ１１４０に進み、逆相制御実行フラグＸgyakusoの値を「１」に設定する。その後、ＣＰＵは１１９５に進み本ルーチンを一旦終了する。この結果、逆相制御への移行制御が終了し、逆相制御が開始する。
【０１７３】
なお、ＣＰＵは、ステップ１１２０に記載した条件及びステップ１１５０に記載した条件の両者が共に成立したときにのみ、ステップ１１３０及びステップ１１４０に進んでも良い。
【０１７４】
以上、説明したように、第１制御装置は、複数の気筒を含む第１気筒群及び複数の気筒を含む第２気筒群を備える本体部２０を有する内燃機関１０に適用される。
【０１７５】
更に、第１制御装置は、
前記第１気筒群の前記複数の気筒から排出される排ガスを通過させる第１排気通路に配設された第１触媒（右バンク用上流側触媒４３）と、
前記第１排気通路の前記第１触媒の下流に配設された第１下流側空燃比センサ（右バンク用下流側空燃比センサ６７Ｒ）と、
前記第２気筒群の前記複数の気筒から排出される排ガスを通過させる第２排気通路に配設された第２触媒（左バンク用上流側触媒５３）と、
前記第２排気通路の前記第２触媒の下流に配設された第２下流側空燃比センサ（左バンク用上流側空燃比センサ６６Ｌ）と、
を備える。
【０１７６】
更に、第１制御装置は、
前記第１触媒及び前記第２触媒のうち最大酸素吸蔵量が小さい方の特定触媒の下流に配設されている「前記第１下流側空燃比センサ及び前記第２下流側空燃比センサのうちの何れか一方（選択下流側空燃比センサ）」の出力値に相関を有する値である選択下流側空燃比センサ出力相関値（出力値Voxs(R)の変化量ΔVoxsR、及び、出力値Voxs(L)の変化量ΔVoxsL、のうちの選択下流側空燃比センサに対応する方）と所定のリーン要求判定値（右バンク用リッチ判定値ｄRichRth及び左バンク用リッチ判定値ｄRichLthのうちの選択下流側空燃比センサに対応する方）との比較の結果に基づいて同特定触媒に対するリーン要求が発生したか否かを判定するとともに、前記選択下流側空燃比センサ出力相関値と所定のリッチ要求判定値（右バンク用リーン判定値ｄLeanRth及び左バンク用リーン判定値ｄLeanLthのうちの選択下流側空燃比センサに対応する方）との比較に基づいて前記特定触媒に対するリッチ要求が発生したか否かを判定し（図８を参照。）、
前記リーン要求が発生したと判定された時点から前記リッチ要求が発生したと判定される時点までのリーン要求発生期間において前記特定触媒に排ガスを排出する前記第１気筒群及び前記第２気筒群のうちの一方の前記複数の気筒のそれぞれに供給される混合気の空燃比を理論空燃比よりも大きい空燃比に制御するとともに前記第１気筒群及び前記第２気筒群のうちの他方の前記複数の気筒のそれぞれに供給される混合気の空燃比を理論空燃比よりも小さい空燃比に制御し（図６の「ステップ６４５、ステップ６７０、ステップ６５０、ステップ６７５、及び、ステップ６５５乃至ステップ６６５」、並びに、図７の「ステップ７４５、ステップ７７０、ステップ７５０、ステップ７７５、及び、ステップ７５５乃至ステップ７６５」を特に参照。）、
前記リッチ要求が発生したと判定された時点から前記リーン要求が発生したと判定される時点までのリッチ要求発生期間において前記特定触媒に排ガスが供給される前記第１気筒群及び前記第２気筒群のうちの一方の前記複数の気筒のそれぞれに供給される混合気の空燃比を理論空燃比よりも小さい空燃比に制御するとともに前記第１気筒群及び前記第２気筒群のうちの他方の前記複数の気筒のそれぞれに供給される混合気の空燃比を理論空燃比よりも大きい空燃比に制御する（図６の「ステップ６４５、ステップ６７０、ステップ６５０、ステップ６７５、及び、ステップ６５５乃至ステップ６６５」、並びに、図７の「ステップ７４５、ステップ７７０、ステップ７５０、ステップ７７５、及び、ステップ７５５乃至ステップ７６５」を特に参照。）、
空燃比制御手段、を備える。
【０１７７】
従って、最大酸素吸蔵量が小さい方の触媒（特定触媒）の下流側空燃比センサの出力値に基づいて、即ち、特定触媒の状態（特定触媒に対する空燃比要求）に応じて、特定触媒に排ガスを供給する気筒群に属する気筒に供給される混合気の空燃比が制御される。よって、前記特定触媒に排ガスを供給する気筒群から排出される排ガスは前記特定触媒により浄化され得る。
【０１７８】
加えて、最大酸素吸蔵量が大きい方の触媒（非特定触媒）に排ガスを供給する気筒群に属する気筒に供給される混合気の空燃比は、その切替周期が「最大酸素吸蔵量が小さい方の触媒である前記特定触媒」の状態（前記特定触媒に対する空燃比要求）の変化の周期と一致し、且つ、特定触媒に排ガスを供給する気筒群に属する気筒に供給される混合気の空燃比と逆位相となるように制御される。このため、非特定触媒の酸素吸蔵量は、「０」よりも大きく非特定触媒の最大酸素吸蔵量よりも小さい範囲内で変化する。その結果、前記非特定触媒に排ガスを供給する気筒群から排出される排ガスも前記非特定触媒により浄化され得る。更に、機関１０の発生するトルクが短期間内において変動するようになるので、結果として、不快な振動が発生することを回避することができる。
【０１７９】
＜第２実施形態＞
次に、本発明の第２実施形態に係る内燃機関の制御装置（以下、「第２制御装置」とも称呼する。）について説明する。
【０１８０】
第２制御装置は、同期時に逆相制御移行制御を開始し、その後は、逆相制御へと移行することなく、逆相制御移行制御を継続する装置である。これによれば、不快な振動を短期間内に消滅させることができる。但し、第１制御装置と異なり、その後、再び右バンク目標空燃比abyfrRと左バンク目標空燃比abyfrLとが同期し、不快な振動が発生する場合が生じる。
【０１８１】
以上、説明したように、本発明に係る空燃比制御装置の各実施形態によれば、機関１０及び機関１０を搭載した車両に発生する不快な振動を、エミッションを悪化させることなく短期間内に消滅させることができる。なお、本発明は上記実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。
【０１８２】
また、第１制御装置及び第２制御装置の空燃比制御手段は、
前記第１下流側空燃比センサの出力値に相関を有する値である第１下流側空燃比センサ出力相関値と所定のリーン要求判定値との比較の結果に基づいて第１触媒に対するリーン要求が発生したか否かを判定するとともに、前記第１下流側空燃比センサ出力相関値と所定のリッチ要求判定値との比較に基づいて前記第１触媒に対するリッチ要求が発生したか否かを判定し、
前記第１触媒に対するリーン要求が発生したと判定された時点から前記第１触媒に対するリッチ要求が発生したと判定される時点までの第１触媒リーン要求発生期間において前記第１気筒群に属する複数の気筒のそれぞれに供給される混合気の空燃比を理論空燃比よりも大きい空燃比に制御し、前記第１触媒に対するリッチ要求が発生したと判定された時点から前記第１触媒に対するリーン要求が発生したと判定される時点までの第１触媒リッチ要求発生期間において前記第１気筒群に属する複数の気筒のそれぞれに供給される混合気の空燃比を理論空燃比よりも小さい空燃比に制御し、
前記第２下流側空燃比センサの出力値に相関を有する値である第２下流側空燃比センサ出力相関値と所定のリーン要求判定値との比較の結果に基づいて第２触媒に対するリーン要求が発生したか否かを判定するとともに、前記第２下流側空燃比センサ出力相関値と所定のリッチ要求判定値との比較に基づいて前記第２触媒に対するリッチ要求が発生したか否かを判定し、
前記第２触媒に対するリーン要求が発生したと判定された時点から前記第２触媒に対するリッチ要求が発生したと判定される時点までの第２触媒リーン要求発生期間において前記第２気筒群に属する複数の気筒のそれぞれに供給される混合気の空燃比を理論空燃比よりも大きい空燃比に制御し、前記第２触媒に対するリッチ要求が発生したと判定された時点から前記第２触媒に対するリーン要求が発生したと判定される時点までの第２触媒リッチ要求発生期間において前記第２気筒群に属する複数の気筒のそれぞれに供給される混合気の空燃比を理論空燃比よりも小さい空燃比に制御し、
前記第１触媒リッチ要求発生期間と前記第２触媒リッチ要求発生期間とが同期したことを条件として前記非許容振動が発生すると判定し、前記逆相制御への移行制御を開始するように構成されていると言うこともできる。
【０１８３】
この場合、前記移行制御は、最大酸素吸蔵量が大きい方の触媒に対して排ガスを供給している気筒群についての前記リッチ要求判定値及び前記リーン要求判定値を、前記移行制御開始前の前記リッチ要求判定値及び前記リーン要求判定値のそれぞれよりも小さい値に設定する制御であると言うこともできる。
【符号の説明】
【０１８４】
１０…内燃機関、２０…機関本体部、２１…燃焼室（気筒）、３０…吸気系統、３３…燃料噴射弁、４０…右バンク排気系統、４３…右バンク用上流側触媒、５０…左バンク排気系統、５３…左バンク用上流側触媒、６１…熱線式エアフローメータ、６６Ｌ…左バンク用上流側空燃比センサ、６６Ｒ…右バンク用上流側空燃比センサ、６７Ｌ…左バンク用下流側空燃比センサ、６７Ｒ…右バンク用下流側空燃比センサ、７０…電気制御装置。
【図１】
2013002408.tif 000003
【図２】
2013002408.tif 000004
【図３】
2013002408.tif 000005
【図４】
2013002408.tif 000006
【図５】
2013002408.tif 000007
【図６】
2013002408.tif 000008
【図７】
2013002408.tif 000009
【図８】
2013002408.tif 000010
【図９】
2013002408.tif 000011
【図１０】
2013002408.tif 000012
【図１１】
2013002408.tif 000013