(57)【要約】【課題】スロットル弁の開度制御に用いる開度基準値の誤学習を防止することが可能なスロットル開度基準学習装置を提供する。【解決手段】スロットル弁の開度制御の基準となる開度基準値を学習するスロットル開度基準学習装置であって、前回のエンジン運転時に更新された前記開度基準値を前回学習値として記憶する学習値記憶手段と、エンジン始動時に前記学習値記憶手段から前記前回学習値を読み出し、前記前回学習値を前記開度基準値の初期値として設定すると共に学習基準値として設定し、所定周期で前記学習基準値を中央値とした学習許可範囲内にスロットル弁の最閉じ側の開度実測値が含まれているか否かを判定し、前記学習許可範囲内に前記開度実測値が含まれている場合に、当該開度実測値を新たな開度基準値として更新する開度基準更新手段とを備える。【選択図】図１
2010084632.tif 000002
【特許請求の範囲】
【請求項１】
スロットル弁の開度制御の基準となる開度基準値を学習するスロットル開度基準学習装置であって、
前回のエンジン運転時に更新された前記開度基準値を前回学習値として記憶する学習値記憶手段と、  
エンジン始動時に前記学習値記憶手段から前記前回学習値を読み出し、前記前回学習値を前記開度基準値の初期値として設定すると共に学習基準値として設定し、所定周期で前記学習基準値を中央値とした学習許可範囲内にスロットル弁の最閉じ側の開度実測値が含まれているか否かを判定し、前記学習許可範囲内に前記開度実測値が含まれている場合に、当該開度実測値を新たな開度基準値として更新する開度基準更新手段と、
を備えることを特徴とするスロットル開度基準学習装置。
【請求項２】
前記学習許可範囲は、予め設定された固定値であることを特徴とする請求項１記載のスロットル開度基準学習装置。
【請求項３】
前記開度基準更新手段は、前記学習許可範囲をエンジンの経年劣化の進行度に応じて調整することを特徴とする請求項１記載のスロットル開度基準学習装置。
【請求項４】
前記開度基準更新手段は、スロットル開度またはアクセル開度の実測値が低開度域から高開度域に遷移する回数を前記エンジンの経年劣化の進行度としてカウントし、当該カウント値に基づいて前記学習許可範囲を調整することを特徴とする請求項３記載のスロットル開度基準学習装置。
【請求項５】
前記開度基準更新手段は、スロットル開度またはアクセル開度の実測値が低開度域、高開度域、低開度域の順に遷移する回数を前記エンジンの経年劣化の進行度としてカウントし、当該カウント値に基づいて前記学習許可範囲を調整することを特徴とする請求項３記載のスロットル開度基準学習装置。
【請求項６】
前記開度基準更新手段は、スロットル開度またはアクセル開度の実測値の開き方向における時間変化量が所定値より大きくなる回数を前記エンジンの経年劣化の進行度としてカウントし、当該カウント値に基づいて前記学習許可範囲を調整することを特徴とする請求項３記載のスロットル開度基準学習装置。
【請求項７】
前記開度基準更新手段は、スロットル開度またはアクセル開度の実測値の閉じ方向における時間変化量が所定値より小さくなる回数を前記エンジンの経年劣化の進行度としてカウントし、当該カウント値に基づいて前記学習許可範囲を調整することを特徴とする請求項３記載のスロットル開度基準学習装置。
【請求項８】
前記開度基準更新手段は、走行距離の積算履歴を基に前記調整後の学習許可範囲を補正することを特徴とする請求項３〜７のいずれか一項に記載のスロットル開度基準学習装置。
【請求項９】
前記開度基準更新手段は、エンジン負荷の積算履歴を基に前記調整後の学習許可範囲を補正することを特徴とする請求項３〜７のいずれか一項に記載のスロットル開度基準学習装置。
【請求項１０】
前記開度基準更新手段は、エンジン回転数、スロットル開度、エンジン温度の実測値の少なくとも１つが所定値を超えた回数を前記エンジン負荷の積算履歴としてカウントし、当該カウント値を基に前記調整後の学習許可範囲を補正することを特徴とする請求項９記載のスロットル開度基準学習装置。
【請求項１１】
前記開度基準更新手段は、新たに更新した開度基準値と現在の学習基準値とを比較し、前記開度基準値が前記学習基準値より小さい場合に、前記開度基準値を新たな前回学習値として更新することを特徴とする請求項１〜１０のいずれか一項に記載のスロットル開度基準学習装置。
【請求項１２】
スロットル弁の開度制御の基準となる開度基準値を学習するスロットル開度基準学習方法であって、
前回のエンジン運転時に更新された前記開度基準値を前回学習値として記憶し、
エンジン始動時に前記前回学習値を前記開度基準値の初期値として設定すると共に学習基準値として設定し、
所定周期で前記学習基準値を中央値とした学習許可範囲内にスロットル弁の最閉じ側の開度実測値が含まれているか否かを判定し、
前記学習許可範囲内に前記開度実測値が含まれている場合に、当該開度実測値を新たな開度基準値として更新することを特徴とするスロットル開度基準学習方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スロットル弁の開度制御の基準となる開度基準値を学習するスロットル開度基準学習装置及びスロットル開度基準学習方法に関する。
【背景技術】
【０００２】
従来から、エンジン始動時において、スロットル弁を最も閉じ側に制御すると共に、この際にスロットル開度センサによって検出された実際のスロットル弁の開度を開度基準値として学習し、その学習値を用いて、以降のエンジン運転時におけるスロットル弁の開度制御を行うことが一般的である。このようにスロットル弁の開度基準値の学習を行う理由は、エンジンの量産や経年劣化によって、スロットル弁の開度基準値が設計値に対してある程度ばらつくことは避けられず、そのようなばらつきを補償するためである。
【０００３】
このような開度基準値の学習を行うにあたり、エンジン温度等の影響によって学習値にばらつきが生じる場合がある。例えば、前回学習時は冷間時に学習した値であり、今回学習時は暖機後に学習した値であるとすると、スロットル開度センサがエンジン温度の影響を受けてセンサ出力値に差が発生する。このため、誤って開度基準値が学習されることになる。
【０００４】
これに対し、例えば下記特許文献１には、図１４に示すように、前回更新した開度基準値を学習基準値として設定し、スロットル開度センサの出力値が学習基準値を中央値とする学習許可範囲内に含まれている場合に、そのセンサ出力値を新たな開度基準値（学習値）として更新することにより誤学習を防止する技術が開示されている。
【特許文献１】特開平１１−１３５１４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記従来技術では、スロットル開度センサの出力値が学習許可範囲の上限に含まれてさえいれば、当該センサ出力値を学習の対象とするため、図１４に示すように、センサ出力値が前回更新時の学習値に対して学習許可範囲の上限に近い値で推移すると、学習更新の度に学習値が上昇していき、理想的な真の学習値から大きくはずれることになる。つまり、この場合には開度基準値の上方更新による誤学習となり、最悪の場合、エンジン制御不能に陥る虞がある。
【０００６】
本発明は、上述した事情に鑑みてなされたものであり、スロットル弁の開度制御に用いる開度基準値の誤学習を防止することが可能なスロットル開度基準学習装置及びスロットル開度基準学習方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明は、スロットル開度基準学習装置に係る第１の解決手段として、スロットル弁の開度制御の基準となる開度基準値を学習するスロットル開度基準学習装置であって、前回のエンジン運転時に更新された前記開度基準値を前回学習値として記憶する学習値記憶手段と、エンジン始動時に前記学習値記憶手段から前記前回学習値を読み出し、前記前回学習値を前記開度基準値の初期値として設定すると共に学習基準値として設定し、所定周期で前記学習基準値を中央値とした学習許可範囲内にスロットル弁の最閉じ側の開度実測値が含まれているか否かを判定し、前記学習許可範囲内に前記開度実測値が含まれている場合に、当該開度実測値を新たな開度基準値として更新する開度基準更新手段とを備えることを特徴とする。
【０００８】
また、スロットル開度基準学習装置に係る第２の解決手段として、上記第１の解決手段において、前記学習許可範囲は、予め設定された固定値であることを特徴とする。
【０００９】
また、スロットル開度基準学習装置に係る第３の解決手段として、上記第１の解決手段において、前記開度基準更新手段は、前記学習許可範囲をエンジンの経年劣化の進行度に応じて調整することを特徴とする。
【００１０】
また、スロットル開度基準学習装置に係る第４の解決手段として、上記第３の解決手段において、前記開度基準更新手段は、スロットル開度またはアクセル開度の実測値が低開度域から高開度域に遷移する回数を前記エンジンの経年劣化の進行度としてカウントし、当該カウント値に基づいて前記学習許可範囲を調整することを特徴とする。
【００１１】
また、スロットル開度基準学習装置に係る第５の解決手段として、上記第３の解決手段において、前記開度基準更新手段は、スロットル開度またはアクセル開度の実測値が低開度域、高開度域、低開度域の順に遷移する回数を前記エンジンの経年劣化の進行度としてカウントし、当該カウント値に基づいて前記学習許可範囲を調整することを特徴とする。
【００１２】
また、スロットル開度基準学習装置に係る第６の解決手段として、上記第３の解決手段において、前記開度基準更新手段は、スロットル開度またはアクセル開度の実測値の開き方向における時間変化量が所定値より大きくなる回数を前記エンジンの経年劣化の進行度としてカウントし、当該カウント値に基づいて前記学習許可範囲を調整することを特徴とする。
【００１３】
また、スロットル開度基準学習装置に係る第７の解決手段として、上記第３の解決手段において、前記開度基準更新手段は、スロットル開度またはアクセル開度の実測値の閉じ方向における時間変化量が所定値より小さくなる回数を前記エンジンの経年劣化の進行度としてカウントし、当該カウント値に基づいて前記学習許可範囲を調整することを特徴とする。
【００１４】
また、スロットル開度基準学習装置に係る第８の解決手段として、上記第３〜第７のいずれかの解決手段において、前記開度基準更新手段は、走行距離の積算履歴を基に前記調整後の学習許可範囲を補正することを特徴とする。
【００１５】
また、スロットル開度基準学習装置に係る第９の解決手段として、上記第３〜第７のいずれかの解決手段において、前記開度基準更新手段は、エンジン負荷の積算履歴を基に前記調整後の学習許可範囲を補正することを特徴とする。
【００１６】
また、スロットル開度基準学習装置に係る第１０の解決手段として、上記第９の解決手段において、前記開度基準更新手段は、エンジン回転数、スロットル開度、エンジン温度の実測値の少なくとも１つが所定値を超えた回数を前記エンジン負荷の積算履歴としてカウントし、当該カウント値を基に前記調整後の学習許可範囲を補正することを特徴とする。
【００１７】
また、スロットル開度基準学習装置に係る第１１の解決手段として、上記第１〜第１０のいずれかの解決手段において、前記開度基準更新手段は、新たに更新した開度基準値と現在の学習基準値とを比較し、前記開度基準値が前記学習基準値より小さい場合に、前記開度基準値を新たな前回学習値として更新することを特徴とする。
【００１８】
さらに、本発明では、スロットル開度基準学習方法に係る解決手段として、スロットル弁の開度制御の基準となる開度基準値を学習するスロットル開度基準学習方法であって、前回のエンジン運転時に更新された前記開度基準値を前回学習値として記憶し、エンジン始動時に前記前回学習値を前記開度基準値の初期値として設定すると共に学習基準値として設定し、所定周期で前記学習基準値を中央値とした学習許可範囲内にスロットル弁の最閉じ側の開度実測値が含まれているか否かを判定し、前記学習許可範囲内に前記開度実測値が含まれている場合に、当該開度実測値を新たな開度基準値として更新することを特徴とする。
【発明の効果】
【００１９】
本発明によれば、従来のように更新後の開度基準値を学習基準値としないため、学習許可範囲の位置が変わらず、よってスロットル開度の実測値が上昇推移した場合でも開度基準値の更新が行われないため、上方更新による誤学習を防止することができる。
【発明を実施するための最良の形態】
【００２０】
以下、図面を参照して、本発明の一実施形態について説明する。
図１は、本実施形態におけるスロットル開度基準学習装置を備えるエンジン制御システムの概略構成図である。この図１に示すように、本実施形態におけるエンジン制御システムは、エンジン制御ユニット（スロットル開度基準学習装置）１０と、スロットルバルブコントローラ２０と、バルブ駆動モータ３０と、モータセンサ４０と、バルブ駆動用ギア５０と、スロットルバルブ（スロットル弁）６０と、エンジン７０と、バッテリ８０と、イグニッションスイッチ９０と、アクセル開度センサ１００と、スロットル開度センサ１１０と、吸気圧センサ１２０と、エンジン温度センサ１３０と、クランク角センサ１４０とから構成されている。
【００２１】
なお、図１では、説明の便宜上、エンジン制御システムにおいて、スロットルバルブ６０の開度制御に関わる構成を特に抽出して図示しており、その他のインジェクタによる燃料噴射量制御や燃料ポンプによる燃料供給制御、点火プラグによる点火タイミング制御などに関わる構成を省略している。
【００２２】
エンジン制御ユニット１０は、エンジン７０の運転状態を統括的に制御するものであり、
クランク角センサ出力検出回路１１と、エンジン温度センサ出力検出回路１２と、吸気圧センサ出力検出回路１３と、スロットル開度センサ出力検出回路１４と、アクセル開度センサ出力検出回路１５と、ＭＰＵ（Micro Processing Unit：開度基準更新手段）１６と、ＥＥＰＲＯＭ(Electrically Erasable and Programmable Read Only Memory：学習値記憶手段)１７とを備えている。
【００２３】
クランク角センサ出力検出回路１１は、クランク角センサ１４０から入力される、エンジン７０のクランク角に応じたパルス信号（以下、クランク角信号と称す）を検出して、当該クランク角信号をＭＰＵ１６に出力する。エンジン温度センサ出力検出回路１２は、エンジン温度センサ１３０から入力される、エンジン７０の温度を示すアナログ信号（以下、エンジン温度信号と称す）を検出して、当該エンジン温度信号をＭＰＵ１６のＡ／Ｄ変換入力端子に出力する。
【００２４】
吸気圧センサ出力検出回路１３は、吸気圧センサ１２０から入力される、スロットルバルブ６０が配置された吸気管内の吸気圧を示すアナログ信号（以下、吸気圧信号と称す）を検出して、当該吸気圧信号をＭＰＵ１６のＡ／Ｄ変換入力端子に出力する。スロットル開度センサ出力検出回路１４は、スロットル開度センサ１１０から入力される、スロットルバルブ６０の開度を示すアナログ信号（以下、スロットル開度信号と称す）を検出して、当該スロットル開度信号をＭＰＵ１６のＡ／Ｄ変換入力端子に出力する。アクセル開度センサ出力検出回路１５は、アクセル開度センサ１００から入力される、ユーザによるアクセル操作に応じたアクセル開度を示すアナログ信号（以下、アクセル開度信号と称す）を検出して、当該アクセル開度信号をＭＰＵ１６のＡ／Ｄ変換入力端子に出力する。
【００２５】
ＭＰＵ１６は、クランク角信号を基にエンジン回転数を算出する機能と、エンジン温度信号、吸気圧信号、スロットル開度信号及びアクセル開度信号をデジタルデータに変換する機能を有している。以下では、これらのデジタルデータを、温度センサ出力値、吸気圧センサ出力値、スロットル開度センサ出力値、アクセル開度センサ出力値と称する。
【００２６】
ＭＰＵ１６は、上記のエンジン回転数、温度センサ出力値、吸気圧センサ出力値、スロットル開度センサ出力値及びアクセル開度センサ出力値と、ＥＥＰＲＯＭ１７に記憶されているエンジン制御プログラムやエンジン制御マップ等に基づいてエンジン７０の制御（具体的には、スロットルバルブコントローラ２０を介したスロットルバルブ６０の開度制御、不図示のインジェクタによる燃料噴射量制御、燃料ポンプによる燃料供給制御、点火プラグによる点火タイミング制御など）を行う。
【００２７】
このＭＰＵ１６は、後述するスロットルバルブコントローラ２０におけるＭＰＵ２１とＣＡＮ(Controller Area Network)通信ケーブルを介して通信可能に接続されており、スロットルバルブコントローラ２０によるスロットルバルブ６０の開度制御に必要な開度基準値やエンジンの運転状態を示す各種データ（つまり、エンジン回転数、温度センサ出力値、吸気圧センサ出力値、スロットル開度センサ出力値及びアクセル開度センサ出力値）をＭＰＵ２１に送信する機能を備えている。
【００２８】
また、詳細は後述するが、このＭＰＵ１６は、スロットルバルブ６０の開度制御の基準となる開度基準値を学習する機能を有している。具体的には、ＥＥＰＲＯＭ１７には、前回のエンジン運転時に最終的に得られた開度基準値が前回学習値として記憶されており、ＭＰＵ１６は、エンジン始動時にＥＥＰＲＯＭ１７から前回学習値を読み出し、その前回学習値を開度基準値の初期値として設定すると共に学習基準値として設定し、所定周期で学習基準値を中央値とした学習許可範囲内にスロットルバルブ６０の最閉じ側の開度実測値（つまりスロットル開度センサ出力値）が含まれているか否かを判定し、その学習許可範囲内にスロットル開度センサ出力値が含まれている場合に、当該スロットル開度センサ出力値を新たな開度基準値として更新する。
【００２９】
ＥＥＰＲＯＭ１７は、ＭＰＵ１６で使用されるエンジン制御プログラムやエンジン制御マップ等のエンジン制御に必要なデータや、上述したように前回のエンジン運転時にＭＰＵ１６によって最終的に得られた（更新された）開度基準値を前回学習値として記憶する書き換え可能な不揮発性記憶媒体である。許容
【００３０】
スロットルバルブコントローラ２０は、バルブ駆動モータ３０を回転駆動することにより、スロットルバルブ６０の開度を制御するものであり、ＭＰＵ２１と、モータ駆動回路２２と、ホールセンサ出力検出回路２３とを備えている。
【００３１】
ＭＰＵ２１は、上述したように、エンジン制御ユニット１０のＭＰＵ１６と通信可能に接続されており、ＭＰＵ１６から送信される開度基準値やエンジンの運転状態を示す各種データと、ホールセンサ出力検出回路２３から入力される、バルブ駆動モータ３０の回転子の位置を示す回転位置信号とに基づいて、スロットルバルブ６０の開度を所定の目標開度に制御するためのモータ制御信号を生成してモータ駆動回路２２に出力する。
【００３２】
モータ制御回路２２は、ＭＰＵ２１から入力されるモータ制御信号に応じてバルブ駆動モータ３０を回転駆動するための３相（Ｕ相、Ｖ相、Ｗ相）駆動信号を生成してバルブ駆動モータ３０に出力する。ホールセンサ出力検出回路２３は、ホールセンサ４０から入力される、バルブ駆動モータ３０の回転子位置に応じたＵ相ホールセンサ出力信号、Ｖ相ホールセンサ出力信号及びＷ相ホールセンサ出力信号に基づいて、バルブ駆動モータ３０の回転子の位置を示す回転位置信号を生成してＭＰＵ２１に出力する。
【００３３】
バルブ駆動モータ３０は、例えば３相ブラシレスモータであり、その回転軸はバルブ駆動用ギア５０を介してスロットルバルブ６０の回転軸と結合されている。つまり、このバルブ駆動モータ３０が、スロットルバルブコントローラ２０のＭＰＵ２１から入力される３相駆動信号に応じて回転することにより、スロットルバルブ６０の開度が目標開度に制御される。
【００３４】
ホールセンサ４０は、バルブ駆動モータ３０の回転子位置に応じたＵ相ホールセンサ出力信号、Ｖ相ホールセンサ出力信号及びＷ相ホールセンサ出力信号を生成して、スロットルバルブコントローラ２０のホールセンサ出力検出回路２３に出力する。バルブ駆動用ギア５０は、バルブ駆動モータ３０とスロットルバルブ６０との回転軸を結合する役割と、バルブ駆動モータ３０の回転速度を減速させる役割とを担っている。
【００３５】
スロットルバルブ６０は、エンジン７０の吸気管内部に配置されており、スロットルバルブコントローラ２０の制御によって所定の目標開度となるまで回動する。つまり、スロットルバルブ６０の回動によって吸気管内の吸気流路の断面積が変化し、エンジン７０の吸気量が制御されることになる。
【００３６】
エンジン７０は、例えば４サイクルエンジンであり、シリンダ、ピストン、クランクシャフト、吸気バルブ、排気バルブ、点火プラグ、吸気管、排気管、インジェクタ等から構成されている。このようなエンジン７０は、エンジン制御ユニット１０によって、スロットルバルブコントローラ２０を介したスロットルバルブ６０の開度制御による吸気量制御、インジェクタによる燃料噴射量制御、燃料ポンプによる燃料供給制御、点火プラグによる点火タイミング制御などが実施されることにより、その運転状態が制御される。
【００３７】
バッテリ８０は、イグニションスイッチ９０を介してエンジン制御ユニット１０及びスロットルバルブコントローラ２０に電源を供給する。また、図１では省略しているが、このバッテリ８０は、エンジン７０の始動に使用するスタータモータ等にも電源を供給する。イグニションスイッチ９０は、そのオン／オフ状態によってエンジン制御ユニット１０及びスロットルバルブコントローラ２０やスタータモータ等への電源供給を規制するためのスイッチである。
【００３８】
アクセル開度センサ１００は、ユーザによるアクセル操作に応じたアクセル開度を検出し、その検出結果を示すアナログ信号（アクセル開度信号）を、エンジン制御ユニット１０のアクセル開度センサ出力検出回路１５に出力する。スロットル開度センサ１１０は、スロットルバルブ６０の開度を検出し、その検出結果を示すアナログ信号（スロットル開度信号）を、エンジン制御ユニット１０のスロットル開度センサ出力検出回路１４に出力する。吸気圧センサ１２０は、スロットルバルブ６０が配置された吸気管内の吸気圧を検出し、その検出結果を示すアナログ信号（吸気圧信号）を、エンジン制御ユニット１０の吸気圧センサ出力検出回路１３に出力する。
【００３９】
エンジン温度センサ１３０は、エンジン７０の温度を検出し、その検出結果を示すアナログ信号（エンジン温度信号）を、エンジン制御ユニット１０のエンジン温度センサ出力検出回路１２に出力する。クランク角センサ１４０は、エンジン７０のクランク角に応じたパルス信号（クランク角信号）を、エンジン制御ユニット１０のクランク角センサ出力検出回路１１に出力する。
【００４０】
次に、上記のように構成された本実施形態におけるエンジン制御システムの動作、特にエンジン制御ユニット１０（スロットル開度基準学習装置）におけるスロットルバルブ６０の開度基準値の学習動作について詳細に説明する。なお、その他のエンジン制御に関する動作については、従来と同様であるため説明を省略する。
【００４１】
図２は、エンジン制御ユニット１０のＭＰＵ１６が起動時（つまりエンジン７０の始動時）に実行する開度基準学習処理における初期処理を表すフローチャートである。なお、この初期処理は、エンジン７０の始動の度に１度だけ実行されるものである。
【００４２】
この図２に示すように、ＭＰＵ１６は、イグニションスイッチ９０がオンか否かを判定し（ステップＳ１）、「Ｙｅｓ」の場合、つまりエンジン７０の始動時において、記憶媒体（ＥＥＰＲＯＭ１７）が故障か否かの判定を行う（ステップＳ２）。このステップＳ２において、「Ｎｏ」の場合、つまりＥＥＰＲＯＭ１７が正常であった場合、ＭＰＵ１６は、開度基準値を学習済みか否かを判定する（ステップＳ３）。ここで、例えば、ＥＥＰＲＯＭ１７内に前回のエンジン運転時に開度基準値の更新（学習）が行われたか否かを示すフラグを設定しておき、このフラグのオン／オフ状態に応じて開度基準値を学習済みか否かを判定することができる。
【００４３】
このステップＳ３において、「Ｙｅｓ」の場合、つまり開度基準値を学習済みであった場合、ＭＰＵ１６は、ＥＥＰＲＯＭ１７に記憶されている前回学習値を読み出し、今回のエンジン運転時におけるスロットルバルブ６０の開度基準値の初期値として設定し（ステップＳ４）、また、読み出した前回学習値を学習基準値として設定する（ステップＳ５）。
【００４４】
さらに、ＭＰＵ１６は、ＥＥＰＲＯＭ１７から、前回のエンジン運転時に記憶された劣化カウンタ値（前回学習劣化カウンタ値）を読み出し、今回のエンジン運転時における劣化カウンタの初期値として設定する（ステップＳ６）。ここで、劣化カウンタとは、エンジン７０の経年劣化の進行度を表すパラメータであり、後述する学習許可範囲の調整処理、特に、学習許可範囲調整処理の第２〜第６実施例で必要となるものである。従って、学習許可範囲調整処理の第１実施例を用いる場合には、このステップＳ６を省略しても良い。
【００４５】
そして、ＭＰＵ１６は、ＥＥＰＲＯＭ１７から、前回のエンジン運転時に記憶された走行距離の総和を読み出し、今回のエンジン運転時における走行距離の総和の初期値として設定する（ステップＳ７）。また、ＭＰＵ１６は、ＥＥＰＲＯＭ１７から、前回のエンジン運転時に記憶されたエンジン負荷カウンタ値を読み出し、今回のエンジン運転時におけるエンジン負荷カウンタの初期値として設定する（ステップＳ８）。ここで、走行距離の総和とは、走行距離の積算履歴を表すパラメータであり、また、エンジン負荷カウンタとは、エンジン負荷の積算履歴を表すパラメータである。なお、走行距離の総和は、学習許可範囲調整処理の第５実施例で必要となり、エンジン負荷カウンタは学習許可範囲調整処理の第６実施例で必要となるものであるので、その他の第１〜第４実施例を用いる場合には、これらステップＳ７、Ｓ８を省略しても良い。
【００４６】
一方、上記ステップＳ２で「Ｙｅｓ」の場合（ＥＥＰＲＯＭ１７が故障している場合）、または、上記ステップＳ３で「Ｎｏ」の場合（開度基準値を学習済みでなかった場合）には、ステップＳ９の処理に移行する。このように、ＥＥＰＲＯＭ１７が故障の場合とは、ＥＥＰＲＯＭ１７から前回のエンジン運転時に記憶された前回学習値や、劣化カウンタ値、走行距離の総和、エンジン負荷カウンタ値等を読み出すことができなくなる状況を指す。また、開度基準値を学習済みでなかった場合とは、このエンジン制御ユニット１０を初めて使用した場合を指す。従って、何らかの方法で今回のエンジン運転時における開度基準値、学習基準値、劣化カウンタ、走行距離の総和、エンジン負荷カウンタの初期値を設定しなければならない。
【００４７】
そこで、ステップＳ９以降の処理では、ＭＰＵ１６は、前回学習値の代替値を今回のエンジン運転時におけるスロットルバルブ６０の開度基準値の初期値として設定する（ステップＳ９）と共に、学習基準値として設定する（ステップＳ１０）。さらに、ＭＰＵ１６は、劣化カウンタの代替値を今回のエンジン運転時における劣化カウンタの初期値として設定する（ステップＳ１１）。そして、ＭＰＵ１６は、走行距離の総和の代替値を今回のエンジン運転時における走行距離の総和の初期値として設定し（ステップＳ１２）、また、エンジン負荷カウンタ値の代替値を今回のエンジン運転時におけるエンジン負荷カウンタの初期値として設定する（ステップＳ１３）。
【００４８】
ここで、前回学習値の代替値としては、開度基準値の設計値等の理想的な値を設定すれば良い。また、劣化カウンタ、走行距離の総和、エンジン負荷カウンタの代替値としては、開度基準値を学習済みでなかった場合であれば、単純に「０」に設定すれば良く、また、ＥＥＰＲＯＭ１７が故障している場合であれば、ある程度、エンジン７０の経年劣化が進行していたり、走行距離が伸びていたり、エンジン負荷が増大していることが予想できるため、「０」より大きな値、例えば、慣らし運転が終了した状態に相当する値に設定することが望ましい。
【００４９】
以上のような、開度基準学習処理における初期処理によって、今回のエンジン運転時における開度基準値、学習基準値、劣化カウンタ、走行距離の総和、エンジン負荷カウンタの初期値が設定される。続いて、ＭＰＵ１６は、開度基準学習処理における定期処理を実行する。
【００５０】
図３は、開度基準学習処理における定期処理を表すフローチャートである。なお、この定期処理は、所定周期、例えば１００ｍｓ周期で繰り返し実行されるものである。
図３に示すように、まず、ＭＰＵ１６は、上述した初期処理を実施済みか否かを判定し（ステップＳ２０）、「Ｙｅｓ」の場合にスロットル開度センサ１１０が故障しているか否かを判定する（ステップＳ２１）。
【００５１】
このステップＳ２１において、「Ｎｏ」の場合、つまりスロットル開度センサ１１０が正常であった場合、前回の定期処理で取得したスロットル開度センサ出力値を、スロットル開度センサ出力値の前回値として設定し（ステップＳ２２）、また、今回の定期処理でスロットル開度センサ１１０から取得したストッロル開度センサ出力値を、スロットル開度センサ出力値の今回値として設定する（ステップＳ２３）。
【００５２】
そして、ＭＰＵ１６は、上記のようにスロットル開度センサ出力値の前回値及び今回値を設定すると、学習許可範囲調整処理を実行し（ステップＳ２４）、その後、学習許可範囲調整処理によって得られた学習許可範囲を用いて開度基準更新処理を実行する（ステップＳ２５）。詳細は後述するが、開度基準更新処理において、ＭＰＵ１６は、学習基準値を中央値とした学習許可範囲内に、スロットルバルブ６０を最も閉じ側に制御した場合に得られるスロットル開度センサ出力値が含まれているか否かを判定し、その学習許可範囲内にスロットル開度センサ出力値が含まれている場合に、当該スロットル開度センサ出力値を新たな開度基準値として更新するという処理を行う。よって、学習許可範囲調整処理とは、開度基準更新処理に必要な学習許可範囲を決定するための処理である。
【００５３】
一方、上記ステップＳ２１において、「Ｎｏ」の場合、つまりスロットル開度センサ１１０が故障している場合、学習許可範囲調整処理及び開度基準更新処理を行うことができないため、ＭＰＵ１６は、開度基準値及び学習基準値に代替値を設定して定期処理を終了する（ステップＳ２６）。
【００５４】
続いて、上記の学習許可範囲調整処理の詳細について説明する。
＜学習許可範囲調整処理：第１実施例＞
まず、学習許可範囲調整処理の第１実施例について説明する。この第１実施例における学習許可範囲調整処理は、学習許可範囲を予め設定された固定値とするものである。図４（ａ）は、第１実施例における学習許可範囲調整処理を表すフローチャートである。この図４（ａ）に示すように、第１実施例における学習許可範囲調整処理では、ＭＰＵ１６は、ステップ３０Ａにおいて、学習許可範囲を予め設定された固定値に設定するのみである。ここで、学習許可範囲の固定値は、ＥＥＰＲＯＭ１７に予め記憶しておけば良い。
【００５５】
図４（ｂ）は、固定値に設定した学習許可範囲を用いて、開度基準値を更新する様子を表したものである。この図４（ｂ）に示すように、学習基準値（つまり、前回のエンジン運転時に最終的に得られた前回学習値）を中央値とした学習許可範囲内に、スロットルバルブ６０を最も閉じ側に制御した場合に得られるスロットル開度センサ出力値が含まれていれば、当該スロットル開度センサ出力値を新たな開度基準値として更新（学習）する。
【００５６】
この図に示すように、従来のように更新後の開度基準値を学習基準値としないため、学習許可範囲の位置が変わらず、よってスロットル開度センサ出力値が上昇推移した場合には開度基準値の更新が行われないため、上方更新による誤学習を防止することができる。
【００５７】
ところで、上記のように学習許可範囲を固定値とする場合、学習精度を上げるために学習許可範囲を小さく設定すると、経年劣化により開度基準値が学習許可範囲を超えてしまうと学習不能となる。一方、これに対して、学習許可範囲を大きく設定すると、開度基準値の誤学習が発生しやすくなるという問題がある。
【００５８】
そこで、本実施形態では、以下に説明する第２〜第４実施例の学習許可範囲調整処理において、学習許可範囲をエンジン７０の経年劣化の進行度に応じて調整する。ここで、経年劣化によって開度基準値が変化する要因としては、例えば、以下の（ａ）〜（ｃ）が挙げられる。
（ａ）アクセルＯＮからの急閉操作によって、アクセルストッパーが変形する。
（ｂ）アクセル操作の繰り返しによって、スロットルバルブ６０のセンサシャフトとスロットル開度センサ１１０との勘合部が摩耗する。
（ｃ）アクセル操作の繰り返しによって、スロットルバルブ６０のセンサシャフトの軸受けが摩耗し、センサシャフトの偏心が生じる。
いずれの場合も過度なアクセル操作の繰り返しの積み重ねによるものであるため、これをエンジン７０の経年劣化の進行度として把握することで学習許可範囲を調整する。
【００５９】
＜学習許可範囲調整処理：第２実施例＞
図５は、第２実施例における学習許可範囲調整処理を表すフローチャートである。なお、この第２実施例における学習許可範囲調整処理は、スロットル開度の実測値（スロットル開度センサ出力値の今回値）が低開度域から高開度域に遷移する回数をエンジン７０の経年劣化の進行度（劣化カウンタ）としてカウントし、当該カウント値に基づいて学習許可範囲を調整するものである。
【００６０】
この図５に示すように、まず、ＭＰＵ１６は、制御変数ＰＯＳＴＹＰが「００」か否かを判定する（ステップＳ３０）。このステップＳ３０において、「Ｙｅｓ」の場合、ＭＰＵ１６は、低開度域履歴なしと判断して、スロットル開度センサ出力値の今回値が所定値ＳＡより小さいか否かを判定する（ステップＳ３１）。図６（ａ）は、スロットル開度センサ出力値と劣化カウンタ値の時間変化を表したものである。この図に示すように、所定値ＳＡとは、スロットル開度センサ出力値が低開度域Ａに存在することを判断するための閾値である。
【００６１】
上記ステップＳ３１において、「Ｙｅｓ」の場合、つまりスロットル開度センサ出力値の今回値が所定値ＳＡより小さく、低開度域Ａに存在していると判断される場合、ＭＰＵ１６は、所定時間ＴＡが経過したか否かを判定する（ステップ３２）。このステップＳ３２において、「Ｙｅｓ」の場合、ＭＰＵ１６は、制御変数ＰＯＳＴＰＹを「０１」に設定し（ステップＳ３３）、上記所定時間ＴＡの計測結果を初期化してステップＳ４６に移行する（ステップＳ３４）。一方、上記ステップＳ３１、またはステップＳ３２において、「Ｎｏ」の場合、ＭＰＵ１６は、制御変数ＰＯＳＴＰＹを「００」に設定してステップＳ４６に移行する（ステップＳ３５）。
【００６２】
また、上記ステップＳ３０において、「Ｎｏ」の場合、ＭＰＵ１６は、低開度域履歴有りと判断して、制御変数ＰＯＳＴＹＰが「０１」か否かを判定する（ステップＳ３６）。このステップＳ３６において、「Ｙｅｓ」の場合、ＭＰＵ１６は、スロットル開度センサ出力値の今回値が所定値ＳＢより大きいか否かを判定する（ステップＳ３７）。図６（ａ）に示すように、所定値ＳＢとは、スロットル開度センサ出力値が高開度域Ｂに存在することを判断するための閾値である。
【００６３】
上記ステップＳ３７において、「Ｙｅｓ」の場合、つまりスロットル開度センサ出力値の今回値が所定値ＳＢより大きく、高開度域Ｂに存在していると判断される場合、ＭＰＵ１６は、所定時間ＴＢが経過したか否かを判定する（ステップ３８）。このステップＳ３８において、「Ｙｅｓ」の場合、ＭＰＵ１６は、制御変数ＰＯＳＴＰＹを「１１」に設定し（ステップＳ３９）、上記所定時間ＴＢの計測結果を初期化してステップＳ４６に移行する（ステップＳ４０）。一方、上記ステップＳ３７、またはステップＳ３８において、「Ｎｏ」の場合、ＭＰＵ１６は、制御変数ＰＯＳＴＰＹを「０１」に設定してステップＳ４６に移行する（ステップＳ４１）。
【００６４】
また、上記ステップＳ３６において、「Ｎｏ」の場合、ＭＰＵ１６は、高開度域履歴有りと判断して、制御変数ＰＯＳＴＹＰが「１１」か否かを判定する（ステップＳ４２）。このステップＳ４２において、「Ｙｅｓ」の場合、ＭＰＵ１６は、制御変数ＰＯＳＴＰＹを「００」に設定し（ステップＳ４３）、さらに、劣化カウンタをインクリメントしてステップＳ４６に移行する（ステップＳ４４）。一方、上記ステップＳ４２において、「Ｎｏ」の場合、ＭＰＵ１６は、制御変数ＰＯＳＴＰＹを「００」に設定してステップＳ４６に移行する（ステップＳ４５）。
【００６５】
以上のようなステップＳ３０〜Ｓ４５の処理によって、図６（ａ）に示すように、スロットル開度センサ出力値が低開度域Ａから高開度域Ｂに遷移する度に、経年劣化の進行度を表す劣化カウンタがインクリメントされることになる。
なお、上記のように、低開度域Ａの判断閾値として所定値ＳＡを設定し、高開度域Ｂの判断閾値として所定値ＳＢを設定した理由は、仮に低開度域Ａと高開度域Ｂとを１つの閾値で判別する場合、その閾値付近でスロットル開度センサ出力値がノイズ等の影響により変動すると、劣化カウンタが誤ってインクリメントされてしまう虞があるからである。
【００６６】
そして、ＭＰＵ１６は、ステップＳ３０〜Ｓ４５の処理によって得られる劣化カウンタ値に基づいて、学習許可範囲を調整する（ステップＳ４６）。具体的には、図６（ｂ）に示すように、劣化カウンタ値と、学習許可範囲の公差（中央値に対する＋側と−側の幅）との対応関係を示すテーブルデータが予めＥＥＰＲＯＭ１７に記憶されており、ＭＰＵ１６は、このテーブルデータから現在の劣化カウンタ値に対応する学習許可範囲の公差を取得することにより、劣化カウンタ値（つまり経年劣化の進行度）に応じた学習許可範囲に決定する。
【００６７】
図６（ｃ）は、劣化カウンタ値の増大に伴う学習許可範囲の変化の様子を表したものである。この図に示すように、劣化カウンタ値の増大に伴い、学習許可範囲も大きくなることがわかる。これにより、上述した経年劣化によって開度基準値が変化する要因（ａ）〜（ｃ）に対応した学習が可能となり、学習不能や誤学習によるエンジン制御不能に陥ることを防止することができる。なお、図６（ｃ）に示すように、学習許可範囲に上下限リミッタを規定することにより、過学習を防止するようにしても良い。
【００６８】
＜学習許可範囲調整処理：第３実施例＞
図７は、第３実施例における学習許可範囲調整処理を表すフローチャートである。なお、この第３実施例における学習許可範囲調整処理は、スロットル開度の実測値（スロットル開度センサ出力値の今回値）が低開度域→高開度域→低開度域の順に遷移する回数をエンジン７０の経年劣化の進行度（劣化カウンタ）としてカウントし、当該カウント値に基づいて学習許可範囲を調整するものである。
【００６９】
この図７に示すように、まず、ＭＰＵ１６は、制御変数ＰＯＳＴＹＰが「０００」か否かを判定する（ステップＳ５０）。このステップＳ５０において、「Ｙｅｓ」の場合、ＭＰＵ１６は、低開度域履歴なしと判断して、スロットル開度センサ出力値の今回値が所定値ＳＡより小さいか否かを判定する（ステップＳ５１）。図８は、スロットル開度センサ出力値と劣化カウンタ値の時間変化を表したものである。この図に示すように、所定値ＳＡとは、スロットル開度センサ出力値が低開度域Ａに存在することを判断するための閾値である。
【００７０】
上記ステップＳ５１において、「Ｙｅｓ」の場合、つまりスロットル開度センサ出力値の今回値が所定値ＳＡより小さく、低開度域Ａに存在していると判断される場合、ＭＰＵ１６は、所定時間ＴＡが経過したか否かを判定する（ステップ５２）。このステップ５２において、「Ｙｅｓ」の場合、ＭＰＵ１６は、制御変数ＰＯＳＴＰＹを「００１」に設定し（ステップＳ５３）、上記所定時間ＴＡの計測結果を初期化してステップＳ７２に移行する（ステップＳ５４）。一方、上記ステップＳ５１、またはステップＳ５２において、「Ｎｏ」の場合、ＭＰＵ１６は、制御変数ＰＯＳＴＰＹを「０００」に設定してステップＳ７２に移行する（ステップＳ５５）。
【００７１】
また、上記ステップＳ５０において、「Ｎｏ」の場合、ＭＰＵ１６は、低開度域履歴有りと判断して、制御変数ＰＯＳＴＹＰが「００１」か否かを判定する（ステップＳ５６）。このステップＳ５６において、「Ｙｅｓ」の場合、ＭＰＵ１６は、スロットル開度センサ出力値の今回値が所定値ＳＢより大きいか否かを判定する（ステップＳ５７）。図８に示すように、所定値ＳＢとは、スロットル開度センサ出力値が高開度域Ｂに存在することを判断するための閾値である。
【００７２】
上記ステップＳ５７において、「Ｙｅｓ」の場合、つまりスロットル開度センサ出力値の今回値が所定値ＳＢより大きく、高開度域Ｂに存在していると判断される場合、ＭＰＵ１６は、所定時間ＴＢが経過したか否かを判定する（ステップ５８）。このステップＳ５８において、「Ｙｅｓ」の場合、ＭＰＵ１６は、制御変数ＰＯＳＴＰＹを「０１１」に設定し（ステップＳ５９）、上記所定時間ＴＢの計測結果を初期化してステップＳ７２に移行する（ステップＳ６０）。一方、上記ステップＳ５７、またはステップＳ５８において、「Ｎｏ」の場合、ＭＰＵ１６は、制御変数ＰＯＳＴＰＹを「００１」に設定してステップＳ７２に移行する（ステップＳ６１）。
【００７３】
また、上記ステップＳ５６において、「Ｎｏ」の場合、ＭＰＵ１６は、高開度域履歴有りと判断して、制御変数ＰＯＳＴＹＰが「０１１」か否かを判定する（ステップＳ６２）。
このステップＳ６２において、「Ｙｅｓ」の場合、ＭＰＵ１６は、低開度域履歴なしと判断して、スロットル開度センサ出力値の今回値が所定値ＳＡより小さいか否かを判定する（ステップＳ６３）。
【００７４】
上記ステップＳ６３において、「Ｙｅｓ」の場合、つまりスロットル開度センサ出力値の今回値が所定値ＳＡより小さく、低開度域Ａに存在していると判断される場合、ＭＰＵ１６は、所定時間ＴＣが経過したか否かを判定する（ステップ６４）。このステップ６４において、「Ｙｅｓ」の場合、ＭＰＵ１６は、制御変数ＰＯＳＴＰＹを「１１１」に設定し（ステップＳ６５）、上記所定時間ＴＣの計測結果を初期化してステップＳ７２に移行する（ステップＳ６６）。一方、上記ステップＳ６３、またはステップＳ６４において、「Ｎｏ」の場合、ＭＰＵ１６は、制御変数ＰＯＳＴＰＹを「０１１」に設定してステップＳ７２に移行する（ステップＳ６７）。
【００７５】
また、上記ステップＳ６２において、「Ｎｏ」の場合、ＭＰＵ１６は、制御変数ＰＯＳＴＹＰが「１１１」か否かを判定する（ステップＳ６８）。このステップＳ６８において、「Ｙｅｓ」の場合、ＭＰＵ１６は、制御変数ＰＯＳＴＰＹを「０００」に設定し（ステップＳ６９）、さらに、劣化カウンタをインクリメントしてステップＳ７２に移行する（ステップＳ７０）。一方、上記ステップＳ６８において、「Ｎｏ」の場合、ＭＰＵ１６は、制御変数ＰＯＳＴＰＹを「０００」に設定してステップＳ７２に移行する（ステップＳ７１）。
【００７６】
以上のようなステップＳ５０〜Ｓ７１の処理によって、図８に示すように、スロットル開度センサ出力値が低開度域Ａ→高開度域Ｂ→低開度域Ａの順で遷移する度に、経年劣化の進行度を表す劣化カウンタがインクリメントされることになる。
【００７７】
そして、ＭＰＵ１６は、ステップＳ５０〜Ｓ７１の処理によって得られる劣化カウンタ値に基づいて、学習許可範囲を調整する（ステップＳ７２）。その調整方法は、第２実施例におけるステップＳ４６と同様である。
このような第３実施例によっても第２実施例と同様に、経年劣化によって開度基準値が変化する要因（ａ）〜（ｃ）に対応した学習が可能となり、学習不能や誤学習によるエンジン制御不能に陥ることを防止することができる。
【００７８】
＜学習許可範囲調整処理：第４実施例＞
図９は、第４実施例における学習許可範囲調整処理を表すフローチャートである。なお、この第４実施例における学習許可範囲調整処理は、スロットル開度センサ出力値の開き方向における時間変化量が所定値より大きくなる回数をエンジン７０の経年劣化の進行度（劣化カウンタ）としてカウントし、当該カウント値に基づいて学習許可範囲を調整するものである。
【００７９】
この図９に示すように、まず、ＭＰＵ１６は、制御変数ＰＯＳＴＹＰが「００」か否かを判定する（ステップＳ８０）。このステップＳ８０において、「Ｙｅｓ」の場合、ＭＰＵ１６は、低開度域履歴なしと判断して、スロットル開度センサ出力値の今回値が所定値ＳＡより小さいか否かを判定する（ステップＳ８１）。
【００８０】
上記ステップＳ８１において、「Ｙｅｓ」の場合、つまりスロットル開度センサ出力値の今回値が所定値ＳＡより小さく、低開度域Ａに存在していると判断される場合、ＭＰＵ１６は、所定時間ＴＡが経過したか否かを判定する（ステップ８２）。このステップＳ８２において、「Ｙｅｓ」の場合、ＭＰＵ１６は、制御変数ＰＯＳＴＰＹを「０１」に設定し（ステップＳ８３）、上記所定時間ＴＡの計測結果を初期化してステップＳ９２に移行する（ステップＳ８４）。一方、上記ステップＳ８１、またはステップＳ８２において、「Ｎｏ」の場合、ＭＰＵ１６は、制御変数ＰＯＳＴＰＹを「００」に設定してステップＳ９２に移行する（ステップＳ８５）。
【００８１】
また、上記ステップＳ８０において、「Ｎｏ」の場合、ＭＰＵ１６は、低開度域履歴有りと判断して、制御変数ＰＯＳＴＹＰが「０１」か否かを判定する（ステップＳ８６）。このステップＳ８６において、「Ｙｅｓ」の場合、ＭＰＵ１６は、スロットル開度センサ出力値の今回値と前回値との差からスロットル開度センサ出力値の時間変化量ΔＳを算出する（ステップＳ８７）。具体的には、今回値と前回値との取得時間差は定期処理周期である１００ｍｓであるので、時間変化量ΔＳ＝（今回値−前回値）／１００ｍｓで算出することができる。
【００８２】
そして、ＭＰＵ１６は、上記のように算出したスロットル開度センサ出力値の時間変化量ΔＳが所定値ΔＳ０より大きいか否かを判定する（ステップＳ８８）。このステップＳ８８において、「Ｙｅｓ」の場合、ＭＰＵ１６は、制御変数ＰＯＳＴＰＹを「００」に設定し（ステップＳ８９）、さらに、劣化カウンタをインクリメントしてステップＳ９２に移行する（ステップＳ９０）。一方、上記ステップＳ８６、またはステップＳ８８において、「Ｎｏ」の場合、ＭＰＵ１６は、制御変数ＰＯＳＴＰＹを「００」に設定してステップＳ９２に移行する（ステップＳ９２）。
【００８３】
以上のようなステップＳ８０〜Ｓ９１の処理によって、図１０（ａ）に示すように、スロットル開度センサ出力値の開き方向における時間変化量ΔＳが所定値ΔＳ０より大きくなる度に、経年劣化の進行度を表す劣化カウンタがインクリメントされることになる。そして、ＭＰＵ１６は、ステップＳ８０〜Ｓ９１の処理によって得られる劣化カウンタ値に基づいて、学習許可範囲を調整する（ステップＳ９２）。その調整方法は、第２実施例におけるステップＳ４６と同様である。
このような第４実施例によっても第２実施例と同様に、経年劣化によって開度基準値が変化する要因（ａ）〜（ｃ）に対応した学習が可能となり、学習不能や誤学習によるエンジン制御不能に陥ることを防止することができる。
【００８４】
なお、上記の説明では、スロットル開度センサ出力値の開き方向における時間変化量が所定値より大きくなる回数をカウントする場合を例示したが、図１０（ｂ）に示すように、スロットル開度センサ出力値の閉じ方向における時間変化量が所定値より小さくなる回数をカウントするようにしても良い。この場合、図９におけるステップＳ８１の処理を、点線で囲んだステップＳ８１ａに変更すると共に、ステップＳ８８の処理を、点線で囲んだステップＳ８８ａに変更すれば良い。つまり、ステップＳ８１ａでは、スロットル開度センサ出力値の今回値が所定値ＳＡより大きいか否かを判定し、また、ステップＳ８８ａでは、スロットル開度センサ出力値の時間変化量ΔＳが所定値ΔＳ０より小さいか否かを判定する。
【００８５】
＜学習許可範囲調整処理：第５実施例＞
図１１（ａ）は、第５実施例における学習許可範囲調整処理を表すフローチャートである。なお、この第５実施例における学習許可範囲調整処理は、上述した第２〜第４実施例のいずれかを用いて調整した学習許可範囲を、走行距離の総和（積算履歴）に基づいて補正するものである。つまり、学習許可範囲を調整するまでのステップは第２〜第４実施例と同じであるため、図１１（ａ）では補正処理に関するステップのみを図示している。
【００８６】
この図１１（ａ）に示すように、ＭＰＵ１６は、ステップＳ１００（このステップＳ１００が第２〜第４実施例におけるステップＳ４６、Ｓ７２及びＳ９２に相当する）において、劣化カウンタ値を基に学習許可範囲を調整すると、現在の走行距離の総和に基づいて学習許可範囲補正係数を決定する（ステップＳ１０１）。具体的には、図１１（ｂ）に示すように、走行距離の総和と、学習許可範囲補正系数との対応関係を示すテーブルデータが予めＥＥＰＲＯＭ１７に記憶されており、ＭＰＵ１６は、このテーブルデータから現在の走行距離の総和に対応する学習許可範囲補正係数を取得する。
【００８７】
そして、ＭＰＵ１６は、調整後の学習許可範囲に対して、上記のように取得した学習許可範囲補正係数を乗算することにより、学習許可範囲を補正する（ステップＳ１０２）。このように、経年劣化の進行度に関わる走行距離の総和によって学習許可範囲を補正することにより、さらに学習精度の向上を図ることができる。
【００８８】
＜学習許可範囲調整処理：第６実施例＞
図１２は、第６実施例における学習許可範囲調整処理を表すフローチャートである。なお、この第６実施例における学習許可範囲調整処理は、上述した第２〜第４実施例のいずれかを用いて調整した学習許可範囲を、エンジン負荷の積算履歴（エンジン負荷カウンタ）に基づいて補正するものである。つまり、学習許可範囲を調整するまでのステップは第２〜第４実施例と同じであるため、図１２では補正処理に関するステップのみを図示している。
【００８９】
この図１２に示すように、ＭＰＵ１６は、エンジン回転数の今回値が所定値Ｅより大きいか否かを判定する（ステップＳ１１０）。このステップＳ１１０において、「Ｙｅｓ」の場合、ＭＰＵ１６は、スロットル開度センサ出力値の今回値が所定値Ｆより大きいか否かを判定する（ステップＳ１１１）。このステップＳ１１１において、「Ｙｅｓ」の場合、ＭＰＵ１６は、エンジン温度センサ出力値の今回値が所定値Ｆより大きいか否かを判定する（ステップＳ１１２）。
【００９０】
このステップＳ１１２において、「Ｙｅｓ」の場合、つまり、エンジン回転数、スロットル開度センサ出力値、エンジン温度センサ出力値の全てが所定値より大きい場合に、ＭＰＵ１６は、エンジン負荷の積算履歴を表すエンジン負荷カウンタをインクリメントしてステップＳ１１４に移行する（ステップＳ１１３）。一方、上記ステップＳ１１０、Ｓ１１１、Ｓ１１２において、「Ｎｏ」の場合、ＭＰＵ１６は、エンジン負荷カウンタをインクリメントすることなくステップＳ１１４に移行する。
【００９１】
そして、ＭＰＵ１６は、劣化カウンタ値を基に学習許可範囲を調整し（ステップＳ１１４：第２〜第４実施例におけるステップＳ４６、Ｓ７２及びＳ９２に相当）、現在のエンジン負荷カウンタ値に基づいて学習許可範囲補正係数を決定する（ステップＳ１１５）。具体的には、図１１（ｂ）と同様に、エンジン負荷カウンタと、学習許可範囲補正系数との対応関係を示すテーブルデータが予めＥＥＰＲＯＭ１７に記憶されており、ＭＰＵ１６は、このテーブルデータから現在のエンジン負荷カウンタに対応する学習許可範囲補正係数を取得する。
【００９２】
そして、ＭＰＵ１６は、調整後の学習許可範囲に対して、上記のように取得した学習許可範囲補正係数を乗算することにより、学習許可範囲を補正する（ステップＳ１１６）。このように、経年劣化の進行度に関わるエンジン負荷の積算履歴（エンジン負荷カウンタ）によって学習許可範囲を補正することにより、第５実施例と同様に、学習精度の向上を図ることができる。
【００９３】
なお、上記の説明では、エンジン回転数、スロットル開度センサ出力値、エンジン温度センサ出力値の全てが所定値を超えた場合に、エンジン負荷カウンタをインクリメントする場合を例示したが、これらの内、少なくとも１つが所定値を超えた場合にエンジン負荷カウンタをインクリメントするようにしても良い。
【００９４】
以上が、図３に示す開度基準学習処理の定期処理におけるステップＳ２４の学習許可範囲調整処理の説明であり、以下では、ステップＳ２５の開度基準更新処理の詳細について説明する。
【００９５】
図１３は、開度基準更新処理を表すタイミングチャートである。この図１３に示すように、ＭＰＵ１６は、まず、スロットルバルブ６０を最も閉じ側に制御した場合に得られるスロットル開度センサ出力値（以下、最閉じ側センサ出力値と称する）が、学習基準値に学習許可範囲の公差を加算した値より小さいか否かを判定する（ステップＳ２００）。このステップＳ２００において、「Ｙｅｓ」の場合、ＭＰＵ１６は、上記の最閉じ側センサ出力値が、学習基準値から学習許可範囲の公差を減算した値より大きいか否かを判定する（ステップＳ２０１）。つまり、これらステップＳ２００とＳ２０１によって、最閉じ側センサ出力値が学習許可範囲内に含まれるか否かが判定される。
【００９６】
上記ステップＳ２０１において、「Ｙｅｓ」の場合、つまり最閉じ側センサ出力値が学習許可範囲内に含まれている場合、ＭＰＵ１６は、最閉じ側センサ出力値の今回値と前回値とが一致しているか否かを判定する（ステップＳ２０２）。このステップＳ２０２において、「Ｙｅｓ」の場合、つまり最閉じ側センサ出力値の今回値と前回値とが一致しており、最閉じ側センサ出力値が安定していると判断される場合には、ＭＰＵ１６は、所定時間ＴＡが経過したか否かを判定し（ステップＳ２０３）、「Ｎｏ」の場合、開度基準更新処理を終了する。また、上記ステップＳ２００、Ｓ２０１、またはＳ２０２において、「Ｎｏ」の場合、ＭＰＵ１６は、ステップＳ２０６の処理に移行する。
【００９７】
一方、上記ステップＳ２０３において、「Ｙｅｓ」の場合、つまり最閉じ側センサ出力値が学習許可範囲内に含まれており、且つ所定時間安定している場合、ＭＰＵ１６は、最閉じ側センサ出力値の今回値を新たなスロットルバルブ６０の開度基準値として更新する（ステップＳ２０４）。さらに、ＭＰＵ１６は、新たに更新した開度基準値を基に、ＥＥＰＲＯＭ１７に記憶する前回学習値の更新を行う（ステップＳ２０５）。
【００９８】
このステップＳ２０５については、２つの処理が挙げられる。第１の処理は、図１３に示すステップＳ２０５ａのように、更新した開度基準値をそのまま前回学習値として更新するものである。第２の処理は、図１３に示すステップＳ２０５ｂのように、更新した開度基準値が現在の学習基準値より小さいか否かを判定し、「Ｙｅｓ」の場合に、ステップＳ２０５ｃのように、更新した開度基準値を前回学習値として更新するものである。この第２の処理のように、更新した開度基準値が現在の学習基準値（つまりエンジン始動時にＥＥＰＲＯＭ１７から読み出した前回学習値）より小さい場合にのみ、次回のエンジン始動時に学習基準値として設定される前回学習値を更新することにより、特に経年劣化によって開度基準値が変化する要因（ａ）に対応しつつ、学習精度の向上を図ることができる。
【００９９】
そして、ＭＰＵ１６は、上記のようにスロットルバルブ６０の開度制御に用いる開度基準値を更新し、さらに次回のエンジン始動時に学習基準値として設定される前回学習値を更新すると、所定時間ＴＡの計測結果を初期化して開度基準更新処理を終了する（ステップＳ２０６）。
【０１００】
以上説明したように、本実施形態におけるエンジン制御ユニット１０（スロットル開度基準学習装置）によれば、スロットル開度センサ出力値が上昇推移した場合における上方更新による誤学習を防止することができる。また、経年劣化の進行度に応じて学習許可範囲を調整することにより、経年劣化によって開度基準値が変化する要因（ａ）〜（ｃ）に対応した学習が可能となり、学習不能や誤学習によるエンジン制御不能に陥ることを防止することができる。さらに、走行距離やエンジン負荷の積算履歴を基に学習許可範囲を補正することにより、より学習精度の向上を図ることができる。
【０１０１】
なお、上記実施形態では、スロットル開度センサ出力値に基づいて経年劣化の進行度を表す劣化カウンタのインクリメントを行ったが、このスロットル開度センサ出力値の替わりに、スロットル開度センサ出力値と相関関係のあるアクセル開度センサ出力値を用いても良い。また、エンジン７０の経年劣化の進行度に応じて学習許可範囲を調整する手法として、第２実施例〜第４実施例を述べたが、この他に経年劣化の進行度を把握することが可能なパラメータがあれば、そのパラメータを用いて経年劣化の進行度を把握しても良い。
【図面の簡単な説明】
【０１０２】
【図１】本発明の一実施形態に係るスロットル開度基準学習装置（エンジン制御ユニット１０）を備えたエンジン制御システムの構成概略図である。
【図２】本実施形態におけるスロットル開度基準学習装置が実行する開度基準学習処理（初期処理）を表すフローチャートである。
【図３】本実施形態におけるスロットル開度基準学習装置が実行する開度基準学習処理（定期処理）を表すフローチャートである。
【図４】本実施形態におけるスロットル開度基準学習装置が実行する学習許可範囲調整処理の第１実施例に関するフローチャート及び補足説明図である。
【図５】本実施形態におけるスロットル開度基準学習装置が実行する学習許可範囲調整処理の第２実施例に関するフローチャートである。
【図６】本実施形態におけるスロットル開度基準学習装置が実行する学習許可範囲調整処理の第２実施例に関する補足説明図である。
【図７】本実施形態におけるスロットル開度基準学習装置が実行する学習許可範囲調整処理の第３実施例に関するフローチャートである。
【図８】本実施形態におけるスロットル開度基準学習装置が実行する学習許可範囲調整処理の第３実施例に関する補足説明図である。
【図９】本実施形態におけるスロットル開度基準学習装置が実行する学習許可範囲調整処理の第４実施例に関するフローチャートである。
【図１０】本実施形態におけるスロットル開度基準学習装置が実行する学習許可範囲調整処理の第４実施例に関する補足説明図である。
【図１１】本実施形態におけるスロットル開度基準学習装置が実行する学習許可範囲調整処理の第５実施例に関するフローチャート及び補足説明図である。
【図１２】本実施形態におけるスロットル開度基準学習装置が実行する学習許可範囲調整処理の第６実施例に関するフローチャートである。
【図１３】本実施形態におけるスロットル開度基準学習装置が実行する開度基準更新処理を表すフローチャートである。
【図１４】従来におけるスロットル弁の開度基準値の学習方法に関する説明図である。
【符号の説明】
【０１０３】
１０…エンジン制御ユニット（スロットル開度基準学習装置）、１１…クランク角センサ出力検出回路、１２…エンジン温度センサ出力検出回路、１３…吸気圧センサ出力検出回路、１４…スロットル開度センサ出力検出回路、１５…アクセル開度センサ出力検出回路、１６…ＭＰＵ（Micro Processing Unit：開度基準更新手段）、１７…ＥＥＰＲＯＭ(Electrically Erasable and Programmable Read Only Memory：学習値記憶手段)、２０…スロットルバルブコントローラ、２１…ＭＰＵ、２２…モータ駆動回路、２３…ホールセンサ出力検出回路、３０…バルブ駆動モータ、４０…モータセンサ、５０…バルブ駆動用ギア、６０…スロットルバルブ（スロットル弁）、７０…エンジン、８０…バッテリ、９０…イグニッションスイッチ、１００…アクセル開度センサ、１１０…スロットル開度センサ、１２０…吸気圧センサ、１３０…エンジン温度センサ、１４０…クランク角センサ
【図１】
2010084632.tif 000003
【図２】
2010084632.tif 000004
【図３】
2010084632.tif 000005
【図４】
2010084632.tif 000006
【図５】
2010084632.tif 000007
【図６】
2010084632.tif 000008
【図７】
2010084632.tif 000009
【図８】
2010084632.tif 000010
【図９】
2010084632.tif 000011
【図１０】
2010084632.tif 000012
【図１１】
2010084632.tif 000013
【図１２】
2010084632.tif 000014
【図１３】
2010084632.tif 000015
【図１４】
2010084632.tif 000016