(57)【要約】【課題】ロータ回転角の推定で戻し処理が行われるがロータが反転しない場合や停止する場合等にもロータ回転角を正確に推定できるモータ制御装置を提供する。【解決手段】ロータ回転角の離散的な検出結果とそれから得られる角速度推定値ωeとトルク情報とに基づき次のように回転角推定値θreを求める。電動パワーステアリング装置にてモータのロータ回転角の次の検出前に回転角推定値θreが検出予定回転角θnxに達すると、直前検出時点ｔn-1及び検出予定回転角到達時点ｔnの操舵トルクτ(n-1),τ(n)と角速度推定値ωeとに基づき回転方向の反転／非反転を推定する。その後、回転角推定値θreが検出済回転角θｒに向かうものとし、上記推定結果が非反転の場合にはΔτ(n)＝｜τ(n)−τ(n-1)｜に比例した角度量Δθだけ変化した時点ｔn+1以降で、反転の場合には30度（検出間隔の1/2）だけ変化した時点ｔn+1以降で、回転角推定値θreを一定に維持する。【選択図】図８
2011120339.tif 000002
【特許請求の範囲】
【請求項１】
電動モータにおけるロータの回転角の推定値を算出し、当該推定値に基づき当該電動モータを駆動するモータ制御装置であって、
前記ロータの回転角を所定の角度間隔で離散的に検出する回転角離散検出手段と、
前記回転角離散検出手段による検出結果および前記回転角離散検出手段による前記ロータの回転角の検出時点の間隔から前記ロータの回転速度の推定値を算出する速度推定手段と、
前記電動モータの駆動対象に加えられるトルクのうちモータトルク以外のトルクを非モータトルクとして検出するトルク検出手段と、
前記速度推定手段により得られる回転速度推定値および前記トルク検出手段により検出される非モータトルクに基づき、前記ロータの現時点での回転角を示す回転角推定値を算出する回転角推定手段とを備え、
前記回転角推定手段は、前記回転角離散検出手段により前記ロータの回転角が検出された第１の検出時点から前記回転角離散検出手段により次に前記ロータの回転角が検出される第２の検出時点までに、前記回転角推定値が前記回転角離散検出手段により次に検出されるべき前記ロータの回転角である検出予定回転角に到達した場合に、前記第２の検出時点までは前記回転角推定値が当該検出予定回転角を越えないように、前記トルク検出手段により検出される非モータトルクに応じて前記回転角推定値の算出方法を変更することを特徴とする、モータ制御装置。
【請求項２】
前記回転角推定手段は、
前記第１の検出時点で検出される前記非モータトルクの向きと、前記第２の検出時点までに前記回転角推定値が前記検出予定回転角に到達する場合に前記検出予定回転角への到達時点で検出される前記非モータトルクの向きと、前記速度推定手段により得られる速度推定値とに基づき、前記第１の検出時点と前記検出予定回転角への到達時点との間で前記ロータの回転方向が反転したか否かを推定する反転推定手段を含み、
前記ロータの回転方向が反転していないと前記反転推定手段により推定される場合には、前記検出予定回転角への到達時点から前記第２の検出時点までは、前記検出予定回転角と前記回転角推定値との差が、前記第１の検出時点で検出される前記非モータトルクと前記検出予定回転角への到達時点で検出される前記非モータトルクとの差に応じた所定量よりも大きくならないように、前記算出方法を変更することを特徴とする、請求項１に記載のモータ制御装置。
【請求項３】
前記回転角推定手段は、
前記ロータの回転方向が反転していないと前記反転推定手段により推定される場合において、前記検出予定回転角への到達時点後、前記第１の検出時点で検出された前記ロータの回転角である検出済回転角に向かって前記検出予定回転角から前記所定量だけ変化した中間回転角に前記回転角推定値が到達したときには、前記第２の検出時点まで当該中間回転角を維持するように、前記算出方法を変更し、
前記ロータの回転方向が反転したと前記反転推定手段により推定される場合において、前記検出予定回転角への到達時点後、前記検出済回転角と前記検出予定回転角との間を２等分する角度値に前記回転角推定値が到達したときには、前記第２の検出時点まで当該２等分する角度値を維持するように、前記算出方法を変更することを特徴とする、請求項２に記載のモータ制御装置。
【請求項４】
前記回転角推定手段は、
前記第１の検出時点で検出される前記非モータトルクの向きと、前記第２の検出時点までに前記回転角推定値が前記検出予定回転角に到達する場合に前記検出予定回転角への到達時点で検出される前記非モータトルクの向きと、前記第１の検出時点で検出された前記ロータの回転角である検出済回転角と前記検出予定回転角との間における所定の中間回転角に前記回転角推定値が前記検出予定回転角への到達時点後に到達する場合に当該中間回転角への到達時点で検出される前記非モータトルクの向きとに基づき、前記第１の検出時点と前記中間回転角への到達時点との間で前記ロータの回転方向が反転したか否かを推定する反転推定手段を含み、
前記中間回転角への到達時点から前記第２の検出時点までにおいて、前記反転推定手段の推定結果に応じて前記回転角推定値が減少もしくは増加しまたは一定となるように、前記算出方法を変更することを特徴とする、請求項１に記載のモータ制御装置。
【請求項５】
前記回転角推定手段は、
前記ロータの回転方向が反転していないと前記反転推定手段により推定される場合には、前記中間回転角への到達時点後に前記回転角推定値が前記検出予定回転角に向かって変化するように前記回転角推定値を算出し、
前記ロータの回転方向が反転したと前記反転推定手段により推定される場合には、前記中間回転角への到達時点後に前記回転角推定値が前記検出済回転角に向かって変化するように前記回転角推定値を算出し、
前記ロータの回転方向が反転したか否かを前記反転推定手段が推定できない場合には、前記中間回転角への到達時点後に前記回転角推定値が一定に維持されるように前記回転角推定値を算出することを特徴とする、請求項４に記載のモータ制御装置。
【請求項６】
前記回転角推定手段は、前記ロータの回転方向が反転したとみなして前記回転角推定値の算出方法を変更する場合には、前記回転角推定値の算出に使用する回転速度推定値の絶対値を当該算出方法の変更に伴って低減することを特徴とする、請求項１に記載のモータ制御装置。
【請求項７】
車両のステアリング機構に電動モータによって操舵補助力を与える電動パワーステアリング装置であって、
請求項１から６のいずれか１項に記載のモータ制御装置を備え、
前記トルク検出手段は、前記車両の操舵操作のために前記ステアリング機構に加えられる操舵トルクを前記非モータトルクとして検出し、
前記モータ制御装置は、前記ステアリング機構に操舵補助力を与える電動モータを駆動することを特徴とする、電動パワーステアリング装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブラシレスモータ等の電動モータを駆動するモータ制御装置、および当該モータ制御装置を備えた電動パワーステアリング装置に関する。
【背景技術】
【０００２】
従来から、運転者がハンドル（ステアリングホイール）に加える操舵トルクに応じて電動モータを駆動することにより車両のステアリング機構に操舵補助力を与える電動パワーステアリング装置が用いられている。電動パワーステアリング装置の電動モータには従来からブラシ付きモータが広く使用されているが、信頼性および耐久性の向上や慣性の低減などの観点から、近年ではブラシレスモータも使用されている。
【０００３】
このブラシレスモータが使用されている電動パワーステアリング装置では、座標変換によるベクトル制御などでブラシレスモータを駆動する方法が一般的である。この方法では、ロータの現時点での回転位置であるロータ回転角を検出するために、ホール素子を含む位置検出センサ（ホールセンサ）が用いられることが多い。このホールセンサは、永久磁石からなるロータの周囲に、例えば１２０度または６０度の間隔で３個が配置され、これら３個のホールセンサから出力された検出信号に基づき電気角６０度毎のロータ回転角の変化が検出される。
【０００４】
ここで、電気角６０度毎の検出情報のみでは、現時点での正確なロータ回転角を得ることができないので、当該検出信号に基づき、現時点でのロータ回転角を推定する計算が行われるのが一般的である。例えば、検出信号における直前の検出時点からその前の検出時点までの時間間隔と、直前の検出時点からの経過時間とに基づき、現時点でのロータ回転角が推定される。
【０００５】
この推定されたロータ回転角が不正確であると、脱調やモータ効率の悪化を引き起こすので、推定のための計算には従来よりさまざま工夫がなされている。例えば特許文献１には、ロータ位相推定値が次回の検出位相値に相当する値に達すると、ロータ位相推定値を今回の検出位相値に相当する値の方向へ戻す処理（以下ではこの処理を「戻し処理」という）を行うモータ制御装置の構成が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−２３９７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ここで、ロータの回転速度が急激に変化することが多い電動パワーステアリング装置において、ホールセンサからの検出信号における直前の検出時点からその前の検出時点までの時間間隔に基づいて単純に現時点でのロータ回転角を推定する計算を行うと、現実のロータ回転角と大きなずれを生じる可能性がある。
【０００８】
また、文献１に記載のモータ制御装置の上記戻し処理は、現実のロータが前回の検出時点までの角速度と同じ角速度で回転し、かつ次回の検出位相角が得られると予想される時点の直前でその回転方向が反転し同じ角速度で回転する場合を想定して、上記時点でロータ位相推定値を戻すものである。そのため、現実のロータが上記場合と同様に回転すれば比較的正確なロータ位相推定値を算出することができる。しかし、現実のロータ回転角がゆっくりと変化して戻らない場合（すなわちロータの回転方向が反転しない場合）など、上記のように現実のロータが回転しない場合には正確なロータ位相推定値を算出することができない。
【０００９】
また、文献１に記載のモータ制御装置の上記戻し処理において、ロータ位相推定値は、直前の検出位相値と次回の検出位相値との真ん中に相当する中間値に達すると、その後はホールセンサによる次の検出時点まで当該中間値に維持される。このような中間値に固定されると、例えばロータの回転方向が反転しない場合には、ロータ位相推定値と現実のロータ位相とのずれが大きくなり、必要な大きさのモータトルクが得られないことがある。
【００１０】
そこで本発明の目的は、ロータの回転速度が急激に変化する場合や、戻し処理が行われるときに回転方向が反転しない場合、ロータの回転が停止する場合であっても、ロータ回転角を正確に推定し、その推定結果に基づきモータを駆動するモータ制御装置を提供することである。また、本発明の他の目的は、そのようなモータ制御装置を備えた電動パワーステアリング装置を提供することである。
【課題を解決するための手段】
【００１１】
第１の発明は、電動モータにおけるロータの回転角の推定値を算出し、当該推定値に基づき当該電動モータを駆動するモータ制御装置であって、
前記ロータの回転角を所定の角度間隔で離散的に検出する回転角離散検出手段と、
前記回転角離散検出手段による検出結果および前記回転角離散検出手段による前記ロータの回転角の検出時点の間隔から前記ロータの回転速度の推定値を算出する速度推定手段と、
前記電動モータの駆動対象に加えられるトルクのうちモータトルク以外のトルクを非モータトルクとして検出するトルク検出手段と、
前記速度推定手段により得られる回転速度推定値および前記トルク検出手段により検出される非モータトルクに基づき、前記ロータの現時点での回転角を示す回転角推定値を算出する回転角推定手段とを備え、
前記回転角推定手段は、前記回転角離散検出手段により前記ロータの回転角が検出された第１の検出時点から前記回転角離散検出手段により次に前記ロータの回転角が検出される第２の検出時点までに、前記回転角推定値が前記回転角離散検出手段により次に検出されるべき前記ロータの回転角である検出予定回転角に到達した場合に、前記第２の検出時点までは前記回転角推定値が当該検出予定回転角を越えないように、前記トルク検出手段により検出される非モータトルクに応じて前記回転角推定値の算出方法を変更することを特徴とする。
【００１２】
第２の発明は、第１の発明において、
前記回転角推定手段は、
前記第１の検出時点で検出される前記非モータトルクの向きと、前記第２の検出時点までに前記回転角推定値が前記検出予定回転角に到達する場合に前記検出予定回転角への到達時点で検出される前記非モータトルクの向きと、前記速度推定手段により得られる速度推定値とに基づき、前記第１の検出時点と前記検出予定回転角への到達時点との間で前記ロータの回転方向が反転したか否かを推定する反転推定手段を含み、
前記ロータの回転方向が反転していないと前記反転推定手段により推定される場合には、前記検出予定回転角への到達時点から前記第２の検出時点までは、前記検出予定回転角と前記回転角推定値との差が、前記第１の検出時点で検出される前記非モータトルクと前記検出予定回転角への到達時点で検出される前記非モータトルクとの差に応じた所定量よりも大きくならないように、前記算出方法を変更することを特徴とする。
【００１３】
第３の発明は、第２の発明において、
前記回転角推定手段は、
前記ロータの回転方向が反転していないと前記反転推定手段により推定される場合において、前記検出予定回転角への到達時点後、前記第１の検出時点で検出された前記ロータの回転角である検出済回転角に向かって前記検出予定回転角から前記所定量だけ変化した中間回転角に前記回転角推定値が到達したときには、前記第２の検出時点まで当該中間回転角を維持するように、前記算出方法を変更し、
前記ロータの回転方向が反転したと前記反転推定手段により推定される場合において、前記検出予定回転角への到達時点後、前記検出済回転角と前記検出予定回転角との間を２等分する角度値に前記回転角推定値が到達したときには、前記第２の検出時点まで当該２等分する角度値を維持するように、前記算出方法を変更することを特徴とする。
【００１４】
第４の発明は、第１の発明において、
前記回転角推定手段は、
前記第１の検出時点で検出される前記非モータトルクの向きと、前記第２の検出時点までに前記回転角推定値が前記検出予定回転角に到達する場合に前記検出予定回転角への到達時点で検出される前記非モータトルクの向きと、前記第１の検出時点で検出された前記ロータの回転角である検出済回転角と前記検出予定回転角との間における所定の中間回転角に前記回転角推定値が前記検出予定回転角への到達時点後に到達する場合に当該中間回転角への到達時点で検出される前記非モータトルクの向きとに基づき、前記第１の検出時点と前記中間回転角への到達時点との間で前記ロータの回転方向が反転したか否かを推定する反転推定手段を含み、
前記中間回転角への到達時点から前記第２の検出時点までにおいて、前記反転推定手段の推定結果に応じて前記回転角推定値が減少もしくは増加しまたは一定となるように、前記算出方法を変更することを特徴とする。
【００１５】
第５の発明は、第４の発明において、
前記回転角推定手段は、
前記ロータの回転方向が反転していないと前記反転推定手段により推定される場合には、前記中間回転角への到達時点後に前記回転角推定値が前記検出予定回転角に向かって変化するように前記回転角推定値を算出し、
前記ロータの回転方向が反転したと前記反転推定手段により推定される場合には、前記中間回転角への到達時点後に前記回転角推定値が前記検出済回転角に向かって変化するように前記回転角推定値を算出し、
前記ロータの回転方向が反転したか否かを前記反転推定手段が推定できない場合には、前記中間回転角への到達時点後に前記回転角推定値が一定に維持されるように前記回転角推定値を算出することを特徴とする。
【００１６】
第６の発明は、第１の発明において、
前記回転角推定手段は、前記ロータの回転方向が反転したとみなして前記回転角推定値の算出方法を変更する場合には、前記回転角推定値の算出に使用する回転速度推定値の絶対値を当該算出方法の変更に伴って低減することを特徴とする。
【００１７】
第７の発明は、車両のステアリング機構に電動モータによって操舵補助力を与える電動パワーステアリング装置であって、
第１から第６の発明のいずれかに係るモータ制御装置を備え、
前記トルク検出手段は、前記車両の操舵操作のために前記ステアリング機構に加えられる操舵トルクを前記非モータトルクとして検出し、
前記モータ制御装置は、前記ステアリング機構に操舵補助力を与える電動モータを駆動することを特徴とする。
【発明の効果】
【００１８】
上記第１の発明によれば、電動モータの駆動対象に加えられるトルクのうちモータトルク以外のトルクが非モータトルクとして検出され、ロータ回転角についての第１の検出時点から第２の検出時点までに回転角推定値が検出予定回転角に到達した場合には、第２の検出時点までは回転角推定値が当該検出予定回転角を越えないように上記非モータトルクに応じて回転角推定値の算出方法が変更される。これにより、ロータの回転方向が反転する場合にロータ回転角の推定誤差を低減できるだけでなく、ロータの回転方向が反転しない場合において回転角推定値が検出予定回転角に到達しても、ロータ回転角の推定誤差を低減することができる。
【００１９】
上記第２の発明によれば、第１の検出時点での上記非モータトルクの向きと、第２の検出時点前の検出予定回転角への到達時点での上記非モータトルクの向きと、ロータの回転速度の推定値とに基づき、第１の検出時点と検出予定回転角への到達時点との間でロータの回転方向が反転したか否かが推定され、ロータの回転方向が反転していないと推定される場合には、検出予定回転角への到達時点から第２の検出時点までは、検出予定回転角と回転角推定値との差が所定量以下となる。この所定量は、第１の検出時点での上記非モータトルクと上記検出予定回転角への到達時点での非モータトルクとの差（トルク差）に応じたものであることから、検出予定回転角への到達時点後の回転角推定値は上記トルク差に応じて検出予定回転角に比較的近い値となる。このため、ロータの回転方向が反転していない場合において回転角推定値が第２の検出時点前に検出予定回転角に到達しても、ロータ回転角の推定誤差を抑制することができる。
【００２０】
上記第３の発明によれば、第１の検出時点と検出予定回転角への到達時点との間でロータの回転方向が反転したか否かが上記第２の発明と同様にして推定され、ロータの回転方向が反転していないと推定される場合において、検出予定回転角への到達時点後の回転角推定値が検出予定回転角から検出済回転角に向かって上記所定量だけ変化した中間回転角に到達したときには、第２の検出時点まで回転角推定値が当該中間回転角に維持される。ここで上記所定量は上記トルク差に応じたものであることから、検出予定回転角への到達時点後の回転角推定値は上記トルク差に応じて検出予定回転角に比較的近い値となる。これにより、ロータの回転方向が反転しない場合において回転角推定値が第２の検出時点前に検出予定回転角に到達しても、ロータ回転角の推定誤差を抑制することができる。一方、ロータの回転方向が反転したと推定される場合において、検出予定回転角への到達時点後に回転角推定値が検出済回転角と検出予定回転角との間を２等分する角度値に到達したときには、第２の検出時点まで回転角推定値が当該２等分する角度値に維持される。これにより、ロータの回転方向が反転する場合にロータ回転角の推定誤差を小さくすることができる。
【００２１】
上記第４の発明によれば、第１の検出時点での上記非モータトルクの向きと、第２の検出時点前における検出予定回転角への到達時点での上記非モータトルクの向きと、検出予定回転角への到達後における所定の中間回転角への到達時点での上記非モータトルクの向きに基づき、第１の検出時点と当該中間回転角への到達時点との間でロータの回転方向が反転したか否かが推定され、当該中間回転角への到達時点から第２の検出時点までにおいて、回転角推定値は、回転方向が反転したか否かの推定結果に応じて減少もしくは増加しまたは一定となる。したがって、ロータの回転方向が反転する場合に回転角の推定誤差が抑制されるだけでなく、ロータの回転方向が反転しない場合において回転角推定値が第２の検出時点前に検出予定回転角に到達しても、ロータ回転角の推定誤差を抑制することができる。
【００２２】
上記第５の発明によれば、第１の検出時点と上記中間回転角への到達時点との間でロータの回転方向が反転したか否かが上記第４の発明と同様の方法で推定され、ロータの回転方向が反転していないと推定される場合には、回転角推定値は上記中間回転角への到達時点後に検出予定回転角に向かって変化し、一方、ロータの回転方向が反転したと推定される場合には、回転角推定値は上記中間回転角への到達時点後に検出済回転角に向かって変化する。また、ロータの回転方向が反転したか否かを推定できない場合（不明の場合）には、回転角推定値は中間回転角への到達時点後に一定に維持される。したがって、ロータの回転方向が反転する場合に回転角の推定誤差が抑制されるだけでなく、ロータの回転方向が反転しない場合において回転角推定値が第２の検出時点前に検出予定回転角に到達しても、ロータ回転角の推定誤差を抑制することができ、さらに、ロータの回転方向が反転したか否かが不明である場合にも、回転角推定値を上記中間回転角への到達時点後に一定値に維持することで推定誤差の増大を抑制することができる。
【００２３】
上記第６の発明によれば、ロータの回転方向が反転したとみなして回転角推定値の算出方法が変更される場合には、回転角推定値の算出に使用する回転速度推定値の絶対値が当該算出方法の変更に伴って低減される。これにより、ロータの回転方向が反転せずに途中で停止する場合やロータの回転が極めて遅くなった場合であっても、回転角推定値が２つの回転角の間での往復を繰り返してモータトルクが振動するという事態を回避または抑制することができる。
【００２４】
上記第７の発明によれば、モータ制御装置において上記第１から第６の発明に係るモータ制御装置と同様の効果を奏するので、電動パワーステアリング装置における電動モータを安定的に制御して良好な操舵感を得ることができる。
【図面の簡単な説明】
【００２５】
【図１】本発明に係るモータ制御装置を用いた電動パワーステアリング装置の構成を、それに関連する車両の構成と共に示す概略図である。
【図２】本発明の第１の実施形態に係るモータ制御装置の構成を示すブロック図である。
【図３】上記電動パワーステアリング装置で使用されるホールセンサを構成するホールＩＣの配置例を示す、モータ軸方向に対する垂直断面図である。
【図４】上記電動パワーステアリング装置で使用されるホールセンサを構成するホールＩＣの動作を説明するための図である。
【図５】上記第１の実施形態における制御部を実現するためのモータ制御処理の手順を示すフローチャートである。
【図６】上記第１の実施形態におけるモータのロータの回転角推定値を算出するための回転角推定処理の手順を示すフローチャートである。
【図７】上記第１の実施形態における回転角推定処理で使用される推定演算処理の手順を示すフローチャートである。
【図８】上記第１の実施形態におけるモータのロータの回転角推定値の変化の例を実際のロータ回転角と共に示す波形図である。
【図９】本発明の第２の実施形態に係るモータ制御装置における回転角推定処理で使用される推定演算処理の手順を示すフローチャートである。
【図１０】上記第２の実施形態におけるモータの回転方向の推定を説明するための波形図である。
【図１１】上記第２の実施形態におけるモータのロータの回転角推定値の変化の一例を実際のロータ回転角と共に示す波形図である。
【図１２】本発明の第３の実施形態に係るモータ制御装置における回転角推定処理で使用される推定演算処理の手順を示すフローチャートである。
【図１３】上記第３の実施形態における回転角推定処理を説明するための波形図である。
【図１４】上記第３の実施形態の第１の変形例における回転角推定処理で使用される推定演算処理の手順を示すフローチャートである。
【図１５】上記第３の実施形態の第１の変形例における回転角推定処理で使用される推定演算処理の手順を示すフローチャートである。
【図１６】上記第３の実施形態の第１の変形例における回転角推定処理を説明するための波形図である。
【図１７】上記第３の実施形態の第２の変形例における回転角推定処理で使用される推定演算処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００２６】
以下、添付図面を参照しつつ、本発明の実施形態について説明する。
＜１．全体構成＞
図１は、本発明に係るモータ制御装置を用いた電動パワーステアリング装置の構成を、それに関連する車両の構成と共に示す概略図である。この電動パワーステアリング装置は、ブラシレスモータ１、減速機２、トルクセンサ３、車速センサ４、位置検出センサであるホールセンサ５、および、電子制御ユニット（Electronic Control Unit ：以下「ＥＣＵ」という）１０を備えたコラムアシスト型の電動パワーステアリング装置である。
【００２７】
図１に示すように、ステアリングシャフト１０２の一端にはハンドル（ステアリングホイール）１０１が固着されており、ステアリングシャフト１０２の他端はラックピニオン機構１０３を介してラック軸１０４に連結されている。ラック軸１０４の両端は、タイロッドおよびナックルアームからなる連結部材１０５を介して車輪１０６に連結されている。運転者がハンドル１０１を回転させると、ステアリングシャフト１０２は回転し、これに伴いラック軸１０４は往復運動を行う。ラック軸１０４の往復運動に伴い、車輪１０６の向きが変わる。
【００２８】
電動パワーステアリング装置は、運転者の負荷を軽減するために、以下に示す操舵補助を行う。トルクセンサ３は、ハンドル１０１の操作によってステアリングシャフト１０２に加えられる操舵トルクＴを検出する。車速センサ４は、車速Ｓを検出する。
【００２９】
ホールセンサ５は、ホール素子を含むホールＩＣからなり、ブラシレスモータ１のロータの回転位置Ｐを検出する。なお、後述するようにこのホールセンサは、連続的にロータの位置を検出可能ないわゆるリニア形式のホールセンサではなく、離散的にロータの位置を検出するスイッチ形式（オンオフ形式）のホールセンサである。
【００３０】
ＥＣＵ１０は、車載バッテリ１００から電力の供給を受け、操舵トルクＴ、車速Ｓおよび回転位置Ｐに基づきブラシレスモータ１を駆動する。ブラシレスモータ１は、ＥＣＵ１０によって駆動されると、操舵補助力を発生させる。減速機２は、ブラシレスモータ１とステアリングシャフト１０２との間に設けられる。ブラシレスモータ１で発生した操舵補助力は、減速機２を介して、ステアリングシャフト１０２を回転させるように作用する。
【００３１】
この結果、ステアリングシャフト１０２は、ハンドル１０１に加えられる操舵トルクと、ブラシレスモータ１で発生した操舵補助力の両方によって回転する。このように電動パワーステアリング装置は、ブラシレスモータ１で発生した操舵補助力を車両のステアリング機構に与えることにより操舵補助を行う。
【００３２】
＜２．第１の実施形態＞
＜２．１  モータ制御装置の構成＞
図２は、本発明の第１の実施形態に係るモータ制御装置の構成を示すブロック図である。このモータ制御装置は、上記電動パワーステアリング装置において使用され、ＥＣＵ１０を用いて構成されており、ブラシレスモータ１を駆動する。ＥＣＵ１０は、マイクロコンピュータ（以下「マイコン」と略記する）２０とモータ駆動部とからなる。マイコン２０は、その内部のメモリに格納された所定のプログラムを実行することにより、目標電流演算部１１４と、減算器１２２，１２４と、ｄ軸電流ＰＩ制御部１２６と、ｑ軸電流ＰＩ制御部１２８と、ｄ−ｑ／３相交流座標変換部１３２と、符号反転加算器１３４と、３相交流／ｄ−ｑ座標変換部１３８と、ロータ回転位置検出部１６２と、ロータ回転角推定部１６４とからなるモータ制御部として機能する。目標電流演算部１１４には、基本アシスト制御部１８０とモータ電流指令値演算部１８８とが含まれている。モータ駆動部は、モータ制御部としてのマイコン２０から出力される電圧指令値に基づき３相のブラシレスモータ１を駆動するハードウェア（回路）であり、ＰＷＭ信号生成回路１５０と、モータ駆動回路１５２と、Ｕ相電流検出器１５４と、Ｖ相電流検出器１５６とから構成される。
【００３３】
ハンドル１０１が操作されると、トルクセンサ３によって検出される操舵トルクＴがＥＣＵ１０に入力されるとともに、車速センサ４によって検出される車速ＳもＥＣＵ１０に入力される。
【００３４】
ロータ回転位置検出部１６２は、ブラシレスモータ１に取り付けられた３個のホールＩＣ５ａ，５ｂ，５ｃからなるホールセンサ５が出力するセンサ信号に基づいて、ブラシレスモータ１のロータである永久磁石の回転位置Ｐである実際のロータ回転角θａに相当する電気角（以下「検出回転角」という）θｒを離散的に検出する。
【００３５】
図３（ａ）は、モータ１の軸方向に対する垂直断面図であり、図３（ｂ）は、図３（ａ）に示すロータ７が６０度時計回りに回転した時のモータ１の軸方向に対する垂直断面図である。図３（ａ）（ｂ）に示すように、ホールセンサ５を構成する３個のホールＩＣ５ａ〜５ｃのうち、ホールＩＣ５ａは、ロータ７のＮ極がステータ６ａに最も近接したときに（すなわちロータ７のＮ極がステータ６ａの直下に来たときに）ロータ７のＮ極とＳ極の境界（以下「磁極境界」という）に最も近接する位置に配置されている。また、ホールＩＣ５ｂは、ロータ７のＮ極がステータ６ｂに最も近接したときにロータ７の磁極境界に最も近接する位置に配置されており、ホールＩＣ５ｃは、ロータ７のＮ極がステータ６ｃに最も近接したときにロータ７の磁極境界に最も近接する位置に配置されている。各ホールＩＣ５ａ〜５ｃは、ロータ７の磁極境界が最も接近した時、その出力信号をハイレベル（Ｈレベル）からローレベル（Ｌレベル）またはＬレベルからＨレベルへと変化させる。したがって、ロータ７の実際のロータ回転角θａが６０度変化する毎にこれらホールＩＣ５ａ〜５ｃのうちのいずれか１つから出力される信号がＨレベルからＬレベルへまたはその逆に変化する。以下、図４を参照して、これらホールＩＣ５ａ〜５ｂの動作を更に詳しく説明する。なお以下では、ステータ６ａにロータ７のＮ極が最も接近したときのロータ７の回転角を０度とし、時計回り方向を回転角の正方向とする。
【００３６】
いま、ホールＩＣ５ａに着目し、図４（ａ）に示すようにロータ７が時計回り方向に回転するものとすると、このホールＩＣ５ａは、図４（ｂ）に示すような正弦波状のマグネット磁束変化に基づき図４（ｃ）に示すような２値信号を出力信号Ｓａとして生成する。すなわちホールＩＣ５ａは、上記のマグネット磁束がＮ極のときにはＨレベルとなりＳ極のときにはＬレベルとなる出力信号Ｓａを生成し、この出力信号Ｓａは、上記のマグネット磁束がＮ極からＳ極へと変化する時にＨレベルからＬレベルへと変化し、Ｓ極からＮ極へと変化する時にＬレベルからＨレベルへと変化する。したがって、図４（ａ）〜（ｃ）からわかるように、ロータ７が時計回り方向に回転している場合において、ホールＩＣ５ａの出力信号Ｓａは、ロータ７の実際の回転角θａが０度の時にＨレベルからＬレベルへと変化し、１８０度の時にＬレベルからＨレベルへと変化する。同様に、図３に示すように配置されたホールＩＣ５ｃ，５ｂは、図４（ｄ）（ｅ）に示すような出力信号Ｓｃ，Ｓｂをそれぞれ生成する。ホールＩＣ５ｃの出力信号Ｓｃは、ロータ７の実際の回転角θａが６０度の時にＬレベルからＨレベルへと変化し、２４０度の時にＨレベルからＬレベルへと変化する。また、ホールＩＣ５ｂの出力信号Ｓｂは、ロータ７の実際の回転角θａが１２０度の時にＨレベルからＬレベルへと変化し、３００度の時にＬレベルからＨレベルへと変化する。そこで、ロータ回転位置検出部１６２は、これらの出力信号Ｓａ，Ｓｂ，ＳｃをホールＩＣ５ａ〜５ｂから受け取り、これらの出力信号Ｓａ，Ｓｂ，Ｓｃの変化に基づきロータ７の回転角θａを判別することで、検出回転角θｒを６０度間隔で離散的に取得する。
【００３７】
既述の図３（ａ）（ｂ）では、出力信号がＨレベルからＬレベルへまたはその逆に変化するホールＩＣに斜線が付されている。例えば、ロータ７が図３（ａ）に示す回転位置にある場合、ロータ回転位置検出部１６２は、ホールＩＣ５ａの出力信号ＳａのＨレベルからＬレベルへの変化に基づき、ロータ７の回転角θａが０度であることを判別できるので（図４（ｃ））、ロータ回転角推定部１６４に対して検出回転角θｒである０度を与える。さらに、ロータ７が時計回り方向に６０度回転すると、図３（ｂ）に示すように斜線を付されたホールＩＣ５ｃの出力信号Ｓｃは、ＬレベルからＨレベルへと変化する。この場合、ロータ回転位置検出部１６２は、この出力信号Ｓｃの変化に基づき、ロータ７の回転角θａが６０度であることを判別できるので（図４（ｄ））、ロータ回転角推定部１６４に対して検出回転角θｒである６０度を与える。
【００３８】
このように、ロータ７が６０度回転する毎に、３つのホールＩＣ５ａ〜５ｃの出力信号Ｓａ〜ＳｃのいずれかがＬレベルからＨレベルへとまたはその逆に変化するので、ロータ回転位置検出部１６２は、これらの出力信号Ｓａ〜Ｓｃの変化に基づき、ロータ回転角推定部１６４に対して検出単位角度である６０度毎に（離散的に）検出回転角θｒを与える。したがって、検出回転角θｒが与えられる場合には、その検出回転角θｒは正確であってそのままロータ回転角として使用することができるが、その値は離散的にしか得られないためその間の値を推定する必要がある。なお、上記説明からわかるように、本実施形態では、３つのホールＩＣ５ａ〜５ｃを含むホールセンサ５とロータ回転位置検出部１６２とにより、ロータ回転角を離散的に検出する回転角離散検出手段が実現されている。
【００３９】
以下では、ホールセンサ５を構成するホールＩＣ５ａ〜５ｃは、上記のような交番検知方式の２値信号出力のホールＩＣであって図３に示すように配置されているものとして説明を進める。しかし、本発明で使用可能なホールセンサはこのような構成に限定されるものではなく、ロータ７の回転角を離散的に検出できる構成であってそのために回転角推定が必要であるものであればよい。例えば、ホールＩＣ５ａ〜５ｃに代えて、図４（ｂ）に示すようにロータ７の回転に従って正弦波状のアナログ信号を出力する３個のホール素子によりホールセンサ５を構成し、これら３個のホール素子を図３に示すホールＩＣ５ａ〜５ｃと同様に配置してもよい。この場合、これら３個のホール素子の出力信号（アナログ信号）からなるセンサ信号をマイコン２０が受け取り、マイコン２０に内蔵されたＡＤ変換器でデジタル信号に変換し、そのデジタル信号に基づきマイコン２０でのソフトウェア処理により検出回転角θｒを離散的に取得する。すなわち、そのソフトウェア処理によりロータ回転位置検出部１６２が実現され、ロータ回転位置検出部１６２は、上記３個のホール素子の出力信号の値が零になる時点（ゼロクロス点）毎に検出回転角θｒを離散的に（６０度毎に）求め、求めた検出回転角θｒをロータ回転角推定部１６４に与える。
【００４０】
ロータ回転角推定部１６４は、ロータ回転位置検出部１６２によって検出された検出回転角θｒに対して、現時点におけるロータ回転角を正確に推定する演算を行うことにより、この検出回転角θｒを推定された電気角θｒｅに補正し出力する（この推定された電気角θｒｅは、後述の回転角推定処理等の説明において「回転角推定値θｒｅ」と呼ばれる）。この推定演算については詳しくは後述する。なお、本実施形態では、ロータ７の極対数が１であるため、ロータの電気角は機械角に一致している。またこの極対数は２以上であってもよい。
【００４１】
またロータ回転角推定部１６４は、ロータ回転位置検出部１６２から新たに検出回転角θｒを受け取ると、当該受け取った検出回転角θｒ（今回受け取った検出回転角θｒ）と、前回に受け取った検出回転角θｒ’とを記憶するとともに、前々回にロータ回転位置検出部１６２から検出回転角θｒ''を受け取った時点から前回の時点までの時間間隔ΔＴk-1 と、前回の時点から今回の時点までの時間間隔ΔＴk とを記憶する。これらの値はロータ回転角の推定のために使用されるが、詳しくは後述する。さらにロータ回転角推定部１６４は、トルクセンサ３からの操舵トルクＴを受け取り（図２参照）、この操舵トルクＴもロータ７の回転角の推定に使用する。この詳細も後述する。なお、ロータ回転角推定部１６４が受け取る操舵トルクＴは、より一般的には、モータの駆動対象に加えられるトルクのうちモータトルク以外のトルクすなわち非モータトルクと言うべきものである。
【００４２】
基本アシスト制御部１８０は、アシストマップと呼ばれる、操舵トルクと目標電流値とを対応づけるテーブルを参照し、操舵トルクＴと車速Ｓとに基づいて、ブラシレスモータ１に流すべき電流の目標値である目標電流値Ｉｔを決定する。モータ電流指令値演算部１８８は、目標電流値Ｉｔに基づいてｑ軸電流指令値ｉｑ*を出力する。このｑ軸電流指令値ｉｑ*は、ブラシレスモータ１が発生すべきトルクに対応する電流値であり、減算器１２４に入力される。一方、ｄ軸電流指令値ｉｄ*は、トルクに関与しないのでｉｄ*＝０として、減算器１２２に入力される。
【００４３】
Ｕ相電流検出器１５４およびＶ相電流検出器１５６は、それぞれモータのＵ相、Ｖ相の巻き線（本明細書では単に「Ｕ相、Ｖ相」という）に流れる電流を検出し、Ｕ相電流検出値ｉｕとＶ相電流検出値ｉｖとをそれぞれ電圧信号で出力する。これらのＵ相電流検出器１５４およびＶ相電流検出器１５６は、モータ駆動回路１５２からブラシレスモータ１へ繋がる線に対して配置されるが、モータ駆動回路１５２内の各駆動用素子と接地点との間に配置されてもよい。
【００４４】
３相交流／ｄ−ｑ座標変換部１３８は、ロータの電気角θｒｅに基づいて、Ｕ相電流検出値ｉｕおよびＶ相電流検出値ｉｖを、ｄ−ｑ座標上の値であるｄ軸モータ電流値ｉｄおよびｑ軸モータ電流値ｉｑに変換する。このｄ軸モータ電流値ｉｄおよびｑ軸モータ電流値ｉｑは、減算器１２２および減算器１２４にそれぞれ入力される。
【００４５】
減算器１２２では、ｄ軸電流指令値ｉｄ*とｄ軸モータ電流値ｉｄとの偏差ｉｄ*−ｉｄが出力される。そして、ｄ軸電流ＰＩ制御部１２６では、その偏差ｉｄ*−ｉｄに基づく比例積分演算によって、ｄ軸電圧指令値ｖｄ*が出力される。一方、減算器１２４では、ｑ軸電流指令値ｉｑ*とｑ軸モータ電流値ｉｑとの偏差ｉｑ*−ｉｑが出力される。そして、ｑ軸電流ＰＩ制御部１２８では、その偏差ｉｑ*−ｉｑに基づく比例積分演算によって、ｑ軸電圧指令値ｖｑ*が出力される。
【００４６】
ｄ−ｑ／３相交流座標変換部１３２では、ロータ７の電気角θｒｅに基づいて、ｄ軸電圧指令値ｖｄ*およびｑ軸電圧指令値ｖｑ*を、３相交流座標上の値であるＵ相電圧指令値ｖｕ*およびＶ相電圧指令値ｖｖ*に変換する。そして、符号反転加算器１３４は、Ｕ相電圧指令値ｖｕ*およびＶ相電圧指令値ｖｖ*からＷ相電圧指令値ｖｗ*を算出する。
【００４７】
ＰＷＭ信号生成回路１５０は、Ｕ相電圧指令値ｖｕ*、Ｖ相電圧指令値ｖｖ*、Ｗ相電圧指令値ｖｗ*を受け取り、それらの指令値に応じてデューティ比の変化するＰＷＭ信号Ｓｕ、Ｓｖ、Ｓｗを生成する。モータ駆動回路１５２では、そのＰＷＭ信号Ｓｕ、Ｓｖ、Ｓｗによってスイッチング素子がオン／オフされ、それにより、デューティ比に応じた電圧ｖｕ、ｖｖ、ｖｗがブラシレスモータ１のＵ相、Ｖ相、Ｗ相にそれぞれ印加される。
【００４８】
＜２．２  モータ制御処理＞
図５は、本実施形態においてモータ１の駆動を制御するためのモータ制御部をソフトウェア的に実現するためにマイコン２０によって実行されるモータ制御処理を示すフローチャートである。このモータ制御処理では、まず、車両情報等のモータ制御に必要な情報が取得される（ステップＳ２）。ここで取得される情報には、ｄ軸電流ＰＩ制御部１２６およびｑ軸電流ＰＩ制御部１２８での演算やロータ回転位置検出部１６２での検出回転角θｒの決定に必要なパラメータ値などが含まれる。後述の回転角推定処理（図６、図７参照）で使用されるフラグや変数等も当該ステップＳ２で初期化され（例えばＦｒ＝０、ｔ＝０、ｔn-1＝０、ωｅ＝０、θｒ＝０、Ｄｉｒ＝１等）、当該回転角推定処理で使用される定数についても適切な値が設定される（例えばＧの設定等）。なお、マイコン２０はタイマーを内蔵しており、このタイマーを当該ステップＳ２でスタートさせることにより、時刻を示す変数ｔが０に初期化される。
【００４９】
このようなステップＳ２の実行後は、ステップＳ３において、各センサ３，４および電流検出器１５４，１５６からの出力信号に基づき、モータ１に流すべき電流の目標値（電流目標値）Ｉｔを算出する周期である制御周期毎に、操舵トルクＴ，車速Ｓ，Ｕ相電流検出値ｉｕ，Ｖ相電流検出値ｉｖが取得される。またステップＳ３において、ホールＩＣ５ａ〜５ｃの出力信号からなるホールセンサ５のセンサ信号に基づきモータ１におけるロータ７の電気角が離散的に検出される。すなわち、図２に示したロータ回転位置検出部１６２はステップＳ３により実現されている。ここで離散的に検出された当該電気角は、検出回転角θｒとして、後述の回転角推定処理により実現されるロータ回転角推定部１６４に与えられる。以下では、現時点で既に取得されている検出回転角θｒを、現時点以降で取得される検出回転角θｒと区別するために「検出済回転角θｒ」という。なお、上記の制御周期は、検出回転角θｒが取得される時間間隔すなわちロータ７の電気角が離散的に検出される時間間隔に比べて非常に短い。
【００５０】
次のステップＳ４では、ロータ回転角推定部１６４を実現するための回転角推定処理が実行され、これによりモータ１におけるロータ７の電気角の推定値を示す回転角推定値θｒｅが算出される。
【００５１】
その後、ステップＳ６において、この回転角推定値θｒｅを用いてモータ１の電流制御等のための処理が行われる。すなわちステップＳ６において、操舵トルクＴおよび車速Ｓに基づいて電流目標値Ｉｔが決定され、この電流目標値Ｉｔから、ブラシレスモータ１が発生すべきトルクに対応するｑ軸電流指令値ｉｑ*が決定される。一方、上記の回転角推定値θｒｅを用いて、Ｕ相電流検出値ｉｕおよびＶ相電流検出値ｉｖがｄ−ｑ座標上の値としてのｄ軸モータ電流値ｉｄおよびｑ軸モータ電流値ｉｑに変換される。そして、ｄ軸電流指令値ｉｄ*（＝０）およびｑ軸電流指令値ｉｑ*とｄ軸モータ電流値ｉｄおよびｑ軸モータ電流値ｉｑとに基づく制御演算によってｄ軸電圧指令値ｖｄ*およびｑ軸電圧指令値ｖｑ*が算出される。これらは、上記の回転角推定値θｒｅを用いて３相交流座標上の値としての各相の電圧指令値ｖｕ*、ｖｖ*、ｖｗ*に変換され、各相の電圧指令値ｖｕ*、ｖｖ*、ｖｗ*はマイコン２０から出力されてＰＷＭ信号生成回路１５０に与えられる。このようなステップＳ６の処理により、図２に示す目標電流演算部１１４と、減算器１２２，１２４と、ｄ軸電流ＰＩ制御部１２６と、ｑ軸電流ＰＩ制御部１２８と、ｄ−ｑ／３相交流座標変換部１３２と、符号反転加算器１３４と、３相交流／ｄ−ｑ座標変換部１３８とがソフトウェア的に実現される。
【００５２】
上記の電流制御等の処理の後は、ステップＳ３へ戻る。以降、電動パワーステアリング装置におけるモータ制御装置（ＥＣＵ）１０が動作している間、上記の制御周期でステップＳ３，Ｓ４，Ｓ６が繰り返し実行される。
【００５３】
＜２．３  回転角推定処理＞
図６は、本実施形態におけるロータ回転角推定部１６４をソフトウェア的に実現するための回転角推定処理（図５のステップＳ４）の手順を示すフローチャートであり、図７は、この回転角推定処理で使用される推定演算処理の手順を示すフローチャートである。また図８は、本実施形態におけるモータ１のロータ７の回転角推定値θｒｅの変化の例を実際のロータ回転角θａと共に示す波形図である。以下、図５〜図８を参照して本実施形態における回転角推定処理について説明する。既述のように、この回転角推定処理は非常に短い制御周期毎に実行され（図５参照）、この回転角推定処理においてマイコン２０は下記のように動作する。
【００５４】
まず、ステップＳ１０において、ホールセンサ５からのセンサ信号に基づきロータ回転位置検出部１６２（図５のステップＳ３）において算出され離散的に与えられる検出済回転角θｒを受け取ったか否かを判定する。これは、ホールセンサ５とロータ回転位置検出部１６２とにより実現される回転角離散検出手段がロータ回転角を検出したか否かを判定することを意味する。ホールセンサ５の信号検出により得られる検出済回転角θｒを受け取らない場合（ステップＳ１０でＮｏの場合）には、ステップＳ５０に進む。このステップＳ５０の推定演算処理については詳しく後述する。この推定演算処理が行われると、当該回転角推定処理は一旦終了し、次の制御周期が到来すると新たに当該回転角推定処理が開始される。このようにして、制御周期毎に当該回転角推定処理が装置の停止まで繰り返される。
【００５５】
ステップＳ１０での判定の結果、ホールセンサ５の信号検出により離散的に得られる検出済回転角θｒを受け取った場合（ステップＳ１０でＹｅｓの場合）には、受け取った検出済回転角θｒをそのまま回転角推定値θｒｅとし（ステップＳ１１）、その回転角推定値θｒｅを出力する。この回転角推定値θｒｅは、ステップＳ６の処理において使用される。すなわち既述のように、この回転角推定値θｒｅは、ステップＳ６の処理によって実現される３相交流／ｄ−ｑ座標変換部１３８およびｄ−ｑ／３相交流座標変換部１３２に与えられる。
【００５６】
次にステップＳ１２において、ロータ７の回転方向を示す回転方向係数Ｄｉｒに１または−１の値を代入する。具体的には、前回の検出時点ｔk-1（ｔn-2）における回転角推定値θｒｅ’と、今回の検出時点ｔk（ｔn-1）における回転角推定値θｒｅとに基づき、図３の時計回り方向にロータ７が回転していると判定される場合には回転方向係数Ｄｉｒに１を代入し、反時計回り方向にロータ７が回転していると判定される場合には回転方向係数Ｄｉｒに−１を代入する。またθｒｅ’＝θｒｅである場合には、ロータ７の回転方向が途中で反転しているので、それ以前に得られた回転方向係数Ｄｉｒの値の符号を逆にして再び回転方向係数Ｄｉｒに代入する。なお本明細書では、時計回り方向を正方向としてロータ７の回転角や角速度の値が設定されるものとする。また本明細書では、操舵トルクＴの検出時点やロータ７の回転角の検出時点等のように本発明において識別すべき時点は、“ｔn”や“ｔn+1”等のように“ｔ”に“ｎ”を含む添字を付加した記号で示し、これらの時点のうちロータ７の回転角の検出時点については、“ｔk”や“ｔk+1”等のように“ｔ”に“ｋ”を含む添字を付加した記号によっても示すものとする。
【００５７】
次にステップＳ１３において、ステップＳ３で取得された操舵トルクＴの値をトルクτ(ｎ−１)に代入することで、ホールセンサ５の信号検出による検出済回転角θｒの取得時点（以下「回転角検出時点」または単に「検出時点」という）ｔk（ｔn-1）における操舵トルクの情報としてトルクτ(ｎ−１)を取得する（以下、このような操舵トルク情報としてのトルクτ(ｎ−１)の取得を「トルクτ(ｎ−１)の検出」という）。
【００５８】
次にステップＳ１４において、ロータ７の回転方向が前回の検出時点ｔk-1（ｔn-2）から今回の検出時点ｔk（ｔn-1）までの間に反転したか否かを判定する。すなわち、前回の検出時点ｔk-1における回転角推定値θｒｅ’と今回の検出時点ｔkにおける回転角推定値θｒｅとが等しい場合（θｒｅ’＝θｒｅの場合）には、２つの検出時点ｔk-1とｔkの間でロータ７の回転方向が反転したと判定し、θｒｅ’≠θｒｅの場合は、反転していないと判定する。このステップＳ１４での判定の結果、反転していない場合（ステップＳ１４でＮｏの場合）にはステップＳ１６へ進み、反転した場合（ステップＳ１４でＹｅｓの場合）にはステップＳ１８へ進む。
【００５９】
ステップＳ１６に進んだ場合は、後述の角速度推定値ωｅの算出のために導入された時間短縮係数Ｔｃに１を代入した後にステップＳ２０へ進む。一方、ステップＳ１８へ進んだ場合には、前回の回転角検出時点ｔk-1から今回の回転角検出時点ｔkまでの時間間隔ΔＴkが、前々回の回転角検出時点ｔk-2から前回の回転角検出時点ｔk-1までの時間間隔ΔＴk-1よりも大きいか否かを判定する。その判定の結果、時間間隔ΔＴkがΔＴk-1よりも大きい場合には、ステップＳ１９において、時間短縮係数Ｔｃに１／２を代入した後にステップＳ２０へ進み、時間間隔ΔＴkがΔＴk-1以下である場合には、ステップＳ１６において時間短縮係数Ｔｃに１を代入した後にステップＳ２０へ進む。
【００６０】
ステップＳ２０では、次の制御周期以降での回転角推定処理（ステップＳ５０）において回転角推定値θｒｅを算出するために使用する角速度推定値ωｅを下記式（１）により設定し、次にホールセンサ５の信号検出により取得されると予想される検出回転角である検出予定回転θｎｘを下記式（２）により設定する。
ωｅ＝Ｄｉｒ・６０／（ΔＴk・Ｔｃ）    …（１）
θｎｘ＝θｒｅ＋Ｄｉｒ・６０           …（２）
またステップＳ２０において、フラグＦｒに０を代入し、時点ｔn-1に現時点の時刻ｔ（タイマーが示す時刻ｔ）を代入する。なお、ステップＳ２０において上記式（１）により角速度推定値ωｅが決定されることから、ステップＳ２０の実行によりロータ７の回転速度についての速度推定手段が実現される。
【００６１】
上記のステップＳ２０を実行すると、回転角推定処理を一旦終了し、図５のモータ制御処理のルーチンに復帰する。
【００６２】
その後、モータ制御処理におけるステップＳ６を実行し、ステップＳ３に戻る。そして、ステップＳ３を実行した後、再びステップＳ４を実行する。このとき実行されるステップＳ４の回転角推定処理では、ホールセンサ５の信号検出により得られる検出済回転角θｒを受け取らないので（図６のステップＳ１０：Ｎｏ）、ステップＳ５０に進み、推定演算処理を実行する。
【００６３】
この推定演算処理においてマイコン２０は、図７に示すフローチャートに従って以下のように動作する。なお以下では、ロータ回転角の推定のうち、ロータ７がその回転角の直前の検出時点ｔk（ｔn-1）での回転方向と同じ方向に回転すると想定されたロータ回転角の推定を「順方向推定」と呼び、ロータ７がその回転角の直前の検出時点ｔkでの回転方向とは反対の方向に回転すると想定されたロータ回転角の推定を「逆方向推定」と呼ぶものとする（他の実施形態においても同様）。
【００６４】
図７の推定演算処理では、まずステップＳ２１において、フラグＦｒが１か否かを判定する。既述のように、ホールセンサの信号検出により離散的に得られる検出済回転角θｒを受け取ると（ロータ回転角が新たに検出されると）フラグＦｒに０が代入される（図６のステップＳ２０）。この場合、ステップＳ２１での判定の結果、ステップＳ２２へ進み、上記の検出済回転角θｒおよび現時点の時刻ｔとステップＳ２０で得られた角速度推定値ωｅとを用いて、下記式で示される順方向推定演算により回転角推定値θｒｅを算出する。
θｒｅ＝θｒ＋ωｅ・（ｔ−ｔn-1）    …（３）
これは、図８（ａ）（ｂ）に示すように、ロータ７が角速度推定値ωｅの速度で回転するものとして回転角θｒの検出時点ｔn-1（ｔk）以降におけるロータ７の回転角を推定することを意味する。
【００６５】
次にステップＳ２４において、上記のように算出される回転角推定値θｒｅの検出済回転角θｒからの偏差（回転角推定値θｒｅと検出済回転角θｒとの差の絶対値）｜θｒｅ−θｒ｜が６０度以上であるか否かを判定する。この判定の結果、当該偏差｜θｒｅ−θｒ｜が６０度よりも小さい場合には、当該推定演算処理（Ｓ５０）を終了し、図６の回転角推定処理のルーチンに復帰し、そこから更に図５のモータ制御処理のルーチンに復帰し、ステップＳ６以降の処理を実行する。
【００６６】
その後、次の制御周期において回転角推定処理（Ｓ４）が開始されると、まず、図６のステップＳ１０において、ホールセンサ５の信号検出により得られる新たな検出済回転角θｒを受け取ったか否かを判定する。既述のように、ロータ回転角は６０度毎に離散的に得られるので、一旦、ホールセンサ５の信号検出により得られる検出済回転角θｒを受け取ると、次に新たな検出済回転角θｒを受け取るまでは、ステップＳ１０でＮｏと判定されて、制御周期毎に図７の推定演算処理におけるステップＳ２１→Ｓ２２→Ｓ２４を実行する。
【００６７】
その結果、制御周期毎にステップＳ２２において順方向推定演算処理（式（３））により回転角推定値θｒｅが更新されていく。そして、回転角検出値θｒｅが検出予定回転角θｎｘ（図６のステップＳ２０で設定）に達すると、上記偏差｜θｒｅ−θｒ｜が６０度となるので、ステップＳ２４においてＹｅｓと判定され、ステップＳ２６へ進む。
【００６８】
ステップＳ２６では、現時点の時刻ｔを回転角推定値θｒｅが検出予定回転角θｎｘに達した時点ｔnとし、この時点ｔn以降においてロータ７の回転方向が反転するとみなして回転角推定値θｒｅを算出するために、すなわち逆方向推定演算により回転角推定値θｒｅを算出するために、フラグＦｒに１を代入する。また次のステップＳ２８において、当該制御周期にステップＳ３で取得された操舵トルクＴの値をトルクτ(ｎ)に代入することで、この時点ｔnにおける操舵トルクの情報としてトルクτ(ｎ)を取得する（トルクτ(ｎ)の検出）。
【００６９】
次にステップＳ３１において、検出済回転角θｒが取得された時点すなわちロータ回転角の直前の検出時点（以下「直前検出時点」という）ｔn-1（ｔk）におけるトルクτ(ｎ−１)と、回転角推定値θｒｅが検出予定回転角θｎｘに達した時点（以下「検出予定回転角到達時点」という）ｔnにおけるトルクτ(ｎ)と、直前検出時点ｔn-1（ｔk）で算出された角速度推定値ωｅ（ステップＳ２０参照）とから、ロータ７の回転方向が直前検出時点ｔn-1（ｔk）と検出予定回転角到達時点ｔnとの間で反転したか否かを判定（推定）する。具体的には、上記のトルクτ(ｎ−１)とトルクτ(ｎ)との積Ｓ(ｎ)＝τ(ｎ−１)・τ(ｎ)の正負、および、上記の角速度推定値ωｅが予め決められた所定角速度値ωｏよりも大きいか否かにより、下記のように判定する。
（１）Ｓ(ｎ)＞０または|ωｅ|＞ωｏであれば、回転方向は反転していないと判定する。
（２）Ｓ(ｎ)＜０かつ|ωｅ|≦ωｏであれば、回転方向が反転したと判定する。
上記（１）（２）の判定は、直前検出時点ｔn-1（ｔk）および検出予定回転角到達時点ｔnにおける操舵トルクＴの向きと角速度推定値ωｅの大きさとに基づき、ロータ７の回転方向が反転したか否かを推定することを意味する。ここで、所定角速度値ωｏ（＞０）は、電動パワーステアリング装置において通常の運転者が操作する場合の通常の角速度相当値であり、例えば１５０ｒｐｍ程度であるが、個々の装置毎に適切な所定角速度値ωｏが実験やシミュレーション等により決定される。このようなステップＳ３１がマイコン２０によって実行されることにより、ロータの回転方向が反転したか否かを推定する反転推定手段が実現される。
【００７０】
ステップＳ３１での判定の結果、回転方向が反転していないと推定される場合すなわち上記（１）の場合には、操舵トルクの変化がロータ７の角速度の変化に影響し、次式で与えられる操舵トルクの変化量Δτ(ｎ)の絶対値が大きいほどロータ７の回転が減速しているとみなす。
Δτ(ｎ)＝τ(ｎ)−τ(ｎ−１)    …（４）
この場合、本実施形態では、回転角推定値θｒｅは、検出予定回転角到達時点ｔn以降は検出済回転角θｒの方向に戻るように角速度−ωｅで変化するものとし、次式で与えられる角度量Δθだけ検出予定回転角θｎｘから変化すると、その後は、図８（ａ）に示すように、次にロータ回転角が検出されるまで（ステップＳ１０でＹｅｓと判定されるまで）変化せず一定値に維持される。
Δθ＝Ｇ×｜Δτ(ｎ)｜    …（５）
ここで、Ｇは所定の定数であり、その具体的な値は、実験またはシミュレーション等によって適切に設定される。下記のように、回転方向が反転していると判定された場合には、角度量Δθは６０／２＝３０［度］に設定されるので、上記式（５）で与えられる角度量Δθが３０［度］よりも小さくなるように定数Ｇの値が設定される（０＜Δθ＜３０）。
【００７１】
一方、ステップＳ３１での判定の結果、回転方向が反転していると推定される場合すなわち上記（２）の場合には、本実施形態では、回転角推定値θｒｅは、検出予定回転角到達時点ｔn以降は上記（１）の場合と同様、検出済回転角θｒの方向に戻るように角速度−ωｅで変化するものとする。このような戻し処理は、図８（ｂ）に示すように、回転角推定値θｒｅが検出予定回転角θｎｘと検出済回転角θｒとの真ん中に相当する回転角（θｎｘ＋θｒｅ）／２＝９０［度］に達するまで、すなわち角度量Δθ＝６０／２＝３０［度］だけ変化するまで継続する。その後、回転角推定値θｒｅは、次にロータ回転角が検出されるまで（ステップＳ１０でＹｅｓと判定されるまで）変化せず一定値（９０［度］）に維持される。
【００７２】
本実施形態において上記のようにロータ回転角を推定するために、マイコン２０は、図７に示すフローチャートに従って以下の同様に動作する。
【００７３】
まず、ステップＳ３１でロータ７の回転方向が反転したと判定された場合には、ステップＳ３２へ進んで、上記の角度量Δθを上記式（５）に示すように設定し、その後に当該推定演算処理（Ｓ５０）を終了する。一方、ロータ７の回転方向が反転していないと判定された場合には、ステップＳ３４へ進んで、上記の角度量Δθを３０［度］に設定し、その後に当該推定演算処理（Ｓ５０）を終了する。このようにして当該推定演算処理を終了すると、図６の回転角推定処理のルーチンに復帰し、そこから更に図５のモータ制御処理のルーチンに復帰する。
【００７４】
その後、ホールセンサ５の信号検出により得られる新たな検出済回転角θｒを受け取るまでは（ロータ回転角が新たに検出されるまでは）、制御周期毎に図７の推定演算処理を実行する（図６のＳ１０，Ｓ５０参照）。この間、フラグＦｒ＝１であるので、ステップＳ２１でＹｅｓと判定されて、ステップＳ３６へ進む。
【００７５】
ステップＳ３６では、回転角推定値θｒｅの検出済回転角θｒからの偏差｜θｒｅ−θｒ｜が（ステップＳ３２またはＳ３４で設定される）角度量Δθ以上であるか否かを判定する。
【００７６】
この判定の結果、上記偏差｜θｒｅ−θｒ｜が角度量Δθよりも小さい場合（Ｎｏの場合）には、ステップＳ３８へ進み、検出予定回転角θｎｘと角速度推定値ωｅと検出予定回転角到達時点ｔnからの経過時間ｔ−ｔnとを用いて、下記式で示される逆方向推定演算により回転角推定値θｒｅを算出する。
θｒｅ＝θｎｘ−ωｅ・（ｔ−ｔn）    …（６）
これは、図８（ａ）（ｂ）に示すように、検出予定回転角到達時点ｔnを経過すると、ロータ７が回転方向を反転し角速度推定値ωｅの速度で逆方向に回転するものとみなしてロータ回転角を推定することを意味し、回転角推定値θｒｅは検出済回転角θｒに向かって速度推定値ωｅの速度で変化することになる。このような逆方向推定演算を行った後は、当該推定演算処理（Ｓ５０）を終了する。
【００７７】
このようにして、ホールセンサ５の信号検出により得られる新たな検出済回転角θｒを受け取らなければ、上記偏差｜θｒｅ−θｒ｜が角度量Δθよりも小さい間、ステップＳ３６でＮｏと判定されて、制御周期毎に推定演算処理（Ｓ５０）におけるステップＳ２１→Ｓ３６→Ｓ３８を実行する。その結果、逆方向推定演算処理（式（６））により回転角推定値θｒｅが更新されていく。この間に、回転角推定値θｒｅの検出予定回転角θｎｘからの偏差｜θｒｅ−θｎｘ｜が上記角度量Δθに達すると、ステップＳ３６においてＹｅｓと判定され、上記の逆方向推定演算を行うことなく、そのまま当該推定演算処理を終了する。
【００７８】
したがって、上記の偏差｜θｒｅ−θｎｘ｜が上記角度量Δθに達する時点ｔn+1以降、ホールセンサ５の信号検出により得られる新たな検出済回転角θｒを受け取るまでは、図８（ａ）（ｂ）に示すように、回転角推定値θｒｅは、検出予定回転角θｎｘから上記角度量Δθだけ検出済回転角θｒの方向に変化させた値（θｎｘ−Ｄｉｒ・Δθ）に維持される。ここで角度量Δθは、ステップＳ３１において回転方向が反転していないと推定された場合はＧ×｜Δτ(ｎ)｜であり、反転していると推定された場合は３０［度］である。
【００７９】
制御周期毎に上記のような推定演算処理（Ｓ５０、図７）を繰り返し実行している間に、ホールセンサ５の信号検出により得られる新たな検出済回転角を受け取ると、図６の回転角推定処理におけるステップＳ１０で再びＹｅｓと判定される。この新たな検出済回転角は、ロータ７の回転方向が反転していない場合は、図８（ａ）に示すように、θｒ＋Ｄｉｒ・６０（図８（ａ）の例では１２０度）であり、反転している場合は、図８（ｂ）に示すように、θｒ（図８（ｂ）の例では６０度）である。なお、図８（ａ）（ｂ）では、検出予定回転角到達時点ｔn以降かつ上記偏差｜θｒｅ−θｎｘ｜が上記角度量Δθに達する時点ｔn+1以降においてロータ回転角が新たに検出されるが、直前検出時点ｔn-1（ｔk）以降に操舵トルクの大きさが低減しない場合等には、それらの時点ｔnまたはｔn+1以前にロータ回転角が検出される。
【００８０】
図６の回転角推定処理におけるステップＳ１０で再びＹｅｓと判定された場合には、上記の直前検出時点ｔk（ｔn-1）を前回の検出時点ｔk-1（ｔn-2）に置き換えると共に、新たな検出時点ｔk+1（ｔn+2）を今回の検出時点ｔk（ｔn-1）に置き換え、かつ、新たなロータ回転角の検出前に検出された上記検出回転角θｒを前回の検出済回転角θｒ’に置き換えると共に、新たに検出されたロータ回転角を新たな検出済回転角θｒとして、ステップＳ１１以降の処理を実行する。このときのステップＳ１１以降の処理では、図８（ａ）に示すように、新たな検出済回転角θｒが前回の検出済回転角θｒ’と異なる場合には、ステップＳ１４においてロータ７の回転方向が反転していないと判定し、ステップＳ１６以降のステップを実行する。一方、図８（ｂ）に示すように、新たな検出済回転角θｒが前回の検出済回転角θｒ’に等しい場合には、ステップＳ１４においてロータ７の回転方向が反転したと判定し、ステップＳ１８以降のステップを実行する。なお、今回の検出時点ｔkは、次の制御周期からは「直前検出時点ｔk」と呼ばれる。
【００８１】
以上説明した回転角推定処理（Ｓ４）および推定演算処理（Ｓ５０）は、本実施形態に係るモータ制御装置が動作している間、制御周期毎に実行され（図５）、制御周期毎に得られる回転角推定値θｒｅを用いてモータ１の電流制御が行われる（図２、図５）。
【００８２】
＜２．４  効果＞
上記のように本実施形態では、ホールセンサ５の検出信号に基づき検出回転角θｒが取得された時点ｔkから次に新たな検出回転角が取得される時点ｔk+1までに回転角推定値θｒｅが検出予定回転角θｎｘに達した場合には、その後、回転角推定値θｒｅは、逆方向推定演算（図７のＳ３８）により検出済回転角θｒに向かって変化し（戻し処理が行われ）、検出予定回転角θｎｘから角度量Δθだけ変化した時点ｔn+1で変化を停止し（ステップＳ３６：Ｙｅｓ）、その時点ｔn+1以後は一定値（θｎｘ−Ｄｉｒ・Δθ）に維持される。ここで、検出予定回転角到達時点ｔnにおいてトルク積Ｓ(ｎ)＝τ(ｎ−１)・τ(ｎ)の正負および角速度推定値ωｅに基づきロータ７の回転方向が反転しているか否かが判定される。その判定結果に基づき、回転方向が反転していると推定される場合にはΔθ＝（θｒ＋θｎｘ）／２＝３０となるが、反転していないと推定される場合には、Δθ＝Ｇ×｜Δτ(ｎ)｜となって、角度変化量Δθはトルク変化量Δτ(ｎ)＝τ(ｎ)−τ(ｎ−１)の絶対値に比例する（ステップＳ３１〜Ｓ３４）。
【００８３】
上記のような本実施形態によれば、ロータ７の回転方向が反転する場合に回転角の推定誤差が小さく抑えられるだけでなく（図８（ｂ））、ロータ７の回転方向が反転しない場合において次にロータ回転角が検出されるまでに回転角推定値θｒｅが検出予定回転角θｎｘに達しても、上記の角度量Δθをトルク変化量Δτ(ｎ)の絶対値に応じた値とすることによりロータ回転角の推定誤差が小さく抑えられる（図８（ａ）参照）。その結果、モータ１の発生トルクすなわち本実施形態に係るモータ制御装置を備えた電動パワーステアリング装置における操舵補助力が、必要以上に低下するのを防止し、当該電動パワーステアリング装置において良好な操舵感を得ることができる。
【００８４】
＜３．第２の実施形態＞
＜３．１  モータ制御装置の構成＞
本発明の第２の実施形態に係るモータ制御装置も、上記第１の実施形態と同様、図１に示すように電動パワーステアリング装置において使用され、ＥＣＵ１０を用いて構成されており、ブラシレスモータ１を駆動する。また、このモータ制御装置の構成は、ロータ回転角推定部１６４をソフトウェア的に実現するための図６の回転角推定処理において使用される推定演算処理（Ｓ５０）の手順が異なる点を除き、上記第１の実施形態と実質的に同様である（図２〜図６）。そこで以下では、本実施形態における推定演算処理を中心に説明し、他の部分については同一または対応する構成要素に同一の参照符号を付して詳しい説明を省略する。
【００８５】
＜３．２  回転角推定処理＞
図９は、本実施形態における回転角推定処理（図６）で使用される推定演算処理（Ｓ５０）の手順を示すフローチャートである。また図１０は、本実施形態におけるモータ１のロータ７の回転方向の推定を説明するための波形図であり、図１１は、本実施形態におけるモータ１のロータ７の回転角推定値θｒｅの変化の一例を実際のロータ回転角θａと共に示す波形図である。以下、図５および図６と共に図９〜図１１を参照して本実施形態における回転角推定処理について説明する。既述のように、この回転角推定処理は非常に短い制御周期毎に実行される（図５参照）。この回転角推定処理における各ステップの処理内容は、ステップＳ５０の推定演算処理を除き、第１の実施形態と同様であるので詳しい説明を省略する。
【００８６】
ホールセンサ５からのセンサ信号に基づきロータ回転角が検出されると、その検出時点ｔk（ｔn-1）において図６のステップＳ１１〜Ｓ２０が実行され、これにより、そのときに取得される検出済回転角θｒが回転角推定値θｒｅとして設定されると共に、回転方向係数Ｄｉｒや、トルクτ(ｎ−１)、時間短縮係数Ｔｃ、角速度推定値ωｅ、フラグＦｒ等が設定される。次の制御周期以降での回転角推定処理では、ロータ回転角が新たに検出されるまでは、ステップＳ１０でＮｏと判定される。その結果、ステップＳ５０へ進んで、推定演算処理が実行される。この推定演算処理においてマイコン２０は、図９に示すフローチャートに従って以下のように動作する。
【００８７】
まず、ステップＳ４１においてフラグＦｒが０か否かを判定する。ホールセンサ５の信号検出により得られる新たな検出済回転角θｒを受け取ると（図６のステップＳ１０：Ｙｅｓ）、フラグＦｒに０が代入されるので（ステップＳ２０）、ステップＳ４１ではＹｅｓと判定されてステップＳ４２へ進む。この後、上記第１の実施形態と同様（図７のステップＳ２２，Ｓ２４参照）、式（３）で示される順方向推定演算により回転角推定値θｒｅを算出し、次にステップＳ４４において、回転角推定値θｒｅの検出済回転角θｒからの偏差｜θｒｅ−θｒ｜が６０度以上であるか否かを判定する。この判定の結果、当該偏差｜θｒｅ−θｒ｜が６０度よりも小さい場合には、当該推定演算処理（Ｓ５０）を終了し、図６の回転角推定処理のルーチンに復帰し、そこから更に図５のモータ制御処理のルーチンに復帰する。
【００８８】
その後、制御周期毎に、図６の回転角推定処理におけるステップＳ１０→Ｓ５０および図９のステップＳ４１→Ｓ４４を実行する。その結果、制御周期毎にステップＳ４２において順方向推定演算処理により回転角推定値θｒｅが更新されていく。これは、図１０における直前検出時点ｔn-1から検出予定回転角到達時点ｔnまでにおけるロータ回転角の推定（回転角推定値θｒｅの算出）に相当する。このようなロータ回転角の順方向推定の過程において、ロータ回転角が新たに検出される前に回転角推定値θｒｅが検出予定回転角θｎｘ（図６のステップＳ２０で設定）に達すると、上記偏差｜θｒｅ−θｒ｜が６０度となるので、ステップＳ４４においてＹｅｓと判定し、ステップＳ４６へ進む。
【００８９】
ステップＳ４６では、現時点の時刻ｔを時点ｔnとおき、この時点ｔn以降すなわち検出予定回転角到達時点ｔn以降においてロータ７の回転方向が反転するとみなして逆方向推定演算により回転角推定値θｒｅを算出するために、フラグＦｒに１を代入する。次のステップＳ４８において、当該制御周期に図５のステップＳ３で取得された操舵トルクＴの値をトルクτ(ｎ)に代入することで、この検出予定回転角到達時点ｔnにおける操舵トルクの情報としてトルクτ(ｎ)を取得する（トルクτ(ｎ)の検出）。その後、当該推定演算処理（Ｓ５０）から図６の回転角推定処理のルーチンに復帰し、そこから更に図５のモータ制御処理のルーチンに復帰する。
【００９０】
その後、ロータ回転角が新たに検出されるまでは、制御周期毎に図９の推定演算処理を実行する（図６のＳ１０，Ｓ５０参照）。この時点ではフラグＦｒ＝１であるので（ステップＳ４６参照）、制御周期毎に推定演算処理においてステップＳ４１→Ｓ５１→Ｓ５２→Ｓ５４を実行する。
【００９１】
ステップＳ５２では、式（６）で示される逆方向推定演算により回転角推定値θｒｅを算出し、次にステップＳ５４において、回転角推定値θｒｅの検出済回転角θｒからの偏差｜θｒｅ−θｒ｜が所定の角度量Δθ以上であるか否かを判定する（ただし０＜Δθ＜６０）。この判定の結果、当該偏差｜θｒｅ−θｒ｜が当該角度量Δθよりも小さい場合（Ｎｏの場合）には、当該推定演算処理（Ｓ５０）から図６の回転角推定処理のルーチンに復帰し、そこから更に図５のモータ制御処理のルーチンに復帰する。なお、図１０および図１１に示す動作例では、上記角度量Δθは６０／２＝３０［度］に設定されている。
【００９２】
ステップＳ５４での判定の結果、回転角推定値θｒｅの検出済回転角θｒからの偏差｜θｒｅ−θｒ｜が上記角度量Δθ以上の場合（Ｙｅｓの場合）には、ステップＳ５６へ進む。ステップＳ５６では、現時点の時刻ｔすなわち検出予定回転角θｎｘから検出済回転角θｒの方向に上記角度量Δθだけ変化させた回転角（以下「中間回転角」という）θｎｘ−Ｄｉｒ・Δθに回転角推定値θｒｅが達した時点ｔを中間回転角到達時点ｔn+1とする。次にステップＳ５８において、当該制御周期にステップＳ３で取得された操舵トルクＴの値をトルクτ(ｎ＋１)に代入することで、この中間回転角到達時点ｔn+1における操舵トルクの情報としてトルクτ(ｎ＋１)を取得する（トルクτ(ｎ＋１)の検出）。
【００９３】
次にステップＳ６１において、直前検出時点ｔn-1（ｔk）のトルクτ(ｎ−１)、検出予定回転角到達時点ｔnのトルクτ(ｎ)、および、中間回転角到達時点ｔn+1のトルクτ(ｎ＋１)の正負（符号）の組み合わせから、ロータ７の回転方向が直前検出時点ｔn-1（ｔk）と中間回転角到達時点ｔn+1との間で反転したか否かを判定（推定）する。具体的には、下記のように判定する。
（１）τ(ｎ−１)とτ(ｎ)の符号が互いに異なり、かつ、τ(ｎ−１)とτ(ｎ＋１)の符号が互いに異なる場合には、回転方向が反転していると判定する（図１１（ａ）参照）。
（２）τ(ｎ−１)とτ(ｎ)とτ(ｎ＋１)の符号が互いに同じである場合には、回転方向が反転していないと判定する（図１１（ｂ）参照）。
（３）τ(ｎ−１)とτ(ｎ)の符号が互いに異なり、かつ、τ(ｎ)とτ(ｎ＋１)の符号が互いに異なる場合には、回転方向が反転したか否かは不明であると判定する（図１１（ｃ）参照）。また、τ(ｎ−１)とτ(ｎ)の符号が互いに同じで、かつ、τ(ｎ)とτ(ｎ＋１)の符号が互いに異なる場合も、回転方向が反転したか否かは不明であると判定する。
上記（１）〜（３）の判定は、直前検出時点ｔn-1（ｔk）、検出予定回転角到達時点ｔn、および中間回転角到達時点ｔn+1における操舵トルクの向きに基づき、ロータ７の回転方向が反転したか否かを推定することを意味する。このようなステップＳ６１がマイコン２０によって実行されることにより、ロータの回転方向が反転したか否かを推定する反転推定手段が実現される。
【００９４】
ステップＳ６１での判定の結果、回転方向が反転していると推定される場合すなわち上記（１）の場合には、中間回転角到達時点ｔn+1および中間回転角θｎｘ−Ｄｉｒ・Δθを時間および回転位置の起点として逆方向推定演算を行うべく、フラグＦｒに２を代入する（ステップＳ６２）。一方、ステップＳ６１での判定の結果、回転方向が反転していないと推定される場合すなわち上記（２）の場合には、中間回転角到達時点ｔn+1および中間回転角θｎｘ−Ｄｉｒ・Δθを時間および回転位置の起点として順方向推定演算を行うべく、フラグＦｒに４を代入する（ステップＳ６４）。また、ステップＳ６１での判定の結果、回転方向が反転しているか否かが不明である場合（反転の有無を推定できない場合）すなわち上記（３）の場合には、中間回転角到達時点ｔn+1以降において回転角推定値θｒｅを一定値すなわち中間回転角θｎｘ−Ｄｉｒ・Δθに維持すべく、フラグＦｒに３を代入する（ステップＳ６３）。
【００９５】
上記のステップＳ６２，Ｓ６３，Ｓ６４のいずれかが実行された後は、当該推定演算処理から図６の回転角推定処理のルーチンに復帰し、そこから更に図５のモータ制御処理のルーチンに復帰する。
【００９６】
その後、新たにロータ回転角が検出されるまで、制御周期毎に図９の推定演算処理を実行する（図６のＳ１０，Ｓ５０参照）。この間、フラグＦｒの値に応じてロータ７の回転角を推定する。すなわち、フラグＦｒ＝２の場合（回転方向の反転が推定される場合）は、制御周期毎にステップＳ４１→Ｓ５１→Ｓ６６→Ｓ６７を実行し、この中でステップＳ６７において下記式（７）で示される逆方向推定演算を行う。一方、フラグＦｒ＝４の場合（回転方向の非反転が推定される場合）は、制御周期毎にステップＳ４１→Ｓ５１→Ｓ６６→Ｓ６８→Ｓ６９を実行し、この中でステップＳ６９において下記式（８）で示される順方向推定演算を行う。また、フラグＦｒ＝３の場合（回転方向が反転したか否かが不明の場合）は、制御周期毎にステップＳ４１→Ｓ５１→Ｓ６６→Ｓ６８を実行し、逆方向推定演算も順方向推定演算も行わないので回転角推定値θｒｅは変化しない。なお既述のように、回転方向係数Ｄｉｒは、直前検出時点ｔk（ｔn-1）におけるロータ７の回転方向が時計回り方向か否かに応じて＋１または−１となっている。
θｒｅ＝θｎｘ−Ｄｉｒ・Δθ−ωｅ・（ｔ−ｔn+1）    …（７）
θｒｅ＝θｎｘ−Ｄｉｒ・Δθ＋ωｅ・（ｔ−ｔn+1）    …（８）
【００９７】
このような処理により、図１０に示す動作例における回転角推定値θｒｅは、フラグＦｒ＝２の場合には図１１（ａ）に示すように変化し、フラグＦｒ＝４の場合には図１１（ｂ）に示すように変化し、フラグＦｒ＝３の場合には図１１（ｃ）に示すように変化する。
【００９８】
上記のような回転角推定処理（図６）および推定演算処理（図９）を制御周期毎に繰り返し実行している間に、新たにロータ回転角が検出されると、図６の回転角推定処理におけるステップＳ１０で再びＹｅｓと判定される。この場合、上記の直前検出時点ｔk（ｔn-1）を前回の検出時点ｔk-1（ｔn-2）に置き換えると共に、新たな検出時点ｔk+1（ｔn+2）を今回の検出時点ｔk（ｔn-1）に置き換え、かつ、ロータ回転角の新たな検出前に検出された上記検出回転角θｒを前回の検出済回転角θｒ’に置き換える共に、新たに検出されたロータ回転角を新たな検出済回転角θｒとして、以上説明したステップＳ１１以降の処理を実行する。なお、今回の検出時点ｔkは、次の制御周期からは「直前検出時点ｔk」と呼ばれる。
【００９９】
＜３．３  効果＞
上記のように本実施形態では、ホールセンサ５の検出信号に基づき検出済回転角θｒが取得された時点ｔk（ｔn-1）から次に新たな検出済回転角が取得される時点ｔk+1までに回転角推定値θｒｅが検出予定回転角θｎｘに達した場合には、その後、回転角推定値θｒｅは、逆方向推定演算（図９のＳ５２）により検出済回転角θｒに向かって変化し（戻し処理が行われ）、検出予定回転角θｎｘから所定の角度量Δθ（図１０では３０度）だけ変化した時点ｔn+1において、直前検出時点ｔn-1（ｔk）のトルクτ(ｎ−１)、検出予定回転角到達時点ｔnのトルクτ(ｎ)、および、中間回転角到達時点ｔn+1のトルクτ(ｎ＋１)の正負（符号）に基づき、ロータ７の回転方向が直前検出時点ｔn-1と中間回転角到達時点ｔn+1との間で反転したか否かが判定される。中間回転角到達時点ｔn+1以降の回転角推定値θｒｅは、その判定結果に応じて、逆方向推定演算もしくは順方向推定演算により算出され、または中間回転角に維持される（ステップＳ６１〜Ｓ６９、図１１（ａ）〜（ｃ））。
【０１００】
したがって本実施形態によれば、ロータ７の回転方向が反転する場合に回転角の推定誤差が抑制されるだけでなく（図１１（ａ））、ロータ７の回転方向が反転しない場合において次にロータ回転角が検出されるまでに回転角推定値θｒｅが検出予定回転角θｎｘに達しても、中間回転角到達時点ｔn+1以降で順方向推定演算を行うことによりロータ回転角の推定誤差が小さく抑えられる（図１１（ｂ））。また、ロータ７の回転方向が反転するか否かを明確に判定できない場合であっても、回転角推定値θｒｅを中間回転角到達時点ｔn+1以降で一定値（中間回転角）に維持することで推定誤差の増大が抑制される（図１１（ｃ））。このような回転角推定処理により、モータ１の発生トルクすなわち本実施形態に係るモータ制御装置を備えた電動パワーステアリング装置における操舵補助力が、必要以上に低下するのを防止し、当該電動パワーステアリング装置において良好な操舵感を得ることができる。
【０１０１】
＜４．第３の実施形態＞
上記第１および第２の実施形態のようにホールセンサ５等の信号検出により離散的に得られる検出回転角に基づき現時点のロータ回転角を推定する構成では、或る時点で検出回転角を得てから次に検出回転角を得るまでの間にロータが停止する場合や、極めて低い速度でロータが回転する場合には、図１３（ｆ）に示すように、回転角推定値θｒｅが２つの回転角の間を何度も往復することになる（図１３（ｆ）の動作例では、回転角推定値θｒｅが２つの検出回転角６０度と１２０度との間で往復を繰り返す）。ロータ回転角の推定結果がこのようになると、その回転角推定値θｒｅを用いて駆動されるブラシレスモータの出力トルク（モータトルク）が振動し、そのブラシレスモータを搭載した電動パワーステアリング装置における操舵感が劣化する。そこで、本発明の第３の実施形態に係るモータ制御装置は、このような問題を解決すべく、ロータが停止する場合等であってもモータトルクの振動を抑制しモータを安定的に制御できるように構成されている。以下、このような第３の実施形態に係るモータ制御装置について説明する。
【０１０２】
＜４．１  モータ制御装置の構成＞
本実施形態に係るモータ制御装置も、上記第１の実施形態と同様、図１に示すように電動パワーステアリング装置において使用され、ＥＣＵ１０を用いて構成されており、ブラシレスモータ１を駆動する。また、このモータ制御装置の構成は、ロータ回転角推定部１６４をソフトウェア的に実現するための図６の回転角推定処理において使用される推定演算処理（Ｓ５０）の手順が異なる点を除き、上記第１の実施形態と基本的に同様である（図２〜図６）。そこで以下では、本実施形態における推定演算処理を中心に説明し、他の部分については同一または対応する構成要素に同一の参照符号を付して詳しい説明を省略する。ただし本実施形態には、図６のステップＳ２０の内容等においても第１の実施形態と若干異なる点がある。その点については以下で必要に応じて説明する。
【０１０３】
＜４．２  回転角推定処理＞
図１２は、本実施形態における回転角推定処理（図６）で使用される推定演算処理（Ｓ５０）の手順を示すフローチャートであり、図１３は、本実施形態における回転角推定処理を説明するための波形図である。以下、図５および図６と共に図１２および図１３を参照して本実施形態における回転角推定処理について説明する。なお、図１３（ａ）〜（ｃ）に示す信号波形を生成するホール素子Ｈ１，Ｈ２，Ｈ３は、図３に示すホールＩＣ５ｂ，５ａ，５ｃにそれぞれ対応している。
【０１０４】
既述のように、図６の回転角推定処理は非常に短い制御周期毎に実行される（図５参照）。この回転角推定処理における各ステップの処理内容は、ステップＳ５０の推定演算処理を除き、第１の実施形態と同様であるので詳しい説明を省略する。
【０１０５】
ホールセンサ５からのセンサ信号に基づきロータ回転角が検出されると、その検出時点ｔk（ｔn-1）において図６のステップＳ１１〜Ｓ２０が実行され、これにより、そのときに取得される検出済回転角θｒが回転角推定値θｒｅとして設定されると共に、回転方向係数Ｄｉｒや、トルクτ(ｎ−１)、時間短縮係数Ｔｃ、角速度推定値ωｅ、フラグＦｒ等が設定される。ただし本実施形態では、第１の実施形態とは異なり、以後に実行される順方向推定演算および逆方向推定演算（図１２参照）において時間および回転位置の起点とする基準時点ｔｂおよび基準回転角θｂにもその検出時点ｔkで値が設定される。すなわち本実施形態では、図６のステップＳ２０における処理は、下記式による角速度推定値ωｅ、角速度推定値低減係数Ｇａ、フラグＦｒ、基準時点ｔｂおよび基準回転角θｂの値の設定（もしくは初期化）と置き換えられる。なお、下記式は、第１の実施形態における式（図６のステップＳ２０）と同一のものも含んでいる。また、角速度推定値低減係数Ｇａは本実施形態で新たに導入されたもので、以後に実行される順方向推定演算および逆方向推定演算で使用される角速度推定値ωｅの絶対値を順次低減するための係数である。この角速度推定値低減係数Ｇａは、本実施例では下記に示すようにＧａ＝０．５であるが、これに限定されるものではなく、１よりも小さい正数であればよい。また、この角速度推定値低減係数Ｇａは、必ずしも固定値である必要はなく、０＜Ｇａ＜１を満たす範囲で変化させてもよい。
ωｅ←Ｄｉｒ・６０／（ΔＴk・Ｔｃ）    …（９）
θｎｘ←θｒｅ＋Ｄｉｒ・６０          …（１０）
θｂ←θｒ                            …（１１）
Ｇａ←０．５                          …（１２）
Ｆｒ←０                              …（１３）
ｔｂ←ｔ                              …（１４）
【０１０６】
次の制御周期以降における回転角推定処理では、新たにロータ回転角が検出されるまではステップＳ１０でＮｏと判定される。その結果、ステップＳ５０へ進んで、推定演算処理が実行される。この推定演算処理においてマイコン２０は、図１２に示すフローチャートに従って以下のように動作する。
【０１０７】
上記第１および第２の実施形態と同様、新たにロータ回転角が検出された直後（新たな検出済回転角θｒの取得直後）は、図６のステップＳ１０でＹｅｓと判定され、ステップＳ２０においてフラグＦｒに０を代入する。このため、直前検出時点ｔk以降、回転角推定値θｒｅが検出予定回転角θｎｘに達するまで（｜θｒｅ−θｂ｜≧６０となるまで）は、制御周期毎に図１２の推定演算処理においてステップＳ７１→Ｓ７２→Ｓ７４を実行する。このときステップＳ７２の順方向推定演算では、次式により回転角推定値θｒｅを算出して更新する。
θｒｅ＝θｂ＋ωｅ・（ｔ−ｔｂ）    …（１５）
【０１０８】
上記式（１５）による回転角推定値θｒｅの更新は、図１３に示すように、直前検出時点ｔk以降においてロータ７が角速度ωｅで回転しているとみなしてロータ回転角を推定することを意味する。
【０１０９】
このようなロータ回転角の順方向推定の過程において、新たにロータ回転角が検出される前に回転角推定値θｒｅが検出予定回転角θｎｘ（図１３の例では１２０度）に達すると、回転角推定値θｒｅの基準回転角θｂからの偏差｜θｒｅ−θｂ｜が６０度となるので、ステップＳ７４においてＹｅｓと判定され、ステップＳ７６へ進む。
【０１１０】
ステップＳ７６では、現時点の時刻ｔを基準時点ｔｂとおき、この基準時点ｔｂ以降すなわち検出予定回転角到達時点ｔn以降においてロータ７の回転方向が反転するとみなす。この想定の下で後述の逆方向推定演算により回転角推定値θｒｅを算出するために、フラグＦｒに１を代入すると共に、検出予定回転角θｎｘを新たな基準回転角θｂとするために次式により基準回転角θｂを更新する。
θｂ←θｂ＋Ｄｉｒ・６０    …（１６）
【０１１１】
次にステップＳ７８において、下記式により角速度推定値ωｅを更新することにより、次に実行される逆方向推定演算で使用される角速度推定値ωｅの大きさ（絶対値）を低減する（本実施例ではＧａ＝０．５であり一般的には０＜Ｇａ＜１）。
ωｅ←Ｇａ・ωｅ    …（１７）
その後、当該推定演算処理（Ｓ５０）から図６の回転角推定処理のルーチンに復帰し、そこから更に図５のモータ制御処理のルーチンに復帰する。
【０１１２】
その後、新たにロータ回転角が検出されるまでは、制御周期毎に図１２の推定演算処理を実行する（図６のＳ１０，Ｓ５０参照）。この時点ではフラグＦｒ＝１であるので（ステップＳ７６参照）、回転角推定値θｒｅの基準回転角θｂからの偏差が所定の角度量Δθに達するまで（｜θｒｅ−θｂ｜≧Δθとなるまで）は、制御周期毎に推定演算処理においてステップＳ７１→Ｓ８１→Ｓ８２→Ｓ８４を実行する。このときステップＳ８２の逆方向推定演算では、次式により回転角推定値θｒｅを算出し更新する。
θｒｅ＝θｂ−ωｅ・（ｔ−ｔｂ）    …（１８）
【０１１３】
上記式（１８）による回転角推定値θｒｅの更新は、図１３に示すように、検出予定回転角θｎｘ（図１３では１２０度）を起点としてロータ７が角速度−ωｅで回転しているとみなしてロータ回転角を推定することを意味する。この逆方向のロータ回転角推定の前に、ステップＳ７８において上記式（１７）により角速度推定値ωｅの大きさが角速度推定値低減係数Ｇａを用いて低減されているので、回転角推定値θｒｅの変化速度は、直前の順方向のロータ角推定における変化速度のＧａ倍の速度に低減されている（本実施例ではＧａ＝０．５）。
【０１１４】
このような逆方向のロータ回転角推定の過程において、新たにロータ回転角が検出される前に回転角推定値θｒｅの基準回転角θｂからの偏差｜θｒｅ−θｂ｜が所定の角度量Δθに達すると、ステップＳ８６へ進む（ただし０＜Δθ≦６０）。
【０１１５】
ステップＳ８６では基準時点ｔｂを現時点の時刻ｔに更新し、この新たな基準時点ｔｂ以降においてロータ７の回転方向が更に反転するとみなす。すなわち、直前検出時点ｔkにおける回転方向と同じ方向に回転するとみなす。この想定の下で後述の順方向推定演算により回転角推定値θｒｅを算出するためにフラグＦｒに２を代入すると共に、検出予定回転角θｎｘから検出済回転角θｒに向かって所定の角度量Δθだけ変化した角度を新たな基準回転角θｂとするために次式により基準回転角θｂを更新する。
θｂ←θｂ−Ｄｉｒ・Δθ    …（１９）
【０１１６】
次にステップＳ８８において、既述の式（１７）により角速度推定値ωｅを更新することにより、次に実行される順方向推定演算で使用される角速度推定値ωｅの大きさ（絶対値）を低減する。その後、当該推定演算処理（Ｓ５０）から図６の回転角推定処理のルーチンに復帰し、そこから更に図５のモータ制御処理のルーチンに復帰する。
【０１１７】
その後、次にロータ回転角が検出されるまでは、制御周期毎に図１２の推定演算処理を実行する（図６のＳ１０，Ｓ５０参照）。この時点ではフラグＦｒ＝２であるので（ステップＳ８６参照）、回転角推定値θｒｅの基準回転角θｂからの偏差が上記角度量Δθに達するまで（｜θｒｅ−θｂ｜≧Δθとなるまで）は、制御周期毎に推定演算処理においてステップＳ７１→Ｓ８１→Ｓ９２→Ｓ９４を実行する。このときステップＳ９２の順方向推定演算では、次式により回転角推定値θｒｅを算出し更新する。
θｒｅ＝θｂ＋ωｅ・（ｔ−ｔｂ）    …（２０）
【０１１８】
上記式（２０）による回転角推定値θｒｅの更新は、図１３に示すように、検出予定回転角θｎｘから上記角度量Δθだけ検出済回転角θｒの方向に変化させた値（図１３（ｇ）では６０度）を起点としてロータ７が角速度ωｅで回転しているとみなしてロータ回転角を推定することを意味する。この順方向のロータ回転角推定の前に、ステップＳ８８において上記式（１７）により角速度推定値ωｅの大きさが角速度推定値低減係数Ｇａを用いて低減されているので、回転角推定値θｒｅの変化速度は、直前の逆方向のロータ角推定の過程における変化速度のＧａ倍の速度に低減されている（本実施例ではＧａ＝０．５）。
【０１１９】
このような順方向のロータ回転角推定の過程において、新たにロータ回転角が検出される前に上記偏差｜θｒｅ−θｂ｜が上記角度量Δθに達すると、ステップＳ９６へ進む。
【０１２０】
ステップＳ９６では、基準時点ｔｂを現時点の時刻ｔに更新し、この新たな基準時点ｔｂ以降においてロータ７の回転方向が更に反転するとみなす。すなわち、直前検出時点ｔkにおける回転方向とは反対の方向に回転するとみなす。この想定の下で逆方向推定演算により回転角推定値θｒｅを算出するためにフラグＦｒに１を代入すると共に、現時点の基準回転角θｂから検出予定回転角θｎｘに向かって上記角度量Δθだけ変化した角度を新たな基準回転角θｂとするために次式により基準回転角θｂを更新する。
θｂ←θｂ＋Ｄｉｒ・Δθ    …（２１）
【０１２１】
次にステップＳ９８において、既述の式（１７）により角速度推定値ωｅを更新することにより、次に実行すべき逆方向推定演算で使用される角速度推定値ωｅの大きさ（絶対値）を低減する。その後、当該推定演算処理（Ｓ５０）から図６の回転角推定処理のルーチンに復帰し、そこから更に図５のモータ制御処理のルーチンに復帰する。
【０１２２】
その後、次にロータ回転角が検出されるまでは、制御周期毎に図１２の推定演算処理を実行する（図６のＳ１０，Ｓ５０参照）。この時点ではフラグＦｒ＝１であるので（ステップＳ９６参照）、上記偏差｜θｒｅ−θｂ｜が上記角度量Δθに達するまでは、制御周期毎に推定演算処理においてステップＳ７１→Ｓ８１→Ｓ８２→Ｓ８４を実行する。
【０１２３】
上述の説明からわかるように、これ以降は、上記偏差｜θｂ−θｂ｜が上記角度量Δθに達する毎に、式（１８）による逆方向のロータ回転角推定（ステップＳ８２参照）と、式（２０）による順方向のロータ回転角推定（ステップＳ９２参照）とを交互に繰り返し、このようなロータ回転角推定の過程において回転方向が切り換わる毎に角速度推定値ωｅの大きさ（絶対値）が角速度推定値低減係数Ｇａの比率で順次小さくなっていく。
【０１２４】
上記のような回転角推定処理（図６）および推定演算処理（図１２）を制御周期毎に繰り返し実行している間に、新たにロータ回転角が検出されると、図６の回転角推定処理におけるステップＳ１０で再びＹｅｓと判定される。この場合、上記の直前検出時点ｔkを前回の検出時点ｔk-1に置き換えると共に、新たな検出時点ｔk+1を今回の検出時点ｔkに置き換え、かつ、ロータ回転角の新たな検出前に検出された上記検出回転角θｒを前回の検出済回転角θｒ’に置き換えると共に、新たに検出されたロータ回転角を新たな検出済回転角θｒとして、以上説明したステップＳ１１以降の処理を実行する。なお、今回の検出時点ｔkは、次の制御周期からは「直前検出時点ｔk」と呼ばれる。
【０１２５】
＜４．３  効果＞
上記のように本実施形態では、ホールセンサ５の検出信号に基づき検出済回転角θｒが取得された時点ｔk（ｔn-1）から次に新たな検出済回転角が取得される時点ｔk+1までの期間が長い場合（例えばロータ７が停止している場合やロータ７の回転が極めて遅い場合）には、ロータ回転角の順方向推定の過程で回転角推定値θｒｅが検出予定回転角θｎｘに達したとき、および、ロータ回転角の逆方向推定の過程で回転角推定値θｒｅが検出予定回転角θｎｘから検出済回転角θｒに向かって上記角度量Δθだけ変化した角度に達したときに回転方向が反転したとみなされ、かつ、回転方向が反転したとみなされる毎に回転速度（角速度）の大きさが角速度推定値低減係数Ｇａの比率で低減していくとみなされる（ステップＳ７８，Ｓ８８，Ｓ９８）。しがって、回転角推定値θｒｅは、例えばΔθ＝６０［度］の場合には図１３（ｇ）に示すように変化し、例えばΔθ＝３０［度］の場合には図１３（ｈ）に示すように変化する。なお、上記角度変化量Δθは必ずしも固定値でなくてもよく、例えば上記第１の実施形態におけるように、操舵トルクの変化量Δτ（ｎ）に応じた値としてもよい（式（５）参照）。
【０１２６】
このような本実施形態によれば、ロータ７の回転方向が反転する場合に回転角の推定誤差が抑制されるだけでなく、ロータ７の回転方向が反転せずに途中で停止する場合やロータ７の回転が極めて遅くなった場合であっても、回転角推定値θｒｅが２つの回転角の間で往復を繰り返してモータトルクが振動するという事態を回避または抑制することができる。これにより、ロータ７が途中で停止する場合等であってもモータ１を安定的に制御し、本実施形態に係るモータ制御装置を備えた電動パワーステアリング装置において良好な操舵感を得ることができる。
【０１２７】
＜４．４  変形例＞
＜４．４．１  第１の変形例＞
図１４および図１５は、上記第３の実施形態の第１の変形例における回転角推定処理で使用される推定演算処理の手順を示すフローチャートであり、図１６は、本変形例における回転角推定処理を説明するための波形図である。本変形例は、上記第２の実施形態の特徴的構成を上記第３の実施形態に組み込んだものであり、図１４および図１５に示す推定演算処理以外の構成については、上記第２または第３の実施形態と同様であるので、同一または対応する部分に同一の参照符号を付して詳しい説明を省略する。以下では、図１４〜図１６を参照しつつ本変形例における推定演算処理を中心に説明する。
【０１２８】
本変形例においても、上記第３の実施形態と同様、ホールセンサ５の信号検出により得られる検出済回転角θｒを受け取ると、すなわち新たにロータ回転角が検出されると（図６のステップＳ１０：Ｙｅｓ）、図６の回転角推定処理におけるステップＳ１１以降のステップの実行により、検出済回転角θｒが回転角推定値θｒｅとして設定されると共に、既述の式（９）〜（１４）に従って角速度推定値ωｅや基準時点ｔｂ等が設定される。その後、新たにロータ回転角が検出されるまでは、図６のステップＳ１０でＮｏと判定されて、制御周期毎に図１４および図１５に示す推定演算処理（Ｓ５０）が実行される。このときマイコン２０は、図１４および図１５に示す当該推定演算処理（Ｓ５０）のフローチャートに従って以下のように動作する。
【０１２９】
新たにロータ回転角が検出されなければ、回転角推定値θｒｅの基準回転角θｂに対する偏差｜θｒｅ−θｂ｜が６０度に達するまでは（回転角推定値θｒｅが検出予定回転角θｎｘに達するまでは）、ロータ回転角の順方向推定を行う。回転角推定値θｒｅの基準回転角θｂに対する偏差｜θｒｅ−θｂ｜が６０度に達した後は、ロータ回転角の逆方向推定を行う。これらの順方向および逆方向の推定処理は、ステップＳ７１〜Ｓ７８およびＳ８１〜Ｓ８４によってそれぞれ実現され、これらのステップは、第３の実施形態における推定演算処理（図１２）のステップＳ７１〜Ｓ７８およびＳ８１〜Ｓ８４と実質的に同様である。しかし本変形例では、第２の実施形態の特徴（図９のステップＳ４８）を組み込むべく、トルクτ(ｎ)を検出するためのステップＳ７９が挿入されている。
【０１３０】
上記のロータ回転角の逆方向推定の過程で、回転角推定値θｒｅの検出済回転角θｒからの偏差｜θｒｅ−θｒ｜が所定の角度量Δθに達すると、ステップＳ８４においてＹｅｓと判定されてステップＳ８６へ進む。その後のステップＳ８６，Ｓ８８も第３の実施形態における推定演算処理（図１２）のステップＳ８６，Ｓ８８と実質的に同様である。
【０１３１】
ステップＳ８８の次には、第２の実施形態の特徴（図９のステップＳ５８）を組み込むべく、トルクτ(ｎ＋１)を検出するためのステップＳ８９が挿入されており、更に、第２の実施形態における推定演算処理（図９）のステップＳ６１〜Ｓ６４に相当するステップＳ１０１〜Ｓ１０４が挿入されている。これにより、第２の実施形態と同様、直前検出時点ｔn-1（ｔk）のトルクτ(ｎ−１)、検出予定回転角到達時点ｔnのトルクτ(ｎ)、および、中間回転角到達時点ｔn+1のトルクτ(ｎ＋１)の正負の組み合わせから、ロータ７の回転方向が直前検出時点ｔn-1（ｔk）と中間到達ｔn+1との間で反転したか否かを判定（推定）する。その判定の結果、回転方向が反転していると推定される場合にはフラグＦｒに２を代入し（ステップＳ１０２）、回転方向が反転していないと推定される場合にはフラグＦｒに４を代入し（ステップＳ１０４）、回転方向が反転したか否かは不明である場合にはフラグＦｒに３を代入する（ステップＳ１０３）。
【０１３２】
その後、当該推定演算処理を一旦終了し、次の制御周期以降で当該制御演算処理が開始されたときには、フラグＦｒは２，３，４のいずれかであるので、ステップＳ７１およびＳ８１においてＮｏと判定され、図１５のテップＳ１１０へ進む。これ以降、新たに検出済回転角が取得されるまでは、制御周期毎に、図１５の推定演算処理においてフラグＦｒの値に応じた所定のステップ群による処理が下記のように実行される。
【０１３３】
フラグＦｒ＝２の場合、すなわち図１４のステップＳ１０１での判定の結果、回転方向が反転していると推定される場合には、図１５のステップＳ１１０〜Ｓ１１８によるロータ回転角の逆方向推定とステップＳ１２０〜Ｓ１２８によるロータ回転角の順方向推定とが交互に行われる。その結果、中間回転角到達時点ｔn+1以降、回転角推定値θｒｅは、図１６（ｇ）に示すように、中間回転角θｎｘ−Ｄｉｒ・Δθ（図１６では９０度）と検出済回転角θｒ（図１６では６０度）との間を往復するように変化する。ここで、逆方向推定と順方向推定との間で推定手順が切り換わる毎に、角速度推定値ωｅの大きさが順次小さくなるので（ステップＳ１１８，Ｓ１２８）、回転角推定値θｒｅの変化速度（絶対値）も順次低下する。
【０１３４】
フラグＦｒ＝４の場合、すなわち図１４のステップＳ１０１での判定の結果、回転方向が反転していないと推定される場合には、図１５のステップＳ１３０〜Ｓ１３８によるロータ回転角の順方向推定とステップＳ１４０〜Ｓ１４８によるロータ回転角の逆方向推定とが交互に行われる。その結果、中間回転角到達時点ｔn+1以降、回転角推定値θｒｅは、図１６（ｈ）に示すように、中間回転角θｎｘ−Ｄｉｒ・Δθ（図１６では９０度）と検出予定回転角θｎｘ（図１６では１２０度）との間を往復するように変化する。ここでも、逆方向推定と順方向推定との間で回転方向の推定が切り換わる毎に、角速度推定値ωｅの大きさが順次小さくなるので（ステップＳ１３８，Ｓ１４８）、回転角推定値θｒｅの変化速度（絶対値）も順次低下する。
【０１３５】
フラグＦｒ＝３の場合、すなわち図１４のステップＳ１０１での判定の結果、回転方向が反転したか否かは不明である場合には、図１５の推定演算処理においてステップＳ１１０→Ｓ１２０→Ｓ１３０→Ｓ１４０が制御周期毎に実行されるのみであり、順方向推定演算も逆方向推定演算も行われない。その結果、中間回転角到達時点ｔn+1以降、回転角推定値θｒｅは、図１６（ｉ）に示すように一定値（中間回転角θｎｘ−Ｄｉｒ・Δθ）に維持される。
【０１３６】
図６の回転角推定処理および上記の推定演算処理（図１４、図１５）を制御周期毎に繰り返し実行している間に、ロータ回転角が新たに検出されると、図６の回転角推定処理におけるステップＳ１０で再びＹｅｓと判定される。この場合、上記の直前検出時点ｔkを前回の検出時点ｔk-1に置き換えると共に、新たな検出時点ｔk+1を今回の検出時点ｔkに置き換え、かつ、ロータ回転角の新たな検出前に検出された上記検出回転角θｒを前回の検出済回転角θｒ’に置き換えると共に、新たに検出されたロータ回転角を新たな検出済回転角θｒとして、ステップＳ１１以降の処理を実行する。なお、今回の検出時点ｔkは、次の制御周期からは「直前検出時点ｔk」と呼ばれる。
【０１３７】
上記のような本変形例によれば、ロータ７の回転方向が反転したか否かが中間回転角到達時点ｔn+1において判定（推定）され、回転角推定値θｒｅは、その判定結果に応じて、逆方向推定演算もしくは順方向推定演算により算出され、または中間回転角に維持される（図１４のステップＳ１０１〜Ｓ１０４、図１５のステップＳ１１０〜Ｓ１４８）。また、ロータ回転角について逆方向推定と順方向推定が繰り返し行われる場合には、角速度推定値ωｅの大きさが順次小さくなるので（ステップＳ１１８，Ｓ１２８，Ｓ１３８，Ｓ１４８）、回転角推定値θｒｅの変化速度（絶対値）が順次低下する（図１６（ｇ）（ｈ）（ｉ））。したがって、ロータ７の回転方向が反転するか否かに拘わらず、回転角の推定誤差が抑制されると共に、ロータ７の回転方向が反転せずに途中で停止する場合等であっても、回転角推定値θｒｅが２つの回転角の間を往復してモータトルクが振動するという事態を回避または抑制することができる。
【０１３８】
＜４．４．２  第２の変形例＞
上記第３の実施形態における回転角推定処理（図６）および推定演算処理（図１２）では、ロータ回転角推定の過程において、回転角推定値θｒｅが予め決められた回転角（検出予定回転角θｎｘと中間回転角θｎｘ−Ｄｉｒ・Δθ）に到達すると回転方向が反転するとみなされる（図１３（ｆ）〜（ｈ）参照）。しかし、これに代えて、検出済回転角θｒが得られてから（ロータ回転角が検出されてから）所定時間Ｔｐが経過する毎に回転方向が反転するとみなして回転角推定値θｒｅを算出してもよい。以下、このような構成のモータ制御装置を上記第３の実施形態の第２の変形例として説明する。
【０１３９】
図１７は、本変形例における回転角推定処理で使用される推定演算処理の手順を示すフローチャートである。本変形例の構成のうち図１７の推定演算処理以外の構成については上記第３の実施形態と同様であるので、同一または対応する部分に同一の参照符号を付して詳しい説明を省略する。以下では、図１７を参照しつつ本変形例における推定演算処理を中心に説明する。
【０１４０】
本変形例においても、上記第３の実施形態と同様、ホールセンサ５の信号検出により得られる検出済回転角θｒを受け取ると、すなわちロータ回転角が検出されると（図６のステップＳ１０：Ｙｅｓ）、図６の回転角推定処理におけるステップＳ１１以降のステップの実行により、検出済回転角θｒが回転角推定値θｒｅとして設定されると共に、既述の式（９）〜（１４）に従って角速度推定値ωｅや基準時点ｔｂ等が設定される。その後、新たにロータ回転角が検出されるまでは、図６のステップＳ１０でＮｏと判定されて、制御周期毎に図１７に示す推定演算処理（Ｓ５０）が実行される。このときマイコン２０は、図１７に示す当該推定演算処理（Ｓ５０）のフローチャートに従って動作する。なお、ロータ回転角推定における回転方向の反転タイミング（順方向推定と逆方向推定との間での切り換わりタイミング）を決める時間Ｔｐは、図５のステップＳ２で設定されるものとするが、図６のステップＳ２０で設定してもよい。
【０１４１】
図１７のステップＳ７１〜Ｓ７９は、図１２のステップＳ７１〜Ｓ７８に対応し、本変形例では、図１２のステップＳ７４に代えてステップＳ７５が使用されている。このような本変形例では、制御周期毎に図１７の推定演算処理におけるステップＳ７１→Ｓ７２→Ｓ７５を実行することにより、直前検出時点としての基準時点ｔｂから所定期間Ｔｐが経過するまで、ステップＳ７２の順方向推定演算によりロータ回転角が推定される（以下、この所定時間Ｔｐを「推定周期」という）。
【０１４２】
上記のロータ回転角の順方向推定が推定周期Ｔｐだけ行われると、ステップＳ７７でフラグＦｒに１が代入されるので、それ以後は、ステップＳ７９で設定された推定周期Ｔｐだけロータ回転角の逆方向推定が行われる。すなわち、図１７のステップＳ８２〜Ｓ８９は、図１２のステップＳ８１〜Ｓ８８に対応し、本変形例では、図１２のステップＳ８４に代えてステップＳ８５が使用されている。このような本変形例では、制御周期毎に図１７の推定演算処理におけるステップＳ７１→Ｓ８２→Ｓ８５を実行することにより、ステップＳ７７で更新された基準時点ｔｂからステップＳ７９で更新された推定周期Ｔｐが経過するまで、ステップＳ８２の逆方向推定演算によりロータ回転角が推定される。
【０１４３】
ロータ回転角についての上記の順方向推定と逆方向推定とは推定周期毎に切り換わり（ステップＳ７５，Ｓ８５）、この切り換わり毎に、ロータ回転角推定における回転方向が反転し、角速度推定値ωｅの大きさが順次小さくなるだけでなく、推定周期Ｔｐが順次長くなる（ΔＴｐずつ長くなる）（ステップＳ７９，Ｓ８９）。
【０１４４】
図６の回転角推定処理および上記の推定演算処理（図１７）を制御周期毎に繰り返し実行している間に、新たにロータ回転角が検出されると、図６の回転角推定処理におけるステップＳ１０で再びＹｅｓと判定される。この場合、上記の直前検出時点ｔkを前回の検出時点ｔk-1に置き換えると共に、新たな検出時点ｔk+1を今回の検出時点ｔkに置き換え、かつ、ロータ回転角の新たな検出前に検出された上記検出回転角θｒを前回の検出済回転角θｒ’に置き換えると共に、新たに検出されたロータ回転角を新たな検出済回転角θｒとして、ステップＳ１１以降の処理を実行する。なお、今回の検出時点ｔkは、次の制御周期からは「直前検出時点ｔk」と呼ばれる。
【０１４５】
上記のような本変形例によれば、ロータ回転角について逆方向推定と順方向推定が繰り返し行われる場合には、角速度推定値ωｅの大きさが順次小さくなると共に、推定周期Ｔｐが順次長くなるので（ステップＳ７９，Ｓ８９）、ロータ７の回転方向が反転せずに途中で停止する場合やロータ７の回転が極めて遅くなった場合であっても、回転角推定値θｒｅが２つの回転角の間を往復してモータトルクが振動するという事態を回避または抑制することができる。
【０１４６】
＜４．４．３  他の変形例＞
上記第３の実施形態ならびにその第１および第２の変形例では、角速度推定値ωｅの大きさは、ロータ回転角についての推定手順が逆方向推定と順方向推定の間で切り換わる毎に一定比率で小さくなっていくが（等比数列的に小さくなっていくが）、これに変えて、角速度推定値ωｅの大きさを小さくする比率を示す角速度推定値低減率Ｇａを変化させる（例えば徐々に小さくしていく）ようにしてもよい。
【０１４７】
上記第１の変形例では、回転角推定値θｒｅが予め決められた回転角に到達すると回転方向が反転するとみなされるが（図１３（ｆ）〜（ｈ）参照）、これに代えて、上記第２の変形例のように、ロータ回転角の推定において推定周期Ｔｐ毎に回転方向が反転する（ロータ回転角についての推定手順が逆方向推定と順方向推定の間で切り換わる）ようにしてもよい。
【０１４８】
上記第２の変形例では、ロータ回転角について逆方向推定と順方向推定との間で推定手順を切り変えるための推定周期Ｔｐは、順次長くなっていくが（ステップＳ７９，Ｓ８９）、推定周期Ｔｐを固定値としてもよい。また、上記第２の変形例では、推定周期Ｔｐ毎に推定周期ＴｐがΔＴｐずつ長くなっていく（等差数列的に増大していく）が、推定周期毎Ｔｐに推定周期Ｔｐを所定倍する（等比数列的に増大させる）ようにしてもよい。更にまた、回転角推定値θｒｅが検出済回転角θｒから検出予定回転角θｎｘまで変化するのに要する時間を推定周期Ｔｐとしてもよい。
【０１４９】
＜５．他の実施形態または変形例＞
上記第１〜第３の実施形態では、新たにロータ回転角が検出される前（新たな検出時点ｔk+1前）に回転角推定値θｒｅが検出予定回転角θｎｘに達した場合に、回転角推定値θｒｅは、図８、図１１、図１３にそれぞれ示すように変化する。しかし本発明は、これに限定されるものではなく、新たな検出時点ｔk+1よりも前に回転角推定値θｒｅが検出予定回転角θｎｘに達した場合に、検出回転角到達時点ｔnから新たな検出時点ｔk+1までは回転角推定値θｒｅが検出予定回転角θｎｘを越えないように（｜θｒｅ−θｒ｜≦｜θｎｘ−θｒ｜＝６０となるように）非モータトルクとしての操舵トルクに応じて回転角推定値θｒｅの算出方法が変更される構成であればよい。
【０１５０】
上記第１〜第３の実施形態では、図６の回転角推定処理において期間短縮係数Ｔｃには１／２が代入されるが、これは、ロータ回転角の推定において、現実のロータが前回の検出時点までの角速度と同じ角速度で回転し、かつ次回の検出済回転角が得られると予想される時点の直前でその回転方向が反転し同じ角速度で回転する変化態様を想定しているからである。したがって、ロータの回転方向が反転する場合において、上記態様とは異なるロータ角速度の変化態様を想定することにより、期間短縮係数Ｔｃに１より小さい数値であって１／２以外の数値を代入してもよい。このような場合、途中でロータの回転方向が反転したことから長くなった期間に対してその期間を短くするよう１未満の期間短縮係数Ｔｃを乗算することにより補正すれば、補正された期間に基づき正確な回転角推定値θｒｅを得ることができる。
【０１５１】
上記第１〜第３の実施形態では、ブラシレスモータ１の電気角を示す回転角推定値を算出するように構成されているが、本発明は、電気角の推定に限定されるものではなく、電気角か機械角かに拘わらずロータの回転角を推定する場合に適用可能である。また本発明は、ロータの回転角推定値に基づき駆動される、ブラシレスモータ以外の電動モータのモータ制御装置にも適用できる。
【０１５２】
なお本発明は、上述したコラムアシスト型の電動パワーステアリング装置だけでなく、ピニオンアシスト型やラックアシスト型の電動パワーステアリング装置にも適用できる。また本発明は、電動パワーステアリング装置以外に用いられるモータ制御装置にも適用できる。
【符号の説明】
【０１５３】
５ａ〜５ｃ…ホールＩＣ、６ａ〜６ｃ…ステータ、７…ロータ、２０…マイコン。
【図１】
2011120339.tif 000003
【図２】
2011120339.tif 000004
【図３】
2011120339.tif 000005
【図４】
2011120339.tif 000006
【図５】
2011120339.tif 000007
【図６】
2011120339.tif 000008
【図７】
2011120339.tif 000009
【図８】
2011120339.tif 000010
【図９】
2011120339.tif 000011
【図１０】
2011120339.tif 000012
【図１１】
2011120339.tif 000013
【図１２】
2011120339.tif 000014
【図１３】
2011120339.tif 000015
【図１４】
2011120339.tif 000016
【図１５】
2011120339.tif 000017
【図１６】
2011120339.tif 000018
【図１７】
2011120339.tif 000019