(57)【特許請求の範囲】
【請求項１】
モータ（１２）を駆動源としてシフトレンジを切り換えるレンジ切換機構（１１）と、前記モータ（１２）の回転に同期して所定の位相差を有するＡ相信号とＢ相信号を出力するエンコーダ（４６）と、前記エンコーダ（４６）の出力信号のカウント値に基づいて前記モータ（１２）の通電相を順次切り換えて前記モータ（１２）を回転駆動する制御手段（４１）とを備えたレンジ切換制御装置において、
前記制御手段（４１）は、前記Ａ相信号と前記Ｂ相信号が所定時間以内の時間間隔で入力された場合に、該Ａ相信号と該Ｂ相信号のうち前回の入力信号との時間間隔が短い方をノイズと判定し、当該ノイズを前記カウント値の演算処理に反映させないことを特徴とするレンジ切換制御装置。
【請求項２】
モータ（１２）を駆動源としてシフトレンジを切り換えるレンジ切換機構（１１）と、前記モータ（１２）の回転に同期して所定の位相差を有するＡ相信号とＢ相信号を出力するエンコーダ（４６）と、前記エンコーダ（４６）の出力信号のカウント値に基づいて前記モータ（１２）の通電相を順次切り換えて前記モータ（１２）を回転駆動する制御手段（４１）とを備えたレンジ切換制御装置において、
前記制御手段（４１）は、前記モータ（１２）の回転駆動中に前記エンコーダ（４６）の出力信号が入力される毎に今回の入力信号を前回の入力信号と比較して該今回の入力信号が有効な信号であるか否かを判定し、該今回の入力信号が有効な信号ではないと判定した場合に、該今回の入力信号をノイズと判定し、当該ノイズを前記カウント値の演算処理に反映させないように構成されており、
前記制御手段は、前記Ａ相信号のエッジと前記Ｂ相信号のエッジとが交互に入力されたか否かに基づいて、今回の入力信号が有効な信号であるか否かを判定することを特徴とするレンジ切換制御装置。
【請求項３】
モータ（１２）を駆動源としてシフトレンジを切り換えるレンジ切換機構（１１）と、前記モータ（１２）の回転に同期してパルス信号を出力するエンコーダ（４６）と、前記エンコーダ（４６）の出力信号のカウント値（以下「エンコーダカウント値」という）に基づいて前記モータ（１２）の通電相を順次切り換えて前記モータ（１２）を目標レンジに相当する目標回転位置まで回転駆動するフィードバック制御を実行する制御手段（４１）とを備えたレンジ切換制御装置において、
前記制御手段（４１）は、前記フィードバック制御の実行中に前記エンコーダカウント値が正常に変化しない場合に、前記エンコーダカウント値の情報をフィードバックせずに前記通電相を順次切り換えるオープンループ制御に切り換え、該オープンループ制御で前記モータ（１２）を前記目標回転位置まで回転駆動した後に前記モータ（１２）を前記シフトレンジが切り換わらない微小範囲内で回転駆動する期間に、前記通電相の切換回数と前記エンコーダカウント値の変化量との関係が正常か否かを判定し、該関係が正常と判定した場合に、前記エンコーダカウント値と前記通電相との対応関係を再学習することを特徴とするレンジ切換制御装置。
【請求項４】
前記制御手段（４１）は、前記オープンループ制御で前記モータ（１２）を前記微小範囲内で回転駆動する際に、前記モータ（１２）の駆動電流を所定値以下に制限することを特徴とする請求項３に記載のレンジ切換制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モータを駆動源としてシフトレンジを切り換えるレンジ切換制御装置に関する発明である。
【背景技術】
【０００２】
近年、自動車においても、省スペース化、組立性向上、制御性向上等の要求を満たすために、機械的な駆動システムを、モータによって電気的に駆動するシステムに変更する事例が増加する傾向にある。その一例として、車両の自動変速機のレンジ切換機構をモータで駆動するようにしたものがある。
【０００３】
このようなシステムにおいては、例えば、特許文献１（特許第３８８６０４２号公報）に記載されているように、モータの回転に同期して所定角度毎にパルス信号を出力するエンコーダを搭載し、このエンコーダの出力信号のカウント値（以下「エンコーダカウント値」という）に基づいてモータの回転位置を検出するようにしたものがある。
【０００４】
この特許文献１では、エンコーダカウント値（モータの回転位置の情報）に基づいてモータの通電相を順次切り換えてモータを目標レンジに相当する目標回転位置まで回転駆動するフィードバック制御を実行して、シフトレンジを目標レンジに切り換えるようにしている。更に、フィードバック制御中に、エンコーダのＡ相信号の出力間隔やＢ相信号の出力間隔が異常判定値以上になった場合や、Ａ相信号のカウント値とＢ相信号のカウント値との偏差が異常判定値以上になった場合には、フィードバック制御状態の異常有りと判定して、オープンループ制御に切り換えるようにしている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３８８６０４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、上記特許文献１の技術では、一過性のノイズがエンコーダの出力信号と誤認されて、エンコーダカウント値とモータの回転位置と通電相との対応関係が崩れた場合に、エンコーダカウント値に基づいて通電相を順次切り換えてモータを回転駆動するモータ回転制御を正常に実行できなくなる可能性がある。
【０００７】
そこで、本発明が解決しようとする課題は、一過性のノイズによりモータ回転制御を正常に実行できなくなる事態を回避することができるレンジ切換制御装置を提供することにある。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、請求項１に係る発明は、モータ（１２）を駆動源としてシフトレンジを切り換えるレンジ切換機構（１１）と、モータ（１２）の回転に同期して所定の位相差を有するＡ相信号とＢ相信号を出力するエンコーダ（４６）と、このエンコーダ（４６）の出力信号のカウント値に基づいてモータ（１２）の通電相を順次切り換えてモータ（１２）を回転駆動する制御手段（４１）とを備えたレンジ切換制御装置において、制御手段（４１）は、Ａ相信号とＢ相信号が所定時間以内の時間間隔で入力された場合に、該Ａ相信号と該Ｂ相信号のうち前回の入力信号との時間間隔が短い方をノイズと判定し、当該ノイズをカウント値の演算処理に反映させないようにしたものである。
【０００９】
Ａ相信号とＢ相信号が両方とも正常であれば、Ａ相信号とＢ相信号は所定の位相差を有するはずである。このため、Ａ相信号とＢ相信号が所定時間以内の時間間隔で入力された場合（Ａ相信号とＢ相信号がほぼ同時に入力された場合）には、Ａ相信号とＢ相信号のうちの一方が正常な間隔よりも短い間隔で入力されたノイズであると考えられる。従って、Ａ相信号とＢ相信号が所定時間以内の時間間隔で入力された場合に、Ａ相信号とＢ相信号のうち前回の入力信号との時間間隔が短い方をノイズと判定することで、ノイズを精度良く検出してエンコーダカウント値の演算処理に反映させないようにすることができる。このようにすれば、一過性のノイズによりエンコーダカウント値とモータの回転位置と通電相との対応関係が崩れてしまうことを防止することができ、エンコーダカウント値に基づいて通電相を順次切り換えてモータを回転駆動するモータ回転制御を継続することができる。これにより、一過性のノイズによりモータ回転制御を正常に実行できなくなる事態を回避することができる。
【００１０】
或は、請求項２のように、制御手段（４１）は、モータ（１２）の回転駆動中にエンコーダ（４６）の出力信号が入力される毎に今回の入力信号を前回の入力信号と比較して該今回の入力信号が有効な信号であるか否かを判定し、該今回の入力信号が有効な信号ではないと判定した場合に、該今回の入力信号をノイズと判定し、当該ノイズをカウント値の演算処理に反映させないように構成されており、制御手段は、Ａ相信号のエッジと前記Ｂ相信号のエッジとが交互に入力されたか否かに基づいて、今回の入力信号が有効な信号であるか否かを判定するようにしても良い。
【００１１】
Ａ相信号とＢ相信号が両方とも正常であれば、Ａ相信号とＢ相信号が所定の順序で入力されるはずである。このため、今回の入力信号を前回の入力信号と比較することで、今回の入力信号が有効な信号であるか否かを判定することができ、今回の入力信号が有効な信号ではないと判定した場合に、今回の入力信号をノイズと判定することで、ノイズを精度良く検出してエンコーダカウント値の演算処理に反映させないようにすることができる。このようにすれば、一過性のノイズによりエンコーダカウント値とモータの回転位置と通電相との対応関係が崩れてしまうことを防止することができ、エンコーダカウント値に基づいて通電相を順次切り換えてモータを回転駆動するモータ回転制御を継続することができる。これにより、一過性のノイズによりモータ回転制御を正常に実行できなくなる事態を回避することができる。
【００１２】
また、モータ（１２）を駆動源としてシフトレンジを切り換えるレンジ切換機構（１１）と、モータ（１２）の回転に同期してパルス信号を出力するエンコーダ（４６）と、このエンコーダ（４６）の出力信号のカウント値（以下「エンコーダカウント値」という）に基づいてモータ（１２）の通電相を順次切り換えてモータ（１２）を目標レンジに相当する目標回転位置まで回転駆動するフィードバック制御を実行する制御手段（４１）とを備えたレンジ切換制御装置において、制御手段（４１）は、フィードバック制御の実行中にエンコーダカウント値が正常に変化しない場合に、エンコーダカウント値の情報をフィードバックせずに通電相を順次切り換えるオープンループ制御に切り換え、このオープンループ制御でモータ（１２）を目標回転位置まで回転駆動する期間に、通電相の切換回数とエンコーダカウント値の変化量との関係が正常か否かを判定し、該関係が正常と判定した場合に、エンコーダカウント値と通電相との対応関係を再学習するようにしても良い。
【００１３】
フィードバック制御の実行中に、一過性のノイズよりエンコーダカウント値とモータの回転位置と通電相との対応関係が崩れて、エンコーダカウント値が正常に変化しない場合に、オープンループ制御に切り換えることで、いずれかの通電相でモータの回転位置と通電相を一致させてモータを回転駆動することができる。このオープンループ制御でモータを目標回転位置まで回転駆動し、その目標回転位置まで回転駆動する期間に通電相の切換回数とエンコーダカウント値の変化量との関係が正常か否かを判定する。その結果、通電相の切換回数とエンコーダカウント値の変化量との関係が正常と判定した場合に、エンコーダカウント値と通電相との対応関係を再学習する。このようにすれば、オープンループ制御でモータを目標回転位置まで回転駆動しているときに、エンコーダカウント値と通電相との対応関係を再学習することができる。これにより、エンコーダカウント値に基づいて通電相を順次切り換えてモータを回転駆動するモータ回転制御に復帰することが可能となり、一過性のノイズによりモータ回転制御を正常に実行できなくなる事態を回避することができる。
【００１４】
或は、請求項３のように、制御手段（４１）は、フィードバック制御の実行中にエンコーダカウント値が正常に変化しない場合に、エンコーダカウント値の情報をフィードバックせずに通電相を順次切り換えるオープンループ制御に切り換え、このオープンループ制御でモータ（１２）を目標回転位置まで回転駆動した後にモータ（１２）をシフトレンジが切り換わらない微小範囲内で回転駆動する期間に、通電相の切換回数とエンコーダカウント値の変化量との関係が正常か否かを判定し、該関係が正常と判定した場合に、エンコーダカウント値と通電相との対応関係を再学習するようにしても良い。
【００１５】
フィードバック制御の実行中に、一過性のノイズよりエンコーダカウント値とモータの回転位置と通電相との対応関係が崩れて、エンコーダカウント値が正常に変化しない場合に、オープンループ制御に切り換えることで、いずれかの通電相でモータの回転位置と通電相を一致させてモータを回転駆動することができる。このオープンループ制御でモータを目標回転位置まで回転駆動した後にモータをシフトレンジが切り換わらない微小範囲内で回転駆動し、その微小範囲内で回転駆動する期間に、通電相の切換回数とエンコーダカウント値の変化量との関係が正常か否かを判定する。その結果、通電相の切換回数とエンコーダカウント値の変化量との関係が正常と判定した場合に、エンコーダカウント値と通電相との対応関係を再学習する。このようにすれば、オープンループ制御でモータを目標回転位置まで回転駆動した後（モータを微小範囲内で回転駆動する期間）に、エンコーダカウント値と通電相との対応関係を再学習することができる。これにより、エンコーダカウント値に基づいて通電相を順次切り換えてモータを回転駆動するモータ回転制御に復帰することが可能となり、一過性のノイズによりモータ回転制御を正常に実行できなくなる事態を回避することができる。
【図面の簡単な説明】
【００１６】
【図１】図１は本発明の実施例１におけるレンジ切換機構の斜視図である。
【図２】図２はレンジ切換制御システムの概略構成を示す図である。
【図３】図３は実施例１のノイズ判定の実行例（その１）を示すタイムチャートである。
【図４】図４は実施例１のノイズ判定の実行例（その２）を示すタイムチャートである。
【図５】図５は実施例１のノイズ判定ルーチンの処理の流れを示すフローチャート（その１）である。
【図６】図６は実施例１のノイズ判定ルーチンの処理の流れを示すフローチャート（その２）である。
【図７】図７は実施例１のノイズ判定ルーチンの処理の流れを示すフローチャート（その３）である。
【図８】図８は実施例１のノイズ判定ルーチンの処理の流れを示すフローチャート（その４）である。
【図９】図９は実施例２のノイズ判定の実行例（その１）を示すタイムチャートである。
【図１０】図１０は実施例２のノイズ判定の実行例（その２）を示すタイムチャートである。
【図１１】図１１は実施例２のＡ相ノイズ判定ルーチンの処理の流れを示すフローチャートである。
【図１２】図１２は実施例２のＢ相ノイズ判定ルーチンの処理の流れを示すフローチャートである。
【図１３】図１３は実施例３の再学習の実行例を示すタイムチャートである。
【図１４】図１４は実施例３の再学習ルーチンの処理の流れを示すフローチャート（その１）である。
【図１５】図１５は実施例３の再学習ルーチンの処理の流れを示すフローチャート（その２）である。
【図１６】図１６はエンコーダカウント値と通電相との対応関係の一例を示す図である。
【図１７】図１７は実施例４の再学習の実行例を示すタイムチャートである。
【図１８】図１８は実施例４の再学習ルーチンの処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１７】
以下、本発明を実施するための形態を具体化した幾つかの実施例を説明する。
【実施例１】
【００１８】
本発明の実施例１を図１乃至図８に基づいて説明する。
まず、図１及び図２に基づいてレンジ切換制御システムの構成を説明する。
図１に示すように、レンジ切換機構１１は、自動変速機２７（図２参照）のシフトレンジをＰレンジ（パーキングレンジ）とＮｏｔＰレンジとの間で切り換える２ポジション式のレンジ切換機構である。このレンジ切換機構１１の駆動源となるモータ１２は、例えばスイッチトリラクタンスモータにより構成されている。このモータ１２には、減速機構２６（図２参照）が内蔵され、その出力軸１２ａ（図２参照）に、レンジ切換機構１１のマニュアルシャフト１３が接続されている。このマニュアルシャフト１３に、ディテントレバー１５が固定されている。
【００１９】
ディテントレバー１５には、ディテントレバー１５の回転に応じて直線運動するマニュアルバルブ（図示せず）が接続され、このマニュアルバルブによって自動変速機２７の内部の油圧回路（図示せず）を切り換えることで、シフトレンジを切り換えるようになっている。
【００２０】
また、ディテントレバー１５にはＬ字形のパーキングロッド１８が固定され、このパーキングロッド１８の先端部に設けられた円錐体１９がロックレバー２１に当接している。このロックレバー２１は、円錐体１９の位置に応じて軸２２を中心にして上下動してパーキングギヤ２０をロック／ロック解除するようになっている。パーキングギヤ２０は、自動変速機２７の出力軸に設けられ、このパーキングギヤ２０がロックレバー２１によってロックされると、車両の駆動輪が回り止めされた状態（パーキング状態）に保持される。
【００２１】
一方、ディテントレバー１５を各レンジ（ＰレンジとＮｏｔＰレンジ）の位置に保持するためのディテントバネ２３が支持ベース１７に固定され、ディテントレバー１５には、Ｐレンジ保持凹部２４とＮｏｔＰレンジ保持凹部２５が形成されている。ディテントバネ２３の先端に設けられた係合部２３ａがディテントレバー１５のＰレンジ保持凹部２４に嵌まり込んだときに、ディテントレバー１５がＰレンジの位置に保持される。ディテントバネ２３の係合部２３ａがディテントレバー１５のＮｏｔＰレンジ保持凹部２５に嵌まり込んだときに、ディテントレバー１５がＮｏｔＰレンジの位置に保持される。これらディテントレバー１５とディテントバネ２３等からディテントレバー１５の回転位置を各レンジの位置に係合保持する（つまりレンジ切換機構１１を各レンジの位置に保持する）ためのディテント機構１４（節度機構）が構成されている。
【００２２】
Ｐレンジでは、パーキングロッド１８がロックレバー２１に接近する方向に移動して、円錐体１９の太い部分がロックレバー２１を押し上げてロックレバー２１の凸部２１ａがパーキングギヤ２０に嵌まり込んでパーキングギヤ２０をロックした状態となる。それによって、自動変速機２７の出力軸（駆動輪）がロックされた状態（パーキング状態）に保持される。
【００２３】
一方、ＮｏｔＰレンジでは、パーキングロッド１８がロックレバー２１から離れる方向に移動して、円錐体１９の太い部分がロックレバー２１から抜け出てロックレバー２１が下降する。それによって、ロックレバー２１の凸部２１ａがパーキングギヤ２０から外れてパーキングギヤ２０のロックが解除され、自動変速機２７の出力軸が回転可能な状態（走行可能な状態）に保持される。
【００２４】
図２に示すように、レンジ切換機構１１のマニュアルシャフト１３には、マニュアルシャフト１３の回転角（回転位置）を検出する回転センサ１６が設けられている。この回転センサ１６は、マニュアルシャフト１３の回転角度に応じた電圧を出力するセンサ（例えばポテンショメータ）によって構成され、その出力電圧によって実際のシフトレンジが、ＰレンジとＮｏｔＰレンジのいずれであるかを確認できるようになっている。
【００２５】
図２に示すように、モータ１２には、ロータの回転角（回転位置）を検出するためのエンコーダ４６が設けられている。このエンコーダ４６は、例えば磁気式のロータリエンコーダにより構成されており、モータ１２のロータの回転に同期して所定の位相差を有するＡ相とＢ相のパルス信号を所定角度毎に出力するように構成されている。レンジ切換制御回路４２のマイコン４１（制御手段）は、エンコーダ４６から出力されるＡ相信号とＢ相信号の立ち上がり／立ち下がりの両方のエッジをカウントして、そのカウント値（以下「エンコーダカウント値」という）に応じてモータドライバ３７によってモータ１２の通電相を所定の順序で切り換えることでモータ１２を回転駆動する。尚、モータ１２の３相（Ｕ相，Ｖ相，Ｗ相）の巻線とモータドライバ３７の組み合わせを２系統設けて、一方の系統が故障しても、他方の系統でモータ１２を回転駆動できる構成にしても良い。
【００２６】
モータ１２の回転中は、Ａ相信号とＢ相信号の発生順序によってモータ１２の回転方向を判定し、正回転（Ｐレンジ→ＮｏｔＰレンジの回転方向）ではエンコーダカウント値をカウントアップし、逆回転（ＮｏｔＰレンジ→Ｐレンジの回転方向）ではエンコーダカウント値をカウントダウンする。これにより、モータ１２が正回転／逆回転のいずれの方向に回転しても、エンコーダカウント値とモータ１２の回転角との対応関係が維持されるため、正回転／逆回転のいずれの回転方向でも、エンコーダカウント値によってモータ１２の回転位置を検出して、その回転位置に対応した相の巻線に通電してモータ１２を回転駆動できるようになっている。
【００２７】
レンジ切換制御回路４２には、シフトスイッチ４４で検出したシフトレバー操作位置の信号が入力される。これにより、レンジ切換制御回路４２のマイコン４１は、運転者のシフトレバー操作等に応じて目標レンジを切り換え、その目標レンジに応じてモータ１２を駆動してシフトレンジを切り換え、切り換え後の実際のシフトレンジをインストルメントパネル（図示せず）に設けられたレンジ表示部４５に表示する。
【００２８】
レンジ切換制御回路４２には、車両に搭載されたバッテリ５０（電源）から電源リレー５１を介して電源電圧が供給される。電源リレー５１のオン／オフは、電源スイッチであるＩＧスイッチ５２（イグニッションスイッチ）のオン／オフを手動操作することで切り換えられる。ＩＧスイッチ５２がオンされると、電源リレー５１がオンされてレンジ切換制御回路４２に電源電圧が供給され、ＩＧスイッチ５２がオフされると、電源リレー５１がオフされてレンジ切換制御回路４２への電源供給が遮断（オフ）される。
【００２９】
ところで、エンコーダカウント値は、マイコン４１のＲＡＭに記憶されるため、レンジ切換制御回路４２の電源がオフされると、エンコーダカウント値の記憶値が消えてしまう。そのため、レンジ切換制御回路４２の電源投入直後のエンコーダカウント値は、実際のモータ１２の回転位置（通電相）に対応したものとならない。従って、エンコーダカウント値に応じて通電相を切り換えるためには、電源投入後にエンコーダカウント値と実際のモータ１２の回転位置とを対応させて、エンコーダカウント値と通電相とを対応させる必要がある。
【００３０】
そこで、マイコン４１は、電源投入後に初期駆動を行ってモータ１２の通電相とエンコーダカウント値との対応関係を学習する。この初期駆動では、オープンループ制御でモータ１２の通電相の切り換えを所定のタイムスケジュールで一巡させることで、いずれかの通電相でモータ１２の回転位置と該通電相とを一致させてモータ１２を回転駆動してエンコーダ４６のＡ相信号及びＢ相信号のエッジをカウントし、初期駆動終了時のエンコーダカウント値とモータ１２の回転位置と通電相との対応関係を学習する。
【００３１】
また、マイコン４１は、モータ１２の起動後のエンコーダカウント値に基づいてモータ１２の起動位置からの回転量（回転角）を検出できるだけであるため、電源投入後に何等かの方法で、モータ１２の絶対的な回転位置を検出しないと、モータ１２を正確に目標回転位置まで回転駆動することができない。
【００３２】
そこで、マイコン４１は、初期駆動の終了後に、モータ１２をレンジ切換機構１１の可動範囲の限界位置に突き当たるまで回転させる突き当て制御を実行して、その限界位置を基準位置として学習し、この基準位置のエンコーダカウント値を基準にしてモータ１２の回転量（回転角）を制御する。
【００３３】
基準位置を学習した後、マイコン４１は、運転者のシフトレバー操作により目標レンジが切り換えられると、それに応じて目標回転位置（目標カウント値）を変更する。そして、エンコーダカウント値に基づいてモータ１２の通電相を順次切り換えることでモータ１２を目標レンジに相当する目標回転位置まで回転駆動するフィードバック制御を実行して、シフトレンジを目標レンジに切り換える（レンジ切換機構１１の切換位置を目標レンジの位置に切り換える）。
【００３４】
ところで、一過性のノイズがエンコーダ４６の出力信号（Ａ相信号又はＢ相信号）と誤認されて、エンコーダカウント値とモータ１２の回転位置と通電相との対応関係が崩れると、エンコーダカウント値に基づいて通電相を順次切り換えてモータ１２を回転駆動するモータ回転制御を正常に実行できなくなる可能性がある。
【００３５】
そこで、本実施例１では、レンジ切換制御回路４２のマイコン４１により後述する図５乃至図８のノイズ判定ルーチンを実行することで、Ａ相信号とＢ相信号が所定時間以内の時間間隔で入力された場合に、該Ａ相信号と該Ｂ相信号のうち前回の入力信号との時間間隔が短い方をノイズと判定する。
【００３６】
Ａ相信号とＢ相信号が両方とも正常であれば、Ａ相信号とＢ相信号は所定の位相差を有するはずである。このため、Ａ相信号とＢ相信号が所定時間以内の時間間隔で入力された場合（Ａ相信号とＢ相信号がほぼ同時に入力された場合）には、Ａ相信号とＢ相信号のうちの一方が正常な間隔よりも短い間隔で入力されたノイズであると考えられる。従って、Ａ相信号とＢ相信号が所定時間以内の時間間隔で入力された場合に、Ａ相信号とＢ相信号のうち前回の入力信号との時間間隔が短い方をノイズと判定することで、ノイズを精度良く検出してエンコーダカウント値の演算処理に反映させないようにすることができる。
【００３７】
具体的には、図３に示すように、Ａ相信号の立ち上がりエッジとＢ相信号の立ち下がりエッジとがほぼ同時に入力された場合に、Ａ相の今回のパルス幅Ｔa （今回の立ち上がりエッジと前回の立ち下がりエッジとの時間間隔）とＢ相の今回のパルス幅Ｔb （今回の立ち下がりエッジと前回の立ち上がりエッジとの時間間隔）とを比較する。その結果、Ａ相の今回のパルス幅Ｔa がＢ相の今回のパルス幅Ｔb よりも短い場合には、Ａ相信号の今回の立ち上がりエッジをノイズと判定して無視する（エンコーダカウント値の演算処理に反映させない）。この場合、Ａ相信号の前回の立ち下がりエッジも無視する。
【００３８】
また、図４に示すように、Ａ相信号の立ち下がりエッジとＢ相信号の立ち下がりエッジとがほぼ同時に入力された場合に、Ａ相の今回のパルス幅Ｔa （今回の立ち下がりエッジと前回の立ち上がりエッジとの時間間隔）とＢ相の今回のパルス幅Ｔb （今回の立ち下がりエッジと前回の立ち上がりエッジとの時間間隔）とを比較する。その結果、Ａ相の今回のパルス幅Ｔa がＢ相の今回のパルス幅Ｔb よりも短い場合には、Ａ相信号の今回の立ち下がりエッジをノイズと判定して無視する。この場合、Ａ相信号の次回の立ち上がりエッジも無視する。
【００３９】
このようにすれば、一過性のノイズによりエンコーダカウント値とモータ１２の回転位置と通電相との対応関係が崩れてしまうことを防止することができ、エンコーダカウント値に基づいて通電相を順次切り換えてモータ１２を回転駆動するモータ回転制御を継続することができる。
【００４０】
以下、本実施例１でレンジ切換制御回路４２のマイコン４１が実行する図５乃至図８のノイズ判定ルーチンの処理内容を説明する。
図５乃至図８に示すノイズ判定ルーチンは、レンジ切換制御回路４２の電源オン期間中にマイコン４１により所定周期で繰り返し実行される。本ルーチンが起動されると、まず、ステップ１０１で、モータ回転制御の実行中であるか否かを判定する。
【００４１】
このステップ１０１で、モータ回転制御の実行中であると判定された場合には、ステップ１０２に進み、パルス信号のエッジ（立ち上がりエッジ又は立ち下がりエッジ）が入力されたか否かを判定する。このステップ１０２で、パルス信号のエッジが入力されていないと判定された場合には、ステップ１０３以降の処理を実行することなく、本ルーチンを終了する。
【００４２】
その後、上記ステップ１０２で、パルス信号のエッジが入力されたと判定された場合には、ステップ１０３に進み、次の(a) 〜(c) のいずれであるかを判定する。
(a) Ａ相信号のエッジが入力された
(b) Ｂ相信号のエッジが入力された
(c) Ａ相信号のエッジとＢ相信号のエッジがほぼ同時に入力された
【００４３】
この際、(c) Ａ相信号のエッジとＢ相信号のエッジがほぼ同時に入力されたか否かは、Ａ相信号のエッジとＢ相信号のエッジが所定時間以内の時間間隔で入力されたか否か（Ａ相信号のエッジとＢ相信号のエッジとの時間間隔が所定時間以内であるか否か）によって判定する。
【００４４】
このステップ１０３で、(a) Ａ相信号のエッジが入力されたと判定された場合には、ステップ１０４に進み、Ａ相の今回のパルス幅Ｔa(i)（今回のエッジと前回のエッジとの時間間隔）が前回のパルス幅Ｔa(i-1)（前回のエッジと前々回のエッジとの時間間隔）に対して極端に短い（例えば、今回のパルス幅Ｔa(i)＜１／２×前回のパルス幅Ｔa(i-1)）か否かを判定する。
【００４５】
このステップ１０４で、Ａ相の今回のパルス幅Ｔa(i)が前回のパルス幅Ｔa(i-1)に対して極端に短い（例えば、今回のパルス幅Ｔa(i)＜１／２×前回のパルス幅Ｔa(i-1)）と判定された場合には、ステップ１０５に進み、Ａ相信号の今回のエッジをノイズと判定して無視する（エンコーダカウント値の演算処理に反映させない）。
【００４６】
これに対して、上記ステップ１０４で、Ａ相の今回のパルス幅Ｔa(i)が前回のパルス幅Ｔa(i-1)に対して極端に短くはない（例えば、今回のパルス幅Ｔa(i)≧１／２×前回のパルス幅Ｔa(i-1)）と判定された場合には、ステップ１０６に進み、Ａ相信号の今回のエッジを正常（ノイズではない）と判定してエンコーダカウント値の演算処理に反映させる。
【００４７】
一方、上記ステップ１０３で、(b) Ｂ相信号のエッジが入力されたと判定された場合には、ステップ１０７に進み、Ｂ相の今回のパルス幅Ｔb(i)（今回のエッジと前回のエッジとの時間間隔）が前回のパルス幅Ｔb(i-1)（前回のエッジと前々回のエッジとの時間間隔）に対して極端に短い（例えば、今回のパルス幅Ｔb(i)＜１／２×前回のパルス幅Ｔb(i-1)）か否かを判定する。
【００４８】
このステップ１０７で、Ｂ相の今回のパルス幅Ｔb(i)が前回のパルス幅Ｔb(i-1)に対して極端に短い（例えば、今回のパルス幅Ｔb(i)＜１／２×前回のパルス幅Ｔb(i-1)）と判定された場合には、ステップ１０８に進み、Ｂ相信号の今回のエッジをノイズと判定して無視する。
【００４９】
これに対して、上記ステップ１０７で、Ｂ相の今回のパルス幅Ｔb(i)が前回のパルス幅Ｔb(i-1)に対して極端に短くはない（例えば、今回のパルス幅Ｔb(i)≧１／２×前回のパルス幅Ｔb(i-1)）と判定された場合には、ステップ１０９に進み、Ｂ相信号の今回のエッジを正常（ノイズではない）と判定してエンコーダカウント値の演算処理に反映させる。
【００５０】
また、上記ステップ１０３で、(c) Ａ相信号のエッジとＢ相信号のエッジがほぼ同時に入力されたと判定された場合には、図６のステップ１１０に進み、Ａ相の今回のパルス幅Ｔa （今回のエッジと前回のエッジとの時間間隔）とＢ相の今回のパルス幅Ｔb （今回のエッジと前回のエッジとの時間間隔）とを比較する。
【００５１】
このステップ１１０で、Ｂ相の今回のパルス幅Ｔb がＡ相の今回のパルス幅Ｔa よりも短い（Ｔb ＜Ｔa ）と判定された場合には、ステップ１１１に進み、Ｂ相信号の今回のエッジをノイズと判定して無視する。この後、ステップ１１２に進み、Ａ相信号の今回のエッジを正常（ノイズではない）と判定してエンコーダカウント値の演算処理に反映させる。
【００５２】
一方、上記ステップ１１０で、Ａ相の今回のパルス幅Ｔa がＢ相の今回のパルス幅Ｔb よりも短い（Ｔa ＜Ｔb ）と判定された場合には、ステップ１１３に進み、Ａ相信号の今回のエッジをノイズと判定して無視する。この後、ステップ１１４に進み、Ｂ相信号の今回のエッジを正常（ノイズではない）と判定してエンコーダカウント値の演算処理に反映させる。
【００５３】
また、上記ステップ１１０で、Ａ相の今回のパルス幅Ｔa とＢ相の今回のパルス幅Ｔb が等しい（Ｔa ＝Ｔb ）と判定された場合には、ステップ１１５に進み、Ａ相信号の今回のエッジとＢ相信号の今回のエッジを両方ともノイズと判定して無視する。
【００５４】
上記ステップ１０２〜１１５の処理で、入力されたパルス信号がノイズであるか否かを判定して、ノイズの影響を排除した後、ステップ１１６に進み、エンコーダカウント値に基づいて通電相を切り換える通電制御を実行する。
【００５５】
これに対して、上記ステップ１０１で、モータ回転制御の実行中ではない（モータ回転制御の停止中である）と判定された場合には、図７のステップ１１７に進み、パルス信号のエッジが入力されたか否かを判定する。このステップ１１７で、パルス信号のエッジが入力されていないと判定された場合には、ステップ１１８以降の処理を実行することなく、本ルーチンを終了する。
【００５６】
その後、上記ステップ１１７で、パルス信号のエッジが入力されたと判定された場合には、ステップ１１８に進み、次の(a) 〜(c) のいずれであるかを判定する。
(a) Ａ相信号のエッジが入力された
(b) Ｂ相信号のエッジが入力された
(c) Ａ相信号のエッジとＢ相信号のエッジがほぼ同時に入力された
【００５７】
このステップ１１８で、(a) Ａ相信号のエッジが入力されたと判定された場合には、ステップ１１９に進み、Ａ相の今回のパルス幅Ｔa （今回のエッジと前回のエッジとの時間間隔）が判定値よりも短いか否かを判定する。ここで、判定値は、例えば、システムの機械的な共振周期や回路特性による共振周期と同じか又はそれよりも短い時間間隔に設定されている。
このステップ１１９で、Ａ相の今回のパルス幅Ｔa が判定値よりも短いと判定された場合には、ステップ１２０に進み、Ａ相信号の今回のエッジをノイズと判定して無視する。
【００５８】
これに対して、上記ステップ１１９で、Ａ相の今回のパルス幅Ｔa が判定値以上であると判定された場合には、ステップ１２１に進み、Ａ相信号の今回のエッジを正常（ノイズではない）と判定してエンコーダカウント値の演算処理に反映させる。
【００５９】
一方、上記ステップ１１８で、(b) Ｂ相信号のエッジが入力されたと判定された場合には、ステップ１２２に進み、Ｂ相の今回のパルス幅Ｔb （今回のエッジと前回のエッジとの時間間隔）が判定値よりも短いか否かを判定する。ここで、判定値は、例えば、システムの機械的な共振周期や回路特性による共振周期と同じか又はそれよりも短い時間間隔に設定されている。
このステップ１２２で、Ｂ相の今回のパルス幅Ｔb が判定値よりも短いと判定された場合には、ステップ１２３に進み、Ｂ相信号の今回のエッジをノイズと判定して無視する。
【００６０】
これに対して、上記ステップ１２２で、Ｂ相の今回のパルス幅Ｔb が判定値以上であると判定された場合には、ステップ１２４に進み、Ｂ相信号の今回のエッジを正常（ノイズではない）と判定してエンコーダカウント値の演算処理に反映させる。
【００６１】
また、上記ステップ１１８で、(c) Ａ相信号のエッジとＢ相信号のエッジがほぼ同時に入力されたと判定された場合には、図８のステップ１２５に進み、Ａ相の今回のパルス幅Ｔa （今回のエッジと前回のエッジとの時間間隔）とＢ相の今回のパルス幅Ｔb （今回のエッジと前回のエッジとの時間間隔）とを比較する。
【００６２】
このステップ１２５で、Ｂ相の今回のパルス幅Ｔb がＡ相の今回のパルス幅Ｔa よりも短い（Ｔb ＜Ｔa ）と判定された場合には、ステップ１２６に進み、Ｂ相信号の今回のエッジをノイズと判定して無視する。
【００６３】
この後、ステップ１１９に進み、Ａ相の今回のパルス幅Ｔa が判定値よりも短いか否かを判定し、Ａ相の今回のパルス幅Ｔa が判定値よりも短いと判定された場合には、ステップ１２０に進み、Ａ相信号の今回のエッジをノイズと判定して無視する。これに対して、上記ステップ１１９で、Ａ相の今回のパルス幅Ｔa が判定値以上であると判定された場合には、ステップ１２１に進み、Ａ相信号の今回のエッジを正常と判定してエンコーダカウント値の演算処理に反映させる。
【００６４】
一方、上記ステップ１２５で、Ａ相の今回のパルス幅Ｔa がＢ相の今回のパルス幅Ｔb よりも短い（Ｔa ＜Ｔb ）と判定された場合には、ステップ１２７に進み、Ａ相信号の今回のエッジをノイズと判定して無視する。
【００６５】
この後、ステップ１２２に進み、Ｂ相の今回のパルス幅Ｔb が判定値よりも短いか否かを判定し、Ｂ相の今回のパルス幅Ｔb が判定値よりも短いと判定された場合には、ステップ１２３に進み、Ｂ相信号の今回のエッジをノイズと判定して無視する。これに対して、上記ステップ１２２で、Ｂ相の今回のパルス幅Ｔb が判定値以上であると判定された場合には、ステップ１２４に進み、Ｂ相信号の今回のエッジを正常と判定してエンコーダカウント値の演算処理に反映させる。
【００６６】
また、上記ステップ１２５で、Ａ相の今回のパルス幅Ｔa とＢ相の今回のパルス幅Ｔb が等しい（Ｔa ＝Ｔb ）と判定された場合には、ステップ１２８に進み、Ａ相信号の今回のエッジとＢ相信号の今回のエッジを両方ともノイズと判定して無視する。
【００６７】
以上説明した本実施例１では、Ａ相信号とＢ相信号が所定時間以内の時間間隔で入力された場合（Ａ相信号とＢ相信号がほぼ同時に入力された場合）に、Ａ相信号とＢ相信号のうち前回の入力信号との時間間隔が短い方をノイズと判定するようにしている。このようにすれば、ノイズを精度良く検出してエンコーダカウント値の演算処理に反映させないようにすることができる。これにより、一過性のノイズによりエンコーダカウント値とモータ１２の回転位置と通電相との対応関係が崩れてしまうことを防止して、モータ回転制御を継続することができ、一過性のノイズによりモータ回転制御を正常に実行できなくなる事態を回避することができる。
【実施例２】
【００６８】
次に、図９乃至図１２を用いて本発明の実施例２を説明する。但し、前記実施例１と実質的に同一部分については説明を省略又は簡略化し、主として前記実施例１と異なる部分について説明する。
【００６９】
本実施例２では、レンジ切換制御回路４２のマイコン４１により後述する図１１及び図１２のノイズ判定用の各ルーチンを実行することで、次のようなノイズ判定を行う。モータ１２の回転駆動中にエンコーダ４６の出力信号が入力される毎に今回の入力信号を前回の入力信号と比較して、今回の入力信号が有効な信号であるか否かを判定し、今回の入力信号が有効な信号ではないと判定した場合に、今回の入力信号をノイズと判定する。
【００７０】
Ａ相信号とＢ相信号が両方とも正常であれば、Ａ相信号とＢ相信号が所定の順序で入力される（Ａ相信号のエッジとＢ相信号のエッジが交互に入力される）はずである。このため、今回の入力信号を前回の入力信号と比較することで、今回の入力信号が有効な信号であるか否かを判定することができ、今回の入力信号が有効な信号ではないと判定した場合に、今回の入力信号をノイズと判定することで、ノイズを精度良く検出してエンコーダカウント値の演算処理に反映させないようにすることができる。
【００７１】
具体的には、Ａ相信号のエッジが入力される毎に、前回の入力がＢ相信号のエッジであるか否か（つまり今回の入力信号が前回の入力信号と異なる相の信号であるか否か）を判定することで、今回のＡ相信号のエッジが有効な信号であるか否かを判定する。前回の入力がＢ相信号のエッジではない（Ａ相信号のエッジである）と判定された場合には、Ａ相信号のエッジが連続して入力されたため、今回のＡ相信号のエッジが有効な信号ではないと判断して、今回のＡ相信号のエッジをノイズと判定する。
【００７２】
また、Ｂ相信号のエッジが入力される毎に、前回の入力がＡ相信号のエッジであるか否か（つまり今回の入力信号が前回の入力信号と異なる相の信号であるか否か）を判定することで、今回のＢ相信号のエッジが有効な信号であるか否かを判定する。前回の入力がＡ相信号のエッジではない（Ｂ相信号のエッジである）と判定された場合には、Ｂ相信号のエッジが連続して入力されたため、今回のＢ相信号のエッジが有効な信号ではないと判断して、今回のＢ相信号のエッジをノイズと判定する。
【００７３】
例えば、図９に示すように、Ａ相信号の立ち上がりエッジの次にＡ相信号の立ち下がりエッジが入力された場合には、Ａ相信号のエッジが連続して入力されたため、Ａ相信号の今回の立ち下がりエッジをノイズと判定して無視する（エンコーダカウント値の演算処理に反映させない）。この場合、Ａ相信号の次回の立ち上がりエッジも無視する。
【００７４】
また、図１０に示すように、Ａ相信号の立ち下がりエッジの次にＡ相信号の立ち上がりエッジが入力された場合には、Ａ相信号のエッジが連続して入力されたため、Ａ相信号の今回の立ち上がりエッジをノイズと判定して無視する。更に、Ａ相信号の立ち上がりエッジの次にＡ相信号の立ち下がりエッジが連続して入力された場合には、そのＡ相信号の立ち下がりエッジもノイズと判定して無視する。
【００７５】
このようにすれば、一過性のノイズによりエンコーダカウント値とモータ１２の回転位置と通電相との対応関係が崩れてしまうことを防止することができ、エンコーダカウント値に基づいて通電相を順次切り換えてモータ１２を回転駆動するモータ回転制御を継続することができる。
【００７６】
以下、本実施例２でレンジ切換制御回路４２のマイコン４１が実行する図１１及び図１２のノイズ判定用の各ルーチンの処理内容を説明する。
図１１に示すＡ相ノイズ判定ルーチンは、モータ１２の回転駆動中にＡ相信号のエッジ（立ち上がりエッジ又は立ち下がりエッジ）が入力される毎にマイコン４１により実行される。
【００７７】
Ａ相信号のエッジが入力されて、本ルーチンが起動されると、まず、ステップ２０１で、前回の入力がＢ相信号のエッジであるか否か（つまり今回の入力信号が前回の入力信号と異なる相の信号であるか否か）を判定することで、今回のＡ相信号のエッジが有効な信号であるか否かを判定する。
【００７８】
このステップ２０１で、前回の入力がＢ相信号のエッジではない（Ａ相信号のエッジである）と判定された場合には、Ａ相信号のエッジが連続して入力されたため、今回のＡ相信号のエッジが有効な信号ではないと判断して、ステップ２０２に進み、今回のＡ相信号のエッジをノイズと判定して無視する（エンコーダカウント値の演算処理に反映させない）。
【００７９】
これに対して、上記ステップ２０１で、前回の入力がＢ相信号のエッジであると判定された場合には、ステップ２０３に進み、マイコン４１のＡ相信号の入力ポートの状態（ＨレベルであるかＬレベルであるか）が前回と異なっているか否かを判定する。
【００８０】
このステップ２０３で、Ａ相信号の入力ポートの状態が前回と異なっていると判定された場合には、ステップ２０４に進み、今回のＡ相信号のエッジを正常（ノイズではない）と判定してエンコーダカウント値の演算処理に反映させる。この後、ステップ２０５に進み、Ａ相信号の入力ポートの状態を記憶する。
【００８１】
一方、上記ステップ２０３で、Ａ相信号の入力ポートの状態が前回と同じである（変化していない）と判定された場合には、ステップ２０６に進み、今回のＡ相信号のエッジをノイズと判定して無視する。
【００８２】
図１２に示すＢ相ノイズ判定ルーチンは、モータ１２の回転駆動中にＢ相信号のエッジ（立ち上がりエッジ又は立ち下がりエッジ）が入力される毎にマイコン４１により実行される。
【００８３】
Ｂ相信号のエッジが入力されて、本ルーチンが起動されると、まず、ステップ３０１で、前回の入力がＡ相信号のエッジであるか否か（つまり今回の入力信号が前回の入力信号と異なる相の信号であるか否か）を判定することで、今回のＢ相信号のエッジが有効な信号であるか否かを判定する。
【００８４】
このステップ３０１で、前回の入力がＡ相信号のエッジではない（Ｂ相信号のエッジである）と判定された場合には、Ｂ相信号のエッジが連続して入力されたため、今回のＢ相信号のエッジが有効な信号ではないと判断して、ステップ３０２に進み、今回のＢ相信号のエッジをノイズと判定して無視する（エンコーダカウント値の演算処理に反映させない）。
【００８５】
これに対して、上記ステップ３０１で、前回の入力がＡ相信号のエッジであると判定された場合には、ステップ３０３に進み、マイコン４１のＢ相信号の入力ポートの状態（ＨレベルであるかＬレベルであるか）が前回と異なっているか否かを判定する。
【００８６】
このステップ３０３で、Ｂ相信号の入力ポートの状態が前回と異なっていると判定された場合には、ステップ３０４に進み、今回のＢ相信号のエッジを正常（ノイズではない）と判定してエンコーダカウント値の演算処理に反映させる。この後、ステップ３０５に進み、Ｂ相信号の入力ポートの状態を記憶する。
【００８７】
一方、上記ステップ３０３で、Ｂ相信号の入力ポートの状態が前回と同じである（変化していない）と判定された場合には、ステップ３０６に進み、今回のＢ相信号のエッジをノイズと判定して無視する。
【００８８】
以上説明した本実施例２では、モータ１２の回転駆動中に、Ａ相信号のエッジが連続して入力された場合には、今回のＡ相信号のエッジが有効な信号ではないと判断して、今回のＡ相信号のエッジをノイズと判定する。一方、Ｂ相信号のエッジが連続して入力された場合には、今回のＢ相信号のエッジが有効な信号ではないと判断して、今回のＢ相信号のエッジをノイズと判定する。このようにすれば、ノイズを精度良く検出してエンコーダカウント値の演算処理に反映させないようにすることができる。これにより、一過性のノイズによりエンコーダカウント値とモータ１２の回転位置と通電相との対応関係が崩れてしまうことを防止して、モータ回転制御を継続することができ、一過性のノイズによりモータ回転制御を正常に実行できなくなる事態を回避することができる。
【実施例３】
【００８９】
次に、図１３乃至図１６を用いて本発明の実施例３を説明する。但し、前記実施例１と実質的に同一部分については説明を省略又は簡略化し、主として前記実施例１と異なる部分について説明する。
【００９０】
本実施例３では、レンジ切換制御回路４２のマイコン４１により後述する図１４及び図１５の再学習ルーチンを実行することで、次のようにして再学習を行う。フィードバック制御の実行中にエンコーダカウント値が正常に変化しない場合に、オープンループ制御に切り換え、このオープンループ制御でモータ１２を目標回転位置まで回転駆動する期間に、通電相の切換回数とエンコーダカウント値の変化量との関係が正常か否かを判定する。その関係が正常と判定した場合に、エンコーダカウント値と通電相との対応関係（図１６参照）を再学習する。
【００９１】
具体的には、図１３に示すように、運転者のシフトレバー操作により目標レンジが切り換えられた時点ｔ1 で、フィードバック制御を実行する。このフィードバック制御では、エンコーダカウント値に基づいてモータ１２の通電相を順次切り換えることでモータ１２を目標レンジに相当する目標回転位置まで回転駆動する。
【００９２】
このフィードバック制御の実行中に、一過性のノイズよりエンコーダカウント値とモータ１２の回転位置と通電相との対応関係が崩れて、エンコーダカウント値が正常に変化しないと判定した場合には、その時点ｔ2 で、オープンループ制御に切り換える。このオープンループ制御では、エンコーダカウント値の情報をフィードバックせずにモータ１２の通電相を順次切り換える。
【００９３】
オープンループ制御の開始直後は、モータ１２の回転位置と通電相との対応関係が崩れているが、オープンループ制御で通電相を順次切り換えることで、いずれかの通電相でモータ１２の回転位置と通電相を一致させてモータ１２を回転駆動することができる。
【００９４】
しかし、オープンループ制御を開始してからの駆動ステップ数（通電相の切換回数）である駆動済みステップ数が通電相１周期分に達していない場合には、まだモータ１２の回転位置と通電相が一致せずにモータ１２が回転し始めていない可能性があるため、エンコーダ異常再判定を実行しない。
【００９５】
その後、駆動済みステップ数が通電相１周期分に達した時点ｔ3 で、モータ１２の回転位置と通電相が一致してモータ１２が回転し始めていると判断して、エンコーダ異常再判定を実行する。このエンコーダ異常再判定では、通電相の切換回数とエンコーダカウント値の変化量との関係が正常か否かを判定する。その結果、通電相の切換回数とエンコーダカウント値の変化量との関係が正常と判定した時点ｔ4 で、エンコーダカウント値と通電相との対応関係（図１６参照）を再学習する。このようにすれば、オープンループ制御でモータ１２を目標回転位置まで回転駆動しているときに、エンコーダカウント値と通電相との対応関係を再学習することができる。
【００９６】
以下、本実施例３でレンジ切換制御回路４２のマイコン４１が実行する図１４及び図１５の再学習ルーチンの処理内容を説明する。
図１４及び図１５に示す再学習ルーチンは、フィードバック制御の実行中にマイコン４１により実行される。本ルーチンが起動されると、まず、ステップ４０１で、通電相が切り換えられたか否かを判定し、通電相が切り換えられたと判定された場合には、ステップ４０２に進み、エンコーダカウント値が正常に変化したか否かを判定する。
【００９７】
このステップ４０２で、エンコーダカウント値が正常に変化したと判定された場合には、ステップ４０３に進み、モータ１２の回転位置が目標回転位置に到達したか否か（モータ１２が目標回転位置まで回転したか否か）を判定する。
【００９８】
このステップ４０３で、モータ１２の回転位置が目標回転位置に到達していないと判定された場合には、上記ステップ４０１に戻る。その後、上記ステップ４０３で、モータ１２の回転位置が目標回転位置に到達したと判定された時点で、本ルーチンを終了する。
【００９９】
一方、上記ステップ４０２で、エンコーダカウント値が正常に変化していないと判定された場合には、ステップ４０４に進み、エンコーダカウント値が正常に変化しない状態で仮異常判定時間が経過したか否か（エンコーダカウント値が正常に変化しない状態が仮異常判定時間以上継続したか否か）を判定する。
【０１００】
このステップ４０４で、仮異常判定時間が経過していないと判定された場合には、上記ステップ４０２に戻る。その後、上記ステップ４０４で、仮異常判定時間が経過したと判定された時点で、ステップ４０５に進み、エンコーダ仮異常フラグを「１」にセットする。
【０１０１】
この後、図１５のステップ４０６に進み、オープンループ制御に切り換える。このオープンループ制御では、エンコーダカウント値の情報をフィードバックせずにモータ１２の通電相を順次切り換える。
【０１０２】
この後、ステップ４０７に進み、要求駆動ステップ数が所定値以上であるか否かを判定する。ここで、要求駆動ステップ数は、オープンループ制御でモータ１２を目標回転位置まで回転駆動するのに必要な駆動ステップ数（通電相の切換回数）である。この要求駆動ステップ数が大き過ぎると、レンジ切換機構１１の可動範囲の限界位置に突き当たるまでモータ１２が回転駆動されて脱調する可能性があるため、これを防止するために、要求駆動ステップ数は、レンジ切換機構１１の可動範囲の限界位置に突き当たらない範囲内で設定する。また、所定値は、エンコーダ異常再判定を実行するのに必要な駆動ステップ数に通電相１周期分の駆動ステップ数を加算した値又はそれよりも少し大きい値に設定されている。
【０１０３】
このステップ４０７で、要求駆動ステップ数が所定値よりも少ないと判定された場合には、要求駆動ステップ数が少な過ぎるため、エンコーダ異常再判定を実行できないと判断して、ステップ４１５に進む。
【０１０４】
一方、上記ステップ４０７で、要求駆動ステップ数が所定値以上であると判定された場合には、エンコーダ異常再判定を実行できると判断して、ステップ４０８に進み、駆動済みステップ数（オープンループ制御を開始してからの駆動ステップ数）が通電相１周期分以上であるか否かを判定する。
【０１０５】
このステップ４０８で、駆動済みステップ数が通電相１周期分よりも少ないと判定された場合には、まだモータ１２の回転位置と通電相が一致せずにモータ１２が回転し始めていない可能性があると判断して、ステップ４１５に進む。
【０１０６】
その後、上記ステップ４０８で、駆動済みステップ数が通電相１周期分以上であると判定された場合には、モータ１２の回転位置と通電相が一致してモータ１２が回転し始めていると判断して、ステップ４０９に進み、エンコーダ仮異常フラグが「１」であるか否かを判定する。
【０１０７】
このステップ４０９で、エンコーダ仮異常フラグが「１」であると判定された場合には、ステップ４１０に進み、エンコーダ異常再判定を開始する。この場合、まず、所定の判定期間中の駆動ステップ数（通電相の切換回数）とエンコーダカウント値の変化量を算出する。
【０１０８】
この後、ステップ４１１に進み、判定期間中のエンコーダカウント値の変化量が駆動ステップ相当数（判定期間中の駆動ステップ数に相当するエンコーダカウント値の変化量）と等しいか否かを判定することで、駆動ステップ数（通電相の切換回数）とエンコーダカウント値の変化量との関係が正常か否かを判定する。
【０１０９】
このステップ４１１で、判定期間中のエンコーダカウント値の変化量が駆動ステップ相当数と等しいと判定された場合には、駆動ステップ数（通電相の切換回数）とエンコーダカウント値の変化量との関係が正常と判断して、ステップ４１２に進み、エンコーダ仮異常フラグを「０」にリセットする。この後、ステップ４１３に進み、エンコーダカウント値と通電相との対応関係を再学習する。
【０１１０】
これに対して、上記ステップ４１１で、判定期間中のエンコーダカウント値の変化量が駆動ステップ相当数と等しくないと判定された場合には、駆動ステップ数（通電相の切換回数）とエンコーダカウント値の変化量との関係が正常ではないと判断して、ステップ４１４に進み、エンコーダ本異常フラグを「１」にセットする。
【０１１１】
この後、ステップ４１５に進み、駆動済みステップ数が要求駆動ステップ数に到達したか否かを判定し、駆動済みステップ数が要求駆動ステップ数に到達していないと判定された場合には、上記ステップ４０７に戻る。
上記ステップ４０９で、エンコーダ仮異常フラグが「１」ではない（エンコーダ仮異常フラグが「０」である）と判定された場合には、ステップ４１５に進む。
【０１１２】
その後、上記ステップ４１５で、駆動済みステップ数が要求駆動ステップ数に到達したと判定された時点で、モータ１２を目標回転位置まで回転駆動したと判断して、本ルーチンを終了する。尚、エンコーダカウント値と通電相との対応関係を再学習した後（例えばモータ１２を目標回転位置まで回転駆動した後）に、突き当て制御を実行して基準位置を再学習するようにしても良い。
【０１１３】
以上説明した本実施例３では、フィードバック制御の実行中にエンコーダカウント値が正常に変化しない場合に、オープンループ制御に切り換え、このオープンループ制御でモータ１２を目標回転位置まで回転駆動する期間に、通電相の切換回数とエンコーダカウント値の変化量との関係が正常か否かを判定する。その結果、通電相の切換回数とエンコーダカウント値の変化量との関係が正常と判定した場合に、エンコーダカウント値と通電相との対応関係を再学習する。このようにすれば、オープンループ制御でモータ１２を目標回転位置まで回転駆動しているときに、エンコーダカウント値と通電相との対応関係を再学習することができる。これにより、エンコーダカウント値に基づいて通電相を順次切り換えてモータ１２を回転駆動するモータ回転制御に復帰することが可能となり、一過性のノイズによりモータ回転制御を正常に実行できなくなる事態を回避することができる。
【実施例４】
【０１１４】
次に、図１７及び図１８を用いて本発明の実施例４を説明する。但し、前記実施例３と実質的に同一部分については説明を省略又は簡略化し、主として前記実施例３と異なる部分について説明する。
【０１１５】
本実施例４では、レンジ切換制御回路４２のマイコン４１により後述する図１８の再学習ルーチンを実行することで、次のようにして再学習を行う。フィードバック制御の実行中にエンコーダカウント値が正常に変化しない場合に、オープンループ制御に切り換え、このオープンループ制御でモータ１２を目標回転位置まで回転駆動した後にモータ１２をシフトレンジが切り換わらない微小範囲内で回転駆動する期間に、通電相の切換回数とエンコーダカウント値の変化量との関係が正常か否かを判定する。その関係が正常と判定した場合に、前記エンコーダカウント値と通電相との対応関係を再学習する。
【０１１６】
具体的には、図１７に示すように、運転者のシフトレバー操作により目標レンジが切り換えられた時点ｔ1 で、フィードバック制御を実行する。このフィードバック制御の実行中に、一過性のノイズよりエンコーダカウント値とモータ１２の回転位置と通電相との対応関係が崩れて、エンコーダカウント値が正常に変化しないと判定した場合には、その時点ｔ2 で、オープンループ制御に切り換える。
【０１１７】
オープンループ制御の開始直後は、モータ１２の回転位置と通電相との対応関係が崩れているが、オープンループ制御で通電相を順次切り換えることで、いずれかの通電相でモータ１２の回転位置と通電相を一致させてモータ１２を回転駆動することができる。
【０１１８】
このオープンループ制御でモータ１２を目標回転位置まで回転駆動した後、オープンループ制御でモータ１２をシフトレンジが切り換わらない微小範囲内で回転駆動する。
この微小範囲は、例えば、モータ１２の通電相の１周期分に相当する回転角度（モータ１２の通電相の切り換えが一巡したときのモータ１２の回転角度）又はそれよりも少し大きい回転角度に設定する。例えば、モータ１２の通電相の１周期分に相当する回転角度が４５ｄｅｇで減速機構２６の減速比が６０の場合、モータ１２の通電相の１周期分に相当するディテントレバー１５（マニュアルシャフト１３）の回転角度は０．７５ｄｅｇ（＝４５ｄｅｇ／６０）である。この程度の回転角度であれば、シフトレンジが切り換わることはない。
【０１１９】
また、本実施例４では、オープンループ制御でモータ１２を微小範囲内で回転駆動する際に、モータ１２の駆動電流を所定値以下に制限する。この所定値は、例えば、レンジ切換可能な下限トルク（ディテントバネ２３の係合部２３ａがディテントレバー１５の凹部２４，２５間の山を乗り越えるのに必要なトルクの下限値）よりも低いトルクに相当する電流値に設定する。
【０１２０】
オープンループ制御でモータ１２を微小範囲内で回転駆動する期間に、エンコーダ異常再判定を実行する。このエンコーダ異常再判定では、通電相の切換回数とエンコーダカウント値の変化量との関係が正常か否かを判定する。その結果、通電相の切換回数とエンコーダカウント値の変化量との関係が正常と判定した時点ｔ4 で、エンコーダカウント値と通電相との対応関係を再学習する。このようにすれば、オープンループ制御でモータ１２を目標回転位置まで回転駆動した後（モータ１２を微小範囲内で回転駆動する期間）に、エンコーダカウント値と通電相との対応関係を再学習することができる。
【０１２１】
以下、本実施例４でレンジ切換制御回路４２のマイコン４１が実行する図１８の再学習ルーチンの処理内容を説明する。
図１８に示す再学習ルーチンは、フィードバック制御の実行中にマイコン４１により実行される。本ルーチンが起動されると、まず、ステップ５０１で、通電相が切り換えられたか否かを判定し、通電相が切り換えられたと判定された場合には、ステップ５０２に進み、エンコーダカウント値が正常に変化したか否かを判定する。
【０１２２】
このステップ５０２で、エンコーダカウント値が正常に変化したと判定された場合には、ステップ５０３に進み、モータ１２の回転位置が目標回転位置に到達したか否かを判定する。
【０１２３】
このステップ５０３で、モータ１２の回転位置が目標回転位置に到達していないと判定された場合には、上記ステップ５０１に戻る。その後、上記ステップ５０３で、モータ１２の回転位置が目標回転位置に到達したと判定された時点で、本ルーチンを終了する。
【０１２４】
一方、上記ステップ５０２で、エンコーダカウント値が正常に変化していないと判定された場合には、ステップ５０４に進み、エンコーダカウント値が正常に変化しない状態で仮異常判定時間が経過したか否かを判定する。
【０１２５】
このステップ５０４で、仮異常判定時間が経過していないと判定された場合には、上記ステップ５０２に戻る。その後、上記ステップ５０４で、仮異常判定時間が経過したと判定された時点で、ステップ５０５に進み、エンコーダ仮異常フラグを「１」にセットする。
【０１２６】
この後、ステップ５０６に進み、オープンループ制御に切り換える。この後、ステップ５０７に進み、駆動済みステップ数が要求駆動ステップ数に到達したか否かを判定し、駆動済みステップ数が要求駆動ステップ数に到達していないと判定された場合には、上記ステップ５０６に戻る。
【０１２７】
その後、上記ステップ５０７で、駆動済みステップ数が要求駆動ステップ数に到達したと判定された時点で、モータ１２を目標回転位置まで回転駆動したと判断して、ステップ５０８に進み、微小回転駆動を実行する。この微小回転駆動では、オープンループ制御でモータ１２をシフトレンジが切り換わらない微小範囲内で回転駆動する。この微小範囲は、例えば、モータ１２の通電相の１周期分に相当する回転角度又はそれよりも少し大きい回転角度に設定する。更に、この微小回転駆動の際に、モータ１２の駆動電流を所定値以下に制限する。この所定値は、例えば、レンジ切換可能な下限トルクよりも低いトルクに相当する電流値に設定する。
【０１２８】
この後、ステップ５０９に進み、エンコーダ異常再判定を開始する。この場合、まず、所定の判定期間中の駆動ステップ数（通電相の切換回数）とエンコーダカウント値の変化量を算出する。
【０１２９】
この後、ステップ５１０に進み、判定期間中のエンコーダカウント値の変化量が駆動ステップ相当数（判定期間中の駆動ステップ数に相当するエンコーダカウント値の変化量）と等しいか否かを判定することで、駆動ステップ数（通電相の切換回数）とエンコーダカウント値の変化量との関係が正常か否かを判定する。
【０１３０】
このステップ５１０で、判定期間中のエンコーダカウント値の変化量が駆動ステップ相当数と等しいと判定された場合には、駆動ステップ数（通電相の切換回数）とエンコーダカウント値の変化量との関係が正常と判断して、ステップ５１１に進み、エンコーダ仮異常フラグを「０」にリセットする。この後、ステップ５１２に進み、エンコーダカウント値と通電相との対応関係を再学習する。尚、エンコーダカウント値と通電相との対応関係を再学習した後（例えばモータ１２を微小範囲内で回転駆動した後）に、突き当て制御を実行して基準位置を再学習するようにしても良い。
【０１３１】
これに対して、上記ステップ５１０で、判定期間中のエンコーダカウント値の変化量が駆動ステップ相当数と等しくないと判定された場合には、駆動ステップ数（通電相の切換回数）とエンコーダカウント値の変化量との関係が正常ではないと判断して、ステップ５１３に進み、エンコーダ本異常フラグを「１」にセットする。
【０１３２】
以上説明した本実施例４では、フィードバック制御の実行中にエンコーダカウント値が正常に変化しない場合に、オープンループ制御に切り換え、このオープンループ制御でモータ１２を目標回転位置まで回転駆動した後に微小範囲内で回転駆動する期間に、通電相の切換回数とエンコーダカウント値の変化量との関係が正常か否かを判定する。その結果、通電相の切換回数とエンコーダカウント値の変化量との関係が正常と判定した場合に、エンコーダカウント値と通電相との対応関係を再学習する。このようにすれば、オープンループ制御でモータ１２を目標回転位置まで回転駆動した後（モータを微小範囲内で回転駆動する期間）に、エンコーダカウント値と通電相との対応関係を再学習することができる。これにより、エンコーダカウント値に基づいて通電相を順次切り換えてモータ１２を回転駆動するモータ回転制御に復帰することが可能となり、一過性のノイズによりモータ回転制御を正常に実行できなくなる事態を回避することができる。
【０１３３】
更に、本実施例４では、オープンループ制御でモータ１２を微小範囲内で回転駆動する際に、モータ１２の駆動電流を所定値以下に制限するようにしている。このようにすれば、オープンループ制御でモータ１２を微小範囲内で回転駆動してエンコーダカウント値と通電相との対応関係を再学習する際に、モータ１２の駆動電流を所定値以下に制限することでモータ１２のトルクをレンジ切換可能な下限トルクよりも低いトルクに制限して、シフトレンジが切り換わってしまうことを確実に防止することができる。
【０１３４】
尚、上記各実施例１〜４では、エンコーダ４６として磁気式のエンコーダを用いたが、これに限定されず、エンコーダ４６は、例えば、光学式のエンコーダやブラシ式のエンコーダを用いても良い。また、エンコーダ４６は、Ａ相信号とＢ相信号を出力するエンコーダに限定されず、Ａ相、Ｂ相信号に加え、補正用（インデックス用）のＺ相信号を出力するエンコーダを用いても良い。
【０１３５】
また、上記各実施例１〜４では、モータ１２としてスイッチトリラクタンスモータ（ＳＲモータ）を用いたが、エンコーダの出力信号のカウント値に基づいてモータの回転位置を検出してモータの通電相を順次切り換えるブラシレス型の同期モータであれば、ＳＲモータに限定されず、他の種類のブラシレス型の同期モータであっても良い。
【０１３６】
また、上記各実施例１〜４では、シフトレンジをＰレンジとＮｏｔＰレンジの二つのレンジ間で切り換えるレンジ切換機構を備えたシステムに本発明を適用したが、これに限定されず、例えば、シフトレンジをＰレンジとＲレンジとＮレンジとＤレンジの四つのレンジ間で切り換えるレンジ切換機構を備えたシステムに本発明を適用しても良い。或は、シフトレンジを三つのレンジ間又は五つ以上のレンジ間で切り換えるレンジ切換機構を備えたシステムに本発明を適用しても良い。
【０１３７】
その他、本発明は、自動変速機（ＡＴ、ＣＶＴ、ＤＣＴ等）に限定されず、電気自動車用の減速機のシフトレンジを切り換えるレンジ切換装置に適用しても良い等、要旨を逸脱しない範囲内で種々変更して実施できる。
【符号の説明】
【０１３８】
１１…レンジ切換機構、１２…モータ、４１…マイコン（制御手段）、４６…エンコーダ
【図１】
0006044591.tif 000002
【図２】
0006044591.tif 000003
【図３】
0006044591.tif 000004
【図４】
0006044591.tif 000005
【図５】
0006044591.tif 000006
【図６】
0006044591.tif 000007
【図７】
0006044591.tif 000008
【図８】
0006044591.tif 000009
【図９】
0006044591.tif 000010
【図１０】
0006044591.tif 000011
【図１１】
0006044591.tif 000012
【図１２】
0006044591.tif 000013
【図１３】
0006044591.tif 000014
【図１４】
0006044591.tif 000015
【図１５】
0006044591.tif 000016
【図１６】
0006044591.tif 000017
【図１７】
0006044591.tif 000018
【図１８】
0006044591.tif 000019