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