(57)【要約】【課題】エンジン回転停止制御が実行されたときの実エンジン回転挙動に基づいて目標軌道情報（目標軌道の算出に用いる基準回転速度とロストルクのずれ量）を学習するシステムにおいて、目標軌道情報の誤学習を防止できるようにする。【解決手段】前回の目標軌道情報（基準回転速度又はロストルクのずれ量）の学習値の記憶データに対して今回の目標軌道情報の学習値の算出データが所定値以上乖離した場合に、その状態が所定回数連続していないときには、何らかの外部負荷等によって目標軌道情報の学習値（算出データ）が一時的に変化した可能性があると判断して、目標軌道情報の学習値の記憶データを前回値に保持（ホールド）する。一方、その状態が所定回数連続したときには、エンジン１１のフリクション等が変化して目標軌道情報の学習値（算出データ）が定常的に変化したと判断して、目標軌道情報の学習値の記憶データを更新する。【選択図】図１
2012082735.tif 000002
【特許請求の範囲】
【請求項１】
エンジン回転が目標停止クランク角で停止するようにエンジン回転挙動の目標軌道を算出する目標軌道算出手段と、エンジン停止要求に応じてエンジン回転を停止させる際に実エンジン回転挙動を前記目標軌道に合わせるように発電機の負荷を制御するエンジン回転停止制御を実行する停止制御手段とを備えたエンジン回転停止制御装置において、
前記エンジン回転停止制御が実行されたときの実エンジン回転挙動に基づいて前記目標軌道の算出に用いる情報（以下「目標軌道情報」という）の学習値を算出し、その目標軌道情報の学習値の算出データに基づいて目標軌道情報の学習値の記憶データを更新することで前記目標軌道情報を学習する学習手段を備え、
前記学習手段は、前記目標軌道情報の学習値の記憶データに対して今回算出した目標軌道情報の学習値の算出データが所定値以上乖離した場合に、それ以後の複数回の目標軌道情報の学習値の算出データに基づいて更新許可条件が成立したか否かを判定し、該更新許可条件が成立したと判定したときに前記目標軌道情報の学習値の記憶データを更新することを特徴とするエンジン回転停止制御装置。
【請求項２】
前記学習手段は、前記目標軌道情報の学習値の記憶データに対して今回算出した目標軌道情報の学習値の算出データが所定値以上乖離した場合に、その状態が所定回数連続したときに前記更新許可条件が成立したと判定することを特徴とする請求項１に記載のエンジン回転停止制御装置。
【請求項３】
前記学習手段は、前記更新許可条件が成立したときに前記目標軌道情報を学習する際のゲイン（以下「学習ゲイン」という）を前記更新許可条件の成立前の値よりも大きくすることを特徴とする請求項１又は２に記載のエンジン回転停止制御装置。
【請求項４】
前記学習手段は、前記学習ゲインを前記更新許可条件の成立前の値よりも大きくした後に前記目標軌道情報の学習値が収束状態になったときに、前記学習ゲインを前記更新許可条件の成立前の値に戻すことを特徴とする請求項３に記載のエンジン回転停止制御装置。
【請求項５】
前記目標軌道算出手段は、エンジン回転の停止クランク角が目標停止クランク角となる基準タイミングのエンジン回転速度（以下「基準回転速度」という）と、エンジンのロストルクとに基づいて前記目標軌道を算出し、
前記学習手段は、前記目標軌道情報として前記基準回転速度と前記ロストルクのずれ量を学習することを特徴とする請求項１乃至４のいずれかに記載のエンジン回転停止制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エンジン回転停止位置（停止クランク角）を制御する機能を備えたエンジン回転停止制御装置に関する発明である。
【背景技術】
【０００２】
近年、例えば、特許文献１（特開２００８−２１５２３０号公報）に記載されているように、エンジン自動停止・始動システム（アイドルストップシステム）を搭載した車両では、再始動性を向上させるために、エンジン停止時（アイドルストップ時）にエンジン回転停止位置（停止クランク角）を始動に適したクランク角範囲に制御することを目的として、エンジン回転が目標停止クランク角で停止するまでの回転挙動を目標軌道として算出し、エンジン回転を停止させる際に実エンジン回転挙動を目標軌道に合わせるように発電機（オルタネータ）の負荷トルクを制御するエンジン回転停止制御を行うようにしたものがある。具体的には、実エンジン回転挙動を目標軌道に合わせるように発電機の要求負荷トルクを算出し、発電機の負荷トルク特性（発電指令値とエンジン回転速度と負荷トルクとの関係）を用いて、現在のエンジン回転速度と要求負荷トルクに応じた発電指令値を算出し、この発電指令値で発電機の発電制御電流（フィールド電流）を制御して発電機の負荷トルクを制御するようにしている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２１５２３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、エンジン回転停止制御の際に、エンジン回転速度が発電機の発電限界回転速度以下に低下すると、発電機の負荷トルクがほとんど発生しなくなる（図３参照）。このような回転速度領域では、発電機の負荷トルクの影響をほとんど受けずにエンジン回転速度が低下してエンジン回転が停止するため、所定の基準タイミング（例えばＴＤＣ）を通過する際のエンジン回転速度に応じた停止クランク角でエンジン回転が停止する。
【０００５】
このような特性に着目して、本出願人は、基準タイミングのエンジン回転速度（基準タイミングを通過する際のエンジン回転速度）と停止クランク角との関係を用いて、停止クランク角が目標停止クランク角となる基準タイミングのエンジン回転速度を基準回転速度として求め、エンジンのロストルク（ポンピングロスやフリクションロスを合計したトルク）を考慮したエネルギ保存則の関係式を用いて、基準回転速度を初期値としてクランク角を溯る方向に目標軌道を設定するシステムを研究しているが、その研究過程で次のような新たな課題が判明した。
【０００６】
エンジンのオイル交換や経時変化等によってエンジンのフリクション等が変化すると、目標軌道の算出に用いる基準回転速度やロストルクも変化する。そこで、目標軌道の算出精度を確保するために、エンジン回転停止制御によってエンジン回転速度が発電機の発電限界回転速度以下に低下したときの実エンジン回転挙動に基づいて基準回転速度の学習値とロストルクのずれ量の学習値を算出して記憶することで、基準回転速度とロストルクのずれ量を学習するシステムを研究している。しかし、何らかの外部負荷等によってエンジン回転停止制御を実行したときの実エンジン回転挙動が一時的に変化した場合には、その影響を受けて、実エンジン回転挙動に基づいて算出される基準回転速度の学習値やロストルクのずれ量の学習値が一時的に変化するため、基準回転速度やロストルクのずれ量を誤学習してしまう可能性があり、基準回転速度やロストルクのずれ量の学習精度が低下する可能性がある。
【０００７】
そこで、本発明が解決しようとする課題は、目標軌道情報（目標軌道の算出に用いる情報）の誤学習を防止することができ、目標軌道情報の学習精度を向上させることができるエンジン回転停止制御装置を提供することにある。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、請求項１に係る発明は、エンジン回転が目標停止クランク角で停止するようにエンジン回転挙動の目標軌道を算出する目標軌道算出手段と、エンジン停止要求に応じてエンジン回転を停止させる際に実エンジン回転挙動を目標軌道に合わせるように発電機の負荷を制御するエンジン回転停止制御を実行する停止制御手段とを備えたエンジン回転停止制御装置において、エンジン回転停止制御が実行されたときの実エンジン回転挙動に基づいて目標軌道の算出に用いる情報（以下「目標軌道情報」という）の学習値を算出し、その目標軌道情報の学習値の算出データに基づいて目標軌道情報の学習値の記憶データを更新することで目標軌道情報を学習する学習手段を備え、この学習手段は、目標軌道情報の学習値の記憶データに対して今回算出した目標軌道情報の学習値の算出データが所定値以上乖離した場合に、それ以後の複数回の目標軌道情報の学習値の算出データに基づいて更新許可条件が成立したか否かを判定し、該更新許可条件が成立したと判定したときに、目標軌道情報の学習値の記憶データを更新するようにしたものである。
【０００９】
目標軌道情報の学習値の記憶データに対して今回算出した目標軌道情報の学習値の算出データが比較的大きく変化した場合には、エンジンのオイル交換等によってエンジンのフリクション等が変化して目標軌道情報の学習値（算出データ）が定常的に変化した可能性もあるが、何らかの外部負荷等によって目標軌道情報の学習値（算出データ）が一時的に変化した可能性もある。
【００１０】
そこで、本発明は、目標軌道情報の学習値の記憶データに対して今回算出した目標軌道情報の学習値の算出データが所定値以上乖離した場合に、それ以後の複数回の目標軌道情報の学習値の算出データを監視することで、エンジンのフリクション等が変化して目標軌道情報の学習値（算出データ）が定常的に変化したのか、或は、何らかの外部負荷等によって目標軌道情報の学習値（算出データ）が一時的に変化したのかを判断して、更新許可条件が成立したか否かを判定することができる。
【００１１】
そして、何らかの外部負荷等によって目標軌道情報の学習値（算出データ）が一時的に変化した可能性があると判断して、更新許可条件が成立していないと判定したときには、目標軌道情報の学習値の記憶データを更新せずに前回値に保持することができる。一方、エンジンのフリクション等が変化して目標軌道情報の学習値（算出データ）が定常的に変化したと判断して、更新許可条件が成立したと判定したときには、目標軌道情報の学習値の記憶データを更新することができる。これにより、目標軌道情報の誤学習を防止することができ、目標軌道情報の学習精度を向上させることができる。
【００１２】
具体的には、請求項２のように、目標軌道情報の学習値の記憶データに対して今回算出した目標軌道情報の学習値の算出データが所定値以上乖離した場合に、その状態が所定回数連続したときに更新許可条件が成立したと判定するようにしても良い。このようにすれば、目標軌道情報の学習値の記憶データに対して今回算出した目標軌道情報の学習値の算出データが所定値以上乖離した状態が所定回数連続したときに、エンジンのフリクション等が変化して目標軌道情報の学習値（算出データ）が定常的に変化したと判断して、更新許可条件が成立したと判定することができる。
【００１３】
また、請求項３のように、更新許可条件が成立したときに目標軌道情報を学習する際のゲイン（以下「学習ゲイン」という）を更新許可条件の成立前の値よりも大きくするようにしても良い。このようにすれば、目標軌道情報の学習値（記憶データ）を速やかに目標軌道情報の真値に近付けることができる。
【００１４】
更に、請求項４のように、学習ゲインを更新許可条件の成立前の値よりも大きくした後に目標軌道情報の学習値が収束状態になったときに、学習ゲインを更新許可条件の成立前の値に戻すようにしても良い。このようにすれば、目標軌道情報の学習値が収束状態（ほぼ一定）になったときに、目標軌道情報の学習値が目標軌道情報の真値付近に収束したと判断して、学習ゲインを更新許可条件の成立前の値（通常値）に戻すことができる。
【００１５】
また、請求項５のように、エンジン回転の停止クランク角が目標停止クランク角となる基準タイミングのエンジン回転速度（以下「基準回転速度」という）と、エンジンのロストルクとに基づいて目標軌道を算出するシステムの場合には、目標軌道情報として基準回転速度とロストルクのずれ量を学習するようにすると良い。このようにすれば、基準回転速度とロストルクに基づいて目標軌道を算出するシステムにおいて、基準回転速度とロストルクのずれ量の学習精度を向上させて、目標軌道の算出精度を向上させることができる。
【図面の簡単な説明】
【００１６】
【図１】図１は本発明の一実施例におけるエンジン制御システムの概略構成を示す図である。
【図２】図２は目標軌道の算出方法を説明する図である。
【図３】図３はオルタネータ負荷特性を説明する図である。
【図４】図４はエンジン回転停止制御時の見掛上のオルタネータ負荷特性を説明する図である。
【図５】図５（ａ）は基準負荷トルクＴref(Ne(i))＝０に設定してエンジン回転停止制御を行った比較例を説明するタイムチャートであり、図５（ｂ）は基準負荷トルクＴref(Ne(i))を最大負荷の半分に設定してエンジン回転停止制御を行った実施例を説明するタイムチャートである。
【図６】図６はエンジンＥＣＵのエンジン回転停止制御機能を説明するブロック図である。
【図７】図７は負荷トルク特性のマップの一例を概略的に示す図である。
【図８】図８は制御全体の概要を説明するための図である。
【図９】図９はロストルクの学習方法を説明するための図である。
【図１０】図１０は基準回転速度の学習方法を説明するための図である。
【図１１】図１１はエネルギずれ量Δｅのマップの一例を概念的に示す図である。
【図１２】図１２は学習値（記憶データ）の更新方法を説明するタイムチャートである。
【図１３】図１３は更新許可条件が成立したときの学習値（記憶データ）の挙動を示すタイムチャートである。
【図１４】図１４は目標軌道算出ルーチンの処理の流れを説明するフローチャートである。
【図１５】図１５はオルタＦ／Ｂ停止制御ルーチンの処理の流れを説明するフローチャートである。
【図１６】図１６は学習制御ルーチンの処理の流れを説明するフローチャートである。
【図１７】図１７はロストルク学習ルーチンの処理の流れを説明するフローチャートである。
【図１８】図１８は基準回転速度学習ルーチンの処理の流れを説明するフローチャートである。
【図１９】図１９は学習値更新判定ルーチンの処理の流れを説明するフローチャートである。
【発明を実施するための形態】
【００１７】
以下、本発明を実施するための形態を具体化した一実施例を説明する。
まず、図１に基づいてエンジン制御システム全体の構成を概略的に説明する。
エンジン１１の吸気ポート１２に接続された吸気管１３の途中には、スロットルバルブ１４が設けられ、このスロットルバルブ１４の開度（スロットル開度）がスロットル開度センサ１５によって検出される。また、スロットルバルブ１４の下流側には、吸気管圧力を検出する吸気管圧力センサ１８が設けられ、各気筒の吸気ポート１２の近傍には、それぞれ吸気ポート１２に向けて燃料を噴射する燃料噴射弁１９が取り付けられている。
【００１８】
一方、エンジン１１の排気ポート２０に接続された排気管２１の途中には、排気ガス浄化用の触媒２２が設置されている。エンジン１１のシリンダブロックには、冷却水温を検出する冷却水温センサ２３が設けられている。エンジン１１のクランク軸２４に取り付けられたシグナルロータ２５の外周に対向してクランク角センサ２６が設置され、このクランク角センサ２６からシグナルロータ２５の回転に同期して所定クランク角毎（例えば３０℃Ａ毎）にクランクパルス信号が出力される。また、エンジン１１のカム軸２７に取り付けられたシグナルロータ２８の外周に対向してカム角センサ２９が設置され、このカム角センサ２９からシグナルロータ２８の回転に同期して所定のカム角でカムパルス信号が出力される。
【００１９】
また、オルタネータ３３（発電機）には、クランク軸２４に連結されたクランクプーリ３４の回転がベルト３５を介して伝達される。これにより、エンジン１１の動力でオルタネータ３３が回転駆動されて発電するようになっている。このオルタネータ３３の発電制御電流（フィールド電流）をデューティ制御することで、オルタネータ３３の負荷を制御することができる。
【００２０】
上述した各種センサの出力は、エンジン制御回路（以下「エンジンＥＣＵ」と表記する）３０に入力される。このエンジンＥＣＵ３０は、マイクロコンピュータを主体として構成され、各種センサで検出したエンジン運転状態に応じて、燃料噴射弁１９の燃料噴射量や燃料噴射時期、点火プラグ３１の点火時期を制御すると共に、エンジン運転中に所定の自動停止条件（例えばアクセル全閉、ブレーキ操作中、アイドル運転中等の条件）が成立してエンジン停止要求が発生したときに、燃焼（燃料噴射及び／又は点火）を停止させてエンジン回転を停止させるアイドルストップを実行し、このアイドルストップによるエンジン回転停止中（アイドルストップ中）に運転者が車両発進のための準備操作（ブレーキ解除、シフトレバーのドライブレンジへの操作等）や発進操作（アクセル踏み込み等）が行われたとき、或は車載機器の制御システムからの始動要求が発生したときに、所定の自動始動条件が成立してスタータ（図示せず）に通電してエンジン１１をクランキングして再始動させる。
【００２１】
更に、エンジンＥＣＵ３０は、後述する図１４及び図１５の各ルーチンを実行することで、エンジン回転が目標停止クランク角で停止するようにエンジン回転挙動の目標軌道を算出する目標軌道算出手段として機能すると共に、エンジン停止要求に応じてエンジン回転を停止させる際に実エンジン回転挙動を目標軌道に合わせるように制御するエンジン回転停止制御を実行する停止制御手段として機能する。本実施例では、エンジン回転停止制御として、実エンジン回転挙動を目標軌道に合わせるようにオルタネータ３３の負荷をフィードバック制御するオルタＦ／Ｂ停止制御を実行する。更に、エンジン１１の燃焼停止前（燃焼中）に実エンジン回転挙動を目標軌道に合わせるように点火時期をフィードバック制御する点火Ｆ／Ｂ停止制御を実行するようにしても良い。
【００２２】
エンジン回転停止制御（オルタＦ／Ｂ停止制御）の際に、エンジン回転速度がオルタネータ３３の発電限界回転速度以下に低下すると、オルタネータ３３の負荷トルクがほとんど発生しなくなる（図３参照）。このような回転速度領域では、オルタネータ３３の負荷トルクの影響をほとんど受けずにエンジン回転速度が低下してエンジン回転が停止するため、所定の基準タイミングを通過する際のエンジン回転速度に応じた停止クランク角でエンジン回転が停止する。ここで、基準タイミングは、エンジン回転速度がオルタネータ３３の発電限界回転速度以下の回転速度領域でクランク角が所定位置（例えばＴＤＣ）となるタイミングである。
【００２３】
このような特性に着目して、本実施例では、基準タイミングのエンジン回転速度（基準タイミングを通過する際のエンジン回転速度）と停止クランク角との関係を用いて、停止クランク角が目標停止クランク角となる基準タイミングのエンジン回転速度を基準回転速度として求め、目標軌道は、この基準回転速度に至るまでのクランク角と目標エンジン回転速度との関係を所定クランク角間隔で算出してテーブル（図示せず）に割り付けたものである。この目標軌道は、例えば、ロストルクを考慮したエネルギ保存則の関係式を用いて、基準回転速度を初期値としてクランク角を溯る方向に所定クランク角Δθ毎（例えばＴＤＣ毎）に算出される（図２参照）。
【００２４】
エネルギ保存則の関係式は次式で表される。
Ｎe(i+1)2 ＝Ｎe(i)2 ＋２／Ｊ×｛Ｔloss−Ｔref(Ne(i))｝×Δθ
ここで、Ｎe(i+1)は、現時点(i) よりも所定クランク角Δθ前の時点(i+1) のエンジン回転速度であり、Ｎe(i)は現時点(i) のエンジン回転速度である。また、Ｊはエンジン１１の慣性モーメントである。Ｔlossはポンピングロスとフリクションロスを合計したロストルクであり、Ｔref(Ne(i))は現時点(i) のエンジン回転速度Ｎe(i)におけるオルタネータ３３の基準負荷トルクである。
【００２５】
上記エネルギ保存則の関係式において、「Ｔloss−Ｔref(Ne(i))」は、ポンピングロスとフリクションロスとオルタネータ３３の基準負荷トルクＴref(Ne(i))を合計したロストルクに相当する。
【００２６】
本実施例では、オルタネータ３３の基準負荷トルクＴref(Ne(i))は、図３に示すようにオルタネータ３３の制御可能な最大負荷の半分（１／２）に設定されている。このようにすれば、オルタネータ３３は、モータジェネレータとは異なり、アシストトルクを出力できないという事情があっても、仮想的にオルタネータ３３の負荷トルクを正負両方向に制御することが可能となり（基準負荷Ｔref 以下の負荷トルクを仮想的に負の負荷トルクとし、基準負荷Ｔref 以上の負荷トルクを正の負荷トルクとしてオルタネータ３３の負荷トルクを制御することが可能となり）、目標軌道へのエンジン回転挙動の追従性を向上することができる。
【００２７】
尚、オルタネータ３３の基準負荷トルクＴref(Ne(i))は、最大負荷の半分（１／２）に限定されず、例えば、最大負荷の１／３、１／４、２／３、３／４等であっても良く、要は、オルタネータ３３の制御可能な最大負荷よりも小さく、０よりも大きい適宜の負荷を基準負荷トルクＴref(Ne(i))に設定すれば良い。
０＜Ｔref(Ne(i))＜最大負荷
【００２８】
図５（ａ）は、基準負荷トルクＴref(Ne(i))＝０に設定してエンジン回転停止制御（オルタＦ／Ｂ停止制御）を行った比較例を示している。この比較例では、オルタネータ３３の負荷トルクを正方向にしか制御できないため、実エンジン回転挙動がオーバーシュートした場合は、実エンジン回転挙動を目標軌道に一致させることができなくなる。
【００２９】
これに対して、本実施例のように、オルタネータ３３の基準負荷トルクＴref(Ne(i))を最大負荷よりも小さい適宜の負荷に設定すれば、図４に示すように、仮想的にオルタネータ３３の負荷トルクを正負両方向に制御することが可能となるため、図５（ｂ）に示すように、実回転挙動がオーバーシュートした場合でも、実回転挙動を目標軌道に一致させることができる。
【００３０】
更に、本実施例では、図６に示すように、目標軌道を算出する際に、オルタネータ３３の基準負荷トルクＴref(Ne(i))に応じた目標軌道を算出し、エンジン回転停止制御の実行中は、エンジン回転速度Ｎe(i)に応じた基準負荷トルクＴref(Ne(i))を算出すると共に、現時点(i) のクランク角θ(i) における目標エンジン回転速度と実エンジン回転速度との偏差を小さくするようにフィードバック負荷トルクを算出して、このフィードバック負荷トルクに基準負荷トルクＴref(Ne(i))を加算して要求負荷トルクＴalt を求める（実際には、この要求負荷トルクＴalt にプーリ比Ｒatioを乗算して要求軸トルクＴalt.final に変換する）。
【００３１】
この後、図７に示すオルタネータ３３の負荷トルク特性を用いて、オルタネータ３３の要求負荷トルクＴalt （要求軸トルクＴalt.final ）とエンジン回転速度Ｎe （又はエンジン回転速度Ｎe にプーリ比Ｒatioを乗算して求めたオルタネータ３３の回転速度Ｎalt ）に応じた発電指令値（デューティＤuty ）を算出する。この際、要求負荷トルクＴalt とエンジン回転速度Ｎe （又はオルタネータ３３の回転速度Ｎalt ）から発電指令値（デューティＤuty ）を直接算出するようにしても良いが、要求負荷トルクＴalt とエンジン回転速度Ｎe （又はオルタネータ３３の回転速度Ｎalt ）から要求フィールド電流（要求励磁電流）を算出し、この要求フィールド電流から発電指令値（デューティＤuty ）を算出するようにしても良い。
【００３２】
尚、図７に示す負荷トルク特性は、オルタネータ３３の出力電圧が所定値（例えば１３．５Ｖ）で一定の場合の特性であり、出力電圧毎に同様の特性が設定されている。この発電指令値（デューティＤuty ）に基づいてオルタネータ３３の発電制御電流（フィールド電流）を制御してオルタネータ３３の負荷トルクを制御する。
【００３３】
このようなオルタネータ３３の負荷トルクの制御を、エンジン回転速度がオルタネータ３３の発電限界回転速度Ｎelow（図３参照）以下に低下するまで所定クランク角間隔で周期的に実行することで、実エンジン回転挙動を目標軌道に合わせるようにオルタネータ３３の負荷トルクをフィードバック制御するエンジン回転停止制御（オルタＦ／Ｂ停止制御）を行う。
【００３４】
エンジン回転停止制御の際に、エンジンＥＣＵ３０は、所定クランク角周期で発電指令値を演算し、この発電指令値をＣＡＮ（Controller Area Network ）通信等により所定時間周期で電源系ＥＣＵ３６（図１参照）に送信する。更に、電源系ＥＣＵ３６は、受信した発電指令値をＬＩＮ（Local Interconnect Network）通信等により所定時間周期でオルタネータ３３に送信する。
【００３５】
ところで、エンジン１１のオイル交換や経時変化等によってエンジン１１のフリクション等が変化すると、目標軌道の算出に用いる基準回転速度やロストルクも変化する。そこで、本実施例では、目標軌道の算出精度を確保するために、図８に示すように、実エンジン回転挙動を目標軌道に合わせるようにオルタネータ３３の負荷トルクをフィードバック制御するエンジン回転停止制御を実行し、このエンジン回転停止制御によってエンジン回転速度がオルタネータ３３の発電限界回転速度以下に低下したときの実エンジン回転挙動に基づいて基準回転速度の学習値とロストルクのずれ量の学習値を算出して記憶することで、基準回転速度とロストルクのずれ量を学習し、その基準回転速度の学習値と、ロストルクのずれ量の学習値から求めたロストルクの学習値を用いて目標軌道を算出する。
以下、ロストルクと基準回転速度の学習方法について説明する。
【００３６】
［ロストルクの学習方法］
図９に示すように、エンジン回転停止制御によってエンジン回転速度がオルタネータ３３の発電限界回転速度以下に低下したときに、基準タイミング（例えば最初のＴＤＣ）の実エンジン回転速度Ｎe1を検出した後、所定の検出タイミング（例えば基準タイミングの次のＴＤＣ）の実エンジン回転速度Ｎe2を検出する。基準タイミングの実エンジン回転速度Ｎe1と、検出タイミングの実エンジン回転速度Ｎe2と、ロストルクＴlossとの関係は、エネルギ保存則を用いて、下記（１）式のように表すことができる。
【００３７】
【数１】
2012082735.tif 000003
【００３８】
上記（１）式によりロストルクＴlossを算出する。
また、エンジンＥＣＵ３０のバックアップＲＡＭ３７等の書き換え可能な不揮発性メモリ（エンジンＥＣＵ３０の電源オフ中でも記憶データを保持する書き換え可能なメモリ）に記憶されているロストルクの学習値Ｔlossの記憶データを、前回のロストルクの学習値Ｔloss(i-1) として読み込む。
【００３９】
この後、今回算出したロストルクＴlossと、前回のロストルクの学習値Ｔloss(i-1) を用いて、次式により今回のロストルクのずれ量の学習値ΔＴloss(i) を算出する。
ΔＴloss(i) ＝Ｔloss−Ｔloss(i-1)
【００４０】
この後、通常は、バックアップＲＡＭ３７等の不揮発性メモリに記憶されているロストルクのずれ量の学習値ΔＴlossの記憶データを、今回算出したロストルクのずれ量の学習値ΔＴloss(i) の算出データで更新する。
【００４１】
この後、ロストルクの学習値Ｔloss(i) を算出する場合には、前回のロストルクの学習値Ｔloss(i-1) と、学習ゲインＧain と、バックアップＲＡＭ３７等の不揮発性メモリに記憶されているロストルクのずれ量の学習値ΔＴlossを用いて、次式により今回のロストルクの学習値Ｔloss(i) を算出する。
Ｔloss(i) ＝Ｔloss(i-1) ＋Ｇain ×ΔＴloss
【００４２】
この後、バックアップＲＡＭ３７等の不揮発性メモリに記憶されているロストルクの学習値Ｔlossの記憶データを、今回算出したロストルクの学習値Ｔloss(i) の算出データで更新する。
【００４３】
［基準回転速度の学習方法］
図１０に示すように、エンジン回転停止制御によってエンジン回転速度がオルタネータ３３の発電限界回転速度以下に低下したときに、基準タイミング（例えば最初のＴＤＣ）の実エンジン回転速度Ｎe1を検出した後、エンジン回転が停止した停止クランク角Ｘを検出し、停止クランク角Ｘと目標停止クランク角Ｘtgt とを用いて、次式により停止位置ずれ量ΔＸを算出する。
ΔＸ＝Ｘ−Ｘtgt
【００４４】
この後、図１１に示すエネルギずれ量Δｅのマップを参照して、停止位置ずれ量ΔＸに応じたエネルギずれ量Δｅを算出する。ここで、エネルギずれ量Δｅは、基準点（基準タイミングで基準回転速度となる点）に対するエネルギずれ量であり、エネルギずれ量Δｅのマップは、予め試験データや設計データ等に基づいて作成され、エンジンＥＣＵ３０のＲＯＭに記憶されている。
【００４５】
また、バックアップＲＡＭ３７等の不揮発性メモリに記憶されている基準回転速度の学習値Ｎetgtの記憶データを、前回の基準回転速度の学習値Ｎetgt(i-1) として読み込む。
この後、前回の基準回転速度の学習値Ｎetgt(i-1) と、エネルギずれ量Δｅと、ロストルク学習分の補正係数αを用いて、エンジン回転が停止クランク角Ｘで停止する基準タイミングの推定エンジン回転速度Ｎeestを下記（２）式により算出する。
【００４６】
【数２】
2012082735.tif 000004
【００４７】
この後、前回の基準回転速度の学習値Ｎetgt(i-1) と、学習ゲインＧain と、基準タイミングの実エンジン回転速度Ｎe1及び推定エンジン回転速度Ｎeestを用いて、次式により今回の基準回転速度の学習値Ｎetgt(i) を算出する。
Ｎetgt(i) ＝Ｎetgt(i-1) ＋Ｇain ×（Ｎe1−Ｎeest）
【００４８】
この後、通常は、バックアップＲＡＭ３７等の不揮発性メモリに記憶されている基準回転速度の学習値Ｎetgtの記憶データを、今回算出した基準回転速度の学習値Ｎetgt(i) の算出データで更新する。
【００４９】
しかし、何らかの外部負荷等によってエンジン回転停止制御を実行したときの実エンジン回転挙動が一時的に変化した場合には、その影響を受けて、実エンジン回転挙動に基づいて算出される基準回転速度の学習値（算出データ）やロストルクのずれ量の学習値（算出データ）が一時的に変化するため、基準回転速度やロストルクのずれ量（以下これらを「目標軌道情報」と総称する）を誤学習してしまう可能性があり、目標軌道情報の学習精度が低下する可能性がある。
【００５０】
この対策として、本実施例では、目標軌道情報（基準回転速度又はロストルクのずれ量）の学習値の記憶データに対して今回算出した目標軌道情報の学習値の算出データが所定値以上乖離した場合に、それ以後の複数回の目標軌道情報の学習値の算出データを監視することで、エンジン１１のフリクション等が変化して目標軌道情報の学習値（算出データ）が定常的に変化したのか、或は、何らかの外部負荷等によって目標軌道情報の学習値（算出データ）が一時的に変化したのかを判断して、更新許可条件が成立したか否かを判定する。
【００５１】
具体的には、図１２に示すように、前回の目標軌道情報（基準回転速度又はロストルクのずれ量）の学習値の記憶データに対して今回の目標軌道情報の学習値の算出データが所定値以上乖離した場合（図１２のＡ及びＢ参照）に、その状態が所定回数（例えば４回）連続したか否かによって更新許可条件が成立したか否かを判定する。
【００５２】
そして、前回の目標軌道情報の学習値の記憶データに対して今回の目標軌道情報の学習値の算出データが所定値以上乖離した状態が所定回数連続していないときには、何らかの外部負荷等によって目標軌道情報の学習値（算出データ）が一時的に変化した可能性があると判断して、更新許可条件が成立していないと判定し、目標軌道情報の学習値の記憶データを更新せずに前回値に保持（ホールド）する。
【００５３】
一方、前回の目標軌道情報の学習値の記憶データに対して今回の目標軌道情報の学習値の算出データが所定値以上乖離した状態が所定回数連続したときには、その時点ｔ1 で、エンジン１１のフリクション等が変化して目標軌道情報の学習値（算出データ）が定常的に変化したと判断して、更新許可条件が成立したと判定し、目標軌道情報の学習値の記憶データを更新する。
【００５４】
その際、図１３に示すように、更新許可条件が成立したと判定した時点ｔ1 で、学習ゲインを通常値（更新許可条件の成立前の値）よりも大きくする。これにより、目標軌道情報の学習値（記憶データ）の更新速度を速くして（１回当りの更新量を大きくして）、目標軌道情報の学習値（記憶データ）を速やかに目標軌道情報の真値に近付ける。更に、学習ゲインを通常値よりも大きくした後に目標軌道情報の学習値（記憶データ）が収束状態（ほぼ一定）になったか否かを判定し、目標軌道情報の学習値（記憶データ）が収束状態になったと判定した時点ｔ2 で、目標軌道情報の学習値（記憶データ）が目標軌道情報の真値付近に収束したと判断して、学習ゲインを通常値に戻す。
【００５５】
以上説明した本実施例のエンジン回転停止制御及びそれに関連する制御は、エンジンＥＣＵ３０によって図１４乃至図１９の各ルーチンに従って実行される。以下、これら各ルーチンの処理内容を説明する。
【００５６】
［目標軌道算出ルーチン］
図１４に示す目標軌道算出ルーチンは、エンジンＥＣＵ３０の電源オン中に所定周期（所定クランク角周期）で繰り返し実行される。本ルーチンが起動されると、まず、ステップ１０１で、目標軌道算出完了フラグが目標軌道の算出前を意味する「０」にセットされているか否かを判定し、この目標軌道算出完了フラグが目標軌道算出完了を意味する「１」にセットされていれば、以降の処理を行うことなく、本ルーチンを終了する。
【００５７】
一方、このステップ１０１で、目標軌道算出完了フラグ＝０（目標軌道の算出前）と判定されれば、ステップ１０２に進み、ロストルクＴlossと、オルタネータ３３の基準負荷トルクＴref(Ne(i))を用いて、次式で表されるエネルギ保存則の関係式を用いて次の時点(i+1) の目標エンジン回転速度Ｎe(i+1)の二乗を算出する。
【００５８】
Ｎe(i+1)2 ＝Ｎe(i)2 ＋２／Ｊ×｛Ｔloss−Ｔref(Ne(i))｝×Δθ
ここで、Ｊはエンジン１１の慣性モーメント、Ｔlossはポンピングロスとフリクションロスを合計したロストルクである。上記エネルギ保存則の関係式において、「Ｔloss−Ｔref(Ne(i))」は、ポンピングロスとフリクションロスとオルタネータ３３の基準負荷トルクＴref(Ne(i))を合計したロストルクに相当する。
【００５９】
初期値は、ｉ＝０、θ(0) ＝基準タイミングのクランク角、Ｎe(0)＝基準回転速度である。この基準回転速度Ｎe(0)は、停止クランク角が目標停止クランク角となる基準タイミングのエンジン回転速度である。目標軌道は、基準回転速度Ｎe(0)を初期値としてクランク角を溯る方向に所定クランク角Δθ毎（例えばＴＤＣ毎）に算出する。
【００６０】
この後、ステップ１０３に進み、目標エンジン回転速度Ｎe(i+1)の二乗がエンジン回転停止制御を実行可能な最大エンジン回転速度Ｎemaxの二乗を越えたか否かを判定し、まだ最大エンジン回転速度Ｎemaxの二乗を越えていなければ、ステップ１０４に進み、目標軌道算出完了フラグを「０」に維持する（セットし直す）。
【００６１】
この後、ステップ１０６に進み、目標エンジン回転速度Ｎe(i+1)の二乗の平方根を算出して目標エンジン回転速度Ｎe(i+1)を求め、これを目標軌道のテーブル（図示せず）に割り付けて、本ルーチンを終了する。尚、エンジンＥＣＵ３０の演算負荷を低減するため、エンジン回転速度の二乗をそのままテーブルに割り付けても良い。目標軌道のテーブルは、エンジンＥＣＵ３０のメモリに記憶される。
【００６２】
以上のような処理を繰り返して、基準回転速度Ｎe(0)を初期値としてクランク角を溯る方向に所定クランク角毎（例えばＴＤＣ毎）に目標エンジン回転速度Ｎe(i+1)の二乗を算出して目標軌道のテーブルに目標エンジン回転速度Ｎe(i+1)を割り付ける処理を繰り返す。そして、上記ステップ１０３で、目標エンジン回転速度Ｎe(i+1)の二乗がエンジン回転停止制御を実行可能な最大エンジン回転速度Ｎemaxの二乗を越えたと判定された時点で、ステップ１０５に進み、目標軌道算出完了フラグを目標軌道算出完了を意味する「１」にセットして、ステップ１０６に進み、最後の目標エンジン回転速度Ｎe(i+1)の二乗の平方根を算出して目標エンジン回転速度Ｎe(i+1)を求め、これを目標軌道のテーブルに割り付けて、本ルーチンを終了する。
【００６３】
［オルタＦ／Ｂ停止制御ルーチン］
図１５に示すオルタＦ／Ｂ停止制御ルーチンは、エンジンＥＣＵ３０の電源オン中に所定周期（所定クランク角周期）で繰り返し実行される。本ルーチンが起動されると、まず、ステップ２０１で、エンジン停止要求（アイドルストップ要求）が発生したか否かを判定し、エンジン停止要求が発生していなければ、以降の処理を行うことなく、本ルーチンを終了する。
【００６４】
その後、上記ステップ２０１で、エンジン停止要求が発生したと判定された時点で、ステップ２０２に進み、現在のクランク角θとエンジン回転速度Ｎe を算出する。この後、ステップ２０３に進み、現在のクランク角θがオルタネータ３３の負荷トルクの制御タイミング（例えばＴＤＣ）であるか否かを判定し、オルタネータ３３の負荷トルクの制御タイミングでなければ、以降の処理を行うことなく、本ルーチンを終了する。
【００６５】
上記ステップ２０３で、現在のクランク角θがオルタネータ３３の負荷トルクの制御タイミングであると判定されれば、ステップ２０４に進み、現在のエンジン回転速度Ｎe がエンジン回転停止制御を実行可能な最大エンジン回転速度Ｎemaxよりも低いか否かを判定し、現在のエンジン回転速度Ｎe が最大エンジン回転速度Ｎemax以上であれば、以降の処理を行うことなく、本ルーチンを終了する。
【００６６】
その後、上記ステップ２０４で、現在のエンジン回転速度Ｎe が最大エンジン回転速度Ｎemaxよりも低いと判定されれば、ステップ２０５に進み、エンジン１１が燃焼中であるか否かを判定する。このステップ２０５で、エンジン停止要求が発生した直後でエンジン１１がまだ燃焼中であると判定されれば、ステップ２０６に進み、エンジン回転停止制御を開始する際のオルタネータ３３の要求負荷トルクＴalt を初期値（例えば基準負荷トルクＴref(Ne) ）に設定する。
Ｔalt ＝Ｔref(Ne)
【００６７】
その後、上記ステップ２０５で、エンジン１１の燃焼が停止したと判定された場合には、ステップ２０７に進み、目標軌道のテーブルを参照して、今回の制御タイミングに対応した目標エンジン回転速度Ｎetg を求める。
【００６８】
この後、ステップ２０８に進み、現在の実エンジン回転速度Ｎe と目標エンジン回転速度Ｎetg とのエネルギ差分ΔＥを次式により算出する。
ΔＥ＝Ｊ／２×（Ｎe 2 −Ｎetg 2 ）
ここで、Ｊはエンジン１１の慣性モーメントである。
【００６９】
この後、ステップ２０９に進み、エネルギ差分ΔＥとオルタネータ３３の基準負荷トルクＴref(Ne) を用いて、次式により要求負荷トルクＴalt を算出する。
Ｔalt ＝Ｋ×ΔＥ／Δθ＋Ｔref(Ne)
【００７０】
ここで、「Ｋ×ΔＥ／Δθ」はフィードバック負荷トルクであり、Ｋはフィードバックゲイン、Δθはクランク角変化量である。
この後、ステップ２１０に進み、要求負荷トルクＴalt にプーリ比Ｒatioを乗算して、オルタネータ３３の要求軸トルクＴalt.final に変換する。
【００７１】
この後、ステップ２１１に進み、バッテリ電圧を検出した後、ステップ２１２に進み、バッテリ電圧毎に作成された複数の負荷トルク特性マップ（図７参照）の中から、現在のバッテリ電圧に対応する負荷トルク特性マップを選択して、現在の要求負荷トルクＴalt （要求軸トルクＴalt.final ）とエンジン回転速度Ｎe （又はオルタネータ３３の回転速度Ｎalt ）に応じた発電指令値（デューティＤuty ）を算出する。
【００７２】
この発電指令値（デューティＤuty ）に基づいてオルタネータ３３の発電制御電流（フィールド電流）を制御してオルタネータ３３の負荷トルクを制御することで、実エンジン回転挙動を目標軌道に合わせるようにオルタネータ３３の負荷トルクをフィードバック制御するオルタＦ／Ｂ停止制御を行う。
【００７３】
［学習制御ルーチン］
図１６に示す学習制御ルーチンは、エンジンＥＣＵ３０の電源オン中に所定周期（所定クランク角周期）で繰り返し実行され、特許請求の範囲でいう学習手段としての役割を果たす。本ルーチンが起動されると、まず、ステップ３０１で、エンジン停止要求（アイドルストップ要求）が発生したか否かを判定し、エンジン停止要求が発生していなければ、以降の処理を行うことなく、本ルーチンを終了する。
【００７４】
その後、上記ステップ３０１で、エンジン停止要求が発生したと判定された時点で、ステップ３０２に進み、学習実行条件が成立しているか否かを、例えば、エンジン１１が暖機状態（冷却水温が所定値以上）であるか否か等によって判定し、学習実行条件が成立していなければ、以降の処理を行うことなく、本ルーチンを終了する。
【００７５】
一方、上記ステップ３０２で、学習実行条件が成立していると判定された場合には、ステップ３０３に進み、後述する図１７のロストルク学習ルーチンを実行することで、エンジン回転停止制御によってエンジン回転速度がオルタネータ３３の発電限界回転速度以下に低下したときの実エンジン回転挙動に基づいてロストルクのずれ量を学習する。更に、次のステップ３０４で、後述する図１８の基準回転速度学習ルーチンを実行することで、エンジン回転停止制御によってエンジン回転速度がオルタネータ３３の発電限界回転速度以下に低下したときの実エンジン回転挙動に基づいて基準回転速度を学習する。
【００７６】
［ロストルク学習ルーチン］
図１７に示すロストルク学習ルーチンは、前記図１６の学習制御ルーチンのステップ３０３で実行されるサブルーチンである。本ルーチンが起動されると、まず、ステップ４０１で、エンジン回転停止制御によってエンジン回転速度がオルタネータ３３の発電限界回転速度以下に低下したときに、現在のクランク角が基準タイミング（例えば最初のＴＤＣ）であるか否かを判定し、基準タイミングであると判定された時点で、ステップ４０２に進み、基準タイミングの実エンジン回転速度Ｎe1を検出する。
【００７７】
この後、ステップ４０３に進み、現在のクランク角が検出タイミング（例えば基準タイミングの次のＴＤＣ）であるか否かを判定し、検出タイミングであると判定された時点で、ステップ４０４に進み、検出タイミングの実エンジン回転速度Ｎe2を検出する。
【００７８】
この後、ステップ４０５に進み、基準タイミングの実エンジン回転速度Ｎe1と、検出タイミングの実エンジン回転速度Ｎe2を用いて、前記（１）式によりロストルクＴlossを算出した後、ステップ４０６に進み、エンジンＥＣＵ３０のバックアップＲＡＭ３７等の不揮発性メモリに記憶されているロストルクの学習値Ｔlossの記憶データを、前回のロストルクの学習値Ｔloss(i-1) として読み込む。
【００７９】
この後、ステップ４０７に進み、今回算出したロストルクＴlossと、前回のロストルクの学習値Ｔloss(i-1) を用いて、次式により今回のロストルクのずれ量の学習値ΔＴloss(i) を算出する。
ΔＴloss(i) ＝Ｔloss−Ｔloss(i-1)
【００８０】
この後、ステップ４０８に進み、後述する図１９の学習値更新判定ルーチンを実行することで、バックアップＲＡＭ３７等の不揮発性メモリに記憶されているロストルクのずれ量の学習値ΔＴlossの記憶データを、今回算出したロストルクのずれ量の学習値ΔＴloss(i) の算出データで更新するか又は前回値に保持（ホールド）する。
【００８１】
この後、ロストルクの学習値Ｔloss(i) を算出する場合には、前回のロストルクの学習値Ｔloss(i-1) と、学習ゲインＧain と、バックアップＲＡＭ３７等の不揮発性メモリに記憶されているロストルクのずれ量の学習値ΔＴlossを用いて、次式により今回のロストルクの学習値Ｔloss(i) を算出する。
Ｔloss(i) ＝Ｔloss(i-1) ＋Ｇain ×ΔＴloss
【００８２】
この後、バックアップＲＡＭ３７等の不揮発性メモリに記憶されているロストルクの学習値Ｔlossの記憶データを、今回算出したロストルクの学習値Ｔloss(i) の算出データで更新する。
【００８３】
［基準回転速度学習ルーチン］
図１８に示す基準回転速度学習ルーチンは、前記図１６の学習制御ルーチンのステップ３０４で実行されるサブルーチンである。本ルーチンが起動されると、まず、ステップ５０１で、エンジン回転停止制御によってエンジン回転速度がオルタネータ３３の発電限界回転速度以下に低下したときに、現在のクランク角が基準タイミング（例えば最初のＴＤＣ）であるか否かを判定し、基準タイミングであると判定された時点で、ステップ５０２に進み、基準タイミングの実エンジン回転速度Ｎe1を検出する。
【００８４】
この後、ステップ５０３に進み、エンジン回転が停止したか否かを判定し、エンジン回転が停止したと判定された時点で、ステップ５０４に進み、エンジン回転が停止した停止クランク角Ｘを検出する。
【００８５】
この後、ステップ５０５に進み、停止クランク角Ｘと目標停止クランク角Ｘtgt とを用いて、次式により停止位置ずれ量ΔＸを算出する。
ΔＸ＝Ｘ−Ｘtgt
【００８６】
この後、ステップ５０６に進み、図１１に示すエネルギずれ量Δｅのマップを参照して、停止位置ずれ量ΔＸに応じたエネルギずれ量Δｅを算出した後、ステップ５０７に進み、エンジンＥＣＵ３０のバックアップＲＡＭ３７等の不揮発性メモリに記憶されている基準回転速度の学習値Ｎetgtの記憶データを、前回の基準回転速度の学習値Ｎetgt(i-1) として読み込む。
【００８７】
この後、ステップ５０８に進み、前回の基準回転速度の学習値Ｎetgt(i-1) と、エネルギずれ量Δｅと、ロストルク学習分の補正係数αを用いて、エンジン回転が停止クランク角Ｘで停止する基準タイミングの推定エンジン回転速度Ｎeestを前記（２）式により算出する。
【００８８】
この後、ステップ５０９に進み、前回の基準回転速度の学習値Ｎetgt(i-1) と、学習ゲインＧain と、基準タイミングの実エンジン回転速度Ｎe1及び推定エンジン回転速度Ｎeestを用いて、次式により今回の基準回転速度の学習値Ｎetgt(i) を算出する。
Ｎetgt(i) ＝Ｎetgt(i-1) ＋Ｇain ×（Ｎe1−Ｎeest）
【００８９】
この後、ステップ５１０に進み、後述する図１９の学習値更新判定ルーチンを実行することで、バックアップＲＡＭ３７等の不揮発性メモリに記憶されている基準回転速度の学習値Ｎetgtの記憶データを、今回算出した基準回転速度の学習値Ｎetgt(i) の算出データで更新するか又は前回値に保持（ホールド）する。
【００９０】
［学習値更新判定ルーチン］
図１９に示す学習値更新判定ルーチンは、前記図１７のロストルク学習ルーチンのステップ４０８及び前記図１８の基準回転速度学習ルーチンのステップ５１０で実行されるサブルーチンである。尚、実際には、図１７のステップ４０８ではロストルクのずれ量の学習値更新判定ルーチンを実行し、前記図１８のステップ５１０では基準回転速度の学習値更新判定ルーチンを実行するが、以下の説明では、基準回転速度とロストルクのずれ量を「目標軌道情報」と総称して説明する。
【００９１】
本ルーチンが起動されると、まず、ステップ６０１で、ゲイン変更フラグが「１」にセットされているか否かを判定し、ゲイン変更フラグが「０」にセットされていると判定されれば、ステップ６０２に進み、今回の目標軌道情報（基準回転速度又はロストルクのずれ量）の学習値の算出データと前回の目標軌道情報の学習値の記憶データとの差分（差の絶対値）が所定値Ｋ1 以上であるか否かによって、前回の目標軌道情報の学習値の記憶データに対して今回の目標軌道情報の学習値の算出データが所定値以上乖離したか否かを判定する。
【００９２】
このステップ６０２で、今回の目標軌道情報の学習値の算出データと前回の目標軌道情報の学習値の記憶データとの差分が所定値Ｋ1 よりも小さいと判定された場合には、ステップ６０３に進み、バックアップＲＡＭ３７等の不揮発性メモリに記憶されている目標軌道情報の学習値の記憶データを、今回算出した目標軌道情報の学習値の算出データで更新する。
【００９３】
一方、上記ステップ６０２で、今回の目標軌道情報の学習値の算出データと前回の目標軌道情報の学習値の記憶データとの差分が所定値Ｋ1 以上である（前回の目標軌道情報の学習値の記憶データに対して今回の目標軌道情報の学習値の算出データが所定値以上乖離した）と判定された場合には、ステップ６０４に進み、今回の目標軌道情報の学習値の算出データと前回の目標軌道情報の学習値の記憶データとの差分が所定値Ｋ1 以上の状態（前回の目標軌道情報の学習値の記憶データに対して今回の目標軌道情報の学習値の算出データが所定値以上乖離した状態）が所定回数（例えば４回）連続したか否かによって更新許可条件が成立したか否かを判定する。
【００９４】
このステップ６０４で、今回の目標軌道情報の学習値の算出データと前回の目標軌道情報の学習値の記憶データとの差分が所定値Ｋ1 以上の状態が所定回数連続していないと判定された場合には、何らかの外部負荷等によって目標軌道情報の学習値（算出データ）が一時的に変化した可能性があると判断して、更新許可条件が成立していないと判定し、ステップ６０５に進み、バックアップＲＡＭ３７等の不揮発性メモリに記憶されている目標軌道情報の学習値の記憶データを更新せずに前回値に保持（ホールド）する。
【００９５】
一方、上記ステップ６０４で、今回の目標軌道情報の学習値の算出データと前回の目標軌道情報の学習値の記憶データとの差分が所定値Ｋ1 以上の状態が所定回数連続したと判定された場合には、エンジン１１のフリクション等が変化して目標軌道情報の学習値（算出データ）が定常的に変化したと判断して、更新許可条件が成立したと判定する。
【００９６】
この場合、まず、ステップ６０６に進み、学習ゲインを通常値（更新許可条件の成立前の値）よりも大きくして、ゲイン変更フラグを「１」にセットした後、ステップ６０７に進み、バックアップＲＡＭ３７等の不揮発性メモリに記憶されている目標軌道情報の学習値の記憶データを、今回算出した目標軌道情報の学習値の算出データで更新する。これにより、目標軌道情報の学習値（記憶データ）の更新速度を速くして（１回当りの更新量を大きくして）、目標軌道情報の学習値（記憶データ）を速やかに目標軌道情報の真値に近付ける。
【００９７】
この後、ステップ６０８に進み、今回の目標軌道情報の学習値の算出データと前回の目標軌道情報の学習値の記憶データとの差分（差の絶対値）が所定値Ｋ2 以下であるか否かによって、目標軌道情報の学習値（記憶データ）が収束状態（ほぼ一定）になったか否かを判定する。
【００９８】
このステップ６０８で、目標軌道情報の学習値（記憶データ）が収束状態になっていないと判定された場合には、学習ゲインを通常値よりも大きくしたまま、本ルーチンを終了する。この場合、ステップ６０１で、ゲイン変更フラグが「１」にセットされていると判定されて、ステップ６０７に進み、目標軌道情報の学習値の記憶データを今回算出した目標軌道情報の学習値の算出データで更新した後、目標軌道情報の学習値（記憶データ）が収束状態になったか否かを判定する処理を繰り返す（ステップ６０７、６０８）。
【００９９】
その後、ステップ６０８で、目標軌道情報の学習値（記憶データ）が収束状態になったと判定されたときに、目標軌道情報の学習値（記憶データ）が目標軌道情報の真値付近に収束したと判断して、ステップ６０９に進み、学習ゲインを通常値に戻して、ゲイン変更フラグを「０」にリセットする。
【０１００】
以上説明した本実施例では、前回の目標軌道情報（基準回転速度又はロストルクのずれ量）の学習値の記憶データに対して今回の目標軌道情報の学習値の算出データが所定値以上乖離した場合に、その状態が所定回数連続していないときには、何らかの外部負荷等によって目標軌道情報の学習値（算出データ）が一時的に変化した可能性があると判断して、更新許可条件が成立していないと判定し、目標軌道情報の学習値の記憶データを更新せずに前回値に保持（ホールド）する。一方、前回の目標軌道情報の学習値の記憶データに対して今回の目標軌道情報の学習値の算出データが所定値以上乖離した状態が所定回数連続したときには、エンジン１１のフリクション等が変化して目標軌道情報の学習値（算出データ）が定常的に変化したと判断して、更新許可条件が成立したと判定し、目標軌道情報の学習値の記憶データを更新する。これにより、目標軌道情報の誤学習を防止することができ、目標軌道情報の学習精度を向上させて、目標軌道の算出精度を向上させることができる。
【０１０１】
尚、上記実施例では、前回の目標軌道情報の学習値の記憶データに対して今回の目標軌道情報の学習値の算出データが所定値以上乖離した状態が所定回数連続したときに更新許可条件が成立したと判定するようにしたが、これに限定されず、例えば、前回の目標軌道情報の学習値の記憶データに対して今回の目標軌道情報の学習値の算出データが所定値以上乖離した回数が所定期間内に所定値を越えたときに更新許可条件が成立したと判定するようにしても良く、要は、前回の目標軌道情報の学習値の記憶データに対して今回の目標軌道情報の学習値の算出データが所定値以上乖離した場合に、それ以後の複数回の目標軌道情報の学習値の算出データに基づいて更新許可条件が成立したか否かを判定するようにすれば良い。
【０１０２】
また、上記実施例では、目標軌道情報（目標軌道の算出に用いる情報）として基準回転速度とロストルクのずれ量の両方を学習するシステムに本発明を適用したが、これに限定されず、例えば、目標軌道情報として基準回転速度とロストルクのずれ量のうちの一方のみを学習するシステムに本発明を適用したり、或は、目標軌道情報として基準回転速度やロストルクのずれ量以外の他の情報（例えばポンピングロスやフリクションロス等）を学習するシステムに本発明を適用しても良い。
【０１０３】
また、本発明は、図１に示すような吸気ポート噴射式エンジンに限定されず、筒内噴射式エンジンや、吸気ポート噴射用の燃料噴射弁と筒内噴射用の燃料噴射弁の両方を備えたデュアル噴射式のエンジンにも適用して実施できる。
【０１０４】
更に、本発明の適用範囲は、車両の動力源としてエンジンのみを備えた一般的な車両に限定されず、車両の動力源としてエンジンとモータを備えたハイブリッド車に本発明を適用しても良い。
【符号の説明】
【０１０５】
１１…エンジン（内燃機関）、１３…吸気管、１４…スロットルバルブ、１８…吸気管圧力センサ、１９…燃料噴射弁、２１…排気管、３０…エンジンＥＣＵ（目標軌道算出手段，停止制御手段，学習手段）、３３…オルタネータ（発電機）、３７…バックアップＲＡＭ
【図１】
2012082735.tif 000005
【図２】
2012082735.tif 000006
【図３】
2012082735.tif 000007
【図４】
2012082735.tif 000008
【図５】
2012082735.tif 000009
【図６】
2012082735.tif 000010
【図７】
2012082735.tif 000011
【図８】
2012082735.tif 000012
【図９】
2012082735.tif 000013
【図１０】
2012082735.tif 000014
【図１１】
2012082735.tif 000015
【図１２】
2012082735.tif 000016
【図１３】
2012082735.tif 000017
【図１４】
2012082735.tif 000018
【図１５】
2012082735.tif 000019
【図１６】
2012082735.tif 000020
【図１７】
2012082735.tif 000021
【図１８】
2012082735.tif 000022
【図１９】
2012082735.tif 000023