(57)【要約】【課題】モータの初期駆動時にロータの振動が停止するのを待たずにロータ基準位置の学習を行うことができるようにする。【解決手段】モータ制御用のＥＣＵへの電源投入後の初期駆動時に、オープンループ制御によりＳＲモータの通電相の切り換えを一巡させてエンコーダのＡ相信号及びＢ相信号のエッジをカウントしてエンコーダカウント値を更新する。この初期駆動中に、ロータが確実に同期して回転する３回目以降の励磁について、通電相を切り換える毎にエンコーダのＡ相・Ｂ相の信号値の組み合わせがその時の通電相に対応する組み合わせになった瞬間を検出し、その時点のエンコーダカウント値に基づいてロータの基準位置を学習する。その後のＦ／Ｂ制御時には、エンコーダカウント値を基準位置学習値で補正し、補正後のエンコーダカウント値に基づいて通電相を決定する。【選択図】　図１３
2004129451.tif 000002
【特許請求の範囲】
【請求項１】
制御対象を回転駆動するモータのロータの回転に同期して所定の位相差を有するＡ相信号とＢ相信号を出力するエンコーダと、このエンコーダのＡ相信号及び前記Ｂ相信号の立ち上がり／立ち下がりのエッジをカウントするエンコーダカウント手段と、このエンコーダカウント手段のカウント値（以下「エンコーダカウント値」という）に基づいて前記ロータの回転位置を検出して前記モータの通電相を順次切り換えることで前記ロータを目標位置まで回転駆動する制御手段とを備えたモータ制御装置において、
前記制御手段は、電源投入後にオープンループ制御で通電相を切り換える初期駆動を実行し、この初期駆動中に前記エンコーダのＡ相・Ｂ相の信号値の組み合わせがその時の通電相に対応する組み合わせになったときの前記エンコーダカウント値に基づいて前記ロータの基準位置を学習し、初期駆動後は、前記エンコーダカウント値を前記基準位置の学習値で補正し、補正後のエンコーダカウント値に基づいて通電相を決定することを特徴とするモータ制御装置。
【請求項２】
前記制御手段は、前記初期駆動中に通電相を切り換える毎に前記ロータの基準位置を学習し、当該初期駆動終了時にそれまでに求めた基準位置の学習値が全て一致しているか否かを判定し、一致していなければ、前記初期駆動による基準位置の学習を再実行することを特徴とする請求項１に記載のモータ制御装置。
【請求項３】
前記制御手段は、前記初期駆動中に通電相の切り換えを一巡させることを特徴とする請求項１又は２に記載のモータ制御装置。
【請求項４】
前記制御手段は、前記初期駆動開始から通電相の切り換えを１回又は数回行うまでは前記基準位置の学習を行わず、それ以後に切り換えられる通電相について前記基準位置の学習を行うことを特徴とする請求項１乃至３のいずれかに記載のモータ制御装置。
【請求項５】
前記モータは、スイッチトリラクタンスモータであることを特徴とする請求項１乃至４のいずれかに記載のモータ制御装置。
【請求項６】
前記モータは、車両の自動変速機のレンジを切り換えるレンジ切換機構を駆動することを特徴とする請求項１乃至５のいずれかに記載のモータ制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、エンコーダのパルス信号のカウント値に基づいてロータの回転位置を検出してモータの通電相を順次切り換えることでロータを目標位置まで回転駆動するモータ制御装置に関するものである。
【０００２】
【従来の技術】
近年、構造が簡単で安価なモータとして需要が増加しているスイッチトリラクタンスモータ等のブラシレス型のモータは、ロータの回転に同期してパルス信号を出力するエンコーダを搭載し、このエンコーダのパルス信号をカウントして、そのエンコーダカウント値に基づいてロータの回転位置を検出して通電相を順次切り換えることでロータを回転駆動するようにしたものがある。このようなエンコーダ付きのモータは、起動後のエンコーダカウント値に基づいてロータの回転位置を検出することができるため、フィードバック制御系（Ｆ／Ｂ制御系）によりロータを目標位置まで回転させる位置切換制御（位置決め制御）を行う各種の位置切換装置の駆動源として用いられている（例えば特許文献１参照）。
【０００３】
しかし、この種のエンコーダ付きのモータは、起動後のエンコーダカウント値に基づいてロータの起動位置からの回転量（回転角度）を検出できるだけであるので、電源投入後に、何等かの方法で、ロータの絶対的な回転位置を検出して、ロータの回転位置と通電相との対応関係をとらないと、モータを正常に駆動することができない。
【０００４】
そこで、例えば、スイッチトリラクタンスモータでは、特許文献２（特開２０００−６９７７９号公報）に示すように、起動開始時（初期駆動時）に、２つの相を同時に励磁（通電）して、ロータの振動が停止するのに必要な一定時間が経過した後に、そのときのロータの回転位置を基準位置として学習して通電相を決めるようにしたものがある。
【０００５】
【特許文献１】
特開２００１−２７１９１７号公報（第４頁〜第８頁等）
【特許文献２】
特開２０００−６９７７９号公報（第１頁）
【０００６】
【発明が解決しようとする課題】
しかしながら、上記特許文献２のロータ基準位置学習方法では、初期駆動時に２つの相を同時に励磁（通電）してからロータの基準位置を学習するまでに、ロータの振動が停止するまでの一定時間待機する必要があるため、ロータ基準位置の学習に要する時間が長くかかってしまい、モータのフィードバック制御を素早く立ち上げることができないという欠点がある。
【０００７】
本発明はこのような事情を考慮してなされたものであり、従ってその目的は、初期駆動時にロータの振動が停止するのを待たずにロータ基準位置の学習を行うことができて、その学習時間を短くすることができ、モータのフィードバック制御を素早く立ち上げることができるモータ制御装置を提供することにある。
【０００８】
【課題を解決するための手段】
上記目的を達成するために、本発明の請求項１のモータ制御装置は、モータのロータの回転に同期して所定の位相差（一般的には電気角で９０°の位相差）を有するＡ相信号とＢ相信号を出力するエンコーダと、このエンコーダのＡ相信号及び前記Ｂ相信号の立ち上がり／立ち下がりのエッジをカウントするエンコーダカウント手段と、このエンコーダカウント手段のカウント値（以下「エンコーダカウント値」という）に基づいて前記ロータの回転位置を検出して前記モータの通電相を順次切り換えることで前記ロータを目標位置まで回転駆動する制御手段とを備え、電源投入後にオープンループ制御により通電相を切り換える初期駆動を実行し、この初期駆動中に前記エンコーダのＡ相・Ｂ相の信号値の組み合わせがその時の通電相に対応する組み合わせになったときの前記エンコーダカウント値に基づいて前記ロータの基準位置を学習し、初期駆動後は、前記エンコーダカウント値を前記基準位置の学習値で補正し、補正後のエンコーダカウント値に基づいて通電相を決定するようにしたものである。
【０００９】
本発明のように、Ａ相信号とＢ相信号を出力するエンコーダを用いれば、Ａ相信号とＢ相信号の発生順序によってロータの回転方向を判定して、ロータの回転方向に応じてエンコーダカウント値をカウントアップしたりカウントダウンすることができ、ロータが正回転／逆回転のいずれの方向に回転しても、エンコーダカウント値とロータの回転位置との対応関係を維持することができて、正回転／逆回転のいずれの回転方向でも、エンコーダカウント値に基づいてロータの回転位置を検出することができる。
【００１０】
この場合、ロータの回転に応じて、エンコーダのＡ相・Ｂ相の信号値の組み合わせが次の▲１▼→▲２▼→▲３▼→▲４▼の順序で繰り返し変化する（図７参照）。
▲１▼Ａ相信号＝０（ローレベル）、Ｂ相信号＝０（ローレベル）
▲２▼Ａ相信号＝１（ハイレベル）、Ｂ相信号＝０（ローレベル）
▲３▼Ａ相信号＝１（ハイレベル）、Ｂ相信号＝１（ハイレベル）
▲４▼Ａ相信号＝０（ローレベル）、Ｂ相信号＝１（ハイレベル）
【００１１】
例えば、後述する実施形態のように、通電相を切り換える毎にエンコーダカウント値が２つずつ変化する構成では、１つ目の通電相で▲１▼の状態になると、２つめ目の通電相では▲３▼の状態となり、３つ目の通電相で再び▲１▼の状態に戻るというように、通電相の切り換え毎に▲１▼と▲３▼との間で切り換わる。この場合、１つ目の通電相に切り換えた直後は、ロータが振動しているために、ロータの振動に応じてエンコーダのＡ相・Ｂ相の信号値が▲１▼を中心にして▲２▼又は▲４▼の状態に切り換わるが、２つ目の通電相に対応する▲３▼の位置までは振動しないため、１つ目の通電相に対応する▲１▼の状態になったときに、ロータの回転位置が１つ目の通電相に対応する位置になっていると判断して、その時点のエンコーダカウント値に基づいてロータの基準位置を学習する。このようにすれば、初期駆動時にロータの振動が停止するのを待たずに、ロータの振動中でもロータの基準位置の学習を行うことができて、その学習時間を短くすることができ、モータのフィードバック制御を素早く立ち上げることができる利点がある。
【００１２】
尚、通電相の切り換えとエンコーダのＡ相・Ｂ相の信号値の組み合わせとの関係は、上記の例に限定されず、例えば１つ目の通電相で▲２▼、２つめ目の通電相で▲４▼の状態となり、３つ目の通電相で再び▲２▼の状態に戻るというように、通電相の切り換え毎に▲２▼と▲４▼との間で切り換わるように構成しても良い。
【００１３】
この場合、ロータの基準位置の学習は１回行うだけでも良いが、請求項２のように、初期駆動中に通電相を切り換える毎にロータの基準位置を学習し、当該初期駆動終了時にそれまでに求めた基準位置の学習値が全て一致しているか否かを判定し、一致していなければ、初期駆動による基準位置の学習を再実行するようにすると良い。このようにすれば、エンコーダの信号にノイズ等が混入しても、基準位置の誤学習を未然に防止することができ、信頼性の高い学習値を求めることができる。本発明では、前述したように、ロータの振動中でも基準位置を学習できるため、基準位置の学習を複数回繰り返しても、ロータの振動が停止するのを待つよりも短い時間で全ての学習を終えることが可能となり、短い学習時間で信頼性の高い基準位置の学習を行うことができる。
【００１４】
また、請求項３のように、初期駆動中に通電相の切り換えを一巡させるようにしても良い。このようにすれば、初期駆動の途中まで通電相とロータの回転位置との同期を取ることができなくても、初期駆動を終了するまでに、いずれかの通電相で必ずロータの回転位置と通電相との同期を取ることができて、ロータの基準位置をより確実に学習することができる。
【００１５】
また、請求項４のように、初期駆動開始から通電相の切り換えを１回又は数回行うまでは前記基準位置の学習を行わず、それ以後に切り換えられる通電相について前記基準位置の学習を行うようにすると良い。このようにすれば、初期駆動開始後、ロータの回転位置と通電相との同期を確実に取ることができる状態になるのを待って、ロータの基準位置を学習することができ、より信頼性の高い基準位置の学習を行うことができる。
【００１６】
また、請求項５のように、モータとしてスイッチトリラクタンスモータを使用するようにしても良い。スイッチトリラクタンスモータは、永久磁石が不要で構造が簡単であるため、安価であり、温度環境等に対する耐久性・信頼性も高いという利点がある。
【００１７】
以上説明した請求項１〜５に係る発明は、スイッチトリラクタンスモータ等のブラシレス型のモータを駆動源とする各種の位置切換装置に適用でき、例えば、請求項６のように、車両の自動変速機のレンジを切り換えるレンジ切換機構を駆動するモータの制御装置に適用しても良い。これにより、信頼性の高いモータ駆動式のレンジ切換装置を構成することができる。
【００１８】
【発明の実施の形態】
以下、本発明を車両のレンジ切換装置に適用した一実施形態を図面に基づいて説明する。
【００１９】
まず、図１に基づいてレンジ切換機構１１の構成を説明する。レンジ切換機構１１の駆動源となるモータ１２は、例えばスイッチトリラクタンスモータにより構成され、減速機構２６（図４参照）を内蔵し、その出力軸１３の回転位置を検出する出力軸センサ１４が設けられている。この出力軸１３には、ディテントレバー１５が固定されている。
【００２０】
また、ディテントレバー１５にはＬ字形のパーキングロッド１８が固定され、このパーキングロッド１８の先端部に設けられた円錐体１９がロックレバー２１に当接している。このロックレバー２１は、円錐体１９の位置に応じて軸２２を中心にして上下動してパーキングギヤ２０をロック／ロック解除するようになっている。パーキングギヤ２０は、自動変速機２７の出力軸に設けられ、このパーキングギヤ２０がロックレバー２１によってロックされると、車両の駆動輪が回り止めされた状態（パーキング状態）に保持される。
【００２１】
一方、ディテントレバー１５をパーキングレンジ（以下「Ｐレンジ」と表記する）と他のレンジ（以下「ＮｏｔＰレンジ」と表記する）に保持するためのディテントバネ２３が支持ベース１７に固定され、このディテントバネ２３の先端に設けられた係合部２３ａがディテントレバー１５のＰレンジ保持凹部２４に嵌まり込んだときに、ディテントレバー１５がＰレンジの位置に保持され、該ディテントバネ２３の係合部２３ａがディテントレバー１５のＮｏｔＰレンジ保持凹部２５に嵌まり込んだときに、ディテントレバー１５がＮｏｔＰレンジの位置に保持されるようになっている。
【００２２】
Ｐレンジでは、パーキングロッド１８がロックレバー２１に接近する方向に移動して、円錐体１９の太い部分がロックレバー２１を押し上げてロックレバー２１の凸部２１ａがパーキングギヤ２０に嵌まり込んでパーキングギヤ２０をロックした状態となり、それによって、自動変速機２７の出力軸（駆動輪）がロックされた状態（パーキング状態）に保持される。
【００２３】
一方、ＮｏｔＰレンジでは、パーキングロッド１８がロックレバー２１から離れる方向に移動して、円錐体１９の太い部分がロックレバー２１から抜け出てロックレバー２１が下降し、それによって、ロックレバー２１の凸部２１ａがパーキングギヤ２０から外れてパーキングギヤ２０のロックが解除され、自動変速機２７の出力軸が回転可能な状態（走行可能な状態）に保持される。
【００２４】
尚、前述した出力軸センサ１４は、モータ１２の減速機構２６の出力軸１３の回転角度に応じた電圧を出力する回転センサ（例えばポテンショメータ）によって構成され、その出力電圧によって現在のレンジがＰレンジとＮｏｔＰレンジのいずれであるかを確認できるようになっている。
【００２５】
次に、図２に基づいてモータ１２の構成を説明する。本実施形態では、モータ１２として、スイッチトリラクタンスモータ（以下「ＳＲモータ」と表記する）が用いられている。このＳＲモータ１２は、ステータ３１とロータ３２が共に突極構造を持つモータで、永久磁石が不要で構造が簡単であるという利点がある。円筒状のステータ３１の内周部には、例えば１２個の突極３１ａが等間隔に形成され、これに対して、ロータ３２の外周部には、例えば８個の突極３２ａが等間隔に形成され、ロータ３２の回転に伴い、ロータ３２の各突極３２ａがステータ３１の各突極３１ａと微小ギャップを介して順番に対向するようになっている。ステータ３１の１２個の突極３１ａには、Ｕ相、Ｖ相、Ｗ相の合計６個の巻線３３と、Ｕ’相、Ｖ’相、Ｗ’相の合計６個の巻線３４が順番に巻回されている。尚、ステータ３１とロータ３２の突極３１ａ，３２ａの数は適宜変更しても良いことは言うまでもない。
【００２６】
本実施形態の巻線３３，３４の巻回順序は、ステータ３１の１２個の突極３１ａに対して、例えば、Ｖ相→Ｗ相→Ｕ相→Ｖ相→Ｗ相→Ｕ相→Ｖ’相→Ｗ’相→Ｕ’相→Ｖ’相→Ｗ’相→Ｕ’相の順序で巻回されている。図３に示すように、Ｕ相、Ｖ相、Ｗ相の合計６個の巻線３３と、Ｕ’相、Ｖ’相、Ｗ’相の合計６個の巻線３４は、２系統のモータ励磁部３５，３６を構成するように結線されている。一方のモータ励磁部３５は、Ｕ相、Ｖ相、Ｗ相の合計６個の巻線３３をＹ結線して構成され（同じ相の２個の巻線３３はそれぞれ直列に接続されている）、他方のモータ励磁部３６は、Ｕ’相、Ｖ’相、Ｗ’相の合計６個の巻線３４をＹ結線して構成されている（同じ相の２個の巻線３４はそれぞれ直列に接続されている）。２つのモータ励磁部３５，３６は、Ｕ相とＵ’相が同時に通電され、Ｖ相とＶ’相が同時に通電され、Ｗ相とＷ’相が同時に通電される。
【００２７】
これら２つのモータ励磁部３５は、車両に搭載されたバッテリ４０を電源として、それぞれ別個のモータドライバ３７，３８によって駆動される。このように、モータ励磁部３５，３６とモータドライバ３７，３８をそれぞれ２系統ずつ設けることで、一方の系統が故障しても、他方の系統でＳＲモータ１２を回転させることができるようになっている。図３に示すモータドライバ３７，３８の回路構成例では、各相毎にトランジスタ等のスイッチング素子３９を１個ずつ設けたユニポーラ駆動方式の回路構成としているが、各相毎にスイッチング素子を２個ずつ設けたバイポーラ駆動方式の回路構成を採用しても良い。尚、本発明は、モータ励磁部とモータドライバをそれぞれ１系統ずつ設けた構成としても良いことは言うまでもない。
【００２８】
各モータドライバ３７，３８の各スイッチング素子３９のオン／オフは、ＥＣＵ４１（制御手段）によって制御される。図４に示すように、このＥＣＵ４１と各モータドライバ３７，３８は、レンジ切換制御装置４２に搭載され、このレンジ切換制御装置４２には、Ｐレンジへの切換操作を行うＰレンジスイッチ４３と、ＮｏｔＰレンジへの切換操作を行うＮｏｔＰレンジスイッチ４４の操作信号が入力される。Ｐレンジスイッチ４３又はＮｏｔＰレンジスイッチ４４の操作により選択されたレンジは、インストルメントパネル（図示せず）に設けられたレンジ表示部４５に表示される。
【００２９】
ＳＲモータ１２には、ロータ３２の回転位置を検出するためのエンコーダ４６が設けられている。このエンコーダ４６は、例えば磁気式のロータリエンコーダにより構成されており、その具体的な構成は、図５及び図６に示すように、Ｎ極とＳ極が円周方向に交互に等ピッチで着磁された円環状のロータリマグネット４７がロータ３２の側面に同軸状に固定され、このロータリマグネット４７に対向する位置に、３個のホールＩＣ等の磁気検出素子４８，４９，５０が配置された構成となっている。本実施形態では、ロータリマグネット４７のＮ極とＳ極の着磁ピッチが７．５°に設定されている。このロータリマグネット４７の着磁ピッチ（７．５°）は、ＳＲモータ１２の励磁１回当たりのロータ３２の回転角度と同じに設定されている。後述するように、１−２相励磁方式でＳＲモータ１２の通電相の切り換えを６回行うと、全ての通電相の切り換えが一巡してロータ３２とロータリマグネット４７が一体的に７．５°×６＝４５°回転する。このロータリマグネット４７の４５°の回転角度範囲に存在するＮ極とＳ極の数は、合計６極となっている。
【００３０】
更に、ロータ３２の基準回転位置に相当する位置のＮ極（Ｎ’）とその両側のＳ極（Ｓ’）がそれ以外の磁極よりも径方向の幅が広くなるように形成されている。尚、本実施形態では、ＳＲモータ１２の通電相の切り換えが一巡する間にロータ３２とロータリマグネット４７が一体的に４５°回転することを考慮して、ロータ３２の基準回転位置に相当する幅広な着磁部分（Ｎ’）が４５°ピッチで形成されており、従って、ロータリマグネット４７全体として、基準回転位置に相当する幅広な着磁部分（Ｎ’）が合計８個形成されている。尚、基準回転位置に相当する幅広な着磁部分（Ｎ’）は、ロータリマグネット４７全体として、１個のみ形成した構成としても良い。
【００３１】
このロータリマグネット４７に対して３個の磁気検出素子４８，４９，５０が次のような位置関係で配置されている。Ａ相信号を出力する磁気検出素子４８とＢ相信号を出力する磁気検出素子４９は、ロータリマグネット４７の幅狭な着磁部分（Ｎ，Ｓ）と幅広な着磁部分（Ｎ’，Ｓ’）の両方に対向し得る位置の同一円周上に配置されている。一方、Ｚ相信号を出力する磁気検出素子５０は、ロータリマグネット４７の幅狭な着磁部分（Ｎ，Ｓ）よりも径方向外側又は内側の位置で、且つ、幅広な着磁部分（Ｎ’，Ｓ’）のみに対向し得る位置に配置されている。Ａ相信号とＢ相信号を出力する２個の磁気検出素子４８，４９の間隔は、図７に示すように、Ａ相信号とＢ相信号の位相差が、電気角で９０°（機械角で３．７５°）となるように設定されている。ここで、“電気角”はＡ・Ｂ相信号の発生周期を１周期（３６０°）とした場合の角度で、“機械角”は機械的な角度（ロータ３２の１回転を３６０°とした場合の角度）であり、Ａ相信号の立ち下がり（立ち上がり）からＢ相信号の立ち下がり（立ち上がり）までにロータ３２が回転する角度がＡ相信号とＢ相信号の位相差の機械角に相当する。また、Ｚ相信号を出力する磁気検出素子５０は、Ｚ相信号とＢ相信号（又はＡ相信号）との位相差が０となるように配置されている。
【００３２】
各磁気検出素子４８，４９，５０の出力は、Ｎ極（Ｎ’極）と対向したときにハイレベル“１”となり、Ｓ極（Ｓ’極）と対向したときにローレベル“０”となる。尚、Ｚ相信号用の磁気検出素子５０の出力は、ロータ３２の基準回転位置に相当する幅広なＮ’極に対向する毎にハイレベル“１”となり、それ以外の位置では、ローレベル“０”となる。
【００３３】
本実施形態では、ＥＣＵ４１が後述する図１４のエンコーダカウンタルーチンによってＡ相信号とＢ相信号の立ち上がり／立ち下がりの両方のエッジをカウントして、そのエンコーダカウント値に応じてＳＲモータ１２の通電相を切り換えることでロータ３２を回転駆動する。この際、Ａ相信号とＢ相信号の発生順序によってロータ３２の回転方向を判定し、正回転（Ｐレンジ→ＮｏｔＰレンジの回転方向）ではエンコーダカウント値をカウントアップし、逆回転（ＮｏｔＰレンジ→Ｐレンジの回転方向）ではエンコーダカウント値をカウントダウンする。これにより、ロータ３２が正回転／逆回転のいずれの方向に回転しても、エンコーダカウント値とロータ３２の回転位置との対応関係が維持されるため、正回転／逆回転のいずれの回転方向でも、エンコーダカウント値によってロータ３２の回転位置（回転角度）を検出して、その回転位置に対応した相の巻線３３，３４に通電してロータ３２を回転駆動する。
【００３４】
図７は、ロータ３２を逆回転方向（ＮｏｔＰレンジ→Ｐレンジの回転方向）に回転させたときのエンコーダ４６の出力波形と通電相の切換パターンを示している。逆回転方向（ＮｏｔＰレンジ→Ｐレンジの回転方向）と正回転方向（Ｐレンジ→ＮｏｔＰレンジの回転方向）のいずれの場合も、ロータ３２が７．５°回転する毎に１相通電と２相通電とを交互に切り換えるようになっており、ロータ３２が４５°回転する間に、例えば、Ｕ相通電→ＵＷ相通電→Ｗ相通電→ＶＷ相通電→Ｖ相通電→ＵＶ相通電の順序で通電相の切り換えを一巡するようになっている。そして、この通電相の切り換え毎に、ロータ３２が７．５°ずつ回転して、Ａ相、Ｂ相信号用の磁気検出素子４８，４９に対向するロータリマグネット４７の磁極がＮ極→Ｓ極（Ｎ’極→Ｓ’極）又はＳ極→Ｎ極（Ｓ’極→Ｎ’極）に変化してＡ相信号とＢ相信号のレベルが交互に反転し、それによって、ロータ３２が７．５°回転する毎に、エンコーダカウント値が２ずつカウントアップ（又はカウントダウン）する。また、通電相の切り換えが一巡してロータ３２が４５°回転する毎に、Ｚ相用の磁気検出素子５０がロータ３２の基準回転位置に相当する幅広なＮ’極に対向して、Ｚ相信号がハイレベル“１”となる。尚、本明細書では、Ａ相、Ｂ相、Ｚ相信号がハイレベル“１”となることを、Ａ相、Ｂ相、Ｚ相信号が出力されると言う場合がある。
【００３５】
このようなエンコーダ４６付きのＳＲモータ１２でレンジ切換制御を行う場合は、指令シフトレンジ（目標位置）がＰレンジからＮｏｔＰレンジ又はその反対方向に切り換えられる毎に、ロータ３２を回転駆動して、エンコーダカウント値に基づいてＳＲモータ１２の通電相を順次切り換えることでロータ３２を目標位置に向かって回転駆動するフィードバック制御（以下「Ｆ／Ｂ制御」と表記する）を実行し、エンコーダカウント値が目標位置に応じて設定された目標カウント値に到達した時点で、ロータ３２の回転位置が目標位置に到達したと判断してＦ／Ｂ制御を終了し、ロータ３２を目標位置で停止させるようにしている。
【００３６】
ところで、エンコーダカウント値は、ＥＣＵ４１のＲＡＭに記憶されるため、ＥＣＵ４１の電源がオフされると、エンコーダカウント値の記憶が消えてしまう。そのため、ＥＣＵ４１の電源投入直後のエンコーダカウント値（０）は、実際のロータ３２の回転位置（通電相）に対応したものとなっていない。従って、エンコーダカウント値に応じて通電相を切り換えるためには、電源投入後にエンコーダカウント値と実際のロータ３２の回転位置とを対応させて、エンコーダカウント値と通電相とを対応させる必要がある。
【００３７】
そこで、本実施形態では、レンジ切換制御装置４２のＥＣＵ４１（制御手段）によって後述する図８及び図９に示す初期駆動ルーチンを実行することで、ＥＣＵ４１への電源投入後の初期駆動時に、オープンループ制御によりＳＲモータ１２の通電相の切り換えを所定のタイムスケジュールで一巡させてエンコーダ４６のＡ相信号及びＢ相信号のエッジをカウントし、更に、後述する図１２に示す基準位置学習ルーチンをＡＢ相割り込み処理により実行することで、初期駆動中に通電相を切り換える毎にエンコーダ４６のＡ相・Ｂ相の信号値の組み合わせがその時の通電相に対応する組み合わせになった瞬間を検出して、その時点のエンコーダカウント値に基づいてロータ３２の基準位置（本実施形態では初期駆動終了後の最初の通電相に対応するロータ３２の回転位置）を学習し、その後のＦ／Ｂ制御時に、エンコーダカウント値を基準位置の学習値で補正し、補正後のエンコーダカウント値に基づいて通電相を決定するようにしている。
【００３８】
この初期駆動時の基準位置の学習は、具体的には次のようにして行われる。
図１３に示すように、ＰレンジでＥＣＵ４１に電源が投入されたときに初期駆動を行う場合は、オープンループ制御により、例えば、Ｗ相通電→ＵＷ相通電→Ｕ相通電→ＵＶ相通電→Ｖ相通電→ＶＷ相通電の順序で通電相の切り換えを所定のタイムスケジュールで一巡し、ロータ３２を正回転方向（Ｐレンジ→ＮｏｔＰレンジの回転方向）に駆動する。
【００３９】
一方、ＮｏｔＰレンジでＥＣＵ４１に電源が投入されたときに初期駆動を行う場合は、例えば、Ｖ相通電→ＵＶ相通電→Ｕ相通電→ＵＷ相通電→Ｗ相通電→ＶＷ相通電の順序で通電相の切り換えを所定のタイムスケジュールで一巡し、ロータ３２を逆回転方向（ＮｏｔＰレンジ→Ｐレンジの回転方向）に駆動する。
【００４０】
このように、初期駆動時に通電相の切り換えを一巡させれば、初期駆動の途中まで通電相とロータ３２の回転位置との同期を取ることができなくても、初期駆動を終了するまでに、いずれかの通電相で必ずロータ３２の回転位置と通電相との同期を取ることができて、ロータ３２の基準位置を確実に学習することができる。初期駆動中に、ロータ３２の回転位置と通電相との同期が取れた後は、通電相の切り換えに同期してロータ３２が回転して、このロータ３２の回転に同期してエンコーダ４６からＡ相信号及びＢ相信号が出力されるようになる。
【００４１】
この初期駆動中に、エンコーダ４６のＡ相信号及びＢ相信号の立ち上がり／立ち下がりの両方のエッジをカウントする。従って、通電相の切り換えに同期してロータ３２が回転すれば、通電相を切り換える毎にエンコーダカウント値が２つずつ変化する。
【００４２】
図１３の例では、初期駆動時に最初の通電相（Ｗ相）からロータ３２が同期して回転し、通電相の切り換え毎にロータ３２が７．５°ずつ回転してエンコーダカウント値が２ずつカウントアップし、初期駆動終了時にエンコーダカウント値が１２となる。
【００４３】
これに対し、例えば、初めの２回の励磁（Ｗ相通電→ＵＷ相通電）でロータ３２が回転しない場合、つまり３回目以降の励磁（Ｕ相通電→ＵＶ相通電→Ｖ相通電→ＶＷ相通電）でロータ３２の回転位置と通電相とが同期して初期駆動中にロータ３２が４回の励磁分だけ回転する場合は、初期駆動終了時までにロータ３２が７．５°×４＝３０°回転して、エンコーダカウント値が２×４＝８となる。従って、初期駆動終了時のエンコーダカウント値を見れば、初期駆動が終了するまでにロータ３２が実際に通電相の切り換えに同期して回転した角度（回転量）が判明する。
【００４４】
初期駆動の最後の通電相は、常にＶＷ相となるが、エンコーダカウント値は、必ずしも１２になるとは限らず、例えば１０、或は８である場合もある。初期駆動終了後のＦ／Ｂ制御時には、エンコーダカウント値に基づいて通電相が決定されるため、初期駆動によるエンコーダカウント値のずれを修正しないと、Ｆ／Ｂ制御時に正しい通電相を選択することができない。
【００４５】
そこで、本実施形態では、初期駆動中に通電相を切り換える毎に、エンコーダ４６のＡ相・Ｂ相の信号値の組み合わせがその時の通電相に対応する組み合わせになった瞬間を検出して、その時点のエンコーダカウント値Ｎｃｎｔに基づいてロータ３２の基準位置（本実施形態では初期駆動終了後の最初の通電相に対応するロータ３２の回転位置）の学習値Ｇｃｎｔを次式により演算する。
【００４６】
［現在のレンジがＰレンジの場合］
Ｇｃｎｔ＝Ｎｃｎｔ＋２×（６−ＣＡＳＥ）
［現在のレンジがＮｏｔＰレンジの場合］
Ｇｃｎｔ＝Ｎｃｎｔ−２×（６−ＣＡＳＥ）
ここで、ＣＡＳＥは、初期駆動中の励磁回数（通電相の切り換え回数）に応じて１ずつカウントアップする励磁回数カウンタであり、初期駆動開始時の１回目の励磁でＣＡＳＥ＝０、２回目の励磁でＣＡＳＥ＝１、３回目の励磁でＣＡＳＥ＝２、……、初期駆動の最後の励磁（６回目の励磁）でＣＡＳＥ＝５となる。
【００４７】
上式において、２×（６−ＣＡＳＥ）は、基準位置学習値Ｇｃｎｔを演算する時のロータ３２の実際の回転位置から基準位置（本実施形態では初期駆動終了後の最初の通電相に対応するロータ３２の回転位置）までの回転角度に相当するカウントアップ値である。
【００４８】
例えば、初期駆動時に最初の通電相（Ｗ相）からロータ３２が同期して回転した場合は、通電相を切り換える毎に、ロータ３２の基準位置学習値Ｇｃｎｔを演算すると、下記の表１に示すように全ての基準位置学習値Ｇｃｎｔが同じ値（この場合はＧｃｎｔ＝１４）となる。
【００４９】
【表１】
2004129451.tif 000003
【００５０】
また、初期駆動中に、例えば、初めの２回の励磁でロータ３２が回転せず、３回目以降の励磁からロータ３２が同期して回転する場合には、下記の表２に示すように、ロータ３２が同期して回転する３回目以降の励磁（ＣＡＳＥ＝２〜５）では、全ての基準位置学習値Ｇｃｎｔが同じ値（この場合はＧｃｎｔ＝１０）となる。
【００５１】
【表２】
2004129451.tif 000004
【００５２】
従って、初期駆動中に通電相の切り換えに同期してロータ３２が回転するようになった後は、基準位置学習値Ｇｃｎｔの演算は１回でも良いが、本実施形態では、基準位置学習値Ｇｃｎｔの信頼性を高めるために、初期駆動中に通電相を切り換える毎に、基準位置学習値Ｇｃｎｔを演算し、初期駆動終了時に、それまでに求めた全ての基準位置学習値Ｇｃｎｔが一致しているか否かを判定し、一致していなければ、初期駆動による基準位置学習値Ｇｃｎｔの演算を再実行するようにしている。
【００５３】
但し、初期駆動の初めの１回又は２回の励磁では、ロータ３２が回転していない可能性があるため、本実施形態では、初期駆動の初めの２回の励磁については、基準位置学習値Ｇｃｎｔの演算を行わず、ロータ３２が確実に同期して回転する３回目以降の励磁について、通電相を切り換える毎に基準位置学習値Ｇｃｎｔを演算するようにしている。
【００５４】
また、初期駆動中に通電相の切り換えに同期してロータ３２が回転するようになった後は、ロータ３２の回転に応じて、エンコーダ４６のＡ相・Ｂ相の信号値の組み合わせが次の▲１▼→▲２▼→▲３▼→▲４▼の順序で繰り返し変化する（図７参照）。
▲１▼Ａ相信号＝０（ローレベル）、Ｂ相信号＝０（ローレベル）
▲２▼Ａ相信号＝１（ハイレベル）、Ｂ相信号＝０（ローレベル）
▲３▼Ａ相信号＝１（ハイレベル）、Ｂ相信号＝１（ハイレベル）
▲４▼Ａ相信号＝０（ローレベル）、Ｂ相信号＝１（ハイレベル）
【００５５】
前述したように、本実施形態では、通電相を切り換える毎にエンコーダカウント値Ｎｃｎｔが２つずつ変化するため、１つ目の通電相で▲１▼の状態になると、２つめ目の通電相では▲３▼の状態となり、３つ目の通電相で再び▲１▼の状態に戻るというように、通電相の切り換え毎に▲１▼と▲３▼との間で切り換わる。この場合、１つ目の通電相に切り換えた直後は、ロータ３２が振動しているために、ロータ３２の振動に応じてエンコーダ４６のＡ相・Ｂ相の信号値が▲１▼を中心にして▲２▼又は▲４▼の状態に切り換わるが、２つ目の通電相に対応する▲３▼の位置までは振動しないため、１つ目の通電相に対応する▲１▼の状態になったときに、ロータ３２の回転位置が１つ目の通電相に対応する位置になっていると判断して、その時点のエンコーダカウント値に基づいてロータ３２の基準位置を学習する。このようにすれば、初期駆動時にロータ３２の振動が停止するのを待たずに、ロータ３２の振動中でもロータ３２の基準位置の学習を行うことができて、その学習時間を短くすることができ、ＳＲモータ１２のＦ／Ｂ制御を素早く立ち上げることができる。
【００５６】
本実施形態では、ロータ３２の振動中でもロータ３２の基準位置の学習を行うことができるため、初期駆動中の１相通電の時間Ｔ１と２相通電の時間Ｔ２は、例えば１０ｍｓ程度の短い時間に設定されている。
【００５７】
初期駆動終了後のＦ／Ｂ制御時には、エンコーダカウント値Ｎｃｎｔを基準位置学習値Ｇｃｎｔで補正することで、初期駆動終了時のエンコーダカウント値Ｎｃｎｔと通電相（ロータ３２の回転位置）とのずれを補正して、Ｆ／Ｂ制御時に正しい通電相を選択できるようにしている。
【００５８】
尚、初期駆動終了後は、図１３に示すように、まず初期駆動終了時の通電相（ＶＷ相）と同じ相に例えば１０ｍｓ通電してロータ３２の位置を初期駆動終了時の位置に保持し、その後、後述するＦ／Ｂ制御により、その時点のエンコーダカウント値と基準位置学習値とに基づいて通電相を切り換えてロータ３２を目標位置Ａｃｎｔの方向へ回転させる。これにより、ロータ３２の回転位置（エンコーダカウント値）が目標位置Ａｃｎｔから例えば０．５°以内に到達した時点で、通電相の切り換えを終了してロータ３２を停止させ、その後は、同じ相に通電し続けてロータ３２の停止状態を保持し、この保持状態を例えば５０ｍｓ継続する。この後、目標位置Ａｃｎｔが変化しなければ、通電フラグＸｏｎをＯＦＦして通電を停止する。
【００５９】
以上説明した初期駆動（基準位置学習）とＦ／Ｂ制御は、レンジ切換制御装置４２のＥＣＵ４１によって後述する各ルーチンに従って実行される。以下、これら各ルーチンの処理内容を説明する。
【００６０】
［初期駆動］
図８及び図９に示す初期駆動ルーチンは、ＥＣＵ４１への電源投入直後（イグニッションスイッチをＯＦＦ位置からＡＣＣ位置へ操作した直後）に、初期駆動が終了するまで所定周期（例えば１ｍｓ周期）で実行される。
【００６１】
本ルーチンが起動されると、まずステップ１０１で、オープンループ制御実行フラグＸｏｐｅｎ＝ＯＮ、又は、初期駆動異常フラグＸｆａｉｌ＝ＯＮであるか否かを判定する。ここで、オープンループ制御実行フラグＸｏｐｅｎは、エンコーダ４６又はＳＲモータ１２が故障したときに実行されるオープンループ制御（フェイルセーフ処理）が実行されているか否かを判定するフラグであり、ＯＮは実行されていることを意味する。また、初期駆動異常フラグＸｆａｉｌは、初期駆動が異常で基準位置の学習を失敗した場合に後述するステップ１２２でＯＮにセットされるフラグである。
【００６２】
もし、上記ステップ１０１で、「Ｙｅｓ」と判定されれば、以降の処理を行うことなく、本ルーチンを終了し、「Ｎｏ」と判定されれば、ステップ１０２に進み、ＥＣＵ４１のイニシャル処理から出力軸センサ１４の出力電圧が安定するまで待つための所定時間（例えば１００ｍｓ）が経過したか否かを判定する。そして、イニシャル処理から所定時間経過した時点で、ステップ１０３に進み、出力軸センサ１４の出力電圧を読み込んで、この出力電圧がレンジ判定値以下であるか否かで、現在のレンジがＰレンジかＮｏｔＰレンジかを判定し、Ｐレンジであれば、ステップ１０４に進み、レンジ判定フラグＸｎｐをＰレンジを意味する「０」にセットし、ＮｏｔＰレンジであれば、ステップ１０５に進み、レンジ判定フラグＸｎｐをＮｏｔＰレンジを意味する「１」にセットする。
【００６３】
この後、ステップ１０６に進み、レンジ判定フラグＸｎｐ＝０（Ｐレンジ）であるか否かを判定し、レンジ判定フラグＸｎｐ＝０（Ｐレンジ）であれば、ステップ１０７に進み、図１０のＰレンジ初期駆動ルーチンを実行し、レンジ判定フラグＸｎｐ＝１（ＮｏｔＰレンジ）であれば、ステップ１０８に進み、図１１のＮｏｔＰレンジ初期駆動ルーチンを実行する。
【００６４】
上記ステップ１０７で、図１０のＰレンジ初期駆動ルーチンが起動されると、ステップ２０１〜２０６で、初期駆動中の励磁回数をカウントする励磁回数カウンタＣＡＳＥが０〜５のいずれであるかを判定する。この励磁回数カウンタＣＡＳＥは、イニシャル処理でセットされる初期値が０で、励磁を１回行う毎に１ずつカウントアップされる（図９のステップ１１４）。そして、励磁回数カウンタＣＡＳＥの判定結果に応じて通電相と通電時間Ｔを次のように設定する。
【００６５】
ＣＡＳＥ＝０（１回目の励磁）の場合は、ステップ２０７に進み、Ｗ相通電を選択し、その通電時間ＴをＴ１（例えば１０ｍｓ）にセットする。
ＣＡＳＥ＝１（２回目の励磁）の場合は、ステップ２０８に進み、ＵＷ相通電を選択し、その通電時間ＴをＴ２（例えば１０ｍｓ）にセットする。
【００６６】
ＣＡＳＥ＝２（３回目の励磁）の場合は、ステップ２０９に進み、Ｕ相通電を選択し、その通電時間ＴをＴ１（例えば１０ｍｓ）にセットする。
ＣＡＳＥ＝３（４回目の励磁）の場合は、ステップ２１０に進み、ＵＶ相通電を選択し、その通電時間ＴをＴ２（例えば１０ｍｓ）にセットする。
【００６７】
ＣＡＳＥ＝４（５回目の励磁）の場合は、ステップ２１１に進み、Ｖ相通電を選択し、その通電時間ＴをＴ１（例えば１０ｍｓ）にセットする。
ＣＡＳＥ＝５（６回目の励磁）の場合は、ステップ２１２に進み、ＶＷ相通電を選択し、その通電時間ＴをＴ２（例えば１０ｍｓ）にセットする。
【００６８】
これにより、Ｐレンジで初期駆動を行う場合は、Ｗ相通電→ＵＷ相通電→Ｕ相通電→ＵＶ相通電→Ｖ相通電→ＶＷ相通電の順序で通電相の切り換えを一巡し、ロータ３２を正回転方向（Ｐレンジ→ＮｏｔＰレンジの回転方向）に駆動する。この際、１相通電の時間Ｔ１を２相通電の時間Ｔ２よりも短く設定する。
【００６９】
一方、ステップ１０８で、図１１のＮｏｔＰレンジ初期駆動ルーチンが起動されると、ステップ２２１〜２２６で、励磁回数カウンタＣＡＳＥが０〜５のいずれであるかを判定し、その判定結果に応じて通電相と通電時間Ｔを次のように設定する。
【００７０】
ＣＡＳＥ＝０（１回目の励磁）の場合は、ステップ２２７に進み、Ｖ相通電を選択し、その通電時間ＴをＴ１（例えば１０ｍｓ）にセットする。
ＣＡＳＥ＝１（２回目の励磁）の場合は、ステップ２２８に進み、ＵＶ相通電を選択し、その通電時間ＴをＴ２（例えば１０ｍｓ）にセットする。
【００７１】
ＣＡＳＥ＝２（３回目の励磁）の場合は、ステップ２２９に進み、Ｕ相通電を選択し、その通電時間ＴをＴ１（例えば１０ｍｓ）にセットする。
ＣＡＳＥ＝３（４回目の励磁）の場合は、ステップ２３０に進み、ＵＷ相通電を選択し、その通電時間ＴをＴ２（例えば１０ｍｓ）にセットする。
【００７２】
ＣＡＳＥ＝４（５回目の励磁）の場合は、ステップ２３１に進み、Ｗ相通電を選択し、その通電時間ＴをＴ１（例えば１０ｍｓ）にセットする。
ＣＡＳＥ＝５（６回目の励磁）の場合は、ステップ２３２に進み、ＶＷ相通電を選択し、その通電時間ＴをＴ２（例えば１０ｍｓ）にセットする。
【００７３】
これにより、ＮｏｔＰレンジで初期駆動を行う場合は、Ｖ相通電→ＵＶ相通電→Ｕ相通電→ＵＷ相通電→Ｗ相通電→ＶＷ相通電の順序で通電相の切り換えを一巡し、ロータ３２を逆回転方向（ＮｏｔＰレンジ→Ｐレンジの回転方向）に駆動する。この場合も、１相通電の時間Ｔ１を２相通電の時間Ｔ２よりも短く設定する。
【００７４】
以上のようにして、図１０のＰレンジ初期駆動ルーチン又は図１１のＮｏｔＰレンジ初期駆動ルーチンを実行した後、図８のステップ１１２に進み、現在の通電相の通電時間をカウントする通電時間カウンタＣＴをカウントアップする。この後、図９のステップ１１３に進み、現在の通電相の通電時間ＣＴが前記図１０又は図１１のルーチンで設定した通電時間Ｔ（＝Ｔ１，Ｔ２）を越えたか否かを判定し、越えていなければ、以降の処理を行うことなく、本ルーチンを終了する。これにより、現在の通電相の通電時間ＣＴが図１０又は図１１のルーチンで設定した通電時間Ｔ（＝Ｔ１，Ｔ２）を越えるまで、現在の通電相への通電が継続される。
【００７５】
その後、現在の通電相の通電時間ＣＴが図１０又は図１１のルーチンで設定した通電時間Ｔ（＝Ｔ１，Ｔ２）を越えた時点で、ステップ１１４に進み、励磁回数カウンタＣＡＳＥを１だけカウントアップし、通電相を次の通電相に切り換える。そして、次のステップ１１５で、通電時間カウンタＣＴをリセットした後、ステップ１１６に進み、励磁回数カウンタＣＡＳＥが初期駆動の終了を意味する「６」に達したか否かを判定し、まだ、励磁回数カウンタＣＡＳＥが「６」に達していない場合、つまり、初期駆動の途中である場合は、以降の処理を行うことなく、本ルーチンを終了し、初期駆動を継続する。
【００７６】
この初期駆動中は、後述する図１２の基準位置学習ルーチンをＡＢ相割り込み処理により実行することで、初期駆動開始後にロータ３２が確実に同期して回転する３回目以降の励磁について、通電相を切り換える毎（励磁回数カウンタＣＡＳＥがカウントアップされる毎）に、エンコーダ４６のＡ相・Ｂ相の信号値の組み合わせがその時の通電相に対応する組み合わせになった瞬間を検出し、その時点のエンコーダカウント値に基づいて基準位置学習値Ｇｃｎｔを演算する。
【００７７】
その後、励磁回数カウンタＣＡＳＥが「６」に達した時点で、ステップ１１７に進み、初期駆動終了フラグＸｅｎｄを初期駆動の終了を意味する「ＯＮ」にセットする。そして、次のステップ１１８で、後述する図１２の基準位置学習ルーチンによって３回目以降の励磁毎に演算した全ての基準位置学習値Ｇｃｎｔ（３）　，Ｇｃｎｔ（４）　，Ｇｃｎｔ（５）　，Ｇｃｎｔ（６）　が一致しているか否かを判定し、一致していれば、初期駆動による基準位置の学習が正常に行われたと判断して、ステップ１１９に進み、最後の励磁（６回目の励磁）で求めた基準位置学習値Ｇｃｎｔ（６）　を最終的な基準位置学習値ＧｃｎｔとしてＥＣＵ４１のＲＡＭに記憶する。
【００７８】
これに対して、上記ステップ１１８で、３回目以降の励磁毎に演算した基準位置学習値Ｇｃｎｔ（３）　，Ｇｃｎｔ（４）　，Ｇｃｎｔ（５）　，Ｇｃｎｔ（６）　が一致していないと判定されれば、初期駆動による基準位置の学習が異常であると判断して、ステップ１２０に進み、再び初期駆動を実行するために、初期駆動繰り返し回数カウンタＣＦを１カウントアップして、ステップ１２１に進み、初期駆動繰り返し回数カウンタＣＦの値が２以上であるか否かを判定する。
【００７９】
ＥＣＵ４１の電源投入時に初期化ルーチン（図示せず）によって初期駆動繰り返し回数カウンタＣＦの初期値が０にセットされるため、１回目の初期駆動が異常で２回目の初期駆動を実行する場合は、ステップ１２０の処理により、初期駆動繰り返し回数カウンタＣＦの値が１となり、ステップ１２１で「Ｎｏ」と判定されて、ステップ１２３に進み、初期駆動終了フラグＸｅｎｄをＯＦＦにリセットすると共に、励磁回数カウンタＣＡＳＥを０にリセットする。これにより、２回目の初期駆動（基準位置学習値Ｇｃｎｔの演算）が実行される。
【００８０】
その後、２回目の初期駆動中に演算した全ての基準位置学習値Ｇｃｎｔ（３）　，Ｇｃｎｔ（４）　，Ｇｃｎｔ（５）　，Ｇｃｎｔ（６）　が一致すれば、ステップ１１８で「Ｙｅｓ」と判定されて、ステップ１１９に進み、２回目の初期駆動の最後の励磁（６回目の励磁）で求めた基準位置学習値Ｇｃｎｔ（６）　を最終的な基準位置学習値ＧｃｎｔとしてＥＣＵ４１のＲＡＭに記憶する。
【００８１】
これに対して、２回目の初期駆動でも、基準位置学習値Ｇｃｎｔ（３）　，Ｇｃｎｔ（４）　，Ｇｃｎｔ（５）　，Ｇｃｎｔ（６）　が一致しなかった場合は、２回目の初期駆動も異常であると判断して、ステップ１２０に進み、初期駆動繰り返し回数カウンタＣＦを１カウントアップする。これにより、２回目の初期駆動でも異常と判定された場合は、初期駆動繰り返し回数カウンタＣＦが２となり、ステップ１２１で「Ｙｅｓ」と判定されてステップ１２２に済み、初期駆動異常フラグＸｆａｉｌを、初期駆動が異常であることを意味するＯＮにセットして本ルーチンを終了する。
【００８２】
初期駆動異常フラグＸｆａｉｌがＯＮにセットされた後は、本ルーチンが起動されても、ステップ１０１で「Ｙｅｓ」と判定されて、本ルーチンが強制的に終了され、以後、初期駆動（基準位置学習値Ｇｃｎｔの演算）は行われない。
【００８３】
尚、本ルーチンでは、２回目の初期駆動でも、基準位置学習値Ｇｃｎｔ（３）　，Ｇｃｎｔ（４）　，Ｇｃｎｔ（５）　，Ｇｃｎｔ（６）　が一致しなかった場合は、初期駆動の異常と判定して最終的な基準位置学習値を決定しないようにしたが、例えば、２回目の初期駆動中に演算した基準位置学習値Ｇｃｎｔ（３）　，Ｇｃｎｔ（４）　，Ｇｃｎｔ（５）　，Ｇｃｎｔ（６）　の中で、最も多く一致する基準位置学習値又は平均的な基準位置学習値を最終的な基準位置学習値ＧｃｎｔとしてＥＣＵ４１のＲＡＭに記憶するようにしても良い。
【００８４】
また、本ルーチンでは、初期駆動の最大繰り返し回数を１回としたが、これを２回以上の適宜回数としても良いことは言うまでもない。
【００８５】
［基準位置学習］
図１２に示す基準位置学習ルーチンは、ＡＢ相割り込み処理によりＡ相信号とＢ相信号の立ち上がり／立ち下がりの両方のエッジに同期して起動され、初期駆動開始後にロータ３２が確実に同期して回転する３回目以降の励磁について、通電相を切り換える毎（励磁回数カウンタＣＡＳＥがカウントアップされる毎）にエンコーダ４６のＡ相・Ｂ相の信号値の組み合わせがその時の通電相に対応する組み合わせになった瞬間を検出して、その時点のエンコーダカウント値Ｎｃｎｔに基づいて基準位置学習値Ｇｃｎｔを演算する。
【００８６】
本実施形態では、励磁回数カウンタＣＡＳＥ（励磁する通電相）とエンコーダ４６のＡ相・Ｂ相の信号値の組み合わせとの関係は、次の表３に示すように設定されている。
【００８７】
【表３】
2004129451.tif 000005
【００８８】
初期駆動中に通電相の切り換えに同期してロータ３２が回転するようになった後は、ロータ３２の回転に応じて、エンコーダ４６のＡ相・Ｂ相の信号値の組み合わせが次の▲１▼→▲２▼→▲３▼→▲４▼の順序で繰り返し変化する（図７参照）。
▲１▼Ａ相信号＝０（ローレベル）、Ｂ相信号＝０（ローレベル）
▲２▼Ａ相信号＝１（ハイレベル）、Ｂ相信号＝０（ローレベル）
▲３▼Ａ相信号＝１（ハイレベル）、Ｂ相信号＝１（ハイレベル）
▲４▼Ａ相信号＝０（ローレベル）、Ｂ相信号＝１（ハイレベル）
【００８９】
本実施形態のように、通電相を切り換える毎にエンコーダカウント値Ｎｃｎｔが２つずつ変化する構成では、１つ目の通電相で▲１▼の状態になると、２つめ目の通電相で▲３▼の状態となり、３つ目の通電相で再び▲１▼の状態に戻るというように、通電相の切り換え毎にエンコーダ４６のＡ相・Ｂ相の信号値の組み合わせが▲１▼と▲３▼との間で切り換わる。この関係から、本実施形態では、例えば３つ目の通電相（Ｕ相，ＣＡＳＥ＝２）を励磁しているときに、３つ目の通電相に対応する▲１▼の状態になったときに、ロータ３２の回転位置が３つ目の通電相に対応する位置になっていると判断して、その時点のエンコーダカウント値Ｎｃｎｔを用いて基準位置学習値Ｇｃｎｔ（３）　を演算し、その後、４つ目の通電相（ＵＶ相，ＣＡＳＥ＝３）を励磁しているときに、４つ目の通電相に対応する▲３▼の状態になったときに、ロータ３２の回転位置が４つ目の通電相に対応する位置になっていると判断して、その時点のエンコーダカウント値Ｎｃｎｔを用いて基準位置学習値Ｇｃｎｔ（４）　を演算する。
【００９０】
図１２に示す基準位置学習ルーチンが起動されると、まずステップ２５１で、励磁回数カウンタＣＡＳＥの値が２以上であるか否か（つまり励磁回数が３回以上であるか否か）を判定し、励磁回数カウンタＣＡＳＥの値が２未満であれば、通電相の切り換えに同期してロータ３２が回転していない可能性があると判断して、以降の処理を行わずに、本ルーチンを終了する。
【００９１】
これに対して、上記ステップ２５１で、励磁回数カウンタＣＡＳＥの値が２以上と判定された場合は、ステップ２５２に進み、励磁回数カウンタＣＡＳＥの値が２又は４であるか否かを判定し、励磁回数カウンタＣＡＳＥの値が２又は４であれば、ステップ２５３に進み、エンコーダ４６のＡ相・Ｂ相の信号値の組み合わせがその時の通電相（Ｕ相又はＶ相）に対応する組み合わせ（Ａ相信号＝０且つＢ相信号＝０）になっているか否かを判定する。このような判定をＡＢ相割り込み処理により繰り返すことで、エンコーダ４６のＡ相・Ｂ相の信号値の組み合わせがその時の通電相（Ｕ相又はＶ相）に対応する組み合わせ（Ａ相信号＝０且つＢ相信号＝０）になった瞬間を検出して、ステップ２５４に進み、レンジ判定フラグＸｎｐ＝０（Ｐレンジ）であるか否かを判定し、レンジ判定フラグＸｎｐ＝０（Ｐレンジ）であれば、ステップ２５５に進み、その時点のエンコーダカウント値Ｎｃｎｔを用いて基準位置学習値Ｇｃｎｔ（ｉ）　を次式により演算する。
Ｇｃｎｔ（ｉ）　＝Ｎｃｎｔ＋２×（６−ＣＡＳＥ）
（この場合はｉ＝３又は５）
【００９２】
また、レンジ判定フラグＸｎｐ＝１（ＮｏｔＰレンジ）であれば、ステップ２５６に進み、その時点のエンコーダカウント値Ｎｃｎｔを用いて基準位置学習値Ｇｃｎｔ（ｉ）　を次式により演算する。
Ｇｃｎｔ（ｉ）　＝Ｎｃｎｔ−２×（６−ＣＡＳＥ）
（この場合はｉ＝３又は５）
【００９３】
一方、励磁回数カウンタＣＡＳＥの値が３又は５の場合は、ステップ２５２で「Ｎｏ」と判定されてステップ２５７に進み、エンコーダ４６のＡ相・Ｂ相の信号値の組み合わせがその時の通電相（ＵＶ相又はＶＷ相）に対応する組み合わせ（Ａ相信号＝１且つＢ相信号＝１）になっているか否かを判定する。このような判定をＡＢ相割り込み処理により繰り返すことで、エンコーダ４６のＡ相・Ｂ相の信号値の組み合わせがその時の通電相（ＵＶ相又はＶＷ相）に対応する組み合わせ（Ａ相信号＝１且つＢ相信号＝１）になった瞬間を検出して、ステップ２５８に進み、レンジ判定フラグＸｎｐ＝０（Ｐレンジ）であるか否かを判定し、レンジ判定フラグＸｎｐ＝０（Ｐレンジ）であれば、ステップ２５９に進み、その時点のエンコーダカウント値Ｎｃｎｔを用いて基準位置学習値Ｇｃｎｔ（ｉ）　を次式により演算する。
Ｇｃｎｔ（ｉ）　＝Ｎｃｎｔ＋２×（６−ＣＡＳＥ）
（この場合はｉ＝４又は６）
【００９４】
また、レンジ判定フラグＸｎｐ＝１（ＮｏｔＰレンジ）であれば、ステップ２６０に進み、その時点のエンコーダカウント値Ｎｃｎｔを用いて基準位置学習値Ｇｃｎｔ（ｉ）　を次式により演算する。
Ｇｃｎｔ（ｉ）　＝Ｎｃｎｔ−２×（６−ＣＡＳＥ）
（この場合はｉ＝４又は６）
【００９５】
［エンコーダカウンタ］
次に、図１４に示すエンコーダカウンタルーチンの処理内容を説明する。本ルーチンは、ＡＢ相割り込み処理によりＡ相信号とＢ相信号の立ち上がり／立ち下がりの両方のエッジに同期して起動され、Ａ相信号とＢ相信号の立ち上がり／立ち下がりの両方のエッジを次のようにしてカウントする。本ルーチンが起動されると、まずステップ３０１で、Ａ相信号とＢ相信号の値Ａ（ｉ）　、Ｂ（ｉ）　を読み込み、次のステップ３０２で、図１５のカウントアップ値ΔＮ算出マップを検索して、Ａ相信号とＢ相信号の今回値Ａ（ｉ）　、Ｂ（ｉ）　と、前回値Ａ（ｉ−１）　、Ｂ（ｉ−１）　に応じたカウントアップ値ΔＮを算出する。
【００９６】
ここで、Ａ相信号とＢ相信号の今回値Ａ（ｉ）　、Ｂ（ｉ）　と、前回値Ａ（ｉ−１）　、Ｂ（ｉ−１）　を用いる理由は、Ａ相信号とＢ相信号の発生順序によってロータ３２の回転方向を判定するためであり、図１６に示すように、正回転（Ｐレンジ→ＮｏｔＰレンジの回転方向）ではカウントアップ値ΔＮをプラス値にしてエンコーダカウント値Ｎｃｎｔをカウントアップし、逆回転（ＮｏｔＰレンジ→Ｐレンジの回転方向）ではカウントアップ値ΔＮをマイナス値にしてエンコーダカウント値Ｎｃｎｔをカウントダウンする。
【００９７】
カウントアップ値ΔＮの算出後、ステップ３０３に進み、前回のエンコーダカウント値Ｎｃｎｔに上記ステップ３０２で算出したカウントアップ値ΔＮを加算して、今回のエンコーダカウント値Ｎｃｎｔを求める。この後、ステップ３０４に進み、次回のカウント処理のために、Ａ相信号とＢ相信号の今回値Ａ（ｉ）　、Ｂ（ｉ）　をそれぞれＡ（ｉ−１）　、Ｂ（ｉ−１）　として記憶して本ルーチンを終了する。
【００９８】
以上説明した図１４のエンコーダカウンタルーチンは、特許請求の範囲でいうエンコーダカウント手段としての役割を果たす。
【００９９】
［Ｆ／Ｂ制御］
次に、図１７に示すＦ／Ｂ制御ルーチンの処理内容を説明する。本ルーチンは、ＡＢ相割り込み処理により実行され、初期駆動終了後にＦ／Ｂ制御実行条件が成立しているときに、ロータ３２の回転位置（エンコーダカウント値Ｎｃｎｔ−Ｇｃｎｔ）が目標位置（目標カウント値Ａｃｎｔ）から例えば０．５°以内に到達するまで、エンコーダカウント値Ｎｃｎｔと基準位置学習値Ｇｃｎｔとに基づいて通電相を切り換えてロータ３２を回転させる。
【０１００】
図１７のＦ／Ｂ制御ルーチンが起動されると、まずステップ６０１で、Ｆ／Ｂ許可フラグＸｆｂがＯＮにセットされているか否か（モータＦ／Ｂ制御実行条件が成立しているか否か）を判定し、Ｆ／Ｂ許可フラグＸｆｂがＯＦＦ（Ｆ／Ｂ制御実行条件が不成立）であれば、以降の処理を行うことなく、本ルーチンを終了する。
【０１０１】
これに対して、Ｆ／Ｂ許可フラグＸｆｂがＯＮにセットされていれば、ステップ６０２に進み、後述する図１８の通電相設定ルーチンを実行して、現在のエンコーダカウント値Ｎｃｎｔと基準位置学習値Ｇｃｎｔとに基づいて通電相を設定し、次のステップ６０３で、当該通電相を励磁する通電処理を実行する。
【０１０２】
［通電相設定］
図１８に示す通電相設定ルーチンは、図１７のＦ／Ｂ制御ルーチンのステップ６０２で起動されるサブルーチンである。本ルーチンが起動されると、まずステップ６１１で、回転方向指示値Ｄが正回転（Ｐレンジ→ＮｏｔＰレンジの回転方向）を意味する「１」であるか否かを判定する。その結果、回転方向指示値Ｄ＝１（正回転）と判定されれば、ステップ６１２に進み、回転方向が回転方向指示に反して逆転したか否か（エンコーダカウント値Ｎｃｎｔが減少したか否か）を判定し、逆転していなければ、ステップ６１３に進み、現在のエンコーダカウント値Ｎｃｎｔ、基準位置学習値Ｇｃｎｔ、正回転方向位相進み量Ｋ１、速度補正量Ｋｓを用いて通電相判定値Ｍｐｔｎを次式により更新する。
Ｍｐｔｎ＝Ｎｃｎｔ−Ｇｃｎｔ＋Ｋ１＋Ｋｓ
【０１０３】
ここで、正回転方向位相進み量Ｋ１は、ロータ３２を正回転させるのに必要な通電相の位相進み量（ロータ３２の現在位置に対する通電相の位相進み量）であり、例えばＫ１＝４に設定されている。
【０１０４】
また、速度補正量Ｋｓは、ロータ３２の回転速度に応じて設定される位相進み補正量である。低速域では、速度補正量Ｋｓが０に設定され、高速になるに従って、速度補正量Ｋｓが例えば１又は２に増加される。これにより、ロータ３２の回転速度に適した通電相となるように通電相判定値Ｍｐｔｎが補正される。
【０１０５】
一方、上記ステップ６１２で、回転方向が回転方向指示に反して逆転したと判定された場合は、逆転防止のために通電相判定値Ｍｐｔｎを更新しない。この場合は、逆転直前の通電相（前回の通電相）に通電され、ロータ３２の逆転を抑制する方向に制動トルクが発生する。
【０１０６】
また、上記ステップ６１１で、回転方向指示値Ｄ＝−１（逆回転）、つまりＮｏｔＰレンジ→Ｐレンジの回転方向と判定された場合は、ステップ６１４に進み、回転方向が回転方向指示に反して逆転したか否か（エンコーダカウント値Ｎｃｎｔが増加したか否か）を判定し、逆転していなければ、ステップ６１５に進み、現在のエンコーダカウント値Ｎｃｎｔ、基準位置学習値Ｇｃｎｔ、逆回転方向位相進み量Ｋ２、速度補正量Ｋｓを用いて通電相判定値Ｍｐｔｎを次式により更新する。
Ｍｐｔｎ＝Ｎｃｎｔ−Ｇｃｎｔ−Ｋ２−Ｋｓ
【０１０７】
ここで、逆回転方向位相進み量Ｋ２は、ロータ３２を逆回転させるのに必要な通電相の位相進み量（ロータ３２の現在位置に対する通電相の位相進み量）であり、例えばＫ２＝３に設定されている。速度補正量Ｋｓは正回転の場合と同じである。
【０１０８】
一方、上記ステップ６１４で、回転方向が回転方向指示に反して逆転したと判定された場合は、逆転防止のために通電相判定値Ｍｐｔｎを更新しない。この場合は、逆転直前の通電相（前回の通電相）に通電され、ロータ３２の逆転を抑制する方向に制動トルクが発生する。
【０１０９】
以上のようにして、今回の通電相判定値Ｍｐｔｎを決定した後、ステップ６１５に進み、通電相判定値Ｍｐｔｎを“１２”で割り算して、その余りＭｐｔｎ％１２を求める。ここで、“１２”は、通電相を一巡させる間のエンコーダカウント値Ｎｃｎｔの増減量に相当する。
【０１１０】
Ｍｐｔｎ％１２の算出後、ステップ６１６に進み、図１９の変換テーブルを検索して、Ｍｐｔｎ％１２に対応する通電相を選択し、これを今回の通電相に設定する。
【０１１１】
図２０はＵ相から回転を開始する場合に最初に通電する相を説明するタイムチャートである。この場合、速度補正量Ｋｓ＝０となるため、正回転（Ｐレンジ→ＮｏｔＰレンジ方向への回転）を開始する場合は、通電相判定値Ｍｐｔｎは次式により算出される。
Ｍｐｔｎ＝Ｎｃｎｔ−Ｇｃｎｔ＋Ｋ１＝Ｎｃｎｔ−Ｇｃｎｔ＋４
Ｕ相から正回転を開始する場合は、（Ｎｃｎｔ−Ｇｃｎｔ）／１２の余りは、６となるため、Ｍｐｔｎ％１２＝６＋４＝１０となり、最初の通電相はＶ相となる。
【０１１２】
一方、Ｕ相から逆回転（ＮｏｔＰレンジ→Ｐレンジ方向への回転）を開始する場合は、通電相判定値Ｍｐｔｎは次式により算出される。
Ｍｐｔｎ＝Ｎｃｎｔ−Ｇｃｎｔ−Ｋ２＝Ｎｃｎｔ−Ｇｃｎｔ−３
Ｕ相から逆回転を開始する場合は、Ｍｐｔｎ％１２＝６−３＝３となり、最初の通電相はＷ相となる。
【０１１３】
このように、正回転方向位相進み量Ｋ１と逆回転方向位相進み量Ｋ２をそれぞれ４と３に設定することで、正回転方向と逆回転方向の通電相の切換パターンを対称にすることができ、正回転方向と逆回転方向のいずれの場合も、ロータ３２の現在位置から２ステップ分ずらした位置の相を最初に励磁して回転を開始することができる。
【０１１４】
以上説明した本実施形態によれば、ＥＣＵ４１への電源投入後の初期駆動時に、通電相を切り換える毎にエンコーダ４６のＡ相・Ｂ相の信号値の組み合わせがその時の通電相に対応する組み合わせになった瞬間を検出して、その時点のエンコーダカウント値に基づいてロータ３２の基準位置を学習するようにしたので、初期駆動時にロータ３２の振動が停止するのを待たずに、ロータ３２の振動中でもロータ３２の基準位置の学習を行うことができて、その学習時間を短くすることができ、ＳＲモータ１２のＦ／Ｂ制御を素早く立ち上げることができる。
【０１１５】
しかも、本実施形態では、初期駆動中に通電相を切り換える毎にロータ３２の基準位置を学習し、初期駆動終了時にそれまでに求めた基準位置学習値が全て一致しているか否かを判定し、一致していなければ、初期駆動による基準位置の学習を再実行するようにしたので、エンコーダ４６の信号にノイズ等が混入しても、基準位置の誤学習を未然に防止することができ、信頼性の高い学習値を求めることができる。本実施形態では、前述したように、ロータ３２の振動中でも基準位置を学習できるため、基準位置の学習を複数回繰り返しても、ロータ３２の振動が停止するのを待つよりも短い時間で全ての学習を終えることが可能となり、短い学習時間で信頼性の高い基準位置の学習を行うことができる。
【０１１６】
但し、本発明は、初期駆動の最後に基準位置の学習を１回のみ行ったり、或は、数回の学習を行うようにしても良く、基準位置の学習回数は、要求される信頼性の程度に応じて適宜設定すれば良い。
【０１１７】
また、本実施形態では、初期駆動中に通電相の切り換えを一巡させるようにしたので、初期駆動の途中まで通電相とロータ３２の回転位置との同期を取ることができなくても、初期駆動を終了するまでに、いずれかの通電相で必ずロータ３２の回転位置と通電相との同期を取ることができて、ロータ３２の基準位置をより確実に学習することができる。
【０１１８】
しかしながら、本発明は、初期駆動中に通電相の切り換えを一巡させる構成に限定されず、初期駆動中に通電相の切り換えを例えば２〜５回実行して基準位置を学習するようにしても良い。
【０１１９】
尚、本実施形態では、初期駆動とＦ／Ｂ制御中に、１相通電と２相通電とを交互に切り換える１−２相励磁方式で駆動するようにしたが、１相通電のみで駆動する１相励磁方式、又は、２相通電のみで駆動する２相励磁方式を採用しても良い。
【０１２０】
また、本発明に用いるエンコーダは、磁気式のエンコーダ４６に限定されず、例えば、光学式のエンコーダやブラシ式のエンコーダを用いても良い。
また、本発明に用いるモータは、ＳＲモータ１２に限定されず、エンコーダの出力信号のカウント値に基づいてロータの回転位置を検出してモータの通電相を順次切り換えるブラシレス型のモータであれば、ＳＲモータ以外のブラシレス型のモータを用いても良い。
【０１２１】
また、本実施形態のレンジ切換装置は、ＰレンジとＮｏｔＰレンジの２つのレンジを切り換える構成であるが、例えば、ディテントレバー１５の回動動作に連動して自動変速機のレンジ切換弁とマニュアルバルブを切り換えて、自動変速機のＰ、Ｒ、Ｎ、Ｄ等の各レンジを切り換えるレンジ切換装置にも本発明を適用して実施できる。
【０１２２】
その他、本発明は、レンジ切換装置に限定されず、ＳＲモータ等のブラシレス型のモータを駆動源とする各種の装置に適用して実施できることは言うまでもない。
【図面の簡単な説明】
【図１】本発明の一実施形態を示すレンジ切換装置の斜視図
【図２】ＳＲモータの構成を説明する図
【図３】ＳＲモータを駆動する回路構成を示す回路図
【図４】レンジ切換装置の制御システム全体の構成を概略的に示す図
【図５】エンコーダのロータリマグネットの構成を説明する平面図
【図６】エンコーダの側面図
【図７】（ａ）はエンコーダの出力波形を示すタイムチャート、（ｂ）は通電相切り換えパターンを示すタイムチャート
【図８】初期駆動ルーチンの処理の流れを示すフローチャート（その１）
【図９】初期駆動ルーチンの処理の流れを示すフローチャート（その２）
【図１０】Ｐレンジ初期駆動ルーチンの処理の流れを示すフローチャート
【図１１】ＮｏｔＰレンジ初期駆動ルーチンの処理の流れを示すフローチャート
【図１２】基準位置学習ルーチンの処理の流れを示すフローチャート
【図１３】初期駆動の制御例を示すタイムチャート
【図１４】エンコーダカウンタルーチンの処理の流れを示すフローチャート
【図１５】カウントアップ値ΔＮ算出マップの一例を示す図
【図１６】指令レンジシフト、Ａ相信号、Ｂ相信号、エンコーダカウント値の関係を示すタイムチャート
【図１７】モータＦ／Ｂ制御ルーチンの処理の流れを示すフローチャート
【図１８】通電相設定ルーチンの処理の流れを示すフローチャート
【図１９】ｍｏｄ（Ｍｐｔｎ／１２）から通電相への変換テーブルの一例を示す図
【図２０】通電処理を説明するタイムチャート
【符号の説明】
１１…レンジ切換機構、１２…ＳＲモータ、１４…出力軸センサ、１５…ディテントレバー、１８…パーキングロッド、２０…パーキングギヤ、２１…ロックレバー、２３…ディテントバネ、２４…Ｐレンジ保持凹部、２５…ＮｏｔＰレンジ保持凹部、２６…減速機構、２７…自動変速機、３１…ステータ、３２…ロータ、３３，３４…巻線、３５，３６…モータ励磁部、３７，３８…モータドライバ、４１…ＥＣＵ（制御手段，エンコーダカウント手段）、４３…Ｐレンジスイッチ、４４…ＮｏｔＰレンジスイッチ、４６…エンコーダ、４７…ロータリマグネット、４８…Ａ相信号用の磁気検出素子、４９…Ｂ相信号用の磁気検出素子、５０…Ｚ相信号用の磁気検出素子。
【図１】
2004129451.tif 000006
【図２】
2004129451.tif 000007
【図３】
2004129451.tif 000008
【図４】
2004129451.tif 000009
【図５】
2004129451.tif 000010
【図６】
2004129451.tif 000011
【図７】
2004129451.tif 000012
【図８】
2004129451.tif 000013
【図９】
2004129451.tif 000014
【図１０】
2004129451.tif 000015
【図１１】
2004129451.tif 000016
【図１２】
2004129451.tif 000017
【図１３】
2004129451.tif 000018
【図１４】
2004129451.tif 000019
【図１５】
2004129451.tif 000020
【図１６】
2004129451.tif 000021
【図１７】
2004129451.tif 000022
【図１８】
2004129451.tif 000023
【図１９】
2004129451.tif 000024
【図２０】
2004129451.tif 000025