(57)【要約】【課題】排気集合部に設置した空燃比センサの検出値に基づいて各気筒の空燃比を推定するシステムにおいて、空燃比検出タイミングのずれ判定精度を向上させる。【解決手段】各気筒の空燃比検出タイミング毎に空燃比センサ３６の検出値に基づいて各気筒の空燃比を推定し、各気筒の推定空燃比に基づいて各気筒の空燃比を制御する。この気筒別空燃比制御中に推定空燃比に基づいて空燃比検出タイミングのずれの有無を判定する空燃比検出タイミング判定を行う。その際、空燃比センサ３６の検出値と推定空燃比とに基づいて観測残差を算出し、この観測残差が所定閾値以上のときに空燃比検出タイミング判定を禁止する。これにより、各気筒の推定空燃比が収束する前で観測残差がまだ大きいときや、エンジン１１の運転領域の変化等によって一時的に推定空燃比の推定精度が低下して観測残差が大きくなったときに、空燃比検出タイミング判定を禁止する。【選択図】図１
2015052303.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関（１１）の各気筒の排出ガスが合流して流れる排気集合部（３４ａ）に該排出ガスの空燃比を検出する空燃比センサ（３６）を設置し、前記各気筒の空燃比検出タイミング毎に検出された前記空燃比センサ（３６）の検出値に基づいて前記各気筒の空燃比を推定する気筒別空燃比推定を実行する気筒別空燃比推定手段（３９）と、前記各気筒の推定空燃比に基づいて前記各気筒の空燃比を制御する気筒別空燃比制御を実行する気筒別空燃比制御手段（３９）とを備えた内燃機関の気筒別空燃比制御装置において、
前記気筒別空燃比制御中に前記推定空燃比に基づいて前記空燃比検出タイミングのずれの有無を判定する空燃比検出タイミング判定を行うタイミング判定手段（３９）と、
前記空燃比検出タイミングのずれ有りと判定されたときに前記空燃比検出タイミングを補正するタイミング補正手段（３９）と、
前記空燃比センサ（３６）の検出値と前記推定空燃比とに基づいて観測残差を算出する残差算出手段（３９）と、
前記観測残差が所定閾値以上のときに前記空燃比検出タイミング判定を禁止するタイミング判定禁止手段（３９）と
を備えていることを特徴とする内燃機関の気筒別空燃比制御装置。
【請求項２】
前記観測残差が所定閾値以上のときに前記気筒別空燃比制御を禁止する気筒別空燃比制御禁止手段（３９）を備えていることを特徴とする請求項１に記載の内燃機関の気筒別空燃比制御装置。
【請求項３】
前記残差算出手段（３９）は、前記観測残差を算出する際に前記空燃比センサ（３６）の検出値の振幅を用いて前記観測残差を正規化することを特徴とする請求項１又は２に記載の内燃機関の気筒別空燃比制御装置。
【請求項４】
前記気筒別空燃比制御の開始前又は開始直後の前記推定空燃比に基づいて初期推定空燃比を算出する初期値算出手段（３９）を備え、
前記タイミング判定手段（３９）は、前記気筒別空燃比制御による気筒別補正値が所定値を越えたときに前記推定空燃比が前記初期推定空燃比よりも広がっている場合に前記空燃比検出タイミングのずれ有りと判定することを特徴とする請求項１乃至３のいずれかに記載の内燃機関の気筒別空燃比制御装置。
【請求項５】
前記初期値算出手段（３９）は、前記初期推定空燃比の算出が終了するまで前記気筒別空燃比制御を禁止するか又は前記気筒別補正値の変化量を制限することを特徴とする請求項４に記載の内燃機関の気筒別空燃比制御装置。
【請求項６】
前記タイミング判定手段（３９）は、前記初期推定空燃比に応じて前記所定値を設定することを特徴とする請求項４又は５に記載の内燃機関の気筒別空燃比制御装置。
【請求項７】
前記タイミング判定手段（３９）は、前記空燃比検出タイミング判定を行う際に前記気筒別補正値の変化量を制限することを特徴とする請求項４乃至６のいずれかに記載の内燃機関の気筒別空燃比制御装置。
【請求項８】
前記初期値算出手段（３９）は、前記観測残差が所定閾値よりも小さいときに前記初期推定空燃比を算出することを特徴とする請求項４乃至７のいずれかに記載の内燃機関の気筒別空燃比制御装置。
【請求項９】
前記観測残差が所定閾値以上のときに前記気筒別空燃比推定のゲインを高ゲインに設定して前記観測残差が所定閾値よりも小さいときに前記気筒別空燃比推定のゲインを前記高ゲインよりも小さい低ゲインに設定するゲイン切換手段（３９）を備えていることを特徴とする請求項１乃至８のいずれかに記載の内燃機関の気筒別空燃比制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関の排気集合部に設置した空燃比センサの検出値に基づいて各気筒の空燃比を推定する機能を備えた内燃機関の気筒別空燃比制御装置に関する発明である。
【背景技術】
【０００２】
例えば、特許文献１（特許第４３２１４１１号公報）に記載されているように、各気筒の空燃比検出タイミング毎に検出された空燃比センサの検出値に基づいて各気筒の空燃比を推定し、各気筒の推定空燃比に基づいて各気筒の空燃比を制御する気筒別空燃比制御を実行するシステムにおいて、内燃機関の運転中に空燃比検出タイミング（空燃比センサ出力のサンプルタイミング）のずれを検出して補正するようにしたものがある。
【０００３】
具体的には、気筒別空燃比制御中に気筒間の推定空燃比のばらつき度合が大きいか否かや各気筒の燃料補正量の増減方向と推定空燃比の増減方向とが反対であるか否か等によって、空燃比検出タイミングがずれているか否かを判定する。そして、空燃比検出タイミングがずれていると判定したときに、少なくとも一つの気筒の推定空燃比の変化量とその気筒の燃料補正量の変化量との関係に基づいて各気筒の空燃比検出タイミングを補正するようにしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第４３２１４１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、上記特許文献１の技術では、気筒別空燃比推定の開始後に各気筒の推定空燃比が収束する前に一時的に燃料補正量の増減方向と推定空燃比の増減方向とが反対になった場合や、内燃機関の運転領域の変化等によって一時的に推定空燃比の推定精度が低下して気筒間の推定空燃比のばらつきが大きくなった場合に、空燃比検出タイミングがずれていないにも拘らず、空燃比検出タイミングのずれ有り（空燃比検出タイミングがずれている）と誤判定してしまう可能性がある。
【０００６】
そこで、本発明が解決しようとする課題は、内燃機関の排気集合部に設置した空燃比センサの検出値に基づいて各気筒の空燃比を推定するシステムにおいて、空燃比検出タイミングのずれ判定精度を向上させることができる内燃機関の気筒別空燃比制御装置を提供することにある。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、請求項１に係る発明は、内燃機関（１１）の各気筒の排出ガスが合流して流れる排気集合部（３４ａ）に該排出ガスの空燃比を検出する空燃比センサ（３６）を設置し、各気筒の空燃比検出タイミング毎に検出された空燃比センサ（３６）の検出値に基づいて各気筒の空燃比を推定する気筒別空燃比推定を実行する気筒別空燃比推定手段（３９）と、各気筒の推定空燃比に基づいて各気筒の空燃比を制御する気筒別空燃比制御を実行する気筒別空燃比制御手段（３９）とを備えた内燃機関の気筒別空燃比制御装置において、気筒別空燃比制御中に推定空燃比に基づいて空燃比検出タイミングのずれの有無を判定する空燃比検出タイミング判定を行うタイミング判定手段（３９）と、空燃比検出タイミングのずれ有りと判定されたときに空燃比検出タイミングを補正するタイミング補正手段（３９）と、空燃比センサ（３６）の検出値と推定空燃比とに基づいて観測残差を算出する残差算出手段（３９）と、観測残差が所定閾値以上のときに空燃比検出タイミング判定を禁止するタイミング判定禁止手段（３９）とを備えた構成としたものである。
【０００８】
この構成では、空燃比センサの検出値（排気集合部を流れる排出ガスの実空燃比）と推定空燃比とに基づいて観測残差を算出し、この観測残差が所定閾値以上のときに空燃比検出タイミング判定を禁止する。このようにすれば、気筒別空燃比推定の開始後に各気筒の推定空燃比が収束する前で観測残差がまだ大きいときや、内燃機関の運転領域の変化等によって一時的に推定空燃比の推定精度が低下して観測残差が大きくなったときに、空燃比検出タイミング判定を禁止することができる。これにより、空燃比検出タイミングがずれていないにも拘らず、空燃比検出タイミングのずれ有り（空燃比検出タイミングがずれている）と誤判定してしまうことを防止することができ、空燃比検出タイミングのずれ判定精度を向上させることができる。
【図面の簡単な説明】
【０００９】
【図１】図１は本発明の一実施例におけるエンジン制御システムの概略構成を示す図である。
【図２】図２は空燃比制御機能を説明するブロック図である。
【図３】図３は空燃比検出タイミング判定の概要を説明する図である。
【図４】図４は各気筒の推定空燃比と気筒別補正値と実空燃比の挙動を示す図である。
【図５】図５は気筒別空燃比推定ルーチンの処理の流れを示すフローチャートである。
【図６】図６は気筒別空燃比制御ルーチンの処理の流れを示すフローチャートである。
【図７】図７は空燃比検出タイミング判定ルーチンの処理の流れを示すフローチャートである。
【図８】図８は空燃比検出タイミングずれ学習補正ルーチンの処理の流れを示すフローチャートである。
【図９】図９はＬｏｃａｌ学習実行ルーチンの処理の流れを示すフローチャートである。
【図１０】図１０はＬｏｃａｌ学習指標算出ルーチンの処理の流れを示すフローチャートである。
【図１１】図１１はＧｌｏｂａｌ学習実行ルーチンの処理の流れを示すフローチャートである。
【図１２】図１２はＧｌｏｂａｌ学習指標算出ルーチンの処理の流れを示すフローチャートである。
【図１３】図１３は空燃比検出タイミングの変更を仮定した場合の想定気筒を示す図である。
【図１４】図１４は気筒別空燃比制御及び空燃比検出タイミング判定の禁止／許可切換の実行例を示すタイムチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明を実施するための形態を具体化した一実施例を説明する。
まず、図１に基づいてエンジン制御システム全体の概略構成を説明する。
内燃機関である例えば直列４気筒のエンジン１１は、第１気筒＃１〜第４気筒＃４の４つの気筒を有し、このエンジン１１の吸気管１２の最上流部には、エアクリーナ１３が設けられ、このエアクリーナ１３の下流側に、吸入空気量を検出するエアフローメータ１４が設けられている。このエアフローメータ１４の下流側には、モータ等によって開度調節されるスロットルバルブ１５と、このスロットルバルブ１５の開度（スロットル開度）を検出するスロットル開度センサ１６とが設けられている。
【００１１】
更に、スロットルバルブ１５の下流側には、サージタンク１７が設けられ、このサージタンク１７には、吸気管圧力を検出する吸気管圧力センサ１８が設けられている。また、サージタンク１７には、エンジン１１の各気筒に空気を導入する吸気マニホールド１９が設けられ、各気筒の吸気マニホールド１９の吸気ポート近傍に、それぞれ燃料を吸気ポートに向けて噴射する燃料噴射弁２０が取り付けられている。エンジン運転中は、燃料タンク２１内の燃料が燃料ポンプ２２によりデリバリパイプ２３に送られ、各気筒の噴射タイミング毎に各気筒の燃料噴射弁２０から燃料が噴射される。デリバリパイプ２３には、燃料圧力（燃圧）を検出する燃圧センサ２４が取り付けられている。
【００１２】
また、エンジン１１には、吸気バルブ２５と排気バルブ２６のバルブタイミング（開閉タイミング）をそれぞれ変化させる可変バルブタイミング機構２７，２８が設けられている。更に、エンジン１１には、吸気カム軸２９と排気カム軸３０の回転に同期してカム角信号を出力する吸気カム角センサ３１と排気カム角センサ３２が設けられていると共に、エンジン１１のクランク軸の回転に同期して所定クランク角毎（例えば３０ＣＡ毎）にクランク角信号のパルスを出力するクランク角センサ３３が設けられている。
【００１３】
一方、エンジン１１の排気管３４のうちの各気筒の排出ガスが合流して流れる排気集合部３４ａ（各気筒の排気マニホールド３５が集合する部分又はそれよりも下流側）には、排出ガスの空燃比を検出する空燃比センサ３６が設けられ、この空燃比センサ３６の下流側に、排出ガス中のＣＯ，ＨＣ，ＮＯｘ等を浄化する三元触媒等の触媒３７が設けられている。また、エンジン１１のシリンダブロックには、冷却水温を検出する冷却水温センサ３８が取り付けられている。
【００１４】
これら各種センサの出力は、電子制御ユニット（以下「ＥＣＵ」と表記する）３９に入力される。このＥＣＵ３９は、マイクロコンピュータを主体として構成され、内蔵されたＲＯＭ（記憶媒体）に記憶された各種のエンジン制御用のプログラムを実行することで、エンジン運転状態に応じて、燃料噴射量、点火時期、スロットル開度（吸入空気量）等を制御する。
【００１５】
その際、ＥＣＵ３９は、所定の空燃比Ｆ／Ｂ制御実行条件が成立したときに、空燃比センサ３６の出力に基づいて排出ガスの空燃比を目標空燃比に一致させるように混合気の空燃比（例えば燃料噴射量）をＦ／Ｂ制御する空燃比Ｆ／Ｂ制御を実行する。ここで、「Ｆ／Ｂ」は「フィードバック」を意味する（以下、同様）。
【００１６】
具体的には、図２に示すように、まず、空燃比偏差算出部４０で、検出空燃比（空燃比センサ３６で検出した排出ガスの空燃比）と目標空燃比との偏差を算出し、空燃比Ｆ／Ｂ制御部４１で、検出空燃比と目標空燃比との偏差が小さくなるように空燃比補正係数を算出する。そして、噴射量算出部４２で、エンジン回転速度やエンジン負荷（吸気管負圧や吸入空気量等）に基づいて算出されたベース噴射量や空燃比補正係数等に基づいて燃料噴射量を算出し、その燃料噴射量に基づいて各気筒の燃料噴射弁２０を制御する。
【００１７】
更に、ＥＣＵ３９は、後述する図５及び図６の各ルーチンを実行することで、各気筒の空燃比検出タイミング毎に検出された空燃比センサ３６の検出値に基づいて各気筒の空燃比を気筒毎に推定する気筒別空燃比推定を実行し、各気筒の推定空燃比に基づいて各気筒の空燃比を気筒毎に制御する気筒別空燃比制御を実行する。
【００１８】
具体的には、図２に示すように、まず、気筒別空燃比推定部４３で、後述する気筒別空燃比推定モデルを用いて空燃比センサ３６の検出値（排気集合部３４ａを流れる排出ガスの実空燃比）に基づいて各気筒の空燃比を気筒毎に推定し、基準空燃比算出部４４で、全気筒の推定空燃比の平均値を算出して、その平均値を基準空燃比に設定する。この後、気筒別空燃比偏差算出部４５で、各気筒の推定空燃比と基準空燃比との偏差を気筒毎に算出して、気筒別空燃比制御部４６で、各気筒の推定空燃比と基準空燃比との偏差が小さくなるように気筒別補正値として例えば燃料補正量（燃料噴射量の補正量）を気筒毎に算出し、その算出結果に基づいて各気筒の燃料噴射量を気筒毎に補正することで、各気筒に供給する混合気の空燃比を気筒毎に補正して気筒間の空燃比ばらつきを少なくする。
【００１９】
ここで、空燃比センサ３６の検出値（排気集合部３４ａを流れる排出ガスの実空燃比）に基づいて各気筒の空燃比を推定するモデル（以下「気筒別空燃比推定モデル」という）の具体例を説明する。
【００２０】
排気集合部３４ａにおけるガス交換に着目して、空燃比センサ３６の検出値を、排気集合部３４ａにおける各気筒の推定空燃比の履歴と空燃比センサ３６の検出値の履歴とにそれぞれ所定の重みを乗じて加算したものとしてモデル化し、このモデルを用いて各気筒の空燃比を推定するようにしている。この際、オブザーバとしてはカルマンフィルタを用いる。
【００２１】
より具体的には、排気集合部３４ａにおけるガス交換のモデルを次の（１）式にて近似する。
ｙs(t)＝ｋ1 ×ｕ(t-1) ＋ｋ2 ×ｕ(t-2) −ｋ3 ×ｙs(t-1)−ｋ4 ×ｙs(t-2)
……（１）
ここで、ｙs は空燃比センサ３６の検出値、ｕは排気集合部３４ａに流入するガスの空燃比、ｋ1 〜ｋ4 は定数である。
【００２２】
排気系では、排気集合部３４ａにおけるガス流入及び混合の一次遅れ要素と、空燃比センサ３６の応答遅れによる一次遅れ要素とが存在する。そこで、上記（１）式では、これらの一次遅れ要素を考慮して過去２回分の履歴を参照することとしている。
【００２３】
上記（１）式を状態空間モデルに変換すると、次の（２ａ）、（２ｂ）式が導き出される。
Ｘ(t+1) ＝Ａ・Ｘ(t) ＋Ｂ・ｕ(t) ＋Ｗ(t)       ……（２ａ）
Ｙ(t) ＝Ｃ・Ｘ(t) ＋Ｄ・ｕ(t)                 ……（２ｂ）
ここで、Ａ，Ｂ，Ｃ，Ｄはモデルのパラメータ、Ｙは空燃比センサ３６の検出値、Ｘは状態変数としての各気筒の推定空燃比、Ｗはノイズである。
【００２４】
更に、上記（２ａ）、（２ｂ）式によりカルマンフィルタを設計すると、次の（３）式が得られる。
Ｘ＾(k+1｜k)＝Ａ・Ｘ＾(k｜k-1)＋Ｋ｛Ｙ(k) −Ｃ・Ａ・Ｘ＾(k｜k-1)｝  ……（３）  ここで、Ｘ＾（エックスハット）は各気筒の推定空燃比、Ｋはカルマンゲインである。Ｘ＾(k+1｜k)の意味は、時間(k) の推定値により次の時間(k+1) の推定値を求めることを表す。
【００２５】
以上のようにして、気筒別空燃比推定モデルをカルマンフィルタ型オブザーバにて構成することにより、燃焼サイクルの進行に伴って各気筒の空燃比を順次推定することができる。
【００２６】
次に、各気筒の空燃比検出タイミング（空燃比センサ３６の出力のサンプルタイミング）の設定方法について説明する。本実施例では、各気筒から排出される排出ガスが空燃比センサ３６付近に到達してその空燃比が検出されるまでの遅れ（以下「排気系の応答遅れ」という）がエンジン運転状態によって変化することを考慮して、エンジン運転状態（例えばエンジン負荷、エンジン回転速度等）に応じてマップにより各気筒の空燃比検出タイミングを設定し、空燃比センサ３６の出力をＥＣＵ３９に取り込むようにしている。一般に、エンジン負荷が小さくなるほど、排気系の応答遅れが大きくなるため、各気筒の空燃比検出タイミングは、エンジン負荷が小さくなるほど、遅角側にシフトされるように設定されている。
【００２７】
しかしながら、各気筒の排気ポートから空燃比センサ３６までの排気マニホールド３５の長さが各気筒毎に異なると共に、各気筒の排出ガスの流れがエンジン運転状態（エンジン回転速度や筒内充填空気量等）によって複雑に変化し、しかも、エンジン１１の製造ばらつきや経年変化によっても排気系の応答遅れが変化するため、エンジン設計・製造過程で、各気筒の排気系の応答遅れ（各気筒の空燃比検出タイミング）とエンジン負荷との関係を精度良くマップ化しておくことは困難である。このため、各気筒の空燃比検出タイミングが適正な空燃比検出タイミングからずれる可能性がある。
【００２８】
もし、各気筒の空燃比検出タイミングがずれると、各気筒の空燃比の推定精度が悪化して、気筒別空燃比制御を続けても気筒間の推定空燃比のばらつきがいつまでも小さくならならない状態となる。
【００２９】
そこで、本実施例では、後述する図７乃至図１２の各ルーチンを実行することで、気筒別空燃比制御中に推定空燃比に基づいて空燃比検出タイミングのずれの有無を判定する空燃比検出タイミング判定を行い、空燃比検出タイミングのずれ有りと判定されたときに空燃比検出タイミングを補正する。
【００３０】
その際、本実施例では、空燃比センサ３６の検出値（排気集合部３４ａを流れる排出ガスの実空燃比）と推定空燃比とに基づいて観測残差を算出し、この観測残差が所定閾値以上のときに空燃比検出タイミング判定を禁止するようにしている。このようにすれば、気筒別空燃比推定の開始後に各気筒の推定空燃比が収束する前で観測残差がまだ大きいときや、エンジン１１の運転領域の変化等によって一時的に推定空燃比の推定精度が低下して観測残差が大きくなったときに、空燃比検出タイミング判定を禁止することができる。これにより、空燃比検出タイミングがずれていないにも拘らず、空燃比検出タイミングのずれ有り（空燃比検出タイミングがずれている）と誤判定してしまうことを防止する。
【００３１】
また、本実施例では、次のようにして空燃比検出タイミング判定を行う。図３に示すように、気筒別空燃比推定の開始後に観測残差が所定閾値よりも小さくなると、気筒別空燃比制御及び空燃比検出タイミング判定が許可される。気筒別空燃比制御が許可されると、まず、気筒別空燃比制御の開始前の所定期間Ａにおける各気筒の推定空燃比に基づいて各気筒の初期推定空燃比を気筒毎に算出する。この後、気筒別空燃比制御による気筒別補正値（例えば燃料補正量）が所定値を越えたときに、その気筒の推定空燃比が初期推定空燃比よりも広がっている（例えば基準空燃比に対する差が大きくなっている）か否かを判定し、推定空燃比が初期推定空燃比よりも広がっている場合に空燃比検出タイミングのずれ有りと判定する。
【００３２】
つまり、気筒別空燃比制御による気筒別補正値が所定値を越えたときに、推定空燃比が初期推定空燃比よりも広がっている場合には、気筒別補正値がある程度大きくなったにも拘らず、推定空燃比が収束せずに発散しているため、空燃比検出タイミングがずれていると判断して、空燃比検出タイミングのずれ有りと判定する。
【００３３】
更に、本実施例では、空燃比検出タイミングのずれ有りと判定されたときに、次のようにして空燃比検出タイミングを補正する。まず、エンジン１１の１サイクル（７２０ＣＡ）内で空燃比センサ３６の検出値のばらつき（変動）が最大となるように空燃比検出タイミングを補正するＬｏｃａｌ学習を実行し、このＬｏｃａｌ学習の実行後に、気筒別空燃比制御中に少なくとも一つの気筒の推定空燃比の変化とその気筒の気筒別補正値（例えば燃料補正量）の変化との関係に基づいて空燃比検出タイミングを補正するＧｌｏｂａｌ学習を実行する。このＧｌｏｂａｌ学習では、各気筒の推定空燃比が想定している各気筒番号を仮想的に複数通り変更した場合の各々において少なくとも一つの気筒の推定空燃比の変化とその推定空燃比の変更後の気筒番号の気筒別補正値の変化との相関値を算出し、この相関値が最大となるように空燃比検出タイミングを補正する。
【００３４】
各気筒の空燃比検出タイミングがずれた場合、ある気筒の正しい空燃比検出タイミングがその気筒の現在の空燃比検出タイミングの近傍であるとは限らず、例えば、次の燃焼気筒の現在の空燃比検出タイミング又はそれよりも遅角側まで遅れることや、前の燃焼気筒の現在の空燃比検出タイミング又はそれよりも進角側まで進むことも想定される。例えば、図４（ｂ）に示すように、ある気筒（第１気筒＃１と仮定）の正しい空燃比検出タイミングが他の気筒（第３気筒＃３と仮定）の現在の空燃比検出タイミングまでずれた場合、第１気筒＃１の実空燃比を最もよく検出しているタイミングは、第１気筒＃１の現在の空燃比検出タイミングではなく、第３気筒＃３の現在の空燃比検出タイミングであることを意味しており、第１気筒＃１の現在の空燃比検出タイミングに基づき推定した第１気筒＃１の推定空燃比に基づき算出した第１気筒＃１の気筒別補正値（例えば燃料補正量）で気筒別空燃比制御を実施すると、第１気筒＃１の実空燃比は第１気筒＃１の気筒別補正値の変化に応じて変化するが、第１気筒＃１の推定空燃比は第１気筒＃１の気筒別補正値の変化に応じて変化せず、第３気筒＃３の推定空燃比が第１気筒＃１の気筒別補正値の変化に応じて変化することになる。
【００３５】
この特性に着目して、本実施例では、Ｇｌｏｂａｌ学習によって、気筒別空燃比制御中に少なくとも一つの気筒の推定空燃比の変化とその気筒の気筒別補正値（例えば燃料補正量）の変化との関係に基づいて空燃比検出タイミングを補正するようにしているため、空燃比検出タイミングのずれを修正することができる。しかも、各気筒の推定空燃比が想定している各気筒番号を仮想的に複数通り変更した場合の各々において少なくとも一つの気筒の推定空燃比の変化とその推定空燃比の変更後の気筒番号の気筒別補正値（例えば燃料補正量）の変化との相関値を算出し、その相関値に基づいて空燃比検出タイミングを補正するようにしている。これにより、実際に現在の空燃比検出タイミングを順次ずらして相関値を算出する必要がなく、現在の空燃比検出タイミングでの各気筒の推定空燃比とそれに基づく各気筒の気筒別補正値のみに基づいて、仮想的に想定気筒を入れ替えた場合の各々の相関値を同時に算出して比較することができ、最適な空燃比検出タイミングが現在の空燃比検出タイミングから大きく乖離している場合でも、短時間で空燃比検出タイミングのずれを修正することができる。
【００３６】
また、例えば、ある気筒（第１気筒＃１と仮定）の正しい空燃比検出タイミングが他の連続する気筒（第２気筒＃２、第４気筒＃４と仮定）の現在の空燃比検出タイミングの中間までずれた場合、第１気筒＃１の実空燃比を最も精度良く検出することができる空燃比検出タイミングは、第１気筒＃１の現在の空燃比検出タイミングではなく、第２気筒＃２と第４気筒＃４の現在の空燃比検出タイミングの中間であることを意味しており、前述の第１気筒＃１の気筒別補正値の変化に最も相関があるタイミングでの推定空燃比は現在の空燃比検出タイミングでの推定において得ることができないため、最適な空燃比検出タイミングに修正できない可能性がある。従って、各気筒の空燃比検出タイミングでの空燃比センサ３６の検出値のいずれかが、各気筒の実空燃比のいずれかを精度良く検出していることが望ましい。
【００３７】
そこで、本実施例では、Ｌｏｃａｌ学習によって、エンジン１１の１サイクル（７２０ＣＡ）内で空燃比センサ３６の検出値のばらつき（変動）が最大となるように空燃比検出タイミングを補正するようにしている。これにより、各気筒の実空燃比がばらついている場合、１サイクル内で空燃比が変動するが、その変動を最大に検出することができ、各気筒の空燃比検出タイミングでの空燃比センサ３６の検出値のいずれかが、各気筒の実空燃比のいずれかを精度良く検出しているようにできる。これにより、各気筒の推定空燃比のいずれかが各気筒の実空燃比のいずれかを検出することができるため、Ｇｌｏｂａｌ学習において、空燃比検出タイミングのずれを精度良く修正することができる。
以下、本実施例でＥＣＵ３９が実行する図５乃至図１２の各ルーチンの処理内容を説明する。
【００３８】
［気筒別空燃比推定ルーチン］
図５に示す気筒別空燃比推定ルーチンは、クランク角センサ３３の出力パルスに同期して所定クランク角毎（例えば３０ＣＡ毎）に起動され、特許請求の範囲でいう気筒別空燃比推定手段としての役割を果たす。本ルーチンが起動されると、まず、ステップ１０１で、気筒別空燃比制御の実行条件が成立しているか否かを判定する。この気筒別空燃比制御の実行条件としては、例えば次の条件(1) 〜(4) がある。
【００３９】
(1) 空燃比センサ３６が活性状態であること
(2) 空燃比センサ３６が異常（故障）と判定されていないこと
(3) エンジン１１が暖機状態（例えば冷却水温が所定温度以上）であること
(4) エンジン運転領域（例えばエンジン回転速度と吸気管圧力）が空燃比推定精度を確保できる運転領域であること
【００４０】
これら４つの条件(1) 〜(4) を全て満したときに気筒別空燃比制御の実行条件が成立し、いずれか１つでも満たさない条件があれば、実行条件が不成立となる。実行条件が不成立の場合は、ステップ１０２以降の処理を行うことなく、本ルーチンを終了する。
【００４１】
一方、実行条件が成立している場合は、ステップ１０２に進み、各気筒の空燃比検出タイミング（空燃比センサ３６の出力のサンプルタイミング）を、その時点のエンジン負荷（例えば吸気管圧力）に応じてマップにより設定する。尚、各気筒の空燃比検出タイミングをエンジン負荷とエンジン回転速度に応じてマップにより設定しても良い。この空燃比検出タイミングを設定するマップは、後述する図９のＬｏｃａｌ学習実行ルーチン及び図１１のＧｌｏｂａｌ学習実行ルーチンによって学習補正される。
【００４２】
この後、ステップ１０３に進み、現在のクランク角が上記ステップ１０２で設定した空燃比検出タイミングであるか否かを判定し、空燃比検出タイミングでなければ、以降の処理を行うことなく、本ルーチンを終了する。
【００４３】
これに対して、現在のクランク角が上記ステップ１０２で設定した空燃比検出タイミングであれば、ステップ１０４に進み、空燃比センサ３６の出力（空燃比検出値）を読み込む。この後、ステップ１０５に進み、前記気筒別空燃比推定モデルを用いて今回の空燃比推定対象となる気筒の空燃比を空燃比センサ３６の検出値に基づいて推定する。
【００４４】
［気筒別空燃比制御ルーチン］
図６に示す気筒別空燃比制御ルーチンは、クランク角センサ３３の出力パルスに同期して所定クランク角毎（例えば３０ＣＡ毎）に起動され、特許請求の範囲でいう気筒別空燃比制御手段としての役割を果たす。本ルーチンが起動されると、まず、２０１で、気筒別空燃比制御の実行条件（前記図１のステップ１０１と同じ条件）が成立しているか否かを判定する。実行条件が不成立の場合は、ステップ２０２以降の処理を行うことなく、本ルーチンを終了する。
【００４５】
一方、実行条件が成立している場合は、ステップ２０２に進み、空燃比センサ３６の検出値φ（排気集合部３４ａを流れる排出ガスの実空燃比）と推定空燃比φ＾とに基づいて観測残差ｅｒｒを次の（４）式により算出する。その際、空燃比センサ３６の検出値φの振幅（目標空燃比 tφとの差）を用いて観測残差ｅｒｒを正規化する。尚、空燃比センサ３６の検出値φ、推定空燃比φ＾、目標空燃比 tφは、それぞれ等量比（空気過剰率の逆数）で算出される。
【００４６】
【数１】
2015052303.tif 000003
【００４７】
ここで、τは時定数であり、ｓはラプラス演算子である。このステップ２０２の処理が特許請求の範囲でいう残差算出手段としての役割を果たす。
この後、ステップ２０３に進み、気筒別空燃比制御の許可フラグが「１」である（気筒別空燃比制御が許可されている）か否かを判定する。このステップ２０３で、気筒別空燃比制御の許可フラグが「０」である（気筒別空燃比制御が禁止されている）と判定された場合には、ステップ２０４に進み、観測残差ｅｒｒが気筒別空燃比制御の許可閾値Ｋ1on よりも小さいか否かを判定する。
【００４８】
このステップ２０４で、観測残差ｅｒｒが許可閾値Ｋ1on 以上であると判定された場合には、ステップ２０６に進み、気筒別空燃比制御の許可フラグを「０」に維持すると共に、前述した気筒別空燃比推定モデルのカルマンゲインＫ（気筒別空燃比推定のゲイン）を高ゲインＫhighに維持する。この高ゲインＫhighは、低ゲインＫlow よりも大きい値に設定されている。
【００４９】
その後、上記ステップ２０４で、観測残差ｅｒｒが許可閾値Ｋ1on よりも小さいと判定された場合には、ステップ２０７に進み、気筒別空燃比制御の許可フラグを「１」にセットすると共に、カルマンゲインＫを低ゲインＫlow に切り換える。この低ゲインＫlow は、高ゲインＫhighよりも小さい値に設定されている。
【００５０】
一方、上記２０３で、気筒別空燃比制御の許可フラグが「１」である（気筒別空燃比制御が許可されている）と判定された場合には、ステップ２０５に進み、観測残差ｅｒｒが気筒別空燃比制御の禁止閾値Ｋ1offよりも小さいか否かを判定する。この禁止閾値Ｋ1offは、許可閾値Ｋ1on よりも大きい値に設定されている。
【００５１】
このステップ２０５で、観測残差ｅｒｒが禁止閾値Ｋ1offよりも小さいと判定された場合には、ステップ２０７に進み、気筒別空燃比制御の許可フラグを「１」に維持すると共に、カルマンゲインＫを低ゲインＫlow に維持する。
【００５２】
その後、上記ステップ２０５で、観測残差ｅｒｒが禁止閾値Ｋ1off以上であると判定された場合には、ステップ２０６に進み、気筒別空燃比制御の許可フラグを「０」にリセットすると共に、カルマンゲインＫを高ゲインＫhighに切り換える。
これらのステップ２０３〜２０７の処理が特許請求の範囲でいう気筒別空燃比制御禁止手段及びゲイン切換手段としての役割を果たす。
【００５３】
気筒別空燃比制御の許可フラグが「１」の期間中は、ステップ２０８に進み、初期値算出終了フラグが「１」である（初期推定空燃比の算出が終了している）か否かを判定する。このステップ２０８で、初期値算出終了フラグが「０」である（初期推定空燃比の算出が終了していない）と判定された場合には、ステップ２０９に進み、次式により各気筒の初期推定空燃比initφ＾#iを算出する。
initφ＾#i＝｛１／（τ×２×ｓ＋１）｝×φ＾#i
ここで、φ＾#iは第ｉ気筒＃ｉの推定空燃比であり、initφ＾#iは第ｉ気筒＃ｉの初期推定空燃比である。
【００５４】
この後、ステップ２１０に進み、初期値算出カウンタのカウント値をインクリメントした後、ステップ２１１に進み、初期値算出カウンタのカウント値が所定値よりも大きいか否かを判定する。このステップ２１１で、初期値算出カウンタのカウント値が所定値以下であると判定された場合には、初期値算出終了フラグを「０」に維持したまま、本ルーチンを終了する。
【００５５】
その後、上記ステップ２１１で、初期値算出カウンタのカウント値が所定値よりも大きいと判定された場合には、ステップ２１２に進み、初期値算出終了フラグを「１」にセットして、本ルーチンを終了する。
【００５６】
これらのステップ２０８〜２１２の処理により、気筒別空燃比制御の開始前の所定期間における推定空燃比φ＾#iに基づいて初期推定空燃比initφ＾#iを算出すると共に、初期推定空燃比initφ＾#iの算出が終了するまで気筒別空燃比制御を禁止する。これらのステップ２０８〜２１２の処理が特許請求の範囲でいう初期値算出手段としての役割を果たす。
【００５７】
一方、上記ステップ２０８で、初期値算出終了フラグが「１」である（初期推定空燃比の算出が終了している）と判定された場合には、ステップ２１３に進み、全気筒の推定空燃比の平均値を算出して、その平均値を基準空燃比baseφに設定する。
【００５８】
この後、ステップ２１４に進み、各気筒の推定空燃比φ＾#iと基準空燃比baseφとの偏差（baseφ−φ＾#i）を算出して、その偏差（baseφ−φ＾#i）が小さくなるように各気筒の気筒別補正値として燃料補正量Ｃmp#iを次式により算出する。
Ｃmp#i＝∫（baseφ−φ＾#i）ｄｔ
ここで、Ｃmp#iは第ｉ気筒＃ｉの燃料補正量である。
【００５９】
尚、空燃比検出タイミング判定を行う際には気筒別補正値の変化量を制限する。具体的には、後述する空燃比検出タイミング判定の許可フラグが「１」の期間中は、各気筒の燃料補正量Ｃmp#iの変化量（増加量又は減少量）を所定ガード値以下に制限する。
【００６０】
この後、ステップ２１５に進み、各気筒の燃料補正量Ｃmp#iに基づいて各気筒の燃料噴射量を補正することで、各気筒に供給する混合気の空燃比を各気筒毎に補正して気筒間の空燃比ばらつきを少なくするように制御する。
【００６１】
［空燃比検出タイミング判定ルーチン］
図７に示す空燃比検出タイミング判定ルーチンは、クランク角センサ３３の出力パルスに同期して所定クランク角毎（例えば３０ＣＡ毎）に起動され、特許請求の範囲でいうタイミング判定手段としての役割を果たす。本ルーチンが起動されると、まず、ステップ３０１で、気筒別空燃比制御の実行条件（前記図１のステップ１０１と同じ条件）が成立しているか否かを判定する。実行条件が不成立の場合は、ステップ３０２以降の処理を行うことなく、本ルーチンを終了する。
【００６２】
一方、実行条件が成立している場合は、ステップ３０２に進み、空燃比センサ３６の検出値φと推定空燃比φ＾とに基づいて観測残差ｅｒｒを上記（４）式により算出する。このステップ３０２の処理も特許請求の範囲でいう残差算出手段としての役割を果たす。
【００６３】
この後、ステップ３０３に進み、空燃比検出タイミング判定の許可フラグが「１」である（空燃比検出タイミング判定が許可されている）か否かを判定する。このステップ３０３で、空燃比検出タイミング判定の許可フラグが「０」である（空燃比検出タイミング判定が禁止されている）と判定された場合には、ステップ３０４に進み、観測残差ｅｒｒが空燃比検出タイミング判定の許可閾値Ｋ2on よりも小さいか否かを判定する。この空燃比検出タイミング判定の許可閾値Ｋ2on は、気筒別空燃比制御の許可閾値Ｋ1on と同じ値か又はそれよりも少し小さい値に設定されている。
【００６４】
このステップ３０４で、観測残差ｅｒｒが許可閾値Ｋ2on 以上であると判定された場合には、ステップ３０６に進み、空燃比検出タイミング判定の許可フラグを「０」に維持する。
【００６５】
その後、上記ステップ３０４で、観測残差ｅｒｒが許可閾値Ｋ2on よりも小さいと判定された場合には、ステップ３０７に進み、空燃比検出タイミング判定の許可フラグを「１」にセットする。
【００６６】
一方、上記３０３で、空燃比検出タイミング判定の許可フラグが「１」である（空燃比検出タイミング判定が許可されている）と判定された場合には、ステップ３０５に進み、観測残差ｅｒｒが空燃比検出タイミング判定の禁止閾値Ｋ2offよりも小さいか否かを判定する。この空燃比検出タイミング判定の禁止閾値Ｋ2offは、許可閾値Ｋ2on よりも大きい値で、且つ、気筒別空燃比制御の禁止閾値Ｋ1offと同じ値か又はそれよりも少し小さい値に設定されている。
【００６７】
このステップ３０５で、観測残差ｅｒｒが禁止閾値Ｋ2offよりも小さいと判定された場合には、ステップ３０７に進み、空燃比検出タイミング判定の許可フラグを「１」に維持する。
【００６８】
その後、上記ステップ３０５で、観測残差ｅｒｒが禁止閾値Ｋ2off以上であると判定された場合には、ステップ３０６に進み、空燃比検出タイミング判定の許可フラグを「０」にリセットする。
これらのステップ３０３〜３０７の処理が特許請求の範囲でいう空燃比検出タイミング判定禁止手段としての役割を果たす。
【００６９】
空燃比検出タイミング判定の許可フラグが「１」の期間中は、ステップ３０８に進み、各気筒の気筒別補正値である燃料補正量Ｃmp#iの絶対値が所定値ＫＣを越えたか否かを判定する。この際、初期推定空燃比initφ＾#i（例えば各気筒の初期推定空燃比initφ＾#iの最大値又は平均値）に応じて所定値ＫＣをマップ又は数式等により設定する。
このステップ３０８で、全ての気筒で燃料補正量Ｃmp#iの絶対値が所定値ＫＣ以下であると判定された場合には、そのまま本ルーチンを終了する。
【００７０】
その後、上記ステップ３０８で、いずれかの気筒で燃料補正量Ｃmp#iの絶対値が所定値ＫＣを越えたと判定された場合には、ステップ３０９に進み、その気筒（燃料補正量Ｃmp#iの絶対値が所定値ＫＣを越えた気筒）の推定空燃比φ＾#iが初期推定空燃比initφ＾#iよりも広がっている（例えば基準空燃比baseφに対する差が大きくなっている）か否かを、次の（５）式が成立しているか否かによって判定する。
（φ＾#i−initφ＾#i）／Ｃmp#i＜ずれ判定値（マイナス値）  ……（５）
【００７１】
このステップ３０９で、推定空燃比φ＾#iが初期推定空燃比initφ＾#iよりも広がっていない［上記（５）式が不成立である］と判定された場合には、空燃比検出タイミングがずれていない（空燃比検出タイミングのずれ無し）と判断して、そのまま本ルーチンを終了する。
【００７２】
これに対して、上記ステップ３０９で、推定空燃比φ＾#iが初期推定空燃比initφ＾#iよりも広がっている［上記（５）式が成立している］と判定された場合には、空燃比検出タイミングがずれている（空燃比検出タイミングのずれ有り）と判定して、ずれ判定フラグを「１」にセットした後、本ルーチンを終了する。
【００７３】
［空燃比検出タイミングずれ学習補正ルーチン］
図８に示す空燃比検出タイミングずれ学習補正ルーチンは、クランク角センサ３３の出力パルスに同期して所定クランク角毎（例えば３０ＣＡ毎）に起動される。本ルーチンが起動されると、まず、ステップ４０１で、Ｌｏｃａｌ学習完了フラグが「１」にセットされているか否かを判定し、Ｌｏｃａｌ学習完了フラグが「１」にセットされていると判定されれば、ステップ４０２に進み、Ｌｏｃａｌ学習完了後カウンタをカウントアップする。
【００７４】
この後、ステップ４０３に進み、図７の空燃比検出タイミング判定ルーチンにより空燃比検出タイミングがずれていると判定されたか否かを、ずれ判定フラグが「１」にセットされているか否かによって判定し、空燃比検出タイミングがずれていると判定されていない場合（ずれ判定フラグ＝０の場合）には、以降の処理を行うことなく、本ルーチンを終了する。
【００７５】
一方、空燃比検出タイミングがずれていると判定されている場合（ずれ判定フラグ＝１の場合）には、ステップ４０４に進み、Ｌｏｃａｌ学習完了フラグが「０」であるか又はＬｏｃａｌ学習完了後カウンタのカウント値が所定値Ｔ1 以上であるか否かを判定する。
【００７６】
このステップ４０４で、Ｌｏｃａｌ学習完了フラグが「０」であると判定された場合、又は、Ｌｏｃａｌ学習完了後カウンタのカウント値が所定値Ｔ1 以上であると判定された場合には、ステップ４０５に進み、Ｌｏｃａｌ学習完了後カウンタのカウント値を「０」にリセットすると共に、Ｌｏｃａｌ学習完了フラグを「０」にリセットして、Ｌｏｃａｌ学習実行カウンタをカウントアップする。
【００７７】
この後、ステップ４０６に進み、各気筒の気筒別補正値（燃料補正量）を前回値にホールドした後、ステップ４０７に進み、後述する図９のＬｏｃａｌ学習実行ルーチンを実行して、１サイクル内で空燃比センサ３６の検出値のばらつきが最大となるように空燃比検出タイミングを補正するＬｏｃａｌ学習を実行する。
【００７８】
一方、上記ステップ４０４で、Ｌｏｃａｌ学習完了フラグが「１」であると判定され、且つ、Ｌｏｃａｌ学習完了後カウンタのカウント値が所定値Ｔ1 に達していないと判定された場合には、ステップ４０８に進み、Ｌｏｃａｌ学習完了後カウンタのカウント値が所定値Ｔ2 以上であるか否かを判定する。ここで、所定値Ｔ2 は、所定値Ｔ1 よりも小さい値である（Ｔ2 ＜Ｔ1 ）。
【００７９】
このステップ４０８で、Ｌｏｃａｌ学習完了後カウンタのカウント値が所定値Ｔ2 に達していないと判定された場合には、Ｌｏｃａｌ学習が完了してから気筒別空燃比制御が安定するのに十分な時間が経過していないと判断して、本ルーチンを終了する。
【００８０】
その後、上記ステップ４０８で、Ｌｏｃａｌ学習完了後カウンタのカウント値が所定値Ｔ2 以上であると判定された場合には、Ｌｏｃａｌ学習が完了してから気筒別空燃比制御が安定するのに十分な時間が経過したと判断して、ステップ４０９に進み、Ｇｌｏｂａｌ学習実行カウンタをカウントアップした後、ステップ４１０に進み、後述する図１１のＧｌｏｂａｌ学習実行ルーチンを実行して、各気筒の推定空燃比の変化と気筒別補正値（燃料補正量）の変化との関係に基づいて空燃比検出タイミングを補正するＧｌｏｂａｌ学習を実行する。
【００８１】
［Ｌｏｃａｌ学習実行ルーチン］
図９に示すＬｏｃａｌ学習実行ルーチンは、前記図８の空燃比検出タイミングずれ学習補正ルーチンのステップ４０７で実行されるサブルーチンである。
【００８２】
本ルーチンでは、１サイクル内で空燃比センサ３６の検出値のばらつきが最大となるように空燃比検出タイミングを補正するＬｏｃａｌ学習を実行する。このＬｏｃａｌ学習では、各気筒の空燃比検出タイミング毎に検出された空燃比センサ３６の検出値の分散に相当する値が最大となるように空燃比検出タイミングを補正する。
【００８３】
本ルーチンが起動されると、まず、ステップ５０１で、Ｌｏｃａｌ学習実行カウンタのカウント値が所定値（例えば３０サイクルに相当する値）以下であるか否かを判定する。
このステップ５０１で、Ｌｏｃａｌ学習実行カウンタのカウント値が所定値以下であると判定されれば、ステップ５０２に進み、図１０のＬｏｃａｌ学習指標算出ルーチンを実行して、第１気筒＃１の空燃比検出タイミングを下記の各タイミングＬ1 〜Ｌ6 ［ＣＡ］と仮定した場合について、それぞれ各気筒の空燃比検出タイミング毎に検出された空燃比センサ３６の検出値の分散に相当する値（以下「検出空燃比の分散」という）を算出し、この検出空燃比の分散をＬｏｃａｌ学習指標とする。
【００８４】
(1) 第１気筒＃１の空燃比検出タイミングを、第１のタイミングＬ1 ＝Ｄca1 −９０（第１気筒＃１の現在の空燃比検出タイミングＤca1 から９０ＣＡ進角したタイミング）と仮定した場合の検出空燃比の分散Ｖ(Dca1-90) は、次式により算出する。
【００８５】
【数２】
2015052303.tif 000004
【００８６】
ここで、Ｎは一つの空燃比センサ３６当りの気筒数（例えば４）、φ(k) はｋ［ＣＡ］での空燃比センサ３６の検出値である。また、Ｍean φ(k) は｛φ(k) 、φ(k+720/N*1) 、φ(k+720/N*2) 、φ(k+720/N*3) ｝の平均値である。尚、φ(k) は等量比（空気過剰率の逆数）で算出される。
【００８７】
(2) 第１気筒＃１の空燃比検出タイミングを、第２のタイミングＬ2 ＝Ｄca1 −６０（第１気筒＃１の現在の空燃比検出タイミングＤca1 から６０ＣＡ進角したタイミング）と仮定した場合の検出空燃比の分散Ｖ(Dca1-60) は、次式により算出する。
【００８８】
【数３】
2015052303.tif 000005
【００８９】
(3) 第１気筒＃１の空燃比検出タイミングを、第３のタイミングＬ3 ＝Ｄca1 −３０（第１気筒＃１の現在の空燃比検出タイミングＤca1 から３０ＣＡ進角したタイミング）と仮定した場合の検出空燃比の分散Ｖ(Dca1-30) は、次式により算出する。
【００９０】
【数４】
2015052303.tif 000006
(4) 第１気筒＃１の空燃比検出タイミングを、第４のタイミングＬ4 ＝Ｄca1 （第１気筒＃１の現在の空燃比検出タイミングＤca1 と同じタイミング）と仮定した場合の検出空燃比の分散Ｖ(Dca1)は、次式により算出する。
【００９１】
【数５】
2015052303.tif 000007
【００９２】
(5) 第１気筒＃１の空燃比検出タイミングを、第５のタイミングＬ5 ＝Ｄca1 ＋３０（第１気筒＃１の現在の空燃比検出タイミングＤca1 から３０ＣＡ遅角したタイミング）と仮定した場合の検出空燃比の分散Ｖ(Dca1+30) は、次式により算出する。
【００９３】
【数６】
2015052303.tif 000008
【００９４】
(6) 第１気筒＃１の空燃比検出タイミングを、第６のタイミングＬ6 ＝Ｄca1 ＋６０（第１気筒＃１の現在の空燃比検出タイミングＤca1 から６０ＣＡ遅角したタイミング）と仮定した場合の検出空燃比の分散Ｖ(Dca1+60) は、次式により算出する。
【００９５】
【数７】
2015052303.tif 000009
【００９６】
このようにして、第１気筒＃１の空燃比検出タイミングを各タイミングＬ1 〜Ｌ6 と仮定した場合について、それぞれ検出空燃比の分散Ｖ（Ｌｏｃａｌ学習指標）を算出した後、図９のステップ５０３に進み、第１気筒＃１の空燃比検出タイミングを各タイミングＬ1 〜Ｌ6 と仮定した場合について、それぞれ検出空燃比の分散Ｖ（Ｌｏｃａｌ学習指標）を正規化する。
【００９７】
具体的には、第１気筒＃１の空燃比検出タイミングを各タイミングＬ1 〜Ｌ6 と仮定した場合の検出空燃比の分散Ｖ(Dca1-90) ，Ｖ(Dca1-60) ，Ｖ(Dca1-30) ，Ｖ(Dca1)，Ｖ(Dca1+30) ，Ｖ(Dca1+60) に対して、値が大きい方から順に高い得点（例えば５〜０点）を付加し、それらの得点Ｐoint(Dca1-90) ，Ｐoint(Dca1-60) ，Ｐoint(Dca1-30) ，Ｐoint(Dca1)，Ｐoint(Dca1+30) ，Ｐoint(Dca1+60) を、正規化指標（検出空燃比の分散Ｖを正規化したデータ）とする。
【００９８】
Ｖ(Dca1-90) →Ｐoint(Dca1-90)
Ｖ(Dca1-60) →Ｐoint(Dca1-60)
Ｖ(Dca1-30) →Ｐoint(Dca1-30)
Ｖ(Dca1)    →Ｐoint(Dca1)
Ｖ(Dca1+30) →Ｐoint(Dca1+30)
Ｖ(Dca1+60) →Ｐoint(Dca1+60)
【００９９】
この後、ステップ５０４に進み、第１気筒＃１の空燃比検出タイミングを各タイミングＬ1 〜Ｌ6 と仮定した場合について、それぞれ前回までの正規化指標（検出空燃比の分散Ｖを正規化したデータ）の積算値に今回の正規化指標を積算して正規化指標の積算値を更新する。
【０１００】
その後、上記ステップ５０１で、Ｌｏｃａｌ学習実行カウンタのカウント値が所定値を越えたと判定された時点で、正規化指標の所定期間の積算値を算出したと判断して、ステップ５０５に進み、各タイミングＬ1 〜Ｌ6 のうちの正規化指標の所定期間の積算値が最大となるタイミングを最適タイミングとして選択する。
【０１０１】
この後、ステップ５０６に進み、選択した最適タイミング（正規化指標の所定期間の積算値が最大となるタイミング）を第１気筒＃１の空燃比検出タイミングとして学習すると共に、その第１気筒＃１の空燃比検出タイミングを基準にして他の気筒（第２気筒＃２〜第４気筒＃４）の空燃比検出タイミングを学習し、それらの学習値をＥＣＵ３９のバックアップＲＡＭ等の書き換え可能な不揮発性メモリの学習値記憶領域に更新記憶する。
【０１０２】
この後、ステップ５０７に進み、Ｌｏｃａｌ学習実行カウンタのカウント値を「０」にリセットすると共に、ずれ判定フラグを「０」にリセットして、Ｌｏｃａｌ学習完了フラグを「１」にセットする。この後、ステップ５０８に進み、各気筒の気筒別補正値（燃料補正量）を所定値（例えば初期値又はずれ判定前の値）にリセットして、本ルーチンを終了する。
【０１０３】
［Ｇｌｏｂａｌ学習実行ルーチン］
図１１に示すＧｌｏｂａｌ学習実行ルーチンは、前記図８の空燃比検出タイミングずれ学習補正ルーチンのステップ４１０で実行されるサブルーチンである。
【０１０４】
本ルーチンでは、各気筒の推定空燃比の変化と気筒別補正値（燃料補正量）の変化との関係に基づいて空燃比検出タイミングを補正するＧｌｏｂａｌ学習を実行する。このＧｌｏｂａｌ学習では、各気筒の推定空燃比が想定している各気筒番号を仮想的に複数通り変更した場合の各々において各気筒の推定空燃比の変化とその推定空燃比の変更後の気筒番号の気筒別補正値（燃料補正量）の変化との相関値を算出し、その相関値が最大となるように空燃比検出タイミングを補正する。
【０１０５】
本ルーチンが起動されると、まず、ステップ６０１で、Ｇｌｏｂａｌ学習指標算出タイミング（例えば７２０ＣＡ毎）であるか否かを判定し、Ｇｌｏｂａｌ学習指標算出タイミングではないと判定されれば、以降の処理を行うことなく、本ルーチンを終了する。
【０１０６】
一方、上記ステップ６０１で、Ｇｌｏｂａｌ学習指標算出タイミングであると判定されれば、ステップ６０２に進み、Ｇｌｏｂａｌ学習実行カウンタのカウント値が所定値（例えば３０サイクルに相当する値）以下であるか否かを判定する。
【０１０７】
このステップ６０２で、Ｇｌｏｂａｌ学習実行カウンタのカウント値が所定値以下であると判定されれば、ステップ６０３に進み、図１２のＧｌｏｂａｌ学習指標算出ルーチンを実行して、第１気筒＃１の空燃比検出タイミングを下記の各タイミングＧ1 〜Ｇ4 ［ＣＡ］と仮定した場合について、それぞれ各気筒の推定空燃比の変化と燃料補正量の変化との相関値を算出し、この相関値をＧｌｏｂａｌ学習指標とする。
【０１０８】
具体的には、ステップ６１１で、現在の空燃比検出タイミングでの各気筒の推定空燃比の変化量Δφと燃料補正量の変化量ΔＣmpを次式により算出する。
Δφ＾#i(t) ＝φ＾#i(t) −φ＾#i(t-n)
ΔＣmp#i(t) ＝Ｃmp#i(t) −Ｃmp#i(t-n)
【０１０９】
ここで、φ＾#i(t) は第ｉ気筒＃ｉの推定空燃比の今回の算出値であり、φ＾#i(t-n) は第ｉ気筒＃ｉの推定空燃比のｎ回前の算出値である。また、Ｃmp#i(t) は第ｉ気筒＃ｉの燃料補正量の今回の算出値であり、Ｃmp#i(t-n) は第ｉ気筒＃ｉの燃料補正量のｎ回前の算出値である。尚、ｎは１以上の所定整数値である。
【０１１０】
この後、ステップ６１２に進み、第１気筒＃１の空燃比検出タイミングを下記の各タイミングＧ1 〜Ｇ4 ［ＣＡ］と仮定した場合について、それぞれ各気筒の推定空燃比の変化と燃料補正量の変化との相関値（推定空燃比の変化量Δφと燃料補正量の変化量ΔＣmpとの積の和）を算出する。
【０１１１】
(1) 第１気筒＃１の空燃比検出タイミングを、第１のタイミングＧ1 ＝Ｄca1 （第１気筒＃１の現在の空燃比検出タイミングＤca1 と同じタイミング）と仮定した場合には、図１３（ａ）に示すように、現在の空燃比検出タイミングでの第１気筒＃１の推定空燃比φ＾#1が第１気筒＃１の推定空燃比として算出され、現在の空燃比検出タイミングでの第３気筒＃３の推定空燃比φ＾#3が第３気筒＃３の推定空燃比として算出され、現在の空燃比検出タイミングでの第４気筒＃４の推定空燃比φ＾#4が第４気筒＃４の推定空燃比として算出され、現在の空燃比検出タイミングでの第２気筒＃２の推定空燃比φ＾#2が第２気筒＃２の推定空燃比として算出される。
【０１１２】
従って、第１気筒＃１の空燃比検出タイミングを第１のタイミングＧ1 ＝Ｄca1 と仮定した場合の相関値Ｃor(Dca1)は、次式により算出することができる。
Ｃor(Dca1)＝Δφ＾#1(t) ×ΔＣmp#1(t) ＋Δφ＾#3(t) ×ΔＣmp#3(t)
＋Δφ＾#4(t) ×ΔＣmp#4(t) ＋Δφ＾#2(t) ×ΔＣmp#2(t)
【０１１３】
(2) 第１気筒＃１の空燃比検出タイミングを、第２のタイミングＧ2 ＝Ｄca1 ＋１８０（第１気筒＃１の現在の空燃比検出タイミングＤca1 から１８０ＣＡ遅角したタイミング）と仮定した場合には、図１３（ｂ）に示すように、現在の空燃比検出タイミングでの第１気筒＃１の推定空燃比φ＾#1が第２気筒＃２の推定空燃比として算出され、現在の空燃比検出タイミングでの第３気筒＃３の推定空燃比φ＾#3が第１気筒＃１の推定空燃比として算出され、現在の空燃比検出タイミングでの第４気筒＃４の推定空燃比φ＾#4が第３気筒＃３の推定空燃比として算出され、現在の空燃比検出タイミングでの第２気筒＃２の推定空燃比φ＾#2が第４気筒＃４の推定空燃比として算出される。
【０１１４】
従って、第１気筒＃１の空燃比検出タイミングを第２のタイミングＧ2 ＝Ｄca1 ＋１８０と仮定した場合の相関値Ｃor(Dca1+180)は、次式により算出することができる。
Ｃor(Dca1+180)＝Δφ＾#3(t) ×ΔＣmp#1(t) ＋Δφ＾#4(t) ×ΔＣmp#3(t)
＋Δφ＾#2(t) ×ΔＣmp#4(t) ＋Δφ＾#1(t) ×ΔＣmp#2(t)
【０１１５】
(3) 第１気筒＃１の空燃比検出タイミングを、第３のタイミングＧ3 ＝Ｄca1 ＋３６０（第１気筒＃１の現在の空燃比検出タイミングＤca1 から３６０ＣＡ遅角したタイミング）と仮定した場合には、図１３（ｃ）に示すように、現在の空燃比検出タイミングでの第１気筒＃１の推定空燃比φ＾#1が第４気筒＃４の推定空燃比として算出され、現在の空燃比検出タイミングでの第３気筒＃３の推定空燃比φ＾#3が第２気筒＃２の推定空燃比として算出され、現在の空燃比検出タイミングでの第４気筒＃４の推定空燃比φ＾#4が第１気筒＃１の推定空燃比として算出され、現在の空燃比検出タイミングでの第２気筒＃２の推定空燃比φ＾#2が第３気筒＃３の推定空燃比として算出される。
【０１１６】
従って、第１気筒＃１の空燃比検出タイミングを第３のタイミングＧ3 ＝Ｄca1 ＋３６０と仮定した場合の相関値Ｃor(Dca1+360)は、次式により算出することができる。
Ｃor(Dca1+360)＝Δφ＾#4(t) ×ΔＣmp#1(t) ＋Δφ＾#2(t) ×ΔＣmp#3(t)
＋Δφ＾#1(t) ×ΔＣmp#4(t) ＋Δφ＾#3(t) ×ΔＣmp#2(t)
【０１１７】
(4) 第１気筒＃１の空燃比検出タイミングを、第４のタイミングＧ4 ＝Ｄca1 ＋５４０（第１気筒＃１の現在の空燃比検出タイミングＤca1 から５４０ＣＡ遅角したタイミング）と仮定した場合には、図１３（ｄ）に示すように、現在の空燃比検出タイミングでの第１気筒＃１の推定空燃比φ＾#1が第３気筒＃３の推定空燃比として算出され、現在の空燃比検出タイミングでの第３気筒＃３の推定空燃比φ＾#3が第４気筒＃４の推定空燃比として算出され、現在の空燃比検出タイミングでの第４気筒＃４の推定空燃比φ＾#4が第２気筒＃２の推定空燃比として算出され、現在の空燃比検出タイミングでの第２気筒＃２の推定空燃比φ＾#2が第１気筒＃１の推定空燃比として算出される。
【０１１８】
従って、第１気筒＃１の空燃比検出タイミングを第４のタイミングＧ4 ＝Ｄca1 ＋５４０と仮定した場合の相関値Ｃor(Dca1+540)は、次式により算出することができる。
Ｃor(Dca1+540)＝Δφ＾#2(t) ×ΔＣmp#1(t) ＋Δφ＾#1(t) ×ΔＣmp#3(t)
＋Δφ＾#3(t) ×ΔＣmp#4(t) ＋Δφ＾#4(t) ×ΔＣmp#2(t)
【０１１９】
このようにして、第１気筒＃１の空燃比検出タイミングを各タイミングＧ1 〜Ｇ4 と仮定した場合について、それぞれ各気筒の推定空燃比の変化と燃料補正量の変化との相関値Ｃor（Ｇｌｏｂａｌ学習指標）を算出した後、図１１のステップ６０４に進み、第１気筒＃１の空燃比検出タイミングを各タイミングＧ1 〜Ｇ4 と仮定した場合について、それぞれ前回までの相関値Ｃorの積算値に今回の相関値Ｃorを積算して相関値Ｃorの積算値を更新する。この際、相関値Ｃorのうちのプラス値のみを積算するようにしたり、或は、相関値Ｃorのうちのマイナス値のみを積算するようにしても良い。
【０１２０】
その後、上記ステップ６０２で、Ｇｌｏｂａｌ学習実行カウンタのカウント値が所定値を越えたと判定された時点で、相関値Ｃorの所定期間の積算値を算出したと判断して、ステップ６０５に進み、各タイミングＧ1 〜Ｇ4 のうちの相関値Ｃorの所定期間の積算値が最大となるタイミングを最適タイミングとして選択する。
【０１２１】
この後、ステップ６０６に進み、選択した最適タイミング（相関値Ｃorの所定期間の積算値が最大となるタイミング）を第１気筒＃１の空燃比検出タイミングとして学習すると共に、その第１気筒＃１の空燃比検出タイミングを基準にして他の気筒（第２気筒＃２〜第４気筒＃４）の空燃比検出タイミングを学習し、それらの学習値をＥＣＵ３９のバックアップＲＡＭ等の書き換え可能な不揮発性メモリの学習値記憶領域に更新記憶する。
【０１２２】
この後、ステップ６０７に進み、Ｇｌｏｂａｌ学習実行カウンタのカウント値を「０」にリセットすると共に、ずれ判定フラグを「０」にリセットし、更に、Ｌｏｃａｌ学習完了フラグを「０」にリセットすると共に、Ｌｏｃａｌ学習完了後カウンタのカウント値を「０」にリセットして、本ルーチンを終了する。
これらの図８〜図１２のルーチンが特許請求の範囲でいうタイミング補正手段としての役割を果たす。
【０１２３】
尚、Ｌｏｃａｌ学習が完了してからＧｌｏｂａｌ学習が完了するまでの期間、気筒別空燃比制御のＦ／Ｂゲインを大きくするようにしても良い。この場合、特定の気筒のＦ／Ｂゲインのみを大きくするようにして良いし、各気筒毎に異なるＦ／Ｂゲインを設定するようにしても良い。
【０１２４】
また、Ｌｏｃａｌ学習の実行後（つまりＬｏｃａｌ学習により空燃比検出タイミングが補正された後）、空燃比検出タイミングがずれていると判定される毎に該空燃比検出タイミングをエンジン１１の燃焼間隔（４気筒の場合には１８０ＣＡ）又はその複数倍ずつ補正するＧｌｏｂａｌ学習を実行することで、各気筒の空燃比検出タイミングを他の気筒の空燃比検出タイミングと入れ替えて、各気筒の空燃比検出タイミングを正しい空燃比検出タイミングに補正するようにしても良い。
【０１２５】
以上説明した本実施例の気筒別空燃比制御及び空燃比検出タイミング判定の禁止／許可切換の実行例を図１４を用いて説明する。
気筒別空燃比制御の実行条件が成立した時点ｔ1 で、各気筒の空燃比検出タイミング毎に検出された空燃比センサ３６の検出値に基づいて各気筒の空燃比を推定する気筒別空燃比推定を開始する。更に、空燃比センサ３６の検出値（排気集合部３４ａを流れる排出ガスの実空燃比）と推定空燃比とに基づいて観測残差ｅｒｒを算出する処理を開始する。
【０１２６】
この観測残差ｅｒｒが気筒別空燃比制御の許可閾値Ｋ1on 以上のときには、気筒別空燃比制御の許可フラグを「０」に維持して気筒別空燃比制御を禁止すると共に、気筒別空燃比推定モデルのカルマンゲインＫを高ゲインＫhighに維持する。更に、観測残差ｅｒｒが空燃比検出タイミング判定の許可閾値Ｋ2on 以上のときには、空燃比検出タイミング判定の許可フラグを「０」に維持して空燃比検出タイミング判定を禁止する。
【０１２７】
その後、観測残差ｅｒｒが気筒別空燃比制御の許可閾値Ｋ1on よりも小さくなった時点ｔ2 で、気筒別空燃比制御の許可フラグを「１」にセットして気筒別空燃比制御を許可すると共に、カルマンゲインＫを低ゲインＫlow に切り換える。更に、観測残差ｅｒｒが空燃比検出タイミング判定の許可閾値Ｋ2on よりも小さくなった時点ｔ3 で、空燃比検出タイミング判定の許可フラグを「１」にセットして空燃比検出タイミング判定を許可する。
【０１２８】
その後、エンジン１１の運転領域の変化等によって、観測残差ｅｒｒが気筒別空燃比制御の禁止閾値Ｋ1off以上になった場合には、その時点ｔ4 で、気筒別空燃比制御の許可フラグを「０」にリセットして気筒別空燃比制御を禁止すると共に、カルマンゲインＫを高ゲインＫhighに切り換える。更に、観測残差ｅｒｒが空燃比検出タイミング判定の禁止閾値Ｋ2off以上になった場合には、その時点ｔ5 で、空燃比検出タイミング判定の許可フラグを「０」にリセットして空燃比検出タイミング判定を禁止する。
【０１２９】
その後、観測残差ｅｒｒが気筒別空燃比制御の許可閾値Ｋ1on よりも小さくなった時点ｔ6 で、再び気筒別空燃比制御の許可フラグを「１」にセットして気筒別空燃比制御を許可すると共に、カルマンゲインＫを低ゲインＫlow に切り換える。更に、観測残差ｅｒｒが空燃比検出タイミング判定の許可閾値Ｋ2on よりも小さくなった時点ｔ7 で、再び空燃比検出タイミング判定の許可フラグを「１」にセットして空燃比検出タイミング判定を許可する。
【０１３０】
以上説明した本実施例では、空燃比センサ３６の検出値（排気集合部３４ａを流れる排出ガスの実空燃比）と推定空燃比とに基づいて観測残差ｅｒｒを算出し、この観測残差ｅｒｒが所定閾値（Ｋ2on 又はＫ2off）以上のときに空燃比検出タイミング判定を禁止するようにしている。このようにすれば、気筒別空燃比推定の開始後に各気筒の推定空燃比が収束する前で観測残差ｅｒｒがまだ大きいときや、エンジン１１の運転領域の変化等によって一時的に推定空燃比の推定精度が低下して観測残差ｅｒｒが大きくなったときに、空燃比検出タイミング判定を禁止することができる。これにより、空燃比検出タイミングがずれていないにも拘らず、空燃比検出タイミングのずれ有り（空燃比検出タイミングがずれている）と誤判定してしまうことを防止することができ、空燃比検出タイミングのずれ判定精度を向上させることができる。
【０１３１】
更に、本実施例では、観測残差ｅｒｒが所定閾値（Ｋ1on 又はＫ1off）以上のときに気筒別空燃比制御を禁止するようにしたので、エンジン１１の運転領域の変化等によって一時的に推定空燃比の推定精度が低下して観測残差ｅｒｒが大きくなったときに、推定空燃比に基づいた気筒別空燃比制御を停止することができる。
【０１３２】
また、本実施例では、観測残差ｅｒｒを算出する際に空燃比センサ３６の検出値の振幅（目標空燃比との差）を用いて観測残差ｅｒｒを正規化するようにしたので、空燃比センサ３６の検出値の振幅の変化の影響をあまり受けずに推定空燃比の誤差を適正に評価できる観測残差ｅｒｒを求めることができる。
【０１３３】
また、本実施例では、気筒別空燃比制御の開始前の推定空燃比に基づいて初期推定空燃比を算出し、気筒別空燃比制御による気筒別補正値（例えば燃料補正量）が所定値ＫＣを越えたときに推定空燃比が初期推定空燃比よりも広がっている（例えば基準空燃比に対する差が大きくなっている）場合に、空燃比検出タイミングのずれ有りと判定するようにしている。つまり、気筒別空燃比制御による気筒別補正値が所定値ＫＣを越えたときに、推定空燃比が初期推定空燃比よりも広がっている場合には、気筒別補正値がある程度大きくなったにも拘らず、推定空燃比が収束せずに発散しているため、空燃比検出タイミングがずれていると判断して、空燃比検出タイミングのずれ有りと判定する。これにより、空燃比検出タイミングのずれを精度良く検出することができる。
【０１３４】
更に、本実施例では、初期推定空燃比の算出が終了するまで気筒別空燃比制御を禁止するようにしたので、初期推定空燃比を算出する際に気筒別空燃比制御の影響をあまり受けずに初期推定空燃比を精度良く算出することができる。
【０１３５】
また、本実施例では、初期推定空燃比に応じて所定値ＫＣを設定するようにしたので、初期推定空燃比に応じて所定値ＫＣを変化させて所定値ＫＣを適正な大きさに設定することができる（例えば所定値ＫＣを必要以上に大きい値に設定してしまうことを回避できる）。
【０１３６】
更に、本実施例では、空燃比検出タイミング判定を行う際に気筒別補正値の変化量を制限するようにしたので、エンジン１１の運転領域の変化等によって気筒別補正値の変化量が一時的に過剰に大きくなることを防止して、空燃比検出タイミングのずれの誤検出を防止することができる。
また、本実施例では、観測残差ｅｒｒが所定閾値よりも小さいときに初期推定空燃比を算出するようにしたので、初期推定空燃比の算出精度を向上させることができる。
【０１３７】
また、本実施例では、観測残差ｅｒｒが所定閾値以上のときに気筒別空燃比推定モデルのカルマンゲインＫを高ゲインＫhighに設定して観測残差ｅｒｒが所定閾値よりも小さいときにカルマンゲインＫを低ゲインＫlow に設定するようにしている。このようにすれば、観測残差ｅｒｒが比較的大きいときには、カルマンゲインＫを高ゲインＫhighにして推定空燃比を速やかに収束させることができる。これにより、観測残差ｅｒｒを速やかに小さくして空燃比検出タイミング判定を許可するようにでき、空燃比検出タイミング判定の実行頻度を高くすることができる。一方、観測残差ｅｒｒが比較的小さいときには、カルマンゲインＫを低ゲインＫlow にしてノイズの影響を受け難くすることができ、耐ノイズ性を向上させることができる。
【０１３８】
尚、上記実施例では、気筒別空燃比制御の開始前の推定空燃比に基づいて初期推定空燃比を算出するようにしたが、これに限定されず、気筒別空燃比制御の開始直後の推定空燃比に基づいて初期推定空燃比を算出するようにしても良い。この場合、初期推定空燃比の算出が終了するまで気筒別補正値の変化量を制限するようにしても良い。
【０１３９】
また、空燃比検出タイミングのずれ有りと判定されたときに、空燃比検出タイミングを補正する方法は、上記実施例で説明した方法に限定されず、適宜変更しても良い。
また、上記実施例では、本発明を４気筒エンジンに適用したが、これに限定されず、２気筒エンジンや３気筒エンジン或は５気筒以上のエンジンに本発明を適用しても良い。
【０１４０】
その他、本発明は、吸気ポート噴射式エンジンに限定されず、筒内噴射式エンジンや、吸気ポート噴射用の燃料噴射弁と筒内噴射用の燃料噴射弁の両方を備えたデュアル噴射式のエンジンにも適用して実施できる。
【符号の説明】
【０１４１】
１１…エンジン（内燃機関）、１２…吸気管、３４…排気管、３４ａ…排気集合部、３６…空燃比センサ、３９…ＥＣＵ（気筒別空燃比推定手段，気筒別空燃比制御手段，タイミング判定手段，タイミング補正手段，残差算出手段，タイミング判定禁止手段，気筒別空燃比制御禁止手段，初期値算出手段，ゲイン切換手段）
【図１】
2015052303.tif 000010
【図２】
2015052303.tif 000011
【図３】
2015052303.tif 000012
【図４】
2015052303.tif 000013
【図５】
2015052303.tif 000014
【図６】
2015052303.tif 000015
【図７】
2015052303.tif 000016
【図８】
2015052303.tif 000017
【図９】
2015052303.tif 000018
【図１０】
2015052303.tif 000019
【図１１】
2015052303.tif 000020
【図１２】
2015052303.tif 000021
【図１３】
2015052303.tif 000022
【図１４】
2015052303.tif 000023