"操舵ハンドルからステアリングシャフトに入力された操舵トルクを検出する操舵トルクセンサと、ステアリング機構に設けられて操舵アシストトルクを発生するための3相ブラシレスモータと、前記3相ブラシレスモータの実電気角を検出するための回転角センサと、前記回転角センサの異常を検出するセンサ異常検出手段と、前記センサ異常検出手段により前記回転角センサの異常が検出されているとき、前記3相ブラシレスモータで発生する誘起電圧の大きさとモータ推定回転方向とに基づいて推定電気角を演算する電気角推定手段と、前記操舵トルクセンサにより検出された操舵トルクに応じた目標操舵アシストトルクを発生させるためのモータ制御値を演算するモータ制御値演算手段と、前記回転角センサの異常が検出されていないときには前記実電気角と前記モータ制御値とに基づいて前記3相ブラシレスモータを駆動制御し、前記回転角センサの異常が検出されているときには前記推定電気角と前記モータ制御値とに基づいて前記3相ブラシレスモータを駆動制御するモータ制御手段とを備えた電動パワーステアリング装置において、前記電気角推定手段は、車両の挙動状態あるいは運転状態を表す車両情報を取得する車両情報取得手段と、前記車両情報取得手段により取得した車両情報に基づいて、前記3相ブラシレスモータの推定回転方向である第1推定回転方向を推定する第1回転方向推定部と、前記3相ブラシレスモータの電機子の固定座標系における誘起電圧ベクトルが移動する方向に基づいて、前記3相ブラシレスモータの推定回転方向である第2推定回転方向を推定する第2回転方向推定部と、前記第2回転方向推定部により推定される第2推定回転方向が有効であるか否かを判定する有効判定部と、前記第1推定回転方向と前記第2推定回転方向とが相違するとき、前記有効判定部により前記第2推定回転方向が有効であると判定されている場合に、前記モータ推定回転方向を前記第1推定回転方向から前記第2推定回転方向に切り替える推定回転方向切替部とを備えたことを特徴とする電動パワーステアリング装置。前記推定回転方向切替部は、前記モータ推定回転方向として前記第1推定回転方向が選択されている状況において、前記第1推定回転方向と前記第2推定回転方向とが相違する場合、前記誘起電圧ベクトルの向く方向から決まる推定電気角と、前記電気角推定手段により演算されている推定電気角とが、予め設定した両者の一致判定条件を満たした時に、前記モータ推定回転方向を前記第1推定回転方向から前記第2推定回転方向に切り替える切替タイミング決定部を備えたことを特徴とする請求項1記載の電動パワーステアリング装置。前記有効判定部は、前記3相ブラシレスモータで発生する誘起電圧の大きさが予め設定した有効判定値以上となる場合に、前記第2推定回転方向が有効であると判定することを特徴とする請求項1または2記載の電動パワーステアリング装置。前記モータ推定回転方向として前記第2推定回転方向が選択されている場合に、前記操舵トルクセンサにより検出された操舵トルクの大きさが予め設定した設定値よりも大きくなった場合には、前記モータ推定回転方向を前記第2推定回転方向から前記第1推定回転方向に切り替えるトルク応答推定回転方向切替部を備えたことを特徴とする請求項1ないし請求項3の何れか一項記載の電動パワーステアリング装置。前記第2推定回転方向が有効であると判定されている場合に前記誘起電圧ベクトルの向く方向から決まる推定電気角と前記電気角推定手段により演算されている推定電気角とのずれが、予め設定した設定角度差以上である場合に、前記設定角度差未満となる場合に比べて、前記モータ制御値を制限するアシスト制限部を備えたことを特徴とする請求項1ないし請求項4の何れか一項記載の電動パワーステアリング装置。前記第2回転方向推定部は、前記電機子の固定座標系平面を前記誘起電圧ベクトルの回転方向にそって等角度で複数の領域に分割し、時系列にしたがって前記誘起電圧ベクトルが入る領域の変化する方向に基づいて前記第2推定回転方向を推定することを特徴とする請求項1ないし請求項5の何れか一項記載の電動パワーステアリング装置。前記誘起電圧の大きさの増加に基づいて、前記一致判定条件を緩くする一致判定条件可変部を備えたことを特徴とする請求項2記載の電動パワーステアリング装置。以下、本発明の一実施形態に係る電動パワーステアリング装置について図面を用いて説明する。図1は、同実施形態に係る車両の電動パワーステアリング装置の概略構成を表している。この電動パワーステアリング装置は、操舵ハンドル11の操舵操作により転舵輪を転舵するステアリング機構10と、ステアリング機構10に組み付けられ操舵アシストトルクを発生するモータ20と、モータ20を駆動するためのモータ駆動回路30と、モータ20の作動を制御する電子制御装置100とを主要部として備えている。以下、電子制御装置100をアシストECU100と呼ぶ。ステアリング機構10は、操舵ハンドル11の回転操作により左右前輪FWL,FWRを転舵するための機構で、操舵ハンドル11を上端に一体回転するように接続したステアリングシャフト12を備える。このステアリングシャフト12の下端には、ピニオンギヤ13が一体回転するように接続されている。ピニオンギヤ13は、ラックバー14に形成されたラック歯と噛み合って、ラックバー14とともにラックアンドピニオン機構を構成する。ラックバー14の両端には、タイロッド15L,15Rを介して左右前輪FWL,FWRのナックル図示略が操舵可能に接続されている。左右前輪FWL,FWRは、ステアリングシャフト12の軸線回りの回転に伴うラックバー14の軸線方向の変位に応じて左右に操舵される。ラックバー14には、モータ20が組み付けられている。このモータ20は、3相ブラシレスDCモータである。モータ20の回転軸は、ボールねじ機構16を介してラックバー14に動力伝達可能に接続されていて、その回転により左右前輪FWL,FWRに転舵力を付与して操舵操作をアシストする。ボールねじ機構16は、減速機および回転-直線変換器として機能するもので、モータ20の回転を減速するとともに直線運動に変換してラックバー14に伝達する。ステアリングシャフト12には、操舵トルクセンサ21が設けられる。操舵トルクセンサ21は、例えば、ステアリングシャフト12の中間部に介装されたトーションバー図示略の捩れ角度をレゾルバ等により検出し、この捩れ角に基づいてステアリングシャフト12に働いた操舵トルクTrを検出する。操舵トルクTrは、正負の値により操舵ハンドル11の操作方向が識別される。例えば、操舵ハンドル11の左方向への操舵時における操舵トルクTrを正の値で、操舵ハンドル11の右方向への操舵時における操舵トルクTrを負の値で示す。尚、本実施形態においては、トーションバーの捩れ角度をレゾルバにより検出するが、エンコーダ等の他の回転角センサにより検出することもできる。モータ20には、回転角センサ22が設けられる。この回転角センサ22は、モータ20内に組み込まれ、モータ20の回転子の回転角度位置に応じた検出信号を出力するもので、例えば、レゾルバにより構成される。回転角センサ22は、モータ20の回転角θmを表す検出信号をアシストECU100に出力する。アシストECU100は、この回転角θmからモータ20の電気角θeを検出する。尚、モータ20の電気角θeは、回転角センサ22により検出された電気角と、後述する推定により求めた電気角との2種類あるため、両者を区別する必要がある場合には、回転角センサ22により検出された電気角を実電気角θeaと呼び、推定により求めた電気角を推定電気角θebと呼ぶ。また、本実施形態においては、回転角センサ22としてレゾルバを使用しているが、エンコーダ等の他の回転角センサを用いることもできる。モータ駆動回路30は、MOS-FETMetalOxideSemiconductorFieldEffectTransistorからなる6個のスイッチング素子31~36により3相インバータ回路を構成したものである。具体的には、第1スイッチング素子31と第2スイッチング素子32とを直列接続した回路と、第3スイッチング素子33と第4スイッチング素子34とを直列接続した回路と、第5スイッチング素子35と第6スイッチング素子36とを直列接続した回路とを並列接続し、各直列回路における2つのスイッチング素子間31-32,33-34,35-36からモータ20への電力供給ライン37を引き出した構成を採用している。モータ駆動回路30には、モータ20に流れる電流を検出する電流センサ38が設けられる。この電流センサ38は、各相U相,V相,W相ごとに流れる電流をそれぞれ検出し、その検出した電流値Iu,Iv,Iwに対応した検出信号をアシストECU100に出力する。以下、この測定された3相の電流値をモータ電流Iuvwと総称する。また、モータ駆動回路30には、モータ20の端子電圧を検出する電圧センサ39が設けられる。電圧センサ39は、各相U相,V相,W相の端子電圧をそれぞれ検出し、その検出した電圧値VuVv,Vwに対応した検出信号をアシストECU100に出力する。以下、この測定された3相の端子電圧をモータ端子電圧Vuvwと総称する。モータ駆動回路30の各スイッチング素子31~36は、それぞれゲートがアシストECU100に接続され、アシストECU100から出力されるPWM制御信号によりデューティ比が制御される。これによりモータ20の駆動電圧が目標電圧に調整される。アシストECU100は、CPU,ROM,RAM等からなるマイクロコンピュータを主要部として構成される。アシストECU100は、操舵トルクセンサ21、回転角センサ22、電流センサ38、電圧センサ39、および、車速を検出する車速センサ25を接続し、操舵トルクTr、回転角θm、モータ電流Iu,Iv,Iw、モータ端子電圧VuVv,Vw、車速vを表す検出信号を入力する。そして、入力した検出信号に基づいて、運転者の操舵操作に応じた最適な操舵アシストトルク以下、単にアシストトルクと呼ぶが得られるようにモータ20に流す指令電流を演算し、その指令電流が流れるようにモータ駆動回路30の各スイッチング素子31~36のデューティ比を制御する。次に、電動パワーステアリング装置の電源供給系統について説明する。電動パワーステアリング装置は、車載電源装置80から電源供給される。車載電源装置80は、定格出力電圧12Vの一般的な車載バッテリである主バッテリ81と、エンジンの回転により発電する定格出力電圧14Vのオルタネータ82とを並列接続して構成される。車載電源装置80には、電源供給元ライン83と接地ライン84が接続される。電源供給元ライン83は、制御系電源ライン85と駆動系電源ライン86とに分岐する。制御系電源ライン85は、アシストECU100に電源供給するための電源ラインとして機能する。駆動系電源ライン86は、モータ駆動回路30とアシストECU100との両方に電源供給する電源ラインとして機能する。制御系電源ライン85には、イグニッションスイッチ87が接続される。駆動系電源ライン86には、主電源リレー88が接続される。この主電源リレー88は、アシストECU100からの制御信号によりオンしてモータ20への電力供給回路を形成するものである。制御系電源ライン85は、アシストECU100の電源端子に接続されるが、その途中で、イグニッションスイッチ87よりも負荷側アシストECU100側においてダイオード89を備えている。このダイオード89は、カソードをアシストECU100側、アノードを車載電源装置80側に向けて設けられ、電源供給方向にのみ通電可能とする逆流防止素子である。駆動系電源ライン86には、主電源リレー88よりも負荷側において制御系電源ライン85と接続する連結ライン90が分岐して設けられる。この連結ライン90には、ダイオード91が接続され、連結ライン90を介して駆動系電源ライン86から制御系電源ライン85には電源供給できるが、制御系電源ライン85から駆動系電源ライン86には電源供給できないような回路構成となっている。駆動系電源ライン86および接地ライン84は、モータ駆動回路30の電源入力部に接続される。また、接地ライン84は、アシストECU100の接地端子にも接続される。次に、アシストECU100が行うモータ20の制御について説明する。アシストECU100は、図4に示すように、モータ20の回転子に設けられた永久磁石の磁界が貫く方向にd軸、d軸に直交する方向d軸に対して電気角がπ/2だけ進んだ方向にq軸を定めたd-q座標系を用いた電流ベクトル制御によってモータ20の回転を制御する。電気角θeは、モータ20のU相コイルを貫く軸とd軸とのなす角で表される。電流ベクトルのd軸成分をd軸電流と呼び、q軸成分をq軸電流と呼ぶ。q軸電流は、q軸方向に磁界が発生するように作用する。従って、q軸電流は、モータトルクを発生させる。一方、d軸電流は、d軸方向に磁界を発生させるため、モータトルクを発生できず、弱め界磁制御に使用される。アシストECU100は、最大のモータトルク効率を得るために、電流ベクトルがq軸上を移動するように電流位相を制御するd軸電流をゼロ。アシストECU100は、こうした電流ベクトル制御を行うにあたって、電気角θeを検出することによりd-q座標軸を定める。この電気角θeは、回転角センサ22により検出される回転角信号から求められるが、回転角センサ22が故障した場合には、電気角θeを求めることができない。そこで、アシストECU100は、回転角センサ22が故障した場合には、後述する処理により推定電気角θebを算出し、その推定電気角θebを使って電流ベクトル制御を行う。この場合、d軸を推定した制御上の軸をd’軸と呼び、q軸を推定した制御上の軸をq’軸と呼ぶ。また、推定電気角θebを使って行うモータ制御をセンサレス制御と呼ぶ。次に、アシストECU100の機能について図2を用いて説明する。図2は、アシストECU100のマイクロコンピュータのプログラム制御により処理される機能を表す機能ブロック図である。各機能部は、所定の短い演算周期で当該処理を繰り返す。アシストECU100は、アシストトルク設定部101を備えている。アシストトルク設定部101は、図5に示すアシストマップを記憶している。アシストマップは、代表的な複数の車速vごとに、操舵トルクTrと目標アシストトルクTとの関係を設定した関係付けデータである。アシストトルク設定部101は、車速センサ25により検出される車速vと、操舵トルクセンサ21により検出される操舵トルクTrを入力しアシストマップを参照して、車速vと操舵トルクTrとから目標アシストトルクTを算出する。尚、図5は、左方向の操舵時におけるアシストマップであって、右方向の操舵時におけるアシストマップは、左方向のものに対して操舵トルクTrと目標アシストトルクTの符号をそれぞれ反対つまり負にしたものとなる。アシストトルク設定部101は、算出した目標アシストトルクTをアシスト電流指令部102に出力する。アシスト電流指令部102は、目標アシストトルクTをトルク定数で除算することにより、d-q座標系におけるq軸指令電流Iqを算出する。また、アシスト電流指令部102は、d軸指令電流IdをゼロId=0に設定する。このように計算されたq軸指令電流Iqとd軸指令電流Idは、フィードバック制御部103に出力される。フィードバック制御部103は、q軸指令電流Iqからq軸実電流Iqを減算した偏差ΔIqを算出し、この偏差ΔIqを使った比例積分制御によりq軸実電流Iqがq軸指令電流Iqに追従するようにq軸指令電圧Vqを計算する。同様に、d軸指令電流Idからd軸実電流Idを減算した偏差ΔIdを算出し、この偏差ΔIdを使った比例積分制御によりd軸実電流Idがd軸指令電流Idに追従するようにd軸指令電圧Vdを計算する。q軸実電流Iqおよびd軸実電流Idは、モータ20のコイルに実際に流れた3相電流の検出値Iu,Iv,Iwをd-q座標の2相電流に変換したものである。この3相電流Iu,Iv,Iwからd-q座標の2相電流Id,Iqへの変換は、3相/2相座標変換部104によって行われる。3相/2相座標変換部104は、電気角選択部132から出力される電気角θeを入力し、その電気角θeに基づいて、電流センサ38により検出した3相電流Iu,Iv,Iwをd-q座標系の2相電流Id,Iqに変換する。3相座標系からd-q座標系に変換する変換行列Cは次式1にて表される。尚、電気角選択部132は、後述するが、回転角センサ22の異常が検出されていないときは、モータ20の実電気角θeaを電気角θeとして出力し、回転角センサ22の異常が検出されているときは、モータ20の推定電気角θebを電気角θeとして出力する。フィードバック制御部103により算出されたq軸指令電圧Vqとd軸指令電圧Vdは、2相/3相座標変換部105に出力される。2相/3相座標変換部105は、電気角選択部132から出力される電気角θeに基づいて、q軸指令電圧Vqとd軸指令電圧Vdを3相指令電圧Vu,Vv,Vwに変換して、その変換した3相指令電圧Vu,Vv,VwをPWM信号発生部106に出力する。PWM信号発生部106は、3相指令電圧Vu,Vv,Vwに対応したPWM制御信号をモータ駆動回路30のスイッチング素子31~36に出力する。これによりモータ20が駆動され、目標アシストトルクTに追従したアシストトルクがステアリング機構10に付与される。回転角センサ22から出力される回転検出信号は、実電気角変換部130とセンサ異常検出部131とに出力される。実電気角変換部130は、回転角センサ22により出力される回転検出信号からモータ20の実電気角θeaを算出し、算出した実電気角θeaを電気角選択部132に出力する。本発明における回転角センサは、この回転角センサ22と実電気角変換部130とから構成される。センサ異常検出部131は、回転角センサ22から出力される回転検出信号に基づいて、回転角センサ22の異常を検出する。回転角センサ22としてレゾルバを採用した場合には、レゾルバ内の検出用コイルsin相検出コイル,cos相検出コイルや励磁用コイルが断線したり絶縁不良を起こしたりすることが考えられる。そこで、センサ異常検出部131は、検出用コイルの出力信号の振幅を監視し、その振幅が予め設定した許容範囲から外れた場合には、センサ異常と判定する。また、検出用コイルは、出力信号がπ/2だけ位相がずれるように一対設けられるため、2つの出力信号を比較して異常を検出することもできる。例えば、一方の検出用コイルから正弦波信号が出力されているときに、他方の検出用コイルから一定値信号が出力されているときなど、2つの出力信号の組み合わせが矛盾するケースにおいても異常であると判定することができる。センサ異常検出部131は、このようにして回転角センサ22の異常の有無を判定し、異常の有無を表すセンサ異常判定信号Ffailを出力する。センサ異常検出部131は、例えば、異常有りと判定した場合には、センサ異常判定信号Ffailを1に設定し、異常無しと判定した場合にはセンサ異常判定信号Ffailを0に設定する。回転角センサ22に異常が発生した場合には、電気角を検出できなくなるため、電流ベクトル制御にてモータ20を駆動できなくなる。そこで、アシストECU100には、回転角センサ22の異常時においてもモータ20の回転制御を継続できるように、電気角を推定する電気角推定部110を備えている。電気角推定部110は、センサ異常判定信号Ffail=1を入力すると作動を開始するもので、プログラム制御により実施される機能に着目すると、図3に示すように、第1回転方向推定部111と、電気角変化量演算部112と、固定軸誘起電圧演算部113と、第2回転方向推定部114と、回転方向修正部115と、方向乗算部116と、積算部117と、アシスト制限指令部118とを備えている。第1回転方向推定部111は、操舵トルクセンサ21により検出される操舵トルクTrを入力する。そして、操舵トルクTrの向き正負の符号がモータ20の回転方向と同じであるとみなして推定して、操舵トルクTrから推定される回転方向である第1推定回転方向d1を表す情報を回転方向修正部115に出力する。この操舵トルクTrが本発明における車両情報に相当する。尚、本実施形態においては、モータ20の回転方向を推定する車両情報として操舵トルクTrを用いているが、例えば、車体のヨーレートを検出するヨーレートセンサ、あるいは、横加速度を検出する横加速度センサを設け、こうしたセンサから出力される検出信号ヨーレートあるいは横加速度を表す信号を車両情報として使用することもできる。つまり、ヨーレートあるいは横加速度の方向右方向、左方向から操舵操作方向を推定できるため、この方向がモータ20の回転方向と同じであるとみなして推定して、第1推定回転方向d1を決定するようにしてもよい。第1回転方向推定部111は、例えば、モータ20の推定回転方向が左方向であれば、第1推定回転方向d1=1とした情報を出力し、モータ20の推定回転方向が右方向であれば、第1推定回転方向d1=-1とした情報を出力し、モータ20の回転が停止していると推定した場合には、第1推定回転方向d1=0とした情報を出力する。電気角変化量演算部112は、電流センサ38により検出した3相電流Iu,Iv,Iwと、電圧センサ39により検出した3相電圧VuVv,Vwに基づいて、モータ20で発生する誘起電圧eを計算し、その誘起電圧eの大きさに応じた電気角変化量|Δθe|を計算する。まず、モータ20で発生する誘起電圧eの計算から説明する。図6に示すように、モータ20のU相の誘起電圧をeu、V相の誘起電圧をev、W相の誘起電圧をewとすると、誘起電圧eu,ev,ewは次式2,3,4にて求められる。eu=Vu-IuR-Vm2ev=Vv-IvR-Vm3ew=Vw-IwR-Vm4ここで、Vmは中点電圧、Rは各相のコイルの巻線抵抗である。中点電圧Vmは、Vm=VuVvVw/3として計算すればよい。この場合、正確には、各相のコイルのインダクタンスLによる電圧分LdI/dtを加えるべきであるが、誘起電圧の計算においてはインダクタンスLによる影響が非常に小さいため、本実施形態においてはそれをゼロとみなしている。尚、インダクタンスLによる電圧分LdI/dtを加味して計算するようにしてもよい。モータ20の誘起電圧eは、次式5により、3相の誘起電圧eu,ev,ewを2相のd-q座標系における誘起電圧ed,eqに変換した後に、次式6により、その大きさが求められる。モータ20で発生する誘起電圧eとモータ角速度とは比例関係を有する。従って、モータ角速度ωは、次式7により推定することができる。ω=e/Ke7ここで、Keは、モータ20の角速度と誘起電圧との関係を表すモータ誘起電圧定数V/rad/sである。以下、推定されたモータ角速度ωを推定角速度ωと呼ぶ。電気角推定部110は、マイクロコンピュータにより所定の短い演算周期にて各種の演算処理を行う。従って、推定角速度ωと演算周期とから、1演算周期の間にモータ20の回転子が回転した電気角を求めることができる。このことを利用して、電気角変化量演算部112は、1演算周期の間にモータ20の回転子が回転した電気角を電気角変化量|Δθe|として計算する。電気角変化量|Δθe|は、次式8により算出される。|Δθe|=Kfω8ここでKfは、モータ角速度rad/sから1演算周期のあいだにモータ20の回転子が回転する電気角radを求めるための定数であり、演算周期sに相当する。電気角変化量演算部112は、算出した電気角変化量|Δθe|を方向乗算部116に出力する。固定軸誘起電圧演算部113は、図7に示すように、モータ20の電機子コイルに固定された座標軸における誘起電圧ベクトルを計算する。この電機子コイルの固定座標軸固定座標系をα―β座標系と呼ぶ。例えば、電機子コイルのU相の軸を電機子コイルの固定座標系のα軸とし、そのα軸から電気角で90°進んだ方向をβ軸とする。固定座標系は、モータ20の回転軸に対して直交する平面上に設けられればよく、α軸の方向は、その平面上での任意の方向に固定すればよい。誘起電圧ベクトルEは、α軸方向の成分をeα、β軸方向の成分をeβとすると、次式9により計算することができる。尚、この式は、d-q座標系における誘起電圧の上記式5において電気角θeをゼロとしたものである。固定軸誘起電圧演算部113は、電流センサ38により検出した3相電流Iu,Iv,Iwと、電圧センサ39により検出し3相電圧VuVv,Vwに基づいて、誘起電圧ベクトルEを計算し、誘起電圧ベクトルEを表す座標eα,eβ情報を第2回転方向推定部114と回転方向修正部115とアシスト制限指令部118とに出力する。第2回転方向推定部114は、誘起電圧ベクトルEが時系列にしたがって回転する方向ベクトルの向きが移動する方向を推定する。本実施形態においては、図8に示すように、α-β座標平面を回転方向に等角度でN個N≧3の領域に分割しておく。図8の例では、α-β座標平面を8分割N=8して、領域1から領域8を設定している。第2回転方向推定部114は、演算周期毎に、固定軸誘起電圧演算部113から入力した誘起電圧ベクトルEの座標eα,eβがどの領域に存在するか求めて、その領域を特定する情報例えば、領域番号を記憶する。そして、1演算周期前の領域と今回求めた領域とに基づいて、誘起電圧ベクトルEの座標eα,eβが領域を移動した場合には、その領域の移動量移動領域数Kから誘起電圧ベクトルEの回転方向を判定する。誘起電圧ベクトルEの座標eα,eβが隣の領域に移動した場合には、移動領域数Kは1となる。例えば、図8の例では、直前回n-1回目に記憶した領域が領域2であり、今回n回目検出した領域が領域4であるため、移動領域数Kは2となる。尚、第2回転方向推定部114の演算周期は、モータ20が最大回転速度で回転した場合であっても、移動領域数KがN/2以上にならないように設定されている。第2回転方向推定部114は、このように求めた誘起電圧ベクトルEの時系列にしたがって回転する方向がモータ20の回転方向と同じであるとみなして推定して、その回転方向である第2推定回転方向d2を表す情報を回転方向修正部115とアシスト制限指令部118に出力する。図9は、第2回転方向推定部114が実行する第2回転方向推定ルーチンを表す。この第2回転方向推定ルーチンは、所定の演算周期で繰り返し実行される。本ルーチンが起動すると、第2回転方向推定部114は、ステップS11において、固定軸誘起電圧演算部113から出力される誘起電圧ベクトルEの座標eα,eβを読み込む。続いて、ステップS12において、誘起電圧eの大きさ|e|が予め設定した基準値eth以上であるか否かを判断する。この誘起電圧eの大きさ|e|は、eαの二乗値とeβの二乗値との和の平方根で計算できるが、上述した電気角変化量演算部112にて計算した値式6参照を用いても同じである。尚、基準値ethを二乗しておけば、平方根の計算を省略することができる。モータ20の回転速度が遅い場合には、センサ値に含まれるノイズやコイル抵抗値誤差の影響が大きくなり、計算される誘起電圧eの精度が悪い。このため、第2回転方向推定部114は、誘起電圧eの大きさ|e|が予め設定した基準値eth未満となる場合には、回転方向を適正に推定することができない。従って、基準値ethは、第2回転方向推定部114による推定を有効にするか否かを決める判定用閾値となる。第2回転方向推定部114は、誘起電圧eの大きさ|e|が基準値eth未満となる場合S12:Noには、ステップS13において、第2推定回転方向を表す情報d2を、推定無効であることを意味する0に設定するd2=0。一方、誘起電圧eの大きさ|e|が予め設定した基準値eth以上である場合にはS12:Yes、第2回転方向推定部114は、ステップS14において、ベクトル座標eα,eβに基づいて、誘起電圧ベクトルEが入る領域を求め、その領域を表す情報領域番号を記憶する。続いて、ステップS15において、直前回に記憶した1演算周期前のステップS14で記憶した領域番号を読み出す。続いて、ステップS16において、今回求めた領域番号と前回の領域番号とから、1演算周期の間に移動した領域数である移動領域数Kを計算する。尚、1演算周期前の処理において、ステップS12でNoと判定されている場合には、領域番号が記憶されていないため、この場合には、移動領域数KをゼロK=0に設定する。続いて、第2回転方向推定部114は、ステップS17において、移動領域数Kがゼロで無いか否かを判定する。移動領域数Kがゼロである場合S17:Noには、ステップS13において、第2推定回転方向を表す情報d2をゼロに設定するd2=0。一方、移動領域数Kがゼロで無い場合S17:Yesには、ステップS18において、誘起電圧ベクトルEの入る領域の移動方向が左回転方向であるか否かを判断する。移動領域数Kは、1≦K<N/2の値となるため、1演算周期前の領域に接近した側の領域に移動したものとして、誘起電圧ベクトルの移動方向を判断すればよい。誘起電圧ベクトルEの入る領域の移動方向が左回転方向である場合S18:Yesには、ステップS19において、第2推定回転方向を表す情報d2を1に設定し、誘起電圧ベクトルEの入る領域の移動方向が右回転方向である場合S18:Noには、ステップS20において、第2推定回転方向を表す情報d2を-1に設定する。従って、第2推定回転方向は、d2=1によりモータ20の推定回転方向が左方向であることを表し、d2=-1によりモータ20の推定回転方向が右方向であることを表す。また、d2=0により第2推定回転方向が無効であることを表す。第2回転方向推定部114は、ステップS13,S19,S20で有効無効判定を含めた第2推定回転方向を設定すると、ステップS21において、第2推定回転方向d2を表す情報を回転方向修正部115およびアシスト制限指令部118に出力して、本ルーチンを一旦終了する。そして、所定の演算周期にて上述した処理を繰り返す。回転方向修正部115は、第1回転方向推定部111の出力する第1推定回転方向d1と、第2回転方向推定部114の出力する第2推定回転方向d2と、固定軸誘起電圧演算部113の出力するベクトル座標eα,eβと、積算部117の出力する推定電気角θebとを入力し、それらの入力値にしたがって、モータ20の推定回転方向を、第1推定回転方向と第2推定回転方向とで選択的に切り替える。回転方向修正部115は、最終的なモータ20の推定回転方向を決定するブロックであり、基本的には、第1推定回転方向を採用し、第2推定回転方向が有効な状態となるときに第1推定回転方向と第2推定回転方向とが相違する場合において、所定のタイミングで推定回転方向を第1推定回転方向から第2推定回転方向に修正する。この処理については、後述する。以下、回転方向修正部115で設定した推定回転方向を最終推定回転方向dxと呼ぶ。回転方向修正部115は、設定した最終推定回転方向dxを表す情報を方向乗算部116に出力する。方向乗算部116は、電気角変化量演算部112の出力する電気角変化量|Δθe|と、回転方向修正部115の出力する最終推定回転方向dxとを入力し、電気角変化量|Δθe|に最終推定回転方向dxを乗算することにより電気角加算量Δθeを求める。最終推定回転方向dxは、モータ20が左回転していると推定される場合には1に設定され、右回転していると推定される場合には-1に設定される。本実施形態においては、左回転を正回転方向としているため、モータ20が左回転する場合には、電気角θebが増加するように電気角加算量Δθeは正の値に設定され、モータ20が右回転する場合には、推定電気角θebが減少するように電気角加算量Δθeは負の値に設定されることになる。方向乗算部116は、計算結果である電気角加算量Δθeを積算部117に出力する。積算部117は、1演算周期前に算出した推定電気角θebを記憶しており、この推定電気角θebに、方向乗算部116から入力した電気角加算量Δθeを加算することにより現在の推定電気角θebを算出する。推定電気角θebは、次式10にて表される。θeb=θebn1Δθe10この場合、推定電気角θebn1の初期値は、センサ異常検出部131により回転角センサ22の異常が検出される直前の値としている。積算部117は、回転角センサ22の異常が検出されていない時から、実電気角変換部130が出力する実電気角θeaを入力して記憶更新し、センサ異常検出部131の出力するセンサ異常判定信号Ffailが回転角センサ22の異常を表す1に切り替わったことを検出すると、異常検出直前の実電気角θeaを推定電気角θebn1に設定して、上述した推定電気角θebの演算を開始する。また、その後は、算出した推定電気角θebを次の演算周期における式10での推定電気角θebn1として使用するため、推定電気角θebを推定電気角θebn1として逐次記憶更新する。以下、推定電気角θebを単に推定電気角θebと呼ぶ。積算部117は、算出した推定電気角θebを電気角選択部132に出力する。電気角選択部132は、実電気角θeaと推定電気角θebとを入力するとともに、センサ異常検出部131からセンサ異常判定信号Ffailを読み込んで、センサ異常判定信号Ffailが回転角センサ22が異常であることを表す1である場合には推定電気角θebを選択する。また、センサ異常判定信号Ffailが回転角センサ22が正常であることを表す0である場合には実電気角θeaを選択する。電気角選択部132は、選択した実電気角θeaまたは推定電気角θebを電気角θeとして出力する。電気角θeは、3相/2相座標変換部104,2相/3相座標変換部105に出力され、上述した座標変換演算に用いられる。従って、アシストECU100は、回転角センサ22の異常が検出されているときは、推定電気角θebにより定義されるd-q座標系、つまり、d’―q’座標系を使って電流ベクトル制御を行う。次に、回転方向修正部115の処理について説明する。図10は、回転方向修正部115の実施する推定回転方向設定ルーチンを表す。本ルーチンが起動すると、回転方向修正部115は、ステップS31において、第1回転方向推定部111から出力される第1推定回転方向d1と、第2回転方向推定部114から出力される第2推定回転方向d2とを読み込む。続いて、ステップS32において、第2推定回転方向d2が0で無いか否かを判定する。つまり、第2推定回転方向が無効に設定されていないか否かを判定する。回転方向修正部115は、第2推定回転方向d2が0の場合S32:Noには、ステップS34において、最終推定回転方向dxを第1推定回転方向d1に設定する。一方、第2推定回転方向d2が0で無い場合には、ステップS33において、第1推定回転方向d1と第2推定回転方向d2とが同じであるか否かを判断する。第1推定回転方向d1と第2推定回転方向d2とが同じである場合S33:Yesには、ステップS34において、最終推定回転方向dxを第1推定回転方向d1に設定する。続いて、ステップS40において、最終推定回転方向dxを方向乗算部116に出力して、本ルーチンを一旦終了する。回転方向修正部115は、こうした処理を所定の演算周期で繰り返す。そして、ステップS33において、第1推定回転方向d1と第2推定回転方向d2とが同じでないと判定した場合には、ステップS35において、最終推定回転方向dxが第1推定回転方向d1に設定されているか否かを判断する。最終推定回転方向dxが第1推定回転方向d1に設定されている場合には、ステップS36において、誘起電圧ベクトルEの座標eα,eβを読み込み、ステップS37において、この座標eα,eβから求められる誘起電圧ベクトルEの方向からモータ20の電気角を推定する。ベクトル座標eα,eβから推定される電気角を第2推定電気角θeb2と呼ぶ。α-β座標系における誘起電圧ベクトルEの方向は、eα/eβの逆正接tan-1eα/eβを演算することにより算出できる。誘起電圧ベクトルEの方向、つまり、誘起電圧の発生する方向は、q軸方向である。モータ20の電気角θeは、モータ20のU相コイルを貫く軸とd軸とのなす角である。従って、第2推定電気角θeb2は、誘起電圧ベクトルEの方向から90°だけ遅れた方向として計算すればよい。尚、モータ20の回転方向によって誘起電圧の発生する方向が反転するため、回転方向修正部115は、モータ20が右回転していると判定している場合には、上記のように計算した電気角に180°加算あるいは減算して第2推定電気角θeb2を算出する本実施形態においては、モータ20の左回転を正回転としているため。続いて、回転方向修正部115は、ステップS38において、積算部117の出力している推定電気角θebと第2推定電気角θeb2との差の大きさ|θeb-θeb2|が予め設定した基準値θth1以下であるか否かを判断する。この基準値θth1は、推定電気角θebと第2推定電気角θeb2との一致を判定するための閾値である。換言すれば両者が一致していると判定する許容範囲である。従って、回転方向修正部115は、|θeb-θeb2|≦θth1となる場合には、推定電気角θebと第2推定電気角θeb2とが一致している一致条件を満たしていると判定する。この処理に代えて、推定電気角θebで表されるモータ20の制御上の推定q軸であるq’軸方向と誘起電圧ベクトルEの方向との一致を判定するようにしてもよい。尚、|θeb-θeb2|が180°を越える場合には、反対回転方向に求めた180°より小さい方の角度差と基準値θth1とを比較する。回転方向修正部115は、ステップS38における判定がNo、つまり、推定電気角θebと第2推定電気角θeb2とが一致条件を満たしていない場合には、その処理をステップS34に進める。従って、最終推定回転方向dxは、変更されずに第1推定回転方向d1に維持される。こうした処理が繰り返されて、ステップS38における判定がYes、つまり、推定電気角θebと第2推定電気角θeb2とが一致条件を満たすと、回転方向修正部115は、その処理をステップS39に進めて、最終推定回転方向dxを第2推定回転方向d2に設定し、ステップS40において、最終推定回転方向dxを方向乗算部116に出力する。つまり、第1推定回転方向d1と第2推定回転方向d2とが相違している場合には、誘起電圧ベクトルEから算出される第2推定電気角θeb2が、現在アシスト制御に使用している推定電気角θebと一致するまで待って一致条件を満たすまで待って、最終推定回転方向dxを第2推定回転方向d2に設定する。こうして最終推定回転方向dxが第2推定回転方向d2に設定された後は、ステップS35の判断はNoとなる。この場合、回転方向修正部115は、上述したステップS36~ステップS38の処理をスキップする。従って、最終推定回転方向dxが第2推定回転方向d2に維持される。こうした状態からモータ20の回転速度が低下して誘起電圧eの大きさ|e|が基準値eth未満となると、第2推定回転方向d2が推定無効を表す0に変化する。これにより、ステップS32の判断がNoに切り替わり、ステップS34において、最終推定回転方向dxは第1推定回転方向d1に戻される。次に、アシスト制限指令部118について説明する。アシスト制限指令部118は、固定軸誘起電圧演算部113から出力された誘起電圧ベクトルEを表す座標eα,eβと、第2回転方向推定部114から出力された第2推定回転方向d2と、積算部117から出力された推定電気角θebとを入力する。そして、第2推定回転方向d2が0でない場合、つまり、第2推定回転方向が有効である場合に、ベクトル座標eα,eβから推定される第2推定電気角θeb2を演算し、積算部117の出力している推定電気角θebと第2推定電気角θeb2とのずれを計算する。第2推定電気角θeb2の演算方法は、上述したステップS37の方法と同様に行えばよい。アシスト制限指令部118は、推定電気角θebと第2推定電気角θeb2とのずれ|θeb-θeb2|を計算し、そのずれが予め設定した設定角度差θth2以上であるか否かを判定する。このずれが180°を越える場合には、反対回転方向に求めた180°より小さいほうの角度差をずれとする。アシスト制限指令部118は、ずれが設定角度差θth2以上である場合には、アシスト制限指令信号Flimを1に設定して出力し、ずれが設定角度差θth2未満である場合には、アシスト制限指令信号Flimを0に設定して出力する。このアシスト制限指令信号Flimは、0に設定されているときに、通常時の操舵アシストが得られるようにモータ制御量が演算され、1に設定されているときに、通常時よりも制限されたモータ制御量が演算されるように指令する信号である。アシスト制限指令部118は、モータ20で発生するアシストトルクが、本来発生させたい方向操舵トルクの方向と反対方向に発生してしまうことを抑制するために設けたものである。従って、設定角度差θth2は、操舵アシストが反対方向に働いてしまう角度、つまり、90°以上の任意の値に設定することが好ましい。このアシスト制限指令信号Flimは、アシスト電流指令部102に出力される。アシスト電流指令部102は、アシスト制限指令信号Flimを入力し、アシスト制限指令信号Flimが0の時は、上述したように目標アシストトルクTに応じたq軸指令電流Iqを算出するが、アシスト制限指令信号Flimが0から1に切り替わったことを検出すると、その時点からq軸指令電流Iqを増加させないように電流制限を加える。あるいは、q軸指令電流Iqを徐々に低下させるようにする。そして、アシスト制限指令信号Flimが1から0に切り替わったことを検出すると、通常の演算方法でのq軸指令電流Iqの算出を再開する。尚、アシスト制限指令信号Flimは、アシスト電流指令部102に代えて、アシストトルク設定部101、あるいは、PWM信号発生部106に出力するようにしてもよい。この場合においても、目標アシストトルクTあるいは3相指令電圧u,Vv,Vwを増加させない、あるいは、徐々に低下させるようにすればよい。以上説明したように、電気角推定部110においては、モータ20の推定回転方向を、操舵トルクTrの方向から設定した第1推定回転方向d1と、電機子コイルの固定座標系α-β座標系における誘起電圧ベクトルEの方向の移動する方向から設定した第2推定回転方向d2とを選択的に使って最終推定回転方向dxを設定する。この場合、誘起電圧eが大きい場合には、第1推定回転方向d1に比べて第2推定回転方向d2の方が正確となる。従って、第2推定回転方向d2が有効となっている状態で、第1推定回転方向d1と第2推定回転方向d2とが相違する場合には、第1推定回転方向d1に代えて第2推定回転方向d2を選択するため、回転方向の推定精度が高い。このため、推定電気角θebの積算方向加算、減算が正しくなり、電気角θebの推定精度が向上する。一般に、ハンドル戻し操作を行うときには、操舵ハンドル11を握っている力を緩めるようにして操舵ハンドル11を中立位置側に戻すため、操舵トルクTrの働く方向とモータ20の回転方向とが互いに反対となる。このため、操舵トルクのみに基づいてモータ20の回転方向を推定している従来装置においては、回転方向の推定を誤る状況が発生する。推定回転方向が実際の回転方向に対して反転すると、モータ20が脱調して振動が操舵ハンドル11に伝わることがある。例えば、図11に示すように、時刻t1で推定回転方向が実際の回転方向に対して反転すると、実回転角と推定回転角とが電気角で90°以上ずれている部分でアシストトルクを出力することができないため、一時的に操舵トルクが上昇する。その後、実回転角と推定回転角とが一致すると正常な操舵アシスト状態に復帰するため操舵トルクが減少する。一般的に、電動パワーステアリング装置においては、高減速ギヤを介してモータ20が取り付けられているため、モータ20の電気角1回転あたりの操舵トルクの変動の影響は小さい。しかし、こうしたサイクルが繰り返されることもあり、その場合には、操舵ハンドル11に振動が発生し、運転者に違和感を与えてしまう。これに対して、本実施形態においては、第1推定回転方向d1と第2推定回転方向d2とを求め、この両者を使ってモータ20の回転方向を推定するため、回転方向の推定精度が高くなり、結果的に、電気角の推定精度が向上する。この結果、操舵ハンドル11に発生する振動を抑制することができる。また、第1推定回転方向d1と第2推定回転方向d2とが相違している場合には、第2推定電気角θeb2が推定電気角θebと一致するまで待って、最終推定回転方向dxを第1推定回転方向d1から第2推定回転方向d2に切り替えるため、モータ20の脱調状態が長時間継続することを防止できる。ここで、その理由について説明する。例えば、図12に示すように、時刻t1において、推定回転方向が実際の回転方向に対して反転した場合、第2推定回転方向d2が第1推定回転方向d1に対して反転したタイミング時刻t2で、最終推定回転方向dxを第2推定回転方向d2に修正すると、そのタイミングによっては、実際の電気角と推定電気角θebとが180°相違している状態で回転方向を修正してしまうことになる。この場合には、同図に示すように、実際の電気角と推定電気角とが180°ずれた状態を長時間継続しやすい。従って、モータ20の脱調状態が継続して操舵ハンドル11の振動が続いてしまう。そこで、本実施形態においては、図13に示すように、第1推定回転方向d1と第2推定回転方向d2とが相違している場合には、第2推定電気角θeb2と推定電気角θeb現時点でモータ回転制御に使用している推定電気角との一致判定処理ステップS38を設けることにより、第2推定電気角θeb2が推定電気角θebとほぼ一致するまで待って時刻t3、最終推定回転方向dxを第2推定回転方向d2に修正する。このため、モータ20の脱調が継続することがなく、操舵ハンドル11の振動が抑えられてスムーズな操舵操作が可能となる。また、操舵アシストが反対方向に働くような推定電気角θebと第2推定電気角θeb2とのずれを検出した場合には、アシスト制限指令部118がモータ制御量を制限するため、ハンドル操作にブレーキがかかりにくくなり、操舵ハンドル11の振動をさらに抑制することができる。また、推定電気角θebと第2推定電気角θeb2とがずれた状態でモータ制御値を大きくしても実際のアシストトルクは増加しないため、モータ20の過熱保護やサージ電流抑制といった効果も得られる。<第2実施形態>次に、回転方向修正部115の別の実施形態以下、第2実施形態と呼び、上述した実施形態を第1実施形態と呼ぶについて説明する。上述したように、ハンドル戻し操作を行うときには、操舵ハンドル11を握っている力を緩めるようにして操舵ハンドル11を中立位置側に戻すため、操舵トルクTrの働く方向とモータ20の回転方向とが互いに反対となる。例えば、交差点を左折して操舵ハンドル11をゆっくり右に戻しているときには、操舵トルクTrの働く方向は左方向で、モータ20の回転方向は右方向となる。従って、第1推定回転方向d1は左方向、第2推定回転方向d2は右方向となり、第2推定回転方向d2が有効であれば、最終推定回転方向dxは、第2推定回転方向d2右回転方向に設定される。この状態で、運転者が、操舵ハンドル11を急激に左方向に切り込むと、操舵ハンドル11の回転操作に対してモータ20の回転が遅れるため、操舵ハンドル11を切り込んだ瞬間においては、モータ20の回転方向は、そのまま右方向に維持される。このため、第1実施形態の回転方向修正部115においては、運転者の操舵意図とは反対方向の最終推定回転方向dx=d2が設定されてしまうことが考えられる。この場合には、適正な操舵アシストトルクが得られず、運転者に対して、操舵操作に引っ掛かりを感じさせてしまうことがある。そこで、第2実施形態の回転方向修正部115は、素早い切り返し操作が行われる状況での操舵フィーリングを向上させる。第2実施形態の回転方向修正部115は、第1回転方向推定部111の出力する第1推定回転方向d1と、第2回転方向推定部114の出力する第2推定回転方向d2と、固定軸誘起電圧演算部113の出力するベクトル座標eα,eβと、積算部117の出力する推定電気角θebとに加えて、図3に破線にて示すように、操舵トルクセンサ21により検出される操舵トルクTrを入力する。尚、誘起電圧eの大きさに基づく第2推定回転方向d2の有効性の判断については、第1実施形態では第2回転方向推定部114にて行っているがS12,S13、この第2実施形態では、回転方向修正部115において行うようにしている。図17は、第2実施形態としての回転方向修正部115の実施する推定回転方向設定ルーチンを表す。推定回転方向設定ルーチンは、所定の短い周期で繰り返し実行される。本ルーチンが起動すると、回転方向修正部115は、ステップS101において、第1回転方向推定部111から出力される第1推定回転方向d1と、第2回転方向推定部114から出力される第2推定回転方向d2とを読み込む。続いて、ステップS102において、第1推定回転方向d1と第2推定回転方向d2とが相違するか否かについて判断する。ここでは、第1推定回転方向d1と第2推定回転方向d2とが相違する場合から説明する。回転方向修正部115は、第1推定回転方向d1と第2推定回転方向d2とが相違する場合にはS102:Yes、ステップS103において、操舵トルクセンサ21により検出される操舵トルクTrを読み込み、ステップS104において、固定軸誘起電圧演算部113から出力される誘起電圧ベクトルEの座標eα,eβを読み込む。続いて、回転方向修正部115は、ステップS105において、現在の最終推定回転方向dxが第2推定回転方向d2に設定されているか否かを判断する。最終推定回転方向dxが第2推定回転方向d2に設定されている場合には、ステップS106において、操舵トルクTrの大きさ|Tr|が予め設定した第1基準トルクTr1以上であるか否かを判断する。この第1基準トルクTr1は、素早い切り返しなど運転者が操舵方向を意図的に変更しようとしている状況の開始を判断するために設定した操舵トルクの値である。回転方向修正部115は、操舵トルクTrの大きさ|Tr|が第1基準トルクTr1以上である場合には、ステップS107において、最終推定回転方向dxを第2推定回転方向d2から第1推定回転方向d1に切り替える。一方、操舵トルクTrの大きさ|Tr|が第1基準トルクTr1未満である場合にはS106:No、ステップS108において、誘起電圧eの大きさ|e|が予め設定した第1基準電圧eth1以下であるか否かを判断する。この誘起電圧eの大きさ|e|の計算は、第1実施形態と同様に行えばよい。この第1基準電圧eth1は、第2推定回転方向d2の推定が有効であるか否か推定回転方向の精度が高い状況であるか否かを決める判定閾値である。回転方向修正部115は、誘起電圧eの大きさ|e|が第1基準電圧eth1以下である場合には、第2推定回転方向d2が有効でなくなった回転方向の推定精度が低く無効であると判断して、ステップS107において、最終推定回転方向dxを第2推定回転方向d2から第1推定回転方向d1に切り替える。回転方向修正部115は、誘起電圧eの大きさ|e|が第1基準電圧eth1を上回っている場合にはS108:No、ステップS109において、第2推定回転方向d2が有効であると判断して、最終推定回転方向dxを変更することなく、そのまま第2推定回転方向d2に維持する。このようにステップS106~S109においては、現在の最終推定回転方向dxが第2推定回転方向d2に設定されている状態において、操舵トルクTrの大きさ|Tr|が第1基準トルクTr1以上であれば、第2推定回転方向d2の有効性に関わらず、最終推定回転方向dxを、強制的に第1推定回転方向d1に切り替える。また、操舵トルクTrの大きさ|Tr|が第1基準トルクTr1未満であれば、第2推定回転方向d2の有効性を判断し、有効でなくなった場合には、最終推定回転方向dxを第2推定回転方向d2から第1推定回転方向d1に切り替え、有効であれば、最終推定回転方向dxをそのまま第2推定回転方向d2に維持する。回転方向修正部115は、ステップS105において、現在の最終推定回転方向dxが第1推定回転方向d1に設定されている場合には、ステップS110において、操舵トルクTrの大きさ|Tr|が予め設定した第2基準トルクTr2未満であるか否かを判断する。この第2基準トルクTr2は、素早い切り返しなど運転者が操舵方向を意図的に変更しようとしている状況の終了を判断するために設定した操舵トルクの値である。従って、第2基準トルクTr2は、第1基準トルクTr1と同じ値に設定しても良いが、第1基準トルクTr1よりも小さな値に設定することで、基準値を境界として判定が頻繁に切り替わることを防止することができる。回転方向修正部115は、操舵トルクTrの大きさ|Tr|が第2基準トルクTr2未満である場合には、ステップS111において、誘起電圧eの大きさ|e|が予め設定した第2基準電圧eth2を超えているか否かを判断する。この第2基準電圧eth2も、第2回転方向の回転方向の推定が有効であるか否かを決める判定閾値である。第2基準電圧eth2についても、第1基準電圧eth1と同じ値に設定しても良いが、第1基準電圧eth1よりも大きな値に設定することで、基準値を境界として判定が頻繁に切り替わることを防止することができる。回転方向修正部115は、誘起電圧eの大きさ|e|が第2基準電圧eth2を超えている場合には、ステップS112において、第2推定回転方向d2が有効になったと判断して、最終推定回転方向dxを第1推定回転方向d1から第2推定回転方向d2に切り替える。一方、操舵トルクTrの大きさ|Tr|が第2基準トルクTr2以上ある場合S110:No、あるいは、誘起電圧eの大きさ|e|が第2基準電圧eth2以下である場合S111:Noには、ステップS113において、最終推定回転方向dxを変更することなく、そのまま第1推定回転方向d1に維持する。また、回転方向修正部115は、ステップS102において、第1推定回転方向d1と第2推定回転方向d2とが同じであると判断した場合には、推定回転方向の切替を判断する必要がないため、最終推定回転方向dxを第1推定回転方向d1に設定する第2推定回転方向であってもよい。回転方向修正部115は、ステップS107,S109,S112,S113において、最終推定回転方向dxを設定すると、続くステップS114において、最終推定回転方向dxを方向乗算部116に出力して、本ルーチンを一旦終了する。回転方向修正部115は、こうした処理を所定の演算周期で繰り返す。この第2実施形態の回転方向修正部115によれば、基本的には第1実施形態と同様に、第2推定回転方向d2が有効であると判定された場合にはS108:No、S111:Yes、第2推定回転方向d2が選択される。このため、第1推定回転方向d1と第2推定回転方向d2とが相違しているときには、モータ推定回転方向が第1推定回転方向d1から第2推定回転方向d2に切り替えられるため回転方向の推定精度が高い。また、最終推定回転方向dxが第2推定回転方向d2に設定されている状態において、操舵トルクTrの大きさ|Tr|が第1基準トルクTr1以上となった場合には、第2推定回転方向d2の有効性の有無に関わらず、最終推定回転方向dxを、強制的に第1推定回転方向d1に切り替えるS106,S107。従って、運転者が切り戻し状態から急に操舵ハンドル11を切り込んだ場合のように、素早い切り返し操作が行われた場合であっても、運転者の意図した方向である操舵トルクTrの働く方向に最終推定回転方向dxを切り替えることができる。この結果、操舵アシストトルクを適切に発生させることができ、ハンドル操作に引っ掛かりが無くなる。また、操舵トルクTrの大きさ|Tr|が第2基準トルクTr2未満にまで低下した場合には、第2推定回転方向d2の有効性を判断して、第2推定回転方向d2が有効であれば、最終推定回転方向dxを第2推定回転方向d2に切り替える。従って、素早い切り返し操作が終了した段階で、もとの制御状態に適切に戻すことができる。尚、ステップS111とステップS112との間に、第1実施形態の処理であるステップS36~S38の処理を組み込み、ステップS38においてNoと判断した場合には、その処理をステップS113に進めるように構成するとよい。これによれば、第2実施形態においても、適切なタイミングで、最終推定回転方向dxを第1推定回転方向d1から第2推定回転方向d2に切り替えることができる。また、第2実施形態のステップS105、あるいは、第1実施形態のステップS35における最終推定回転方向dxの初期値は、第1推定回転方向d1、第2推定回転方向d2の何れであっても良い。また、第2実施形態の回転方向修正部115は、第2回転方向推定部114におけるステップS17の処理において移動領域数Kがゼロであると判定されている場合には、最終推定回転方向dxを第1推定回転方向d1に設定すればよい。また、第2実施形態の推定回転方向設定ルーチンにおいては、運転者の切り返し操作を操舵トルクTrの絶対値を使って判断しているがS106,S110、第2推定回転方向d2に対して反対方向となる操舵トルクTrの大きさを使って判断するようにしてもよい。例えば、第2推定回転方向d2が右回転方向の場合には、左方向に働く操舵トルクTrの大きさが第1基準値Tr1以上の場合、あるいは、第2推定回転方向d2が左回転方向の場合には、右方向に働く操舵トルクTrの大きさが第1基準値Tr1以上の場合に、最終推定回転方向dxを第2推定回転方向から第1推定回転方向d1に強制的に切り替えるようにしてもよい。また、第2実施形態の推定回転方向設定ルーチンにおいては、ステップS102の処理を設けることにより、第1推定回転方向d1と第2推定回転方向d2とが同じとなる場合の演算負荷を軽くしているが、ステップS102の処理を省略した構成であってもよい。この構成においても、第2推定回転方向d2が有効であると判定されて第2推定回転方向d2が選択された場合S109,S112には、第1推定回転方向d1と第2推定回転方向d2とが相違しているときには、モータ推定回転方向が第1推定回転方向d1から第2推定回転方向d2に切り替えられる。また、第2推定回転方向d2が有効でないと判定されて第1推定回転方向d2が選択された場合S107,S113には、第1推定回転方向d1と第2推定回転方向d2とが相違しているときには、モータ推定回転方向が第2推定回転方向d2から第1推定回転方向d1に切り替えられる。<変形例>次に、本実施形態における変形例について説明する。本実施形態においては、推定電気角θebと第2推定電気角θeb2との一致判定S37,S38にあたって、誘起電圧ベクトルEの座標eα,eβから第2推定電気角θeb2を逆正接の演算により求めている。しかし、逆正接を用いた演算は、マイクロコンピュータの演算負荷が大きい。そこで、マイクロコンピュータの演算負荷を軽くしたい場合には、以下に示す変形例のように、推定電気角θebと第2推定電気角θeb2との一致を判定するとよい。図14に示すように、推定電気角θebは、モータ20の制御に用いられる回転座標系d-q座標系における推定d軸であるd’軸と固定軸αとのなす角であり、第2推定電気角θeb2は、誘起電圧ベクトルEq軸方向を向くから90°遅れた方向となるd軸と固定軸αとのなす角である。従って、推定電気角θebと第2推定電気角θeb2との一致判定は、d軸から90°電気角が進んだq軸と、d’軸から90°電気角が進んだq’軸との一致判定を行うようにしてもよい。そこで、図14に示すように、q’軸から設定角度λ1だけ遅れた方向の回転軸をX軸とし、q’軸から設定角度λ2だけ進んだ方向の回転軸をY軸としたX-Y回転座標系を考える。そして、誘起電圧ベクトルEをこのX軸とY軸とに投影して、誘起電圧ベクトルEのX軸成分Exと誘起電圧ベクトルEのY軸成分Eyとを求める。モータ20が正回転しているときd2=1には、X軸成分Exが正の値、かつ、Y軸成分Eyが正の値となる場合には、誘起電圧ベクトルEの方向とq’軸とが一致していると判定することができる。また、モータ20が逆回転しているときd2=-1には、X軸成分Exが負の値、かつ、Y軸成分Eyが負の値となる場合には、誘起電圧ベクトルEの方向とq’軸とが一致していると判定することができる。図14の例においては、塗りつぶした領域に誘起電圧ベクトルEが入る場合に、誘起電圧ベクトルEの方向とq’軸とが一致していると判定することができる。この場合、λ1,λ2の大きさを0~90°の範囲から適宜設定することにより、一致判定許容量を調整することができる。図15は、上述した変形例として回転方向修正部115が実施する推定回転方向設定ルーチンを表すもので、変形部分に係る処理を実線にて示し、図10の処理と同様な部分については省略している。この変形例に係る推定回転方向設定ルーチンは、ステップS36からステップS39までの間の処理が、図10に示した処理と相違する。回転方向修正部115は、ステップS36において、誘起電圧ベクトルEの座標eα,eβを読み込むと、続く、ステップS51において、上述したように誘起電圧ベクトルEをX-Y座標系へ投影したX軸成分Ex,Y軸成分Eyを算出する。続いて、ステップS52において、第2推定回転方向d2が1であるか否か、つまり、モータ20の推定回転方向が正方向であるか否かを判定する。d2=1の場合には、ステップS53において、X軸成分Ex,Y軸成分Eyがともに正の値であるか否かを判断し、X軸成分Ex,Y軸成分Eyがともに正の値である場合S53:Yesには、その処理をステップS39に進めて最終推定回転方向dxを第2推定回転方向d2に設定し、X軸成分Ex,Y軸成分Eyの少なくとも一方が負の値である場合S53:Noには、その処理をステップS34に進めて最終推定回転方向dxを変更しない。また、モータ20の推定回転方向が逆方向である場合d2=-1には、ステップS54において、X軸成分Ex,Y軸成分Eyがともに負の値であるか否かを判断し、X軸成分Ex,Y軸成分Eyがともに負の値である場合S54:Yesには、その処理をステップS39に進めて最終推定回転方向dxを第2推定回転方向d2に設定し、X軸成分Ex,Y軸成分Eyの少なくとも一方が正の値である場合S54:Noには、その処理をステップS34に進めて最終推定回転方向dxを変更しない。このように誘起電圧ベクトルEをX-Y座標系への投影したX軸成分Ex,Y軸成分Eyの符号正負判定を行うことで、推定電気角θebと第2推定電気角θeb2との一致判定を行うようにすることができる。これによれば、第2推定電気角θeb2を計算する必要が無いため、マイクロコンピュータの演算量を低減することができる。ところで、上述した推定電気角の演算に当たっては、演算周期は短い方が良い。しかし、マイクロコンピュータの処理能力により、高速化には限界がある。このため、モータ回転速度が高くなると演算周期あたりの誘起電圧ベクトルEの方向の移動量が大きくなり、誘起電圧ベクトルEの方向とq’軸との一致判定に使う判定領域一致とみなす許容範囲:θth1,λ1,λ2を飛び越えてしまい一致判定ができなくなるおそれがある。その場合には、最終推定回転方向dxを第1推定回転方向d1から第2推定回転方向d2に切り替えるタイミングを逸してしまうことがある。そこで、モータ回転速度に応じて判定領域を可変にするようにしてもよい。例えば、図16に示すような判定領域設定マップを記憶し、誘起電圧|e|の増加に伴って大きくなるθth1,λ1,λ2を設定するようにするとよい。誘起電圧|e|は、モータ回転速度に比例する。従って、モータ回転速度に応じて判定領域を適切に可変することができる。この場合、回転方向修正部115は、ステップS38にて推定電気角θebと第2推定電気角θeb2との一致判定を行うとき、判定領域設定マップを参照して誘起電圧|e|に応じた基準値θth1を設定すればよい。また、誘起電圧ベクトルEをX-Y座標系へ投影したX軸成分Ex,Y軸成分Eyの符号正負に基づいて一致判定を行う変形例においては、ステップS51で誘起電圧ベクトルEをX-Y座標系へ変換するときに、判定領域設定マップを参照して誘起電圧|e|に応じた設定角度λ1,λ2を設定すればよい。これにより、最終推定回転方向dxを第1推定回転方向d1から第2推定回転方向d2に切り替えるタイミングを逸してしまうことが抑制され、素早く正しい回転方向に切り替えることができる。また、モータ回転速度が低い場合には、一致判定領域θth1,λ1,λ2が狭く設定されるため、モータ20が脱調した状態で推定回転方向を切り替えてしまうといった不具合も生じない。以上、本実施形態の電動パワーステアリング装置について説明したが、本発明は上記実施形態に限定されるものではなく、本発明の目的を逸脱しない限りにおいて種々の変更が可能である。例えば、本実施形態では、操舵トルクセンサ21により検出される操舵トルクTrの方向をモータ20の回転方向とみなして第1回転方向を推定するが、第1回転方向の推定は操舵トルクTrの方向に限るものではなく、モータ20の回転方向を推定できる車体のヨーレートや横加速度などの車両情報を使用してもよい。また、本実施形態では、アシスト制限指令信号Flimが1に切り替わったときに、その時点からq軸指令電流Iqを増加させないように電流制限を加える、あるいは、q軸指令電流Iqを徐々に低下させるようにしているが、例えば、q軸指令電流Iqの上限値を低下させる構成や、q軸指令電流Iqに低減係数<1を乗じる構成など、種々のモータ制御値の制限手法を採用することができる。また、アシスト制限指令部118を設けない構成、つまり、モータ制御値を制限させる構成を備えないものであってもよい。また、本実施形態においては、モータ20の発生するトルクをラックバー14に付与するラックアシスト式の電動パワーステアリング装置について説明したが、モータの発生するトルクをステアリングシャフト12に付与するコラムアシスト式の電動パワーステアリング装置であってもよい。"