(57)【要約】【課題】アイドルストップ時にエンジン回転停止位置を精度良く目標停止位置に制御できるようにする。【解決手段】エンジン回転の目標停止位置から所定クランク角手前の上死点（ＴＤＣ）に設定した基準点の目標回転速度を設定すると共に、エンジン回転停止挙動開始から基準点の目標回転速度に至るまでの目標とするエンジン回転挙動の軌道（目標軌道）を基準点の目標回転速度とエンジンフリクションとに基づいて算出する。そして、エンジン回転停止挙動中に、エンジン回転挙動を前記目標軌道に一致させるようにオルタネータ（電動機）のトルクを制御する。基準点の目標回転速度は、オルタネータのトルクが発生する回転速度範囲の下限回転速度以下で且つ該下限回転速度に近い回転速度に設定されている。【選択図】図２
2010043532.tif 000002
【特許請求の範囲】
【請求項１】
エンジン停止要求に応じてエンジン回転を停止させる際に、エンジン回転停止位置を目標停止位置に制御するようにエンジン回転挙動を電動機のトルクで制御するエンジン停止制御を実行するエンジン停止制御装置において、
前記目標停止位置から所定クランク角手前に設定した基準点の目標回転速度を設定する基準点目標回転速度設定手段と、
前記エンジン停止制御開始から前記基準点の目標回転速度に至るまでの目標とするエンジン回転挙動の軌道（以下「目標軌道」という）を前記基準点の目標回転速度とエンジンフリクションとに基づいて算出する目標軌道算出手段と、
前記エンジン停止制御の実行中にエンジン回転挙動を前記目標軌道に一致させるように前記電動機のトルクを制御する停止制御手段と
を備えていることを特徴とするエンジン停止制御装置。
【請求項２】
前記基準点目標回転速度設定手段は、前記基準点の目標回転速度を前記電動機のトルクが発生する回転速度範囲の下限回転速度以下に設定することを特徴とする請求項１に記載のエンジン停止制御装置。
【請求項３】
前記目標軌道算出手段は、複数のエンジンフリクションの中から、前記基準点までのクランク角に応じたエンジンフリクションを選択して前記目標軌道を算出することを特徴とする請求項１又は２に記載のエンジン停止制御装置。
【請求項４】
エンジン回転の実際の停止位置と目標停止位置との差に基づいて前記基準点の目標回転速度を学習補正する学習補正手段を備えていることを特徴とする請求項１乃至３のいずれかに記載のエンジン停止制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エンジン停止時に、エンジン回転停止位置（停止クランク角）を制御する機能を備えたエンジン停止制御装置に関する発明である。
【背景技術】
【０００２】
近年、特許文献１（特開２００５−３１５２０２号公報）に記載されているように、エンジン自動停止・始動システム（アイドルストップシステム）を搭載した車両では、再始動性を向上させるために、エンジン停止時（アイドルストップ時）にエンジン回転停止位置（停止クランク角）を始動に適したクランク角範囲に制御することを目的として、エンジンを自動停止させる際に、オルタネータの目標電流値を予め大きな値に設定された初期値に上昇させた後に低下させる制御を実行するようにしたものがある。
【特許文献１】特開２００５−３１５２０２号公報（第２頁等）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記特許文献１に記載のエンジン停止制御装置は、エンジンを自動停止させる際にオルタネータの負荷を制御することでエンジン回転停止位置を目標のクランク角範囲に制御しようとするものであるが、実際には、ピストンが圧縮上死点（ＴＤＣ）を通過する時点で検出されたエンジン回転速度が４８０ｒｐｍ〜５４０ｒｐｍ内であるときに、予め設定されたマップを用いてオルタネータの目標電流値をその時点のエンジン回転速度に応じて設定するだけであるので（特許文献１の段落［００６９］参照）、オルタネータ負荷の制御が大雑把であり、エンジン停止過程のエンジン回転挙動のばらつきを十分に補償することが困難である。このため、上記特許文献１のものでは、エンジン回転停止位置のばらつきを十分に低減できず、再始動性向上の効果が少ないと思われる。
【０００４】
この課題を解決するために、本願の出願人は、特願２００７−５３５９８号、特願２００７−５４７７５号の明細書に記載したように、エンジン回転が目標停止位置で停止するまでの目標とするエンジン回転挙動（以下「目標軌道」という）を算出し、エンジン回転挙動を当該目標軌道に合わせるようにエンジンの補機負荷を制御する発明を出願している。
【０００５】
ところで、エンジン停止過程では、エンジンの回転による筒内空気の圧縮・膨張により筒内圧が変化するが、エンジン回転停止時のクランク角によってエンジン回転停止時の筒内圧が変化してクランク軸に作用するコンプレッショントルク（筒内圧によって生じるトルク）が変化するため、エンジン回転を目標停止位置で停止させるための適正な目標軌道も変化する。上記出願発明では、このような目標軌道の変化は考慮されていないため、その分、目標軌道の精度が悪くなる。
【０００６】
このような課題を解決するために、本願の出願人は、特願２００７−３２５５２０号の明細書に記載したように、コンプレッションの影響を考慮して、目標停止位置に応じて目標軌道を補正する発明を出願している。この発明では、誤差のない状況であれば、精度良く目標軌道を設定できるが、エンジン回転停止挙動を支配するフリクションやコンプレッションの特性は、オイル温度、オイル劣化、経年変化等で変動する。そのため、目標軌道を精度良く設定するには、停止位置誤差からフリクションとコンプレッションを別々に学習する必要があるが、停止位置誤差からコンプレッションとフリクションを別々に学習することは困難である。
【０００７】
本発明は、このような事情を考慮してなされたものであり、従って本発明の目的は、エンジン回転停止挙動の目標軌道を精度良く設定できて、エンジン回転停止位置を精度良く目標停止位置に制御することができるエンジン停止制御装置を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、請求項１に係る発明は、エンジン停止要求に応じてエンジン回転を停止させる際に、エンジン回転停止位置を目標停止位置に制御するようにエンジン回転挙動を電動機のトルクで制御するエンジン停止制御を実行するエンジン停止制御装置において、前記目標停止位置から所定クランク角手前に設定した基準点の目標回転速度を設定する基準点目標回転速度設定手段と、前記エンジン停止制御開始から前記基準点の目標回転速度に至るまでの目標とするエンジン回転挙動の軌道（以下「目標軌道」という）を前記基準点の目標回転速度とエンジンフリクションとに基づいて算出する目標軌道算出手段と、前記エンジン停止制御の実行中にエンジン回転挙動を前記目標軌道に一致させるように前記電動機のトルクを制御する停止制御手段とを備えた構成としたものである。
【０００９】
コンプレッションの影響は、エンジン回転が停止する直前の極低回転領域で現れるため、本発明のように、目標停止位置から所定クランク角手前に設定した基準点の目標回転速度に至るまでの目標軌道を設定するようにすれば、コンプレッションの影響が現れる極低回転領域に至る前の領域で目標軌道を設定することができる。これにより、エンジン回転停止挙動中に、コンプレッションの影響を受けずにエンジン回転挙動を電動機により精度良く目標軌道に一致させることができて、基準点で実回転速度を目標回転速度に精度良く一致させることができる。基準点の目標回転速度は、基準点からエンジン回転を目標停止位置で停止させるのに必要な基準値のエンジン回転速度に設定されているため（つまり基準点に至る目標軌道の延長線上に目標停止位置が位置するように設定されているため）、本発明により基準点で実回転速度を目標回転速度に精度良く一致させることが可能になれば、エンジン回転の実停止位置を目標停止位置に精度良く一致させることが可能となる。
【００１０】
この場合、請求項２のように、基準点の目標回転速度を電動機のトルクが発生する回転速度範囲の下限回転速度以下に設定するようにすると良い。このようにすれば、基準点から目標停止位置に至るまでのエンジン回転挙動に電動機のトルクの影響が現れなくなり、電動機のトルクによる停止位置の誤差を無くすことができて、停止位置の精度を向上させることができる。
【００１１】
また、エンジン回転停止挙動開始から基準点の目標回転速度に至るまでの過程で、基準点までのクランク角に応じて内燃機関の複数の補機等によりエンジンフリクションの特性が変化する場合があることを考慮して、請求項３のように、複数のエンジンフリクションの中から、基準点までのクランク角に応じたエンジンフリクションを選択して目標軌道を算出するようにすると良い。このようにすれば、エンジン回転停止挙動開始から基準点の目標回転速度に至るまでの過程で、基準点までのクランク角に応じて内燃機関の複数の補機等によりエンジンフリクションの特性が変化するのに対応して、目標軌道の算出に用いるエンジンフリクションを変化させることができ、目標軌道の精度を向上させることができる。
【００１２】
また、請求項４のように、エンジン回転の実際の停止位置と目標停止位置との差（つまり停止位置の誤差）に基づいて基準点の目標回転速度を学習補正する学習補正手段を備えた構成としても良い。要するに、基準点に至る目標軌道の延長線上に目標停止位置が位置するように設定されているため、停止位置の誤差は、基準点の目標回転速度の誤差（目標軌道の誤差）により生じるものと考えられる。従って、停止位置の誤差に基づいて基準点の目標回転速度を学習補正するようにすれば、基準点の目標回転速度の精度を向上させることができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明を実施するための最良の形態を具体化した一実施例を説明する。
まず、図１に基づいてエンジン制御システム全体の概略構成を説明する。
内燃機関であるエンジン１１の吸気管１２の最上流部には、エアクリーナ１３が設けられ、このエアクリーナ１３の下流側には、吸入空気量を検出するエアフローメータ１４が設けられている。このエアフローメータ１４の下流側には、モータ１５によって開度調節されるスロットルバルブ１６と、このスロットルバルブ１６の開度（スロットル開度）を検出するスロットル開度センサ１７とが設けられている。スロットルバルブ１６の下流側には、サージタンク１８が設けられ、このサージタンク１８には、エンジン１１の各気筒に空気を導入する吸気マニホールド２０が設けられ、各気筒の吸気マニホールド２０の吸気ポート近傍に、それぞれ燃料を噴射する燃料噴射弁２１が取り付けられている。また、エンジン１１のシリンダヘッドには、各気筒毎に点火プラグ２２が取り付けられ、各点火プラグ２２の火花放電によって筒内の混合気に着火される。
【００１４】
一方、エンジン１１の排気管２３には、排出ガスの空燃比又はリッチ／リーン等を検出する排出ガスセンサ２４（空燃比センサ、酸素センサ等）が設けられ、この排出ガスセンサ２４の下流側に、排出ガスを浄化する三元触媒等の触媒２５が設けられている。
【００１５】
また、エンジン１１のシリンダブロックには、冷却水温を検出する冷却水温センサ２６が取り付けられている。エンジン１１のクランク軸２７には、外周部に所定クランク角ピッチで歯が形成されたシグナルロータ２９が嵌着され、このシグナルロータ２９の外周部に対向してクランク角センサ２８が取り付けられ、シグナルロータ２９の歯がクランク角センサ２８に対向する毎（クランク軸２７が所定クランク角回転する毎）にクランク角センサ２８からクランクパルス信号が出力される。このクランク角センサ２８の出力パルスの周期（パルス出力周波数）からエンジン回転速度が検出される。また、図示はしないが、エンジン１１のカム軸の回転に同期して所定のカム角でカムパルス信号を出力するカム角センサが設置されている。
【００１６】
エンジン１１の代表的な補機であるオルタネータ３３には、クランク軸２７の回転がベルト伝達機構（図示せず）を介して伝達される。これにより、エンジン１１の動力でオルタネータ３３が回転駆動されて発電するようになっている。このオルタネータ３３の発電制御電流（フィールド電流）をデューティ制御することで、オルタネータ３３のトルクを制御することができる。本実施例では、オルタネータ３３を特許請求の範囲でいう電動機として使用するようにしている。
【００１７】
上述した各種センサの出力は、エンジン制御回路（以下「ＥＣＵ」と表記する）３０に入力される。このＥＣＵ３０は、マイクロコンピュータを主体として構成され、各種センサで検出したエンジン運転状態に応じて、燃料噴射弁２１の燃料噴射量や噴射時期、点火プラグ２２の点火時期を制御すると共に、アイドル運転中に所定の自動停止条件が成立してエンジン停止要求（アイドルストップ要求）が発生したときに、燃焼（点火及び／又は燃料噴射）を停止させてエンジン回転を停止させるアイドルストップを実行し、このアイドルストップによるエンジン停止中に運転者が車両を発進させるための操作を行ったときに、所定の自動始動条件が成立してスタータ（図示せず）に通電してエンジン１１をクランキングして自動始動させる。
【００１８】
更に、ＥＣＵ３０は、後述する図３乃至図１４の各ルーチンを実行することで、エンジン回転の目標停止位置（目標停止クランク角）から所定クランク角手前の上死点（ＴＤＣ）に設定した基準点の目標回転速度を設定する基準点目標回転速度設定手段と、エンジン停止制御開始から前記基準点の目標回転速度に至るまでの目標とするエンジン回転挙動の軌道（以下「目標軌道」という）を前記基準点の目標回転速度とエンジンフリクションとに基づいて算出する目標軌道算出手段と、エンジン停止制御の実行中にエンジン回転挙動を前記目標軌道に一致させるようにオルタネータ３３のトルクを制御する停止制御手段として機能する。
【００１９】
ここで、エンジン回転の目標停止位置から所定クランク角手前のＴＤＣに設定した基準点の目標回転速度は、オルタネータ３３のトルクが発生する回転速度範囲の下限回転速度以下で且つ該下限回転速度に近い回転速度に設定されている。具体的には、基準点とその直前のＴＤＣとの間でエンジン回転速度がオルタネータ３３のトルク発生回転速度範囲の下限回転速度以下となるように基準点の目標回転速度が設定されている。このように設定すれば、エンジン回転停止挙動開始から基準点の目標回転速度付近に至るまでの区間は、オルタネータ３３のトルクによってエンジン回転挙動を目標軌道に一致させるように制御することが可能になると共に、基準点から目標停止位置に至るまでのエンジン回転挙動にオルタネータ３３のトルクが影響を及ぼさなくなり、オルタネータ３３のトルクによる停止位置の誤差を無くすことができる。
【００２０】
目標軌道は、エンジン回転停止挙動開始から基準点の目標回転速度に至るまでの目標とするエンジン回転速度をＴＤＣ毎に算出してテーブル（図２参照）に割り付けたものである。
【００２１】
エンジン停止過程では、エンジンフリクションによって運動エネルギ（回転エネルギ）が減衰してエンジン回転速度が低下していくため、エンジンフリクションと基準点の目標回転速度に基づいて目標軌道を算出して、実エンジン回転挙動を目標軌道に合わせるようにオルタネータ３３のトルクを制御することで、基準点で実エンジン回転速度を目標回転速度に精度良く一致させることが可能になる。しかも、基準点から目標停止位置に至るまでの区間は、オルタネータ３３のトルクがエンジン回転挙動に影響を及ぼさなくなるため、オルタネータ３３のトルクによる停止位置の誤差を無くすことができて、エンジン回転の実停止位置を目標停止位置に精度良く一致させることが可能となる。
【００２２】
更に、本実施例では、エンジン回転停止挙動開始から基準点の目標回転速度に至るまでの過程で、基準点までのクランク角に応じてエンジン１１の複数の補機等によりエンジンフリクションの特性が変化することを考慮して、複数のエンジンフリクションの中から、基準点までのクランク角に応じたエンジンフリクションを選択して目標軌道を算出するようにしている。図２の例では、基準点からＭ1 までの区間と、Ｍ1 からＭまでの区間で異なるエンジンフリクションが設定されている。
【００２３】
以上説明した本実施例のエンジン停止制御は、ＥＣＵ３０によって図３乃至図１４の各ルーチンに従って実行される。以下、これら各ルーチンの処理内容を説明する。
【００２４】
［時間同期ルーチン］
図３の時間同期ルーチンは、ＥＣＵ３０の電源オン期間中（イグニッションスイッチの電源オン期間中）にＥＣＵ３０によって所定周期（例えば８ｍｓ周期）で繰り返し実行される。本ルーチンが起動されると、まずステップ１００で、後述する図５のエンジン停止要求判定ルーチンを実行して、エンジン停止要求（アイドルストップ要求）が発生しているか否かを判定する。
【００２５】
この後、ステップ２００に進み、後述する図６のエンジン始動要求判定ルーチンを実行して、エンジン始動要求（アイドルストップ後の自動始動要求）が発生しているか否かを判定する。
【００２６】
この後、ステップ３００に進み、後述する図７のエンジン停止制御(1) ルーチンを実行して、オルタネータ３３に対する要求トルク（以下「要求オルタトルク」という）を算出する。そして、次のステップ４００で、後述する図１２のエンジン始動制御(1) ルーチンを実行して、自動始動時の第１点火気筒と第２点火気筒を設定する。
【００２７】
［クランク角同期ルーチン］
図４のクランク角同期ルーチンは、ＥＣＵ３０の電源オン期間中（イグニッションスイッチの電源オン期間中）にＥＣＵ３０によって所定クランク角毎（例えば３０ｄｅｇＣＡ毎）に繰り返し実行される。本ルーチンが起動されると、まずステップ５００で、後述する図１４のエンジン始動制御(2) ルーチンを実行して、自動始動時の燃料噴射制御、点火制御、第１点火気筒の失火判定を実行する。
【００２８】
この後、ステップ５５０に進み、停止位置制御の実行タイミングであるＴＤＣタイミングであるか否かを判定し、ＴＤＣタイミングでなければ、そのまま本ルーチンを終了し、ＴＤＣタイミングであれば、ステップ６００に進み、後述する図１０のエンジン停止制御(2) ルーチンを実行して、停止位置制御を実行する。
【００２９】
［エンジン停止要求判定ルーチン］
図５のエンジン停止要求判定ルーチンは、図３の時間同期ルーチンのステップ１００で実行されるサブルーチンである。本ルーチンが起動されると、まずステップ１０１で、自動停止条件（アイドルストップ実行条件）が成立しているか否かを判定する。
【００３０】
この際、マニュアルミッション車の場合には、次の(a) 又は(b) のいずれか一方の条件が満たされれば、自動停止条件が成立する。
(a) シフト位置が前進ギア、かつ、車速が所定値以下（例えば１０ｋｍ／ｈ以下）、かつ、ブレーキ踏み込み（ブレーキＯＮ）、かつ、クラッチ切断（クラッチペダル踏み込み状態）であること
(b) シフト位置がニュートラル位置、かつ、クラッチ接続（クラッチペダルが踏み込まれていない状態）であること
【００３１】
一方、自動変速機付き車両（ＡＴ車）の場合には、次の(c) 又は(d) のいずれか一方の条件が満たされれば、自動停止条件が成立する。
(c) シフト位置が前進レンジ又はニュートラルレンジ、かつ、車速が所定値以下（例えば１０ｋｍ／ｈ以下）、かつ、ブレーキ踏み込み（ブレーキＯＮ）であること
(d) シフト位置がパーキングレンジであること
【００３２】
上記ステップ１０１で、自動停止条件が成立していないと判定されれば、そのまま本ルーチンを終了し、自動停止条件が成立していると判定されれば、ステップ１０２に進み、エンジン停止要求を出力（ＯＮ）して本ルーチンを終了する。
【００３３】
［エンジン始動要求判定ルーチン］
図６のエンジン始動要求判定ルーチンは、図３の時間同期ルーチンのステップ２００で実行されるサブルーチンである。本ルーチンが起動されると、まずステップ２０１で、自動始動条件が成立しているか否か（つまり運転者が車両を発進させるための操作を行ったか否か）を判定する。
【００３４】
この際、マニュアルミッション車の場合には、次の(a) 又は(b) のいずれか一方の条件が満たされれば、運転者が車両を発進させるための操作を行ったと判断して、自動始動条件が成立する。
(a) シフト位置が前進ギア、かつ、ブレーキ操作解除（ブレーキＯＦＦ）又はクラッチ接続（クラッチペダルが踏み込まれていない状態）であること
(b) シフト位置がニュートラル位置、かつ、クラッチ切断（クラッチペダル踏み込み状態）であること
【００３５】
一方、自動変速機付き車両（ＡＴ車）の場合には、次の(c) の条件が満たされれば、運転者が車両を発進させるための操作を行ったと判断して、自動停止条件が成立する。
(c) シフト位置がパーキングレンジ以外、かつ、ブレーキ操作解除（ブレーキＯＦＦ）であること
【００３６】
上記ステップ２０１で、自動始動条件が成立していないと判定されれば、そのまま本ルーチンを終了し、自動始動条件が成立していると判定されれば、ステップ２０２に進み、ニュートラルレンジ又はクラッチ切断（クラッチペダル踏み込み状態）であるか否かを判定し、ニュートラルレンジ、クラッチ切断のいずれでもない場合には、自動始動するとエンジン１１の動力が駆動輪に伝達されて車両が勝手に動き始めるため、エンジン始動要求を出力せずに本ルーチンを終了する。
【００３７】
一方、上記ステップ２０２で、ニュートラルレンジ又はクラッチ切断（クラッチペダル踏み込み状態）であると判定された場合は、自動始動してもエンジン１１から駆動輪への動力の伝達が遮断されて停車状態を維持するため、ステップ２０３に進み、エンジン始動要求を出力して本ルーチンを終了する。
【００３８】
［エンジン停止制御(1) ルーチン］
図７のエンジン停止制御(1) ルーチンは、図３の時間同期ルーチンのステップ３００で実行されるサブルーチンである。本ルーチンが起動されると、まずステップ３０１で、前記図５のエンジン停止要求判定ルーチンの処理結果に基づいてエンジン停止要求が出力されたか否かを判定し、エンジン停止要求が出力されていなければ、以降の処理を行わず、そのまま本ルーチンを終了する。
【００３９】
上記ステップ３０１で、エンジン停止要求が出力されたと判定されれば、ステップ３０２に進み、後述するステップ３０４でセットされる燃料カットフラグが燃料カット実行中を意味するＯＮにセットされているか否かを判定し、まだ燃料カットフラグがＯＮにセットされていなければ、ステップ３０３に進み、現在のエンジン回転速度Ｎｅが所定値Ｎｅ１よりも高いか否かを判定し、その判定結果に応じて、ステップ３０４〜３０６の処理又はステップ３０７〜３０９の処理を実行する。これらの処理は、エンジン停止制御開始時のエンジン回転速度Ｎｅが低くなり過ぎると、基準点に到達するまでのＴＤＣ数が少なくなり過ぎてエンジン回転挙動を目標軌道に一致させるのが困難となるため、エンジン停止制御開始時のエンジン回転速度Ｎｅを、エンジン回転挙動を目標軌道に一致させるのに必要な所定値Ｎｅ１以上に制御するための処理である。
【００４０】
具体的には、ステップ３０３で、現在のエンジン回転速度Ｎｅが所定値Ｎｅ１よりも高いと判定されれば、エンジン回転挙動を目標軌道に一致させるのに必要なエンジン回転速度Ｎｅが確保されていると判断して、ステップ３０４に進み、燃料カットフラグをＯＮにセットして燃料カットを実行し、次のステップ３０５で、スロットル開度を第１の所定値Ｔａ１（アイドルスピードコントロール開度よりも開いた開度）に開き、次のステップ３０６で、要求オルタトルクを、オルタネータ３３のトルク制御の基準トルクとなるオフセットトルクＴofs と、実エンジン回転挙動と目標軌道との誤差をフィードバック補正するためのフィードバック補正トルクＴfbとを足し合わせて設定する。
要求オルタトルク＝Ｔofs ＋Ｔfb
【００４１】
ここで、オフセットトルクＴofs は、オルタネータ３３の制御可能な最大トルクの例えば半分（１／２）に設定されている。オルタネータ３３は、モータジェネレータと異なり、アシストトルクを出力できないという事情があっても、仮想的にオルタネータ３３のトルクを正負両方向に制御することが可能となり（オフセットトルクＴofs 以下のトルクを仮想的に負のトルクとし、オフセットトルクＴofs 以上のトルクを仮想的に正のトルクとしてオルタネータ３３のトルクを制御することが可能となり）、目標軌道へのエンジン回転挙動の追従性を向上することができる。
【００４２】
尚、オフセットトルクＴofs は、最大トルクの半分（１／２）に限定されず、例えば、最大トルクの１／３、１／４、２／３、３／４等であっても良く、要は、オルタネータ３３の制御可能な最大トルクよりも小さく、０よりも大きい適宜のトルクをオフセットトルクＴofs に設定すれば良い。
０＜Ｔofs ＜最大トルク
【００４３】
尚、前述したステップ３０２で、既に燃料カットフラグがＯＮにセットされていると判定されれば、上記ステップ３０３〜３０５の処理を飛び越して、ステップ３０６の処理を実行する。
【００４４】
一方、前記ステップ３０３で、現在のエンジン回転速度Ｎｅが所定値Ｎｅ１以下と判定されれば、ステップ３０７に進み、点火時期を所定量又はノック限界まで進角させる。これにより、エンジントルクを増加させてエンジン回転速度Ｎｅを上昇させる。更に、次のステップ３０８で、コンプレッサＯＦＦ要求を出力して（コンプレッサＯＦＦフラグをＯＮして）、空調装置のコンプレッサをＯＦＦする。これにより、エンジン１１の負荷を軽減して、エンジン回転速度Ｎｅを上昇させる。その他、吸入空気量を増加させたり（スロットル開度を増加させたり）、燃料噴射量を増加させたりして、エンジン回転速度を上昇させるようにしても良い。この後、ステップ３０９に進み、要求オルタトルクをオフセットトルクＴofs のみとする。
要求オルタトルク＝Ｔofs
【００４５】
そして、次のステップ３１０で、スロットル開き要求があるか否か（つまり停止位置の直前のＴＤＣを通過したか否か）を判定し、スロットル開き要求があれば、ステップ３１１に進み、スロットル開度を、第１の所定値Ｔａ１よりも大きい第２の所定値Ｔａ２に設定する。上記ステップ３１０で、スロットル開き要求がないと判定されれば、上記ステップ３１１の処理が行われず、スロットル開度が引き続き第１の所定値Ｔａ１に維持される。
【００４６】
この後、ステップ３１２に進み、エンジン回転速度Ｎｅが停止間際の回転速度Ｎｅ２以下に低下してから所定時間が経過したか否かを判定する。ここで、図１５に示すように、停止間際の回転速度Ｎｅ２は、停止位置の直前のＴＤＣを通過した直後の回転速度に相当し、所定時間は、エンジン回転が確実に停止した状態になるまで待つための時間に設定されている。
【００４７】
上記ステップ３１２で、エンジン回転速度Ｎｅが停止間際の回転速度Ｎｅ２以下に低下してから所定時間が経過していないと判定されれば、そのまま本ルーチンを終了する。その後、エンジン回転速度Ｎｅが停止間際の回転速度Ｎｅ２以下に低下してから所定時間が経過した時点で、上記ステップ３１２で「Ｙｅｓ」と判定されて、ステップ３１３に進み、後述する図８の基準点学習ルーチンを実行して、次回の基準点の目標Ｎｅを算出する。ここで、「Ｎｅ」は「回転速度」を意味する（以下、同じ）。この後、ステップ３１４に進み、後述する図９のフリクション学習ルーチンを実行して、エンジン１１のフリクション１，２（Ｔfr1 ，Ｔfr2 ）を学習する。
【００４８】
［基準点学習ルーチン］
図８の基準点学習ルーチンは、図７のエンジン停止制御(1) ルーチンのステップ３１３で実行されるサブルーチンであり、特許請求の範囲でいう学習補正手段としての役割を果たす。本ルーチンが起動されると、まずステップ３２１で、停止位置誤差を次式により算出する。
【００４９】
停止位置誤差＝（実停止位置クランク角−今回基準点クランク角）ｍｏｄ７２０
＋｛（７２０／Ｎ）×Ｋ−目標停止位置クランク角｝
【００５０】
ここで、（実停止位置クランク角−今回基準点クランク角）ｍｏｄ７２０は、「実停止位置クランク角−今回基準点クランク角」を７２０［ｄｅｇＣＡ］で割り算した時の余りのクランク角である。
例えば、「実停止位置クランク角−今回基準点クランク角」が１０００［ｄｅｇＣＡ］であれば、（１０００）ｍｏｄ７２０＝２８０［ｄｅｇＣＡ］となる。
【００５１】
「実停止位置クランク角−今回基準点クランク角」が４００［ｄｅｇＣＡ］であれば、（４００）ｍｏｄ７２０＝４００［ｄｅｇＣＡ］となる。上式において、Ｎはエンジン１１の気筒数、Ｋは今回の基準点から実停止位置までに通過したＴＤＣ数である。
【００５２】
この後、ステップ３２２に進み、図１６に示す規範Ｎｅ2 誤差上限・下限マップを参照して、停止位置誤差に応じた規範Ｎｅ2 誤差上限・下限を算出する。
規範Ｎｅ2 誤差上限＝規範Ｎｅ2 誤差上限マップ（停止位置誤差）
規範Ｎｅ2 誤差下限＝規範Ｎｅ2 誤差下限マップ（停止位置誤差）
図１６に示す規範Ｎｅ2 誤差上限・下限マップは、停止位置誤差が大きくなるほど、規範Ｎｅ2 誤差上限・下限が大きくなるように設定されている。
【００５３】
この後、ステップ３２３に進み、次回基準点目標Ｎｅベース値上限・下限を次式により算出する。
次回基準点目標Ｎｅベース値上限＝√（今回基準点実Ｎｅ2 −規範Ｎｅ2 誤差下限）
次回基準点目標Ｎｅベース値下限＝√（今回基準点実Ｎｅ2 −規範Ｎｅ2 誤差上限）
【００５４】
この後、ステップ３２４に進み、次回基準点目標Ｎｅベース値下限を今回基準点目標Ｎｅと比較して、次回基準点目標Ｎｅベース値下限が今回基準点目標Ｎｅよりも大きければ、ステップ３２６に進み、次回基準点目標Ｎｅベース値として次回基準点目標Ｎｅベース値下限を用いる。
次回基準点目標Ｎｅベース値＝次回基準点目標Ｎｅベース値下限
【００５５】
一方、上記ステップ３２４で、次回基準点目標Ｎｅベース値下限が今回基準点目標Ｎｅ以下と判定されれば、ステップ３２５に進み、次回基準点目標Ｎｅベース値上限を今回基準点目標Ｎｅと比較して、次回基準点目標Ｎｅベース値上限が今回基準点目標Ｎｅよりも小さければ、ステップ３２７に進み、次回基準点目標Ｎｅベース値として次回基準点目標Ｎｅベース値上限を用いる。
次回基準点目標Ｎｅベース値＝次回基準点目標Ｎｅベース値上限
【００５６】
上記ステップ３２４、３２５でいずれも「Ｎｏ」と判定された場合、つまり次回基準点目標Ｎｅベース値下限とその上限との間に今回基準点目標Ｎｅが位置する場合は、ステップ３２８に進み、次回基準点目標Ｎｅベース値として今回基準点目標Ｎｅを引き続き用いる。
次回基準点目標Ｎｅベース値＝今回基準点目標Ｎｅ
【００５７】
以上のようにして、ステップ３２６〜３２８のいずれかで次回基準点目標Ｎｅベース値を設定した後、ステップ３２９に進み、次回基準点目標Ｎｅを次式によりなまし処理して求める。
【００５８】
次回基準点目標Ｎｅ
＝今回基準点目標Ｎｅ−γ・（今回基準点目標Ｎｅ−次回基準点目標Ｎｅベース値）  上式において、γはなまし係数で、０＜γ≦１である。
【００５９】
［フリクション学習ルーチン］
図９のフリクション学習ルーチンは、図７のエンジン停止制御(1) ルーチンのステップ３１４で実行されるサブルーチンである。本ルーチンが起動されると、まずステップ３３０で、フリクション学習実行条件が成立しているか否かを、後述する停止位置制御モード＝１（フィードバック補正トルクＴfb＝０）であるか否かによって判定して、フリクション学習実行条件が成立していなければ、以降の処理を行うことなく、本ルーチンを終了する。
【００６０】
一方、上記ステップ３３０で、フリクション学習実行条件が成立していると判定されれば、ステップ３３１に進み、フリクション１（Ｔfr1 ）を算出する区間（０〜Ｍ1 ）の実回転挙動の軌道データ（ｘn ，ｙn ）を読み込む。
【００６１】
ｘn ＝｛０，７２０／Ｎ，……，（７２０／Ｎ）×Ｍ1 ｝
ｙn ＝｛基準点実Ｎｅ2 ，ｍ＝１時実Ｎｅ2 ，……，ｍ＝Ｍ1 時実Ｎｅ2 ｝
【００６２】
ここで、ｘn は、フリクション１（図２参照）を算出する区間の基準点からの各ＴＤＣ（０〜Ｍ1 ）のクランク角であり、ｙn は、フリクション１の区間の各ＴＤＣの実Ｎｅ2 である。尚、Ｎはエンジン１１の気筒数、Ｍ1 はフリクション１の区間の開始位置（基準点からのＴＤＣ数）を表している。
この後、ステップ３３２に進み、最小二乗法で傾き１を次式により算出する。
【００６３】
【数１】
2010043532.tif 000003
【００６４】
ここで、ｎ＝Ｍ1 ＋１である。
この後、ステップ３３３に進み、傾き１を用いて、フリクション１（Ｔfr1 ）を次式により算出する。
Ｔfr1 ＝（π・Ｉ／１０）×傾き１
ここで、Ｉはエンジン慣性モーメント［ｋｇｍ］である。
【００６５】
この後、ステップ３３４に進み、フリクション２（Ｔfr2 ）を算出する区間（Ｍ1 〜Ｍ）の実回転挙動の軌道データ（ｘn ，ｙn ）を読み込む。
ｘn ＝｛０，７２０／Ｎ，……，（７２０／Ｎ）×（Ｍ−Ｍ1 ）｝
ｙn ＝｛Ｍ1 時実Ｎｅ2 ，ｍ＝Ｍ1 ＋１時実Ｎｅ2 ，……，ｍ＝Ｍ時実Ｎｅ2 ｝
ここで、ｘn は、フリクション２（図２参照）を算出する区間の各ＴＤＣ（Ｍ1 〜Ｍ）のクランク角であり、ｙn は、フリクション２の区間の各ＴＤＣの実Ｎｅ2 である。
【００６６】
この後、ステップ３３５に進み、最小二乗法で傾き２を算出した後、ステップ３３６に進み、傾き２を用いて、フリクション２（Ｔfr2 ）を次式により算出する。
Ｔfr2 ＝（π・Ｉ／１０）×傾き２
フリクションが３つ以上ある場合は、上述した最小二乗法で傾きを算出してフリクションを算出する処理を繰り返せば良い。
【００６７】
尚、本発明は、フリクションを学習する機能（フリクション学習ルーチン）を省略して、予め、フリクションを実験データや設計データ等に基づいて算出して、それをＥＣＵ３０のＲＯＭ等の不揮発性メモリに記憶しておいても良い。
［エンジン停止制御(2) ルーチン］
図１０のエンジン停止制御(2) ルーチンは、図４のクランク角同期ルーチンのステップ６００で実行されるサブルーチンである。本ルーチンが起動されると、まずステップ６０１で、目標Ｎｅを次のようにして算出する。
【００６８】
まず、フリクション１（Ｔfr1 ）の区間（０〜Ｍ1 ）とフリクション２（Ｔfr2 ）の区間（Ｍ1 〜Ｍ）の目標Ｎｅ2 ［Ｍ］を次式により算出する。
目標Ｎｅ2 ［Ｍ］
＝｛１０／（π・Ｉ）｝×［０，７２０Ｔfr1 ／Ｎ，（７２０Ｔfr1 ／Ｎ）×２，…          …，（７２０Ｔfr1 ／Ｎ）×Ｍ1 ，（７２０Ｔfr2 ／Ｎ）×（Ｍ1 ＋１），…          …，（７２０Ｔfr2 ／Ｎ）×（Ｍ−１）］＋基準点目標Ｎｅ2
【００６９】
一般に、エネルギ保存則により、エンジン慣性モーメントＩとフリクションＴfrとの間には次式の関係が成り立つ。
（１／２）・Ｉ・ω2 ＝Ｔfr・Θ
ここで、ωは角速度［ｒａｄ／ｓ］、Θは回転角［ｒａｄ］である。
ω＝（２π／６０）・Ｎｅ
Θ＝（π／１８０）・θ
θ：回転角［ｄｅｇ］
【００７０】
上式の関係から、次式が導き出される。
Ｎｅ2 ＝（１０／π・Ｉ）・Ｔfr・θ
上式の関係を利用して、目標Ｎｅ2 ［Ｍ］を算出する。
目標Ｎｅ2 ［Ｍ］の算出後、次式を満足するｍ（但し０≦ｍ≦Ｍ）を求める。
【００７１】
目標Ｎｅ2 ［ｍ］−（目標Ｎｅ2 ［ｍ］−目標Ｎｅ2 ［ｍ−１］）（１−α）≦実Ｎｅ2             ＜目標Ｎｅ2 ［ｍ］＋（目標Ｎｅ2 ［ｍ＋１］−目標Ｎｅ2 ［ｍ］）α
【００７２】
ここで、０≦α≦１である。上式を満足するｍは、今回制御しようとするＴＤＣの位置（基準点からｍ番目のＴＤＣ）を表す。
この後、基準点からｍ番目のＴＤＣの目標Ｎｅ2 から次式により今回の目標Ｎｅを算出する。
目標Ｎｅ＝√目標Ｎｅ2
これにより、実Ｎｅが低下するに従って、各ＴＤＣの目標ＮｅがフリクションＴfr1 ，Ｔfr2 と基準点目標Ｎｅとに基づいて順次算出され、目標軌道が設定される。
【００７３】
以上のようにして、今回の目標Ｎｅを算出した後、ステップ６０２に進み、停止位置制御実行条件が成立しているか否かを、例えば次の２つの条件(a),(b) を両方とも満たすか否かで判定する。
(a) 燃料カット後のＴＤＣ数が所定値（例えば２）以上であること
(b) １＜ｍ＜所定値（例えば１５）であること
ここで、ｍは基準点までのＴＤＣ数である。
【００７４】
上記条件（ａ）を設ける理由は、図２１に示すように、燃料カット直後（エンジン停止挙動初期）は、クランク角センサ２８の出力パルスから検出されるエンジン回転速度Ｎｅのなまし処理のために、エンジン回転速度Ｎｅの低下幅ΔＮｅが実際よりも小さくなるため、フリクションが実際よりも小さく見積もられてしまうためである。
【００７５】
上記条件（ｂ）を設ける理由は、基準点から必要以上に遠く離れたＴＤＣから停止位置制御を開始する必要がないためである。また、エンジン回転速度が高すぎると、停止位置制御が困難である。
【００７６】
上記２つの条件(a),(b) のいずれか一方でも満たさない条件があれば、停止位置制御実行条件が不成立となり、停止位置制御を実行しない。
【００７７】
上記２つの条件(a),(b) を両方とも満たせば、停止位置制御実行条件が成立して、ステップ６０３に進み、後述する図１１の停止位置制御ルーチンを実行して、要求オルタトルクのフィードバック補正トルクＴfbを算出する。
【００７８】
この後、ステップ６０４に進み、基準点に到達したか否か（前回ｍ＝１であるか否か）を判定して、基準点に到達していなければ、そのまま本ルーチンを終了し、基準点に到達していれば、ステップ６０５に進み、スロットル開き要求を出力して、スロットル開度を、第１の所定値Ｔａ１よりも大きい第２の所定値Ｔａ２まで開く。
【００７９】
尚、スロットル開度を開くタイミングはＴＤＣに同期していれば良いため、上記ステップ６０４で、前回ｍ＝２（又は３等）であるか否かを判定して、前回ｍ＝２（又は３等）である場合に、スロットル開き要求を出力するようにしても良い。要するに、基準点又はそれよりも少し手前のＴＤＣでスロットル開度を開けば良い。
【００８０】
［停止位置制御ルーチン］
図１１の停止位置制御ルーチンは、上記図１０のエンジン停止制御(2) ルーチンのステップ６０３で実行されるサブルーチンである。本ルーチンが起動されると、まずステップ６１１で、停止位置制御モード判定済みであるか否かを判定して、停止位置制御モード判定済みであれば、以降の処理を行うことなく、本ルーチンを終了する。
【００８１】
これに対して、停止位置制御モードがまだ判定されていない場合は、ステップ６１２に進み、図１７に示す制御可能なエネルギ偏差の下限値ＴｈＡｌｔＭｉｎのマップを参照して、目標Ｎｅ2 と実Ｎｅ2 との偏差（エネルギ偏差）が、今回制御しようとするｍ番目のＴＤＣにおける下限値ＴｈＡｌｔＭｉｎよりも小さいか否かを判定する。その結果、目標Ｎｅ2 と実Ｎｅ2 との偏差が下限値ＴｈＡｌｔＭｉｎよりも小さいと判定されれば、ステップ６１３に進み、停止位置制御モードを「３」にセットし、次のステップ６１４で、要求オルタトルクのフィードバック補正トルクＴfbを最小値（例えば−８）にセットする。      
【００８２】
一方、上記ステップ６１２で、目標Ｎｅ2 と実Ｎｅ2 との偏差が下限値ＴｈＡｌｔＭｉｎ以上と判定されれば、ステップ６１５に進み、図１８に示す制御可能なエネルギ偏差の上限値ＴｈＡｌｔＭａｘのマップを参照して、目標Ｎｅ2 と実Ｎｅ2 との偏差が、今回制御しようとするｍ番目のＴＤＣにおける上限値ＴｈＡｌｔＭａｘよりも大きいか否かを判定する。その結果、目標Ｎｅ2 と実Ｎｅ2 との偏差が上限値ＴｈＡｌｔＭａｘよりも大きいと判定されれば、ステップ６１６に進み、停止位置制御モードを「２」にセットし、次のステップ６１７で、要求オルタトルクのフィードバック補正トルクＴfbを最大値（例えば１０）にセットする。
【００８３】
上記ステップ６１５で、目標Ｎｅ2 と実Ｎｅ2 との偏差が上限値ＴｈＡｌｔＭａｘ以下と判定されれば、ステップ６１８に進み、目標Ｎｅ2 と実Ｎｅ2 との偏差の絶対値｜目標Ｎｅ2 −実Ｎｅ2 ｜が判定値（例えば５０００）よりも小さいか否かを判定して、｜目標Ｎｅ2 −実Ｎｅ2 ｜が判定値よりも小さい場合は、目標Ｎｅ2 と実Ｎｅ2 との偏差が小さいため、オルタネータ３３のトルクをフィードバック制御する必要はないと判断して、ステップ６１９に進み、停止位置制御モードを「１」にセットし、次のステップ６２０で、要求オルタトルクのフィードバック補正トルクＴfbを０にセットする。これにより、エンジン回転停止挙動全域にわたってオルタネータ３３のトルクをオフセットトルクＴofs に固定した状態（フィードバック制御を禁止した状態）で、フリクション１，２（Ｔfr1 ，Ｔfr2 ）を学習することが可能となる。
【００８４】
また、上記ステップ６１８で、｜目標Ｎｅ2 −実Ｎｅ2 ｜が判定値以上と判定されれば、フィードバック制御領域と判断して、ステップ６２１に進み、停止位置制御モードを「０」にセットし、次のステップ６２２で、要求オルタトルクのフィードバック補正トルクＴfbを次式により算出する。
【００８５】
Ｔfb＝（１／２）×Ｉ×（２π／６０）2 ×（実Ｎｅ2 −目標Ｎｅ2 ）
÷｛（４π／Ｎ）×（ｍ−１−β）｝
【００８６】
ここで、βは、基準点からオルタネータ３３のトルクが発生しなくなる位置までのクランク角を算出するための調整パラメータである（０≦β≦１）。
要するに、図２２に示すように、基準点から所定クランク角［（４π／Ｎ）×β］手前の位置でオルタネータ３３のトルクが発生しなくなるため、上式により、基準点から所定クランク角［（４π／Ｎ）×β］手前の位置で目標Ｎｅ2 と実Ｎｅ2 との偏差（エネルギ偏差）が０となるようにフィードバック補正トルクＴfbを算出するものである。この場合、基準点から所定クランク角［（４π／Ｎ）×β］手前の位置は、実Ｎｅがオルタネータ３３のトルク発生回転速度範囲の下限回転速度となる位置に設定しているが、オルタネータ３３のトルク発生回転速度範囲の下限回転速度よりも少し高い回転速度となる位置に設定しても良い。
【００８７】
以上説明した停止位置制御ルーチンの処理により、停止位置制御開始当初の目標Ｎｅ2 と実Ｎｅ2 との偏差（エネルギ偏差）に基づいて停止位置制御モードを判定し、その判定結果に応じて要求オルタトルクのフィードバック補正トルクＴfbを次のように設定する。      
【００８８】
(A) 目標Ｎｅ2 と実Ｎｅ2 との偏差が制御可能なエネルギ偏差の下限値ＴｈＡｌｔＭｉｎよりも小さい場合は、停止位置制御モードを「３」にセットし、要求オルタトルクのフィードバック補正トルクＴfbを最小値（例えば−８）にセットする。
【００８９】
(B) 目標Ｎｅ2 と実Ｎｅ2 との偏差が制御可能なエネルギ偏差の上限値ＴｈＡｌｔＭａｘよりも大きい場合は、停止位置制御モードを「２」にセットし、要求オルタトルクのフィードバック補正トルクＴfbを最大値（例えば１０）にセットする。
【００９０】
上記(A),(B) のように、目標Ｎｅ2 と実Ｎｅ2 との偏差が制御可能なエネルギ偏差の上下限を越える場合は、要求オルタトルクのフィードバック補正トルクＴfbを最小値又は最大値に固定すれば、フィードバック制御では制御できなかった領域まで制御可能となる。      
【００９１】
(C) ｜目標Ｎｅ2 −実Ｎｅ2 ｜が判定値よりも小さい場合は、目標Ｎｅ2 と実Ｎｅ2 との偏差が小さいため、オルタネータ３３のトルクをフィードバック制御する必要はないと判断して、停止位置制御モードを「１」にセットし、要求オルタトルクのフィードバック補正トルクＴfbを０にセットする。これにより、エンジン回転停止挙動全域にわたってオルタネータ３３のトルクのフィードバック制御を禁止した状態で、フリクション１，２（Ｔfr1 ，Ｔfr2 ）を学習することが可能となる。
【００９２】
(D) 上記以外の場合は、フィードバック制御領域と判断して、停止位置制御モードを「０」にセットし、要求オルタトルクのフィードバック補正トルクＴfbを算出する。
【００９３】
［エンジン始動制御(1) ルーチン］
図１２のエンジン始動制御(1) ルーチンは、図３の時間同期ルーチンのステップ４００で実行されるサブルーチンである。本ルーチンが起動されると、まずステップ４０１で、前記図６のエンジン始動要求判定ルーチンの処理結果に基づいてエンジン始動要求があるか否かを判定し、エンジン始動要求がなければ、そのまま本ルーチンを終了する。
【００９４】
これに対して、エンジン始動要求があれば、ステップ４０２に進み、自動始動時に最初に点火する第１点火気筒が未設定であるか否かを判定し、第１点火気筒が設定済みであれば、以降の処理を行うことなく、本ルーチンを終了する。
【００９５】
一方、第１点火気筒が未設定であれば、ステップ４０３に進み、図１３の第１点火気筒マップ（４気筒エンジンの場合）を参照して、停止位置のクランク角に応じた仮第１点火気筒を設定する。本実施例では、停止位置を目標停止位置に精度良く制御できるため、停止位置のクランク角は目標停止位置のクランク角とすれば良い。この後、ステップ４０４に進み、仮第１点火気筒の次にＴＤＣとなる気筒を仮第２点火気筒として設定する。
【００９６】
この後、ステップ４０５に進み、後述する図１４のエンジン始動制御(2) ルーチンによって検出された仮第１点火気筒の失火回数Ｎmfが第１点火禁止しきい値を越えているか否かを判定し、仮第１点火気筒の失火回数Ｎmfが第１点火禁止しきい値を越えていれば、ステップ４０６に進み、仮第２点火気筒を第１点火気筒とし、仮第２点火気筒の次にＴＤＣとなる気筒を第２点火気筒として設定する。
【００９７】
これに対して、上記ステップ４０５で、仮第１点火気筒の失火回数Ｎmfが第１点火禁止しきい値以下と判定されれば、ステップ４０７に進み、仮第１点火気筒をそのまま第１点火気筒とし、仮第２点火気筒をそのまま第２点火気筒として設定する。
［エンジン始動制御(2) ルーチン］
図１４のエンジン始動制御(2) ルーチンは、図４のクランク角同期ルーチンのステップ５００で実行されるサブルーチンである。本ルーチンが起動されると、まずステップ５０１で、前記図６のエンジン始動要求判定ルーチンの処理結果に基づいてエンジン始動要求があるか否かを判定し、エンジン始動要求がなければ、そのまま本ルーチンを終了する。      
【００９８】
これに対して、エンジン始動要求があれば、ステップ５０２に進み、燃料噴射制御を実行し、次のステップ５０３で、点火制御を実行する。
この後、ステップ５０４に進み、ＴＤＣタイミングであるか否かを判定し、ＴＤＣタイミングでなければ、そのまま本ルーチンを終了する。一方、ＴＤＣタイミングであれば、ステップ５０５に進み、第１点火気筒のＴＤＣタイミングであるか否かを判定し、第１点火気筒のＴＤＣタイミングであれば、ステップ５０６に進み、第１点火気筒のＴＤＣタイミングの実ＮｅをＮefとしてＥＣＵ３０のメモリ（ＲＡＭ等）に記憶する。
【００９９】
一方、上記ステップ５０５で、第１点火気筒のＴＤＣタイミングでないと判定されれば、ステップ５０７に進み、第２点火気筒のＴＤＣタイミングであるか否かを判定し、第２点火気筒のＴＤＣタイミングでなければ、そのまま本ルーチンを終了する。
【０１００】
その後、第２点火気筒のＴＤＣタイミングになった時点で、ステップ５０８に進み、第２点火気筒のＴＤＣタイミングの実Ｎｅとメモリに記憶された第１点火気筒のＴＤＣタイミングの回転速度Ｎefとの偏差ΔＮｅ（＝実Ｎｅ−Ｎef）が失火判定しきい値以下であるか否かで、第１点火気筒が失火したか否かを判定する。
【０１０１】
図１９に示すように、第１点火気筒が正常燃焼すれば、実Ｎｅが急上昇して、第２点火気筒のＴＤＣタイミングの実Ｎｅと第１点火気筒のＴＤＣタイミングの実Ｎｅ（＝Ｎef）との偏差ΔＮｅが大きくなるが、図２０に示すように、第１点火気筒が失火すると、実Ｎｅがあまり上昇しないため、第２点火気筒のＴＤＣタイミングの実Ｎｅと第１点火気筒のＴＤＣタイミングの実Ｎｅ（＝Ｎef）との偏差ΔＮｅが正常燃焼時と比べて著しく小さくなる。この特性から、偏差ΔＮｅが失火判定しきい値以下であれば、第１点火気筒が失火したと判定し、ステップ５０９に進み、第１点火気筒の失火回数Ｎmfをカウントする失火回数カウンタをカウントアップする。この失火回数カウンタは、各気筒毎にそれぞれ設けられ、各気筒毎に第１点火気筒となった時の失火回数Ｎmfがカウントされる。一方、偏差ΔＮｅが失火判定しきい値よりも大きければ、第１点火気筒が正常燃焼したと判定する。      
【０１０２】
以上説明した本実施例のエンジン停止制御の一例が図１５にタイムチャートで示されている。この制御例では、エンジン停止要求が出力（ＯＮ）された時点で、エンジン回転速度Ｎｅが、エンジン回転挙動を目標軌道に一致させるのに必要な所定値Ｎｅ１を下回っているため、点火時期を進角させてエンジントルクを増加させ、かつ、コンプレッサＯＦＦフラグをＯＮしてコンプレッサをＯＦＦして、エンジン１１の負荷を軽減して、エンジン回転速度Ｎｅを上昇させる。
【０１０３】
これにより、エンジン回転速度Ｎｅが所定値Ｎｅ１を越えると、燃料カットフラグをＯＮして燃料カットを実行すると共に、スロットル開度をアイドルスピードコントロール開度から第１の所定値Ｔａ１まで開く。その後、停止位置制御実行条件が成立した時点で、停止位置制御を開始して、要求オルタトルクをオフセットトルクＴofs とフィードバック補正トルクＴfbとに基づいて設定する。
要求オルタトルク＝Ｔofs ＋Ｔfb
尚、要求オルタトルクは、エンジン停止要求が出力（ＯＮ）された時点で、オフセットトルクＴofs に設定される。
【０１０４】
その後、停止位置制御実行条件が不成立となった時点で、要求オルタトルクが０となり、更に、基準点に到達した時点で、スロットル開度を、第１の所定値Ｔａ１から第２の所定値Ｔａ２まで開き、その後、エンジン回転速度Ｎｅが停止間際の回転速度Ｎｅ２以下に低下してから所定時間が経過した時点で、停止位置誤差に基づいて次回基準点目標Ｎｅを学習すると共に、フリクションＴfr1 ，Ｔfr2 を学習する。
【０１０５】
ところで、コンプレッションの影響は、エンジン回転が停止する直前の極低回転領域で現れるため、本実施例のように、目標停止位置から所定クランク角手前に設定した基準点の目標Ｎｅに至るまでの目標軌道（各ＴＤＣの目標Ｎｅ）を設定するようにすれば、コンプレッションの影響が現れる極低回転領域に至る前の領域で目標軌道を設定することができる。これにより、エンジン回転停止挙動中にコンプレッションの影響を受けずにエンジン回転挙動をオルタネータ３３により精度良く目標軌道に一致させることができて、基準点で実Ｎｅを目標Ｎｅに精度良く一致させることができる。基準点の目標Ｎｅは、基準点からエンジン回転を目標停止位置で停止させるのに必要な基準値のエンジン回転速度に設定されているため（つまり基準点に至る目標軌道の延長線上に目標停止位置が位置するように設定されているため）、本実施例の制御により基準点で実Ｎｅを目標Ｎｅに精度良く一致させることが可能になれば、エンジン回転の実停止位置を目標停止位置に精度良く一致させることが可能となる。
【０１０６】
しかも、本実施例では、基準点の目標Ｎｅをオルタネータ３３のトルクが発生する回転速度範囲の下限回転速度以下に設定しているため、基準点から目標停止位置に至るまでのエンジン回転挙動にオルタネータ３３のトルクの影響が現れなくなり、オルタネータ３３のトルクによる停止位置の誤差を無くすことができて、停止位置の精度を向上させることができる。
【０１０７】
また、エンジン回転停止挙動開始から基準点の目標Ｎｅに至るまでの過程で、基準点までのクランク角（ＴＤＣ数）に応じてエンジン１１の複数の補機等によりエンジンフリクションの特性が変化することを考慮して、本実施例では、複数のエンジンフリクションの中から、基準点までのクランク角（ＴＤＣ数）に応じたエンジンフリクションを選択して目標軌道を算出するようにしているため、エンジン回転停止挙動開始から基準点の目標Ｎｅに至るまでの過程で、基準点までのクランク角（ＴＤＣ数）に応じてエンジン１１の複数の補機等によりエンジンフリクションの特性が変化するのに対応して、目標軌道の算出に用いるエンジンフリクションを変化させることができ、目標軌道の精度を向上させることができる。
【０１０８】
この場合、基準点に至る目標軌道の延長線上に目標停止位置が位置するように設定されているため、停止位置の誤差は、基準点の目標Ｎｅの誤差（目標軌道の誤差）により生じるものと考えられる。この点を考慮して、本実施例では、停止位置の誤差に基づいて基準点の目標Ｎｅを学習補正するようにしたので、基準点の目標Ｎｅの精度を向上させることができる。
【０１０９】
ところで、エンジン停止過程で各気筒の筒内圧は、圧縮行程でエンジン回転を妨げる方向（運動エネルギが減少する方向）に作用し、膨張行程でエンジン回転を促進する方向（運動エネルギが増加する方向）に作用するため、ＴＤＣ毎に筒内圧による運動エネルギの収支が０となる。この点に着目して、本実施例では、目標軌道をＴＤＣ毎に設定するようにしたので、筒内圧による周期的な運動エネルギ変化の影響を排除して目標軌道を精度良く設定することができ、目標軌道を設定する際の演算を簡単化することができる。
【０１１０】
しかしながら、本発明は、目標軌道をＴＤＣ毎に設定する構成に限定されず、目標軌道を所定クランク角間隔毎に設定するようにしても良い。
また、本実施例では、エンジン停止制御中にオルタネータ３３のトルクを制御するようにしたが、オルタネータ３３以外の電動機（例えばハイブリッド車の発電電動機等）を制御するようにしても良い。
【図面の簡単な説明】
【０１１１】
【図１】本発明の一実施例におけるエンジン制御システム全体の概略構成図である。
【図２】目標軌道の設定方法を説明する図である。
【図３】時間同期ルーチンの処理の流れを説明するフローチャートである。
【図４】クランク角同期ルーチンの処理の流れを説明するフローチャートである。
【図５】エンジン停止要求判定ルーチンの処理の流れを説明するフローチャートである。
【図６】エンジン始動要求判定ルーチンの処理の流れを説明するフローチャートである。
【図７】エンジン停止制御(1) ルーチンの処理の流れを説明するフローチャートである。
【図８】基準点学習ルーチンの処理の流れを説明するフローチャートである。
【図９】フリクション学習ルーチンの処理の流れを説明するフローチャートである。
【図１０】エンジン停止制御(2) ルーチンの処理の流れを説明するフローチャートである。
【図１１】停止位置制御ルーチンの処理の流れを説明するフローチャートである。
【図１２】エンジン始動制御(1) ルーチンの処理の流れを説明するフローチャートである。
【図１３】第１点火気筒マップの一例を示す図である。
【図１４】エンジン始動制御(2) ルーチンの処理の流れを説明するフローチャートである。
【図１５】本実施例のエンジン停止制御の一例を示すタイムチャートである。
【図１６】規範Ｎｅ2 誤差上限・下限マップの一例を示す図である。
【図１７】制御可能なエネルギ偏差の下限値ＴｈＡｌｔＭｉｎのマップの一例を示す図である。
【図１８】制御可能なエネルギ偏差の上限値ＴｈＡｌｔＭａｘのマップの一例を示す図である。
【図１９】第１点火気筒が正常燃焼した時のエンジン回転速度Ｎｅの挙動の一例を示すタイムチャートである。
【図２０】第１点火気筒が失火した時のエンジン回転速度Ｎｅの挙動の一例を示すタイムチャートである。
【図２１】燃料カット直後（エンジン停止挙動初期）のエンジン回転速度Ｎｅの検出値と実際値とクランク角の検出値の挙動を示すタイムチャートである。
【図２２】基準点から所定クランク角手前［（４π／Ｎ）×β］の位置で目標Ｎｅ2 と実Ｎｅ2 との偏差（エネルギ偏差）が０となるようにフィードバック補正トルクＴfbを算出する方法を説明する図である。
【符号の説明】
【０１１２】
１１…エンジン、１２…吸気管、１６…スロットルバルブ、２１…燃料噴射弁、２３…排気管、２８…クランク角センサ、３０…ＥＣＵ（基準点目標回転速度設定手段，目標軌道算出手段，停止制御手段，学習補正手段）、３３…オルタネータ（電動機）
【図１】
2010043532.tif 000004
【図２】
2010043532.tif 000005
【図３】
2010043532.tif 000006
【図４】
2010043532.tif 000007
【図５】
2010043532.tif 000008
【図６】
2010043532.tif 000009
【図７】
2010043532.tif 000010
【図８】
2010043532.tif 000011
【図９】
2010043532.tif 000012
【図１０】
2010043532.tif 000013
【図１１】
2010043532.tif 000014
【図１２】
2010043532.tif 000015
【図１３】
2010043532.tif 000016
【図１４】
2010043532.tif 000017
【図１５】
2010043532.tif 000018
【図１６】
2010043532.tif 000019
【図１７】
2010043532.tif 000020
【図１８】
2010043532.tif 000021
【図１９】
2010043532.tif 000022
【図２０】
2010043532.tif 000023
【図２１】
2010043532.tif 000024
【図２２】
2010043532.tif 000025