"回転軸と一体となって回転するように設けられ、前記回転軸の回転にともなってN極に着磁された領域の位置とS極に着磁された領域の位置が交互に切り替わるように着磁されたマグネット部と、前記マグネット部に向かい合って配置され、前記回転軸の回転にともなって前記マグネット部の磁気作用により周期的に変化する周期信号を出力する磁気センサを複数備えたセンサ部と、前記センサ部の磁気センサが出力する周期信号に基づいて、前記回転軸の回転角を計算する回転角計算手段とを備えた回転角検出装置において、前記マグネット部と前記センサ部とにおける前記回転軸の径方向の相対位置のずれである軸ずれの発生を検出する軸ずれ検出手段と、前記軸ずれの発生を表す軸ずれ情報を出力する軸ずれ情報出力手段とを備えたことを特徴とする回転角検出装置。前記軸ずれ検出手段は、前記軸ずれの程度を表す軸ずれ程度を計算し、前記軸ずれ程度が閾値より大きい場合に軸ずれが発生していると判定することを特徴とする請求項1記載の回転角検出装置。前記軸ずれ検出手段により前記軸ずれの発生が検出されている場合、前記軸ずれによる回転角の検出誤差を低減するように前記回転軸の回転角を計算する回転角補正手段を備えたことを特徴とする請求項1または2記載の回転角検出装置。前記センサ部は、前記回転軸の回転に伴って正弦波状に変化する周期信号をその位相がπ/2ずつずれるように出力する4つの磁気センサを備え、前記軸ずれ検出手段は、前記4つの磁気センサの出力信号を使って、前記軸ずれの発生を検出することを特徴とする請求項1ないし請求項3の何れか一項記載の回転角検出装置。前記軸ずれ検出手段は、前記位相が互いにπ/2ずれた2つの磁気センサの出力信号から計算される第1回転角と、前記位相が互いにπ/2ずれた他の2つの磁気センサの出力信号から計算される第2回転角との偏差が閾値より大きい場合に、軸ずれが発生していると判定することを特徴とする請求項4記載の回転角検出装置。前記軸ずれ検出手段は、前記位相が互いにπずれた2つの磁気センサの出力値の合計である第1加算値と、前記位相が互いにπずれた他の2つの磁気センサの出力値の合計である第2加算値とに基づいて、前記第1加算値と前記第2加算値の少なくとも一方が閾値より大きい場合に、軸ずれが発生していると判定することを特徴とする請求項4記載の回転角検出装置。前記軸ずれ検出手段は、前記4つの磁気センサの出力信号を使って、前記軸ずれの量を表す軸ずれ量を計算し、前記軸ずれ量が閾値より大きい場合に、軸ずれが発生していると判定することを特徴とする請求項4記載の回転角検出装置。前記センサ部は、前記回転軸の回転に伴って正弦波状に変化する周期信号をその位相がπ/2ずつずれるように出力する4つの磁気センサを備え、前記回転角補正手段は、前記4つの磁気センサの出力信号を使って、前記軸ずれによる検出誤差を低減するように前記回転軸の回転角を計算することを特徴とする請求項3記載の回転角検出装置。前記回転角補正手段は、前記位相が互いにπ/2ずれた2つの磁気センサの出力信号の複数通りの組み合わせを使って複数の回転角計算値を計算し、前記複数の回転角計算値の平均値を前記回転軸の回転角としたことを特徴とする請求項8記載の回転角検出装置。前記回転角補正手段は、前記位相が互いにπ/2ずれた2つの磁気センサの出力信号の複数通りの組み合わせを使って計算した複数の回転角計算値のうち、前記複数の回転角計算値の平均値に最も近い回転角計算値を前記回転軸の回転角として選択することを特徴とする請求項8記載の回転角検出装置。前記回転角補正手段は、4つの磁気センサの出力信号を使って前記軸ずれに対応した補正角度を計算し、前記回転角計算手段により計算された回転角を前記補正角度で補正することを特徴とする請求項8記載の回転角検出装置。請求項1ないし請求項11の何れか一項記載の回転角検出装置を備え、前記回転角検出装置により操舵アシスト用のモータの回転角を検出し、前記検出した回転角に基づいて前記モータを駆動制御して、操舵トルクに応じた操舵アシストトルクを発生させる電動パワーステアリング装置であって、前記軸ずれ情報出力手段から出力される軸ずれ情報に基づいて、前記モータの制御態様を変更する制御態様変更手段を備えたことを特徴とする電動パワーステアリング装置。前記軸ずれの発生に伴って生じる物理量の周期的な変動を検出する変動検出手段を備え、前記軸ずれ検出手段は、前記変動検出手段により検出された物理量の周期的な変動に基づいて、軸ずれの発生を検出することを特徴とする請求項12記載の電動パワーステアリング装置。前記変動検出手段は、前記物理量として、前記操舵トルク、前記モータに流れる電流、前記モータの制御値、操舵角速度、前記モータの角速度、前記モータで発生する誘起電圧の少なくとも1つを取得し、前記物理量における前記回転角計算手段により計算された回転角の周波数の2倍の周波数成分の振幅を計算し、前記軸ずれ検出手段は、前記変動検出手段により計算された前記物理量における前記振幅に基づいて、軸ずれの発生を検出することを特徴とする請求項13記載の電動パワーステアリング装置。前記回転角補正手段は、前記変動検出手段により計算された前記物理量における振幅が減少するように前記回転角計算手段により計算された回転角を補正することを特徴とする請求項14記載の電動パワーステアリング装置。前記変動検出手段は、前記操舵トルクと前記モータの角速度とのそれぞれについて、前記回転角計算手段により計算された回転角の周波数の2倍の周波数成分の位相を計算し、前記回転角補正手段は、前記計算された前記操舵トルクと前記モータの角速度とにおける前記位相に基づいて前記回転角を増加または減少させる方向を表す補正方向を設定し、前記回転角計算手段により計算された回転角を前記設定した補正方向に補正することを特徴とする請求項15記載の電動パワーステアリング装置。前記制御態様変更手段は、前記軸ずれの発生が検出されている場合には、前記回転角検出装置により検出される回転角を使わずに、前記モータで発生する誘起電圧に基づいて推定した推定電気角を使って前記モータを駆動制御する制御態様に切り替えることを特徴とする請求項12ないし請求項16の何れか一項記載の電動パワーステアリング装置。前記制御態様変更手段は、前記軸ずれの発生が検出されている場合には、前記モータの角速度に応じて設定される弱め界磁制御量を低減した制御態様に切り替えることを特徴とする請求項12ないし請求項17の何れか一項記載の電動パワーステアリング装置。前記制御態様変更手段は、前記軸ずれの発生が検出されている場合には、前記モータの回転角あるいは角速度に応じて設定され前記操舵アシストトルクに付加される補償トルクを低減した制御態様に切り替えることを特徴とする請求項12ないし請求項18の何れか一項記載の電動パワーステアリング装置。前記制御態様変更手段は、前記軸ずれの発生が検出されている場合には、操舵アシストを停止させることを特徴とする請求項12ないし請求項16の何れか一項記載の電動パワーステアリング装置。前記軸ずれの発生が検出された場合、前記軸ずれの程度に応じて異なる態様で異常をドライバーに報知する軸ずれ報知手段を備えたことを特徴とする請求項12ないし請求項20の何れか一項記載の電動パワーステアリング装置。以下、本発明の一実施形態に係る回転角検出装置を備えた電動パワーステアリング装置について図面を用いて説明する。図1は、同実施形態に係る車両の電動パワーステアリング装置の概略構成を表している。この電動パワーステアリング装置は、操舵ハンドル11の操舵操作により転舵輪を転舵するステアリング機構10と、ステアリング機構10に組み付けられ操舵アシストトルクを発生するモータ20と、モータ20を駆動するためのモータ駆動回路30と、モータ20の作動を制御する電子制御装置100とを主要部として備えている。以下、電子制御装置100をアシストECU100と呼ぶ。ステアリング機構10は、操舵ハンドル11の回転操作により左右前輪FWL,FWRを転舵するための機構で、操舵ハンドル11を上端に一体回転するように接続したステアリングシャフト12を備える。このステアリングシャフト12の下端には、ピニオンギヤ13が一体回転するように接続されている。ピニオンギヤ13は、ラックバー14に形成されたラック歯14aと噛み合って、ラックバー14とともにラックアンドピニオン機構を構成する。ラックバー14の両端には、タイロッド17を介して左右前輪FWL,FWRのナックル図示略が操舵可能に接続されている。左右前輪FWL,FWRは、ステアリングシャフト12の軸線回りの回転に伴うラックバー14の軸線方向の変位に応じて左右に操舵される。ステアリングシャフト12には減速ギヤ25を介してモータ20が組み付けられている。モータ20は、その回転により減速ギヤ25を介してステアリングシャフト12をその軸中心に回転駆動して、操舵ハンドル11の回動操作に対してアシスト力を付与する。このモータ20は、3相ブラシレスモータである。ステアリングシャフト12には、操舵トルクセンサ21が設けられる。操舵トルクセンサ21は、例えば、ステアリングシャフト12の中間部に介装されたトーションバー図示略の捩れ角度を検出し、この捩れ角に基づいてステアリングシャフト12に働いた操舵トルクTrを検出する。操舵トルクTrは、正負の値により操舵ハンドル11の操作方向が識別される。例えば、操舵ハンドル11の右方向への操舵時における操舵トルクTrを正の値で、操舵ハンドル11の左方向への操舵時における操舵トルクTrを負の値で示す。モータ20には、回転角センサ200が設けられる。この回転角センサ200は、モータ20の回転軸の一方端に設けられ、モータ20の回転軸の回転とともに電圧値が周期的に変化する4つの検出信号Vs1,Vc1,Vs2,Vc2をアシストECU100に出力する。アシストECU100は、この検出信号Vs1,Vc1,Vs2,Vc2に基づいて、モータ20の回転角を計算し、この回転角からモータ20の電気角θeを求める。モータ駆動回路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、回転角センサ200、電流センサ38、電圧センサ39、および、車速を検出する車速センサ25を接続し、それぞれの検出信号を入力する。そして、入力した検出信号に基づいて、運転者の操舵操作に応じた最適な操舵アシストトルク以下、単にアシストトルクと呼ぶが得られるようにモータ20に流す指令電流を計算し、その指令電流が流れるようにモータ駆動回路30の各スイッチング素子31~36のデューティ比を制御する。モータ20は、後述するようにモータ20に流れる電流のフィードバック制御により駆動される。従って、電圧センサ39は、必ずしも必要ないが、モータ駆動回路30への電力供給状態の診断、各スイッチング素子31~36の異常有無の診断を行う場合や、後述する回転角センサレス制御を行う場合において使用される。電動パワーステアリング装置は、電源供給元ライン83と接地ライン84とを介して車載電源装置80から電源供給される。電源供給元ライン83は、制御系電源ライン85と駆動系電源ライン86とに分岐する。制御系電源ライン85には、イグニッションスイッチ87が接続され、駆動系電源ライン86には、主電源リレー88が接続される。この主電源リレー88は、アシストECU100からの制御信号によりオンしてモータ20への電力供給回路を形成するものである。駆動系電源ライン86は、主電源リレー88の2次側負荷側において連結ライン90により制御系電源ライン85と接続される。制御系電源ライン85および連結ライン90には、電流の流れを一方向に規制するダイオード89およびダイオード91が設けられ、制御系電源ライン85に流れる電流が駆動系電源ライン86に流れないように構成されている。従って、制御系電源ライン85は、アシストECU100に電源供給するための電源ラインとして機能し、駆動系電源ライン86は、モータ駆動回路30とアシストECU100との両方に電源供給する電源ラインとして機能する。次に、アシストECU100が行うモータ20の制御について説明する。アシストECU100は、モータ20の回転子に設けられた永久磁石の磁界が貫く方向にd軸、d軸に直交する方向d軸に対して電気角がπ/2だけ進んだ方向にq軸を定めたd-q座標系を用いた電流ベクトル制御によってモータ20の回転を制御する。電気角θeは、モータ20のU相コイルを貫く軸とd軸とのなす角で表される。電流ベクトルのd軸成分をd軸電流と呼び、q軸成分をq軸電流と呼ぶ。q軸電流は、q軸方向に磁界が発生するように作用する。従って、q軸電流は、モータトルクを発生させる。一方、d軸電流は、d軸方向に磁界を発生させるためモータトルクを発生できず、弱め界磁制御に使用される。アシストECU100は、こうした電流ベクトル制御を行うにあたって、電気角θeを検出することによりd-q座標軸を定める。この電気角θeは、回転角センサ200の出力する検出信号Vs1,Vc1,Vs2,Vc2に基づいて計算されたモータ回転角θから求められる。次に、アシストECU100の機能について図2を用いて説明する。図2は、アシストECU100のマイクロコンピュータのプログラム制御により処理される機能を表す機能ブロック図である。各機能部は、所定の短い演算周期で当該処理を繰り返す。アシストECU100は、アシストトルク設定部101を備えている。アシストトルク設定部101は、基本アシストトルクTaと、補償トルクTb1,Tb2とを計算し、それらを合計して目標アシストトルクTを設定するT=TaTb1Tb2。アシストトルク設定部101は、図3に示す基本アシストマップと図4に示すダンピング補償トルクマップと図5に示す戻し補償トルクマップとを記憶している。基本アシストマップは、代表的な複数の車速vごとに、操舵トルクTrと基本アシストトルクTaとの関係を設定した関係付けデータであり、操舵トルクTrの大きさ絶対値が大きくなるほど大きくなり、かつ、車速vが大きくなるほど小さくなる基本アシストトルクTaを設定する特性を有する。ダンピング補償トルクマップは、操舵速度に対応するモータ20の角速度ωmとダンピング補償トルクTb1との関係を設定した関係付けデータであり、角速度ωmの絶対値が大きくなるほど、絶対値が大きくなるダンピング補償トルクTb1を設定する特性を有する。ダンピング補償トルクTb1は、基本アシストトルクTaと反対方向に働くように設定される。また、戻し補償トルクマップは、操舵角θhと戻し補償トルクTb2との関係を設定した関係付けデータであり、操舵角θhの絶対値が大きくなるほど、絶対値が大きくなる戻し補償トルクTb2を設定する特性を有する。戻し補償トルクTb2は、基本アシストトルクTaと反対方向に働くように設定される。尚、この例では、戻し補償トルクTb2について、上限制限を設けているが、ダンピング補償トルクTb1についても戻し補償トルクTb2と同様に上限制限を設けるようにしてもよい。アシストトルク設定部101は、車速センサ25により検出される車速vと、操舵トルクセンサ21により検出される操舵トルクTrと、後述する角速度計算部108により計算される角速度ωmと、後述する操舵角計算部109により計算される操舵角θhを入力して、上記3つのマップを参照して、目標アシストトルクTを計算する。アシストトルク設定部101は、算出した目標アシストトルクTをアシスト電流指令部102に出力する。アシスト電流指令部102は、目標アシストトルクTをトルク定数で除算することにより、d-q座標系におけるq軸指令電流Iqを算出する。また、アシスト電流指令部102は、図6に示すd軸指令電流マップを記憶しており、このd軸指令電流マップを参照して、角速度計算部108により計算される角速度ωmに基づいてd軸指令電流Idを算出する。d軸指令電流マップは、角速度ωmが大きくなるほどd軸指令電流Idを大きくし、角速度ωmが所定の基準値以上となる場合にd軸指令電流Idを上限値に制限する特性を有する。このd軸指令電流Idは、弱め界磁用に使用される。このように計算された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は、後述する電気角計算部107から出力される電気角θeを入力し、その電気角θeに基づいて、電流センサ38により検出した3相電流Iu,Iv,Iwをd-q座標系の2相電流Id,Iqに変換する。3相座標系からd-q座標系に変換する変換行列Cは次式1にて表される。フィードバック制御部103により算出されたq軸指令電圧Vqとd軸指令電圧Vdは、2相/3相座標変換部105に出力される。2相/3相座標変換部105は、電気角計算部107から出力される電気角θ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に付与される。アシストECU100は、回転角センサ200の出力する検出信号Vs1,Vc1,Vs2,Vc2に基づいて、モータ回転角θを検出する回転角検出部120を備えている。回転角センサ200および回転角検出部120についての詳細な説明は後述する。回転角検出部120は、計算により求めたモータ回転角θを電気角計算部107、角速度計算部108、操舵角計算部109に出力するとともに、軸ずれ判定フラグFを制御変更指令部130に出力する。電気角計算部107は、回転角検出部120から出力されたモータ回転角θを入力し、モータ回転角θをモータ20の電気角θeに変換する。そして、電気角θeを3相/2相座標変換部104および2相/3相座標変換部105に出力する。角速度計算部108は、回転角検出部120から出力されたモータ回転角θを入力し、モータ回転角θを時間で微分することによりモータ回転速度である角速度ωmを求める。角速度計算部108は、計算により求めた角速度ωmをアシストトルク設定部101とアシスト電流指令部102に出力する。操舵角計算部109は、回転角検出部120から出力されたモータ回転角θを入力し、車両が直進する操舵ハンドル11の中立位置を基準として、この中立位置からのモータ20が回転した角度に基づいて操舵角θhを求める。回転角検出部120から制御変更指令部130に出力される軸ずれ判定フラグFは、F=0により軸ずれ無しを表し、F=1により軸ずれ有りを表す。制御変更指令部130は、軸ずれ判定フラグFを入力し、この軸ずれ判定フラグFにしたがって、操舵アシスト制御を司る各機能部101~109に対して、操舵アシストの許可/禁止を指定する指令信号Csを出力する。制御変更指令部130は、指令信号Csを使って、軸ずれ判定フラグFが0の場合には、操舵アシストを許可し、軸ずれ判定フラグFが1の場合には、操舵アシストを禁止する。各機能部101~109は、指令信号Csにより操舵アシストが許可されている場合には、上述した処理を実行し、操舵アシストが禁止されている場合には、上述した処理を停止する。従って、軸ずれ判定フラグFが1の場合には、操舵アシストが停止される。尚、制御変更指令部130は、軸ずれ判定フラグFが1の場合、上記処理に代えてあるいは加えて、電力供給ライン37に設けた開閉リレー図示略をオフ状態に切り替える、あるいは、主電源リレー88をオフ状態に切り替えるなどの処理を行ってモータ20への電力供給を遮断するようにしてもよい。回転角センサ200は、図7に示すように、モータ20の回転軸20aの一方端に固定して取り付けられるマグネット部210と、マグネット部210に向かい合うように設けられるセンサ部220とを備えている。センサ部220は、モータ20のケーシング図示略との相対位置が変わらないように固定された基板230に設けられる。マグネット部210は、モータ20の回転軸20aと同軸状に設けられる円盤形状の磁性部材であって、その半分の領域211半月状の領域がN極に着磁され、残り半分の領域212半月状の領域がS極に着磁されている。センサ部220は、マグネット部210の円盤状の平面に対して、モータ20の回転軸20aの軸方向に所定のギャップをあけて設けられる。以下、モータ20の回転軸20aの軸方向を単に軸方向と呼び、モータ20の回転軸20aの径方向を単に径方向と呼ぶ。センサ部220には、4つのMRセンサSs1,Sc1,Ss2,Sc2が内蔵されている。図8は、各MRセンサSs1,Sc1,Ss2,Sc2の配置を平面座標に表したイメージ図である。図中において、符号Oは、マグネット部210の回転中心を表している。以下、MRセンサSs1,Sc1,Ss2,Sc2の何れかを特定しない場合には、単にMRセンサSと呼ぶ。MRセンサSは、Siもしくはガラス基板と、その上に形成されたNi,Feなどの強磁性金属を主成分とする合金の薄膜で構成されており、薄膜強磁性金属が特定方向の磁界の強度に応じて電気抵抗値が変化する特性を利用している。各MRセンサSは、薄膜強磁性金属エレメント磁気抵抗効果素子を2つ備えており、図9に示すように、各エレメントEle1,Ele2が直列に接続され、その両端に電圧Vccが印加され直列接続された一方のエレメントEle1の端と他方のエレメントEle2の端との間に電圧が印加され、2つのエレメントEle1,Ele2の接続点における電位を表す電圧信号Voutを出力する。2つのエレメントEle1,Ele2は、その配設される向きが互いに異なるように設けられている。つまり、エレメントEle1,Ele2に作用する磁界の方向に対して電気抵抗値の変化する特性が異なるように設けられている。このため、マグネット部210が回転して各エレメントEle1,Ele2に作用する磁界の向きが回転すると、それに同期してMRセンサSの出力信号の電圧が変動する。この電圧変動分は、モータ20の回転角度に応じた正弦波状に変化する。尚、本実施形態においては、基板230の裏面に固定されたバイアス用マグネット図示略を備えることにより、マグネット部210とバイアス用マグネットとの合成された磁界をMRセンサSに作用させる。これにより、MRセンサSは、モータ20の回転軸20aの1回転に対して1周期分の正弦波状の電圧信号を出力する。センサ部220における4つのMRセンサSs1,Sc1,Ss2,Sc2は、モータ20の回転に伴って正弦波状に電圧が変動する周期信号を出力するが、この出力信号の電圧波形の位相が、π/2ずつずれるように配置して設けられる。各MRセンサSは、直列に接続されたエレメントEle1,Ele2に印加される電圧Vccの1/2の電圧に、正弦波状の電圧変動成分を加えた電圧信号を出力するが、電圧変動分のみが回転角の計算に利用され、直流分Vcc/2については、全てのMRセンサSs1,Sc1,Ss2,Sc2において同一電圧であり回転角の計算に利用されないため、以下、説明を簡単にするために、各MRセンサSs1,Sc1,Ss2,Sc2の出力信号を、正弦波状に変化する電圧変動分の信号として説明する。つまり、実際の出力電圧から直流分Vcc/2をオフセットした値をMRセンサSs1,Sc1,Ss2,Sc2の出力信号として説明する。MRセンサSs1の出力電圧をVs1、MRセンサSc1の出力電圧をVc1、MRセンサSs2の出力電圧をVs2、MRセンサSc2の出力電圧をVc2とすると、出力電圧Vs1,Vc1,Vs2,Vc2は次式2~5のように表される。Vs1=αsinθ2Vc1=αcosθ3Vs2=-αsinθ4Vc2=-αcosθ5ここで、αは電圧振幅を表す。また、θは、予め設定したマグネット部210とセンサ部220との相対回転基準位置からマグネット部210が回転した角度を表す。尚、MRセンサSが、その出力信号がモータ20の1回転に対してN周期N:自然数で変動するように構成されているタイプである場合には、実際のモータ20の回転軸20aの回転角は、モータ回転角θの1/Nとして計算すればよい。以下、MRセンサSの出力信号におけるθをモータ回転角θとして説明する。センサ部220は、各MRセンサSs1,Sc1,Ss2,Sc2の出力電圧Vs1,Vc1,Vs2,Vc2を表す検出信号をアシストECU100に出力する。アシストECU100は、モータ回転角θの検出にかかるマイコンの機能部として、回転角検出部120を備えている。回転角検出部120は、各MRセンサSs1,Sc1,Ss2,Sc2の出力電圧Vs1,Vc1,Vs2,Vc2からモータ回転角θを計算により検出する機能部である。従って、回転角センサ200と回転角検出部120とにより回転角検出装置を構成している。尚、本実施形態においては、アシストECU100のマイコンの機能として回転角検出部120を設けているが、回転角検出部120は、アシストECU100内に設けずに、別の回転角検出用の制御プログラムを記憶したマイコンを設け、そのマイコンによりモータ回転角θを計算により検出するようにした構成であってもよい。回転角検出部120は、各MRセンサSs1,Sc1,Ss2,Sc2の出力電圧Vs1,Vc1,Vs2,Vc2を入力し、この出力電圧Vs1,Vc1,Vs2,Vc2に基づいてモータ回転角θを計算する回転角計算部121と、回転角センサ200におけるマグネット部210とセンサ部220との相対位置が軸方向にずれた状態を表す軸ずれの発生を検出する軸ずれ検出部122と、各MRセンサSs1,Sc1,Ss2,Sc2の異常を検出する異常検出部123とを備えている。回転角計算部121は、以下の方法によりモータ回転角θを計算により求める。ここでは、2通りの計算処理の実施例について説明するが、回転角計算部121は、そのうちの一つを使って計算すればよい。何れの実施例においても、センサ部220の出力信号における正弦波信号と余弦波信号とを使って逆正接を計算することによりモータ回転角θを計算する。<モータ回転角の計算処理1>MRセンサSs1の出力電圧Vs1とMRセンサSs2の出力電圧Vs2との差Vs1-Vs2を表す電圧差Vs1s2、および、MRセンサSc1の出力電圧Vc1とMRセンサSc2の出力電圧Vc2との差Vc1-Vc2を表す電圧差Vc1c2は、次式6,7のように表される。Vs1s2=αsinθ--αsinθ=2αsinθ6Vc1c2=αcosθ--αcosθ=2αcosθ7従って、モータ回転角θは、次式8にて計算することができる。θ=tan1sinθ/cosθ=tan1Vs1s2/Vc1c28回転角計算部121は、各MRセンサSs1,Sc1,Ss2,Sc2の出力する検出信号出力電圧Vs1,Vc1,Vs2,Vc2を入力し、この検出信号に基づいて、上記式8を使ってモータ回転角θを計算する。尚、上記式8によるモータ回転角θの計算にあたっては、解が2つ求められるが、sinθとcosθとが正の値である場合にはθが第1象限0°~90°になる角度を選択し、sinθが正の値でcosθが負の値である場合にはθが第2象限90°~180°になる角度を選択し、sinθが負の値でcosθが負の値である場合にはθが第3象限180°~270°になる角度を選択し、sinθが負の値でcosθが正の値である場合にはθが第4象限270°~360°になる角度を選択する。以下、逆正接の計算に当たっては、これに準じる。<モータ回転角の計算処理2>この計算処理2においては、4つのMRセンサSs1,Sc1,Ss2,Sc2のうち、位相が互いにπ/2ずれている2つのMRセンサSの検出信号を用いる。例えば、MRセンサSs1の出力電圧Vs1とMRセンサSc1の出力電圧Vc1とを用いた場合には、次式9によりモータ回転角θを計算することができる。θ=tan1sinθ/cosθ=tan1Vs1/Vc19また、MRセンサSs2の出力電圧Vs2とMRセンサSc2の出力電圧Vc2とを用いた場合には、次式10によりモータ回転角θを計算することができる。θ=tan1sinθ/cosθ=tan1Vs2/Vc210また、MRセンサSs1の出力電圧Vs1とMRセンサSc2の出力電圧Vc2とを用いた場合には、次式11によりモータ回転角θを計算することができる。θ=tan1sinθ/cosθ=tan1Vs1/-Vc211また、MRセンサSc1の出力電圧Vc1とMRセンサSs2の出力電圧Vs2とを用いた場合には、次式12によりモータ回転角θを計算することができる。θ=tan1sinθ/cosθ=tan1-Vs2/Vc112回転角計算部121は、各MRセンサSの出力する検出信号のうち、位相が互いにπ/2ずれた2つの検出信号を入力し、この検出信号の電圧値に基づいて、上記4つの式の何れか一つを使ってモータ回転角θを計算する。上記計算処理1の場合には、計算処理2に比べて2倍の電圧値を使って計算することができるため、計算されるモータ回転角θの分解能を向上させることができる。従って、本実施形態においては、回転角計算部121は、通常時においては、計算処理1を使ってモータ回転角θを計算し、異常検出部123により4つのMRセンサSの何れかに異常が検出された場合には、正常なMRセンサSの検出信号を2つ使って計算処理2によりモータ回転角θを計算する。次に、軸ずれ検出部122について説明する。軸ずれ検出部122の処理については、4つの実施例軸ずれ検出処理1~4を説明するが、軸ずれ検出部122は、そのうちの一つを使えばよい。<軸ずれ検出処理1>図10は、センサ部220とマグネット部210との軸ずれのイメージを表す図である。この図においては、マグネット部210の回転中心O、つまり、モータ20の回転軸20aの中心Oが、センサ部220の基準位置に対してMRセンサSs2側にずれた例を表している。この場合、例えば、MRセンサSs1の出力電圧Vs1とMRセンサSc1の出力電圧Vc1とを用いて上記式9により計算したモータ回転角を第1検出角θ1とし、MRセンサSs2の出力電圧Vs2とMRセンサSc2の出力電圧Vc2とを用いて上記式10により計算したモータ回転角を第2検出角θ2とすると、図10のように軸ずれが発生している場合には、第1検出角θ1と第2検出角θ2とは、センサ部220に作用する磁界角度に対して、図11に示すような特性で変化する。軸ずれ検出処理1においては、この特性を利用して軸ずれの発生を検出する。図12は、軸ずれ検出処理1としてアシストECU100の軸ずれ検出部122マイコンの機能部が実行する軸ずれ検出ルーチンを表す。軸ずれ検出ルーチンは、所定の周期で繰り返し実行される。軸ずれ検出部122は、まず、ステップS11において、MRセンサSs1の出力電圧Vs1とMRセンサSc1の出力電圧Vc1とを読み込み、上記式9を使って第1検出角θ1を計算する。続いて、ステップS12において、MRセンサSs2の出力電圧Vs2とMRセンサSc2の出力電圧Vc2とを読み込み、上記式10を使って第2検出角θ2を計算する。続いて、軸ずれ検出部122は、ステップS13において、第1検出角θ1と第2検出角θ2との偏差Δθ=|θ1-θ2|を計算し、偏差Δθが判定閾値θrefより大きいか否かを判断する。この判定閾値θrefは、軸ずれの発生の有無を判定する基準値であり予め設定されている。軸ずれ検出部122は、偏差Δθが判定閾値θrefより大きい場合には、ステップS14において、軸ずれ判定フラグFを1に設定して軸ずれ検出ルーチンを終了する。一方、偏差Δθが判定閾値θref以下となる場合には、ステップS14の処理をスキップして軸ずれ検出ルーチンを終了する。この軸ずれ判定フラグFは、F=0により軸ずれ無しを表し、F=1により軸ずれ有りを表し、起動時イグニッションスイッチ87の投入時における初期値は0に設定されている。軸ずれ検出ルーチンは、所定の短い周期で繰り返される。従って、軸ずれの発生が一旦検出されると、軸ずれ有りという判定が維持される。軸ずれ検出部122は、軸ずれ判定フラグFを制御変更指令部130に出力する。この軸ずれ検出処理1によれば、適切に軸ずれの発生を検出することができる。尚、第1検出角θ1、第2検出角θ2の計算にあたっては、上記式11、12を用いて計算するようにしてもよい。<軸ずれ検出処理2>次に、軸ずれ検出処理2について説明する。軸ずれが発生していない場合、MRセンサSs1の出力電圧Vs1=αsinθとMRセンサSs2の出力電圧Vs2=-αsinθとの和は常にゼロになる。また、MRセンサSc1の出力電圧Vc1=αcosθとMRセンサSc2の出力電圧Vc2=-αcosθとの和は常にゼロになる。つまり、互いにπだけ位相がずれた周期波信号同士の電圧値を足し合わせると、その計算結果は、常にゼロになる。しかし、軸ずれが発生している場合には、その計算結果に変化が現れる。例えば、図10に示すように軸ずれが発生している場合には、図13に示すように、MRセンサSs1の出力電圧Vs1とMRセンサSs2の出力電圧Vs2との和に関しては常にゼロになるものの、MRセンサSc1の出力電圧Vc1とMRセンサSc2の出力電圧Vc2との和に関しては、磁界角度に応じた正弦波状に変化するようになる。軸ずれ検出処理2においては、この特性を利用して軸ずれの発生を検出する。図14は、軸ずれ検出処理2としてアシストECU100の軸ずれ検出部122マイコンの機能部が実行する軸ずれ検出ルーチンを表す。軸ずれ検出ルーチンは、所定の周期で繰り返し実行される。軸ずれ検出部122は、まず、ステップS21において、MRセンサSs1の出力電圧Vs1とMRセンサSs2の出力電圧Vs2とを読み込み、出力電圧Vs1と出力電圧Vs2とを足し合わせた加算値Vs12=Vs1Vs2を計算する。続いて、軸ずれ検出部122は、ステップS22において、加算値Vs12が判定閾値Vrefより大きいか否かを判断する。この判定閾値Vrefは、軸ずれの発生の有無を判定する基準値であり予め設定されている。軸ずれ検出部122は、加算値Vs12が判定閾値Vref以下である場合S22:Noには、続くステップS23において、MRセンサSc1の出力電圧Vc1とMRセンサSc2の出力電圧Vc2とを読み込み、出力電圧Vc1と出力電圧Vc2とを足し合わせた加算値Vc12=Vc1Vc2を計算する。続いて、軸ずれ検出部122は、ステップS24において、加算値Vc12が判定閾値Vrefより大きいか否かを判断する。軸ずれ検出部122は、加算値Vc12が判定閾値Vref以下となる場合には、軸ずれ検出ルーチンを一旦終了する。一方、ステップS22において、加算値Vs12が判定閾値Vrefより大きいと判定した場合、あるいは、ステップS24において、加算値Vc12が判定閾値Vrefより大きいと判定した場合には、軸ずれ検出部122は、ステップS25において、軸ずれ判定フラグFを1に設定して軸ずれ検出ルーチンを終了する。軸ずれ判定フラグFは、上述した軸ずれ検出処理1のものと同様であり、F=0により軸ずれ無しを表し、F=1により軸ずれ有りを表し、初期値は0に設定されている。この軸ずれ検出処理2によれば、適切に軸ずれの発生を検出することができる。<軸ずれ検出処理3>次に、軸ずれ検出処理3について説明する。この軸ずれ検出処理3は、センサ部220の出力信号に基づいて、軸ずれ量を計算により求めるものである。例えば、図15aに示すように、x軸方向に軸ずれが発生した場合を考える。ここでx軸方向とは、MRセンサSc1の磁気検出位置とMRセンサSc2の磁気検出位置とを結んだ直線の成す方向である。マグネット部210とセンサ部220との相対位置がx軸方向にずれ量Xだけずれると、各MRセンサSs1,Sc1,Ss2,Sc2における磁気検出位置も、マグネット部210に対して相対的にx軸方向にずれ量Xだけずれる。この場合、MRセンサSs1,Ss2においては、マグネット部210の回転中心Oから各自の磁気検出位置への方向は変化しないが、MRセンサSc1,Sc2においては、マグネット部210の回転中心Oから各自の磁気検出位置への方向がφxだけ傾く。この場合、MRセンサSc1の出力電圧Vc1とMRセンサSc2の出力電圧Vc2とを足し合わせた加算値をVc12とすると、Vc12は、次式13、14のように表されるVc12=αcosθ-φx{-αcosθφx}13Vc12=2αsinθsinφx14従って、傾きφxは、次式15,16により計算することができる。これにより、次式17を使って、ずれ量Xを計算することができる。ここで,Lは、出力信号の位相が互いにπ/2ずれたMRセンサSにおける磁気検出位置間の距離を表す。y軸方向の軸ずれに関しても同様に考えることができる。例えば、図15bに示すように、y軸方向にずれ量Yの軸ずれが発生した場合には、MRセンサSc1,Sc2においては、マグネット部210の回転中心Oから各自の磁気検出位置への方向は変化しないが、MRセンサSs1,Ss2においては、マグネット部210の回転中心Oから各自の磁気検出位置への方向がφyだけ傾く。この場合、MRセンサSs1の出力電圧Vs1とMRセンサSs2の出力電圧Vs2とを足し合わせた加算値をVs12とすると、Vs12は、次式18、19のように表されるVs12=αsinθ-φy{-αsinθφy}18Vs12=-2αcosθsinφy19従って、傾きφyは、次式20,21により計算することができる。これにより、次式22を使って、ずれ量Yを計算することができる。軸ずれは、x軸方向、y軸方向のみに限らず、斜め方向に発生することもある。その場合、電圧Vs12、電圧Vc12の両方が発生するが、相互に影響を及ぼすため、軸ずれ量を数式で表すことは難しい。しかし、軸ずれ量が大きくなるにつれて、加算値Vs12あるいは加算値Vc12も増加するという傾向はかわりない。そこで、予めシミュレーションにより、x軸方向のずれ量Xをφxとφyとで表わした関数X=Fφx,φyと、y軸方向のずれ量Yをφxとφyとで表わした関数Y=Gφx,φyとを計算して2次元マップとしてアシストECU100に記憶しておくことで、軸ずれ検出部122は、モータ駆動制御中においてリアルタイムでずれ量Xおよびずれ量Yを求めることができる。次に、軸ずれ検出処理3としての軸ずれ検出部122の処理について説明する。図16は、軸ずれ検出処理3としてアシストECU100の軸ずれ検出部122マイコンの機能部が実行する軸ずれ検出ルーチンを表す。軸ずれ検出ルーチンは、所定の周期で繰り返し実行される。軸ずれ検出部122は、まず、ステップS31において、MRセンサSc1の出力電圧Vc1とMRセンサSc2の出力電圧Vc2とを読み込み、上述した式16を使って傾きφxを計算する。続いて、軸ずれ検出部122は、ステップS32において、MRセンサSs1の出力電圧Vs1とMRセンサSs2の出力電圧Vs2とを読み込み、上述した式21を使って傾きφyを計算する。続いて、軸ずれ検出部122は、ステップS33において、予め記憶しておいた2次元マップを参照して、傾きφxと傾きφyとから、ずれ量Xとずれ量Yとを求める。続いて、軸ずれ検出部122は、ステップS34において、軸ずれの距離を表す合成ずれ量Dを計算する。合成ずれ量Dは、次式23により、ずれ量Xとずれ量Yとの二乗和の平方根により求められる。続いて、軸ずれ検出部122は、ステップS35において、合成ずれ量Dが判定閾値Drefより大きいか否かを判断する。この判定閾値Drefは、軸ずれの発生の有無を判定する基準値であり予め設定されている。合成ずれ量Dが判定閾値Drefより大きい場合には、ステップS36において、軸ずれ判定フラグFを1に設定して軸ずれ検出ルーチンを終了する。一方、合成ずれ量Dが判定閾値Dref以下である場合には、ステップS36の処理をスキップして軸ずれ検出ルーチンを終了する。この軸ずれ検出処理3によれば、適切に軸ずれの発生を検出することができる。尚、ステップS34,S35においては、合成ずれ量Dを計算せずに、ずれ量Xとずれ量Yとの二乗和X2Y2を、判定閾値Drefの二乗値Dref2に相当する値と比較するようにすれば、計算処理が容易になる。<軸ずれ検出処理4>次に、軸ずれ検出処理4について説明する。例えば、図10に示す方向に軸ずれが発生すると、回転角計算部121により計算されたモータ回転角θは、図17aの実線にて示すように誤差が生じる。このモータ回転角θの誤差角度誤差と呼ぶは、周期的に変動する。この角度誤差によりモータ力率が低下することから、角度誤差最大時にアシストトルクが小さくなり、結果的に、操舵トルクドライバーの入力したトルクが大きくなる。従って、操舵トルクセンサ21により検出される操舵トルクTrは、図17bに示すように、概ね正弦波状に変動する。また、これに伴って、図17cに示すように、指令電流Id,Iq、あるいは、実電流Id,Iqも同様に変動する。従って、操舵トルクあるいは電流検出値あるいは電流指令値の周期変動を検出することで軸ずれの発生を検出することができる。また、軸ずれが発生した場合には、これらの値だけでなく、図17dに示すように、操舵ハンドル11の角速度回転速度も周期的に変動する。従って、操舵角センサ等の操舵角を検出することができる車両においては、操舵角を時間で微分したハンドル角速度の周期変動を検出することで軸ずれの発生を検出することができる。また、ハンドル角速度は、モータ20で発生する誘起電圧と相関関係を有するため、誘起電圧を検出するようにしてもよい。誘起電圧は、後述する回転角センサレス制御において計算される誘起電圧eを使用すればよい。また、ハンドル角速度は、角速度計算部108で計算される角速度ωmを利用することもできる。次に、軸ずれ検出処理4としての軸ずれ検出部122の処理について説明する。図18は、軸ずれ検出処理4としてアシストECU100の軸ずれ検出部122マイコンの機能部が実行する軸ずれ検出ルーチンを表す。軸ずれ検出ルーチンは、所定の周期で繰り返し実行される。軸ずれ検出部122は、まず、ステップS41において、対象データをサンプリングする。対象データは、操舵トルクTr、d軸指令電流Id、q軸指令電流Iq、d軸実電流Id、q軸実電流Iq、ハンドル角速度ωh、誘起電圧e、モータ角速度ωmの何れでも良い。対象データのサンプリングは、回転角計算部121により計算されたモータ回転角θを基準とし、モータ回転角θが360/N°変化するたびに行うNは5以上の任意の整数。軸ずれ検出部122は、モータ回転角θにおける360°分または、その整数倍でもよいの対象データを表す入力信号系列Ykを取得すると、続くステップS42において、入力信号系列Ykにおけるモータ回転角θの周波数モータ回転角θが360°変化する周波数の2倍の周波数の振動成分以下、回転2次周波数成分というの振幅Aを高速フーリエ変換FFTを使って計算する。軸ずれ検出部122は、このステップS42において、まず、回転2次周波数成分のsin成分を表すSsと回転2次周波数成分のcos成分を表すScとを次式24、25により計算する。軸ずれ検出部122は、この計算値を使って、次式26により回転2次周波数成分の振幅Ayを計算する。軸ずれの程度が大きくなるほど、対象データの回転2次周波数成分が増加して振幅Ayが大きくなる。従って、振幅Ayは、軸ずれの程度度合を表すものとなる。続いて、軸ずれ検出部122は、ステップS43において、回転2次周波数成分の振幅Ayが判定閾値Ayrefより大きいか否かを判断する。この判定閾値Ayrefは、軸ずれの発生の有無を判定する基準値であり予め設定されている。軸ずれ検出部122は、振幅Ayが判定閾値Ayrefより大きい場合には、ステップS44において、軸ずれ判定フラグFを1に設定して軸ずれ検出ルーチンを終了する。一方、振幅Ayが判定閾値Ayref以下となる場合には、ステップS44の処理をスキップして軸ずれ検出ルーチンを終了する。この軸ずれ検出処理4によれば、回転角センサ200の検出信号を使わなくても適切に軸ずれの発生を検出することができる。次に、異常検出部123について説明する。異常検出部123は、MRセンサSs1の出力電圧Vs1と、MRセンサSs2の出力電圧Vs2と、MRセンサSc1の出力電圧Vc1と、MRセンサSc2の出力電圧Vc2とを入力し、その出力電圧に基づいてMRセンサSの個々の異常を検出する。例えば、出力電圧が適正範囲内に入っていないMRセンサSがあれば、そのMRセンサSに異常が発生していると判定する。また、一部のMRセンサSのみにおいて、出力電圧に周期変動が検出されない例えば、出力電圧が一定値に固定される場合には、周期変動が検出されないMRセンサSに異常が発生していると判定する。異常検出部123は、MRセンサSの異常を検出した場合には、異常が発生しているMRセンサSを特定した異常検出信号failを回転角計算部121および軸ずれ検出部122に出力する。モータ回転角は、出力電圧の位相が互いにπ/2ずれたMRセンサSが1組正常であれば計算することができる。従って、回転角計算部121は、異常検出部123から異常検出信号failが出力されていない場合、つまり、4つのMRセンサSが正常である場合には、上述した計算処理1によりモータ回転角θを計算するが、MRセンサSの異常が検出されている場合には、出力電圧の位相が互いにπ/2ずれた正常なMRセンサSが1組以上存在すれば、上述した計算処理2を使ってモータ回転角θを計算する。また、軸ずれ検出部122においては、異常検出部123から異常検出信号failが出力されていない場合、つまり、4つのMRセンサSが正常である場合には、上述した軸ずれ検出処理1~4の何れかを使って軸ずれの発生を検出するが、軸ずれ検出処理2,3に関しては、4つのMRセンサが全て正常でなければ実施できないため、MRセンサSの異常が検出されている場合には、軸ずれ検出処理1,4の何れかを実施する。軸ずれ検出処理1の場合には、出力電圧の位相が互いにπ/2ずれた正常なMRセンサSの組み合わせが2組あれば軸ずれ検出処理を実施できるため、1つのMRセンサSに異常が発生している状況であれば、常に軸ずれ検出が可能となる。また、2つ以上のMRセンサSに異常が発生している場合には、出力電圧の位相が互いにπ/2ずれた正常なMRセンサSが2組存在しないことから、軸ずれ検出方法4を実施する必要がある。例えば、軸ずれ検出部122は、軸ずれ検出処理1~4を実行するプログラムを全て記憶し、異常検出部123から出力された異常検出信号failに基づいて、上記のように軸ずれ検出方法を選択するようにするとよい。つまり、軸ずれ検出部122は、複数種類の軸ずれ検出態様を記憶し、センサ異常が検出された場合、そのセンサ異常の発生状況どのMRセンサSに異常が発生したかを表す情報に応じて軸ずれ検出態様を選択する手段を備えるとよい。また、出力電圧の位相が互いにπ/2ずれた正常なMRセンサSが1組も存在しない場合には、モータ回転角θの計算ができない状態となっているため、回転角計算部121および軸ずれ検出部122は、その処理を中止する。また、軸ずれ検出部122は、軸ずれ判定フラグFを1に設定する。これにより、制御変更指令部130は、指令信号Csを使って、操舵アシストの停止指令を各機能部101~109に出力する。以上説明した本実施形態の回転角検出装置を備えた電動パワーステアリング装置によれば、軸ずれ検出部122が回転角センサ200における軸ずれの程度を計算により求め、軸ずれの程度が閾値を超えた場合には、軸ずれが発生したと判断して、軸ずれ判定フラグFを使ってモータ20の作動を禁止して操舵アシストを停止させる。従って、モータ回転角θの誤検出により不適切な操舵アシストが行われることを防止することができ安全性が向上する。また、回転角センサ200は、出力信号の位相がπ/2ずつずれた4つのMRセンサSを備えているため、軸ずれの発生を適正に、かつ、色々な方法で検出することができ、任意のMRセンサSに異常が発生しても、その異常に対応した軸ずれ検出および回転角検出を行うことができる。また、モータ回転角θの計算に当たっては、MRセンサSの正常時においては、計算処理1に示すように、出力信号の位相が互いにπずれた1対のMRセンサSの出力電圧の差Vs1-Vs2,Vc1-Vc2を使ってモータ回転角θを計算するため、分解能を向上させることができ高精度にモータ回転角θを計算することができる。また、軸ずれ検出処理4においては、軸ずれにより生じるモータ回転角θの検出誤差に起因して変動する物理量操舵トルク、モータ電流、ハンドル角速度、モータ角速度、誘起電圧等の回転2次周波数成分を計算により求めることにより軸ずれの発生を検出する。従って、MRセンサSの異常状態に関係なく軸ずれの発生を検出することができる。次に、第2実施形態について説明する。上述した実施形態以下、第1実施形態と呼ぶにおいては、軸ずれの発生を検出した場合に、操舵アシストを停止するように構成されているが、この第2実施形態においては、軸ずれの発生を検出した場合には、直ちに操舵アシストを停止するのではなく、モータ回転角θの検出誤差が操舵アシストに与える影響が少なくなるような制御態様に変更するとともに、モータ回転角θを適正値に補正する補正機能を備えたものである。以下、第1実施形態と同一の構成については、図面に第1実施形態と同一の符号を付してその説明を省略する。図19は、第2実施形態におけるアシストECU100のマイクロコンピュータの処理を表す機能ブロック図である。第2実施形態において、アシストECU100は、第1実施形態の回転角検出部120に代えて回転角検出部1201を備えている。この回転角検出部1201は、第1実施形態と同様の回転角計算部121、軸ずれ検出部122、異常検出部123に加えて、補正部124を備えている。補正部124は、回転角計算部121が計算したモータ回転角を入力するとともに、軸ずれ検出部122から出力される軸ずれ判定フラグFを入力し、軸ずれ判定フラグFが0の場合には、回転角計算部121から入力したモータ回転角をそのまま出力し、軸ずれ判定フラグFが1の場合には、軸ずれの影響を低減するように補正したモータ回転角を最終的なモータ回転角θとして出力する。以下、この第2実施形態においては、回転角計算部121で計算したモータ回転角と補正部124で計算したモータ回転角とを区別するために、回転角計算部121で計算したモータ回転角をモータ回転角θ’と呼び、補正部124で計算した回転角をモータ回転角θと呼ぶ。また、第2実施形態においては、第1実施形態のアシストトルク設定部101に代えてアシストトルク設定部1011を備え、第1実施形態のアシスト電流指令部102に代えてアシスト電流指令部1021を備え、第1実施形態の制御変更指令部130に代えて制御変更指令部1301を備えている。アシストトルク設定部1011、アシスト電流指令部1021、制御変更指令部1301の処理については後述するとして、まず、補正部124の処理について説明する。補正部124の処理については、以下、4つの実施例を説明するが、補正部124は、そのうちの一つを使えばよい。<回転角補正処理1>この回転角補正処理1においては、軸ずれ検出部122が上述の軸ずれ検出処理1を実施するものとする。補正部124は、軸ずれ判定フラグFが1の場合には、軸ずれ検出部122で計算した第1検出角θ1と第2検出角θ2とを読み込み、第1検出角θ1と第2検出角θ2との平均値を計算して、その計算結果θ1θ2/2を最終的なモータ回転角θとして電気角計算部107,角速度計算部108,操舵角計算部109に出力する。従って、図20に示すように、第1検出角θ1に含まれている角度誤差と第2検出角θ2に含まれている角度誤差とが打ち消しあって、角度誤差の少ないモータ回転角θが求められることになる。この回転角補正処理1によれば、軸ずれによる角度誤差を簡単に低減することができる。尚、この回転角補正処理1においては、軸ずれ検出部122で算出した第1検出角θ1と第2検出角θ2とを利用することにより演算負担を軽くしているが、回転角補正処理1を行うにあたって、必ずしも軸ずれ検出部122が軸ずれ検出処理1を実行する必要はなく、他の軸ずれ検出処理を実行してもよい。その場合には、補正部124が第1検出角θ1と第2検出角θ2とを計算すればよい。<回転角補正処理1の変形例>上述した回転角補正処理1においては、2つの検出角θ1,θ2の平均値を計算してモータ回転角θを求めたが、モータ回転角θは4通りのMRセンサSの組み合わせにて計算することができる。つまり、上述した式9~式12を使って4通りのモータ回転角θを計算することができる。そこで、この変形例においては、補正部124は、式9により求められる第1検出角θ1と、式10により求められる第2検出角θ2と、式11により求められる第3検出角θ3と、式12により求められる第4検出角θ4とを計算する。そして、4つの検出角θ1~θ4の平均値を計算して、その計算結果θ1θ2θ3θ4/4を最終的なモータ回転角θとして電気角計算部107,角速度計算部108,操舵角計算部109に出力する。従って、この変形例によれば、一層、角度誤差の少ないモータ回転角θを求めることができる。尚、この変形例においても、軸ずれ検出部122が軸ずれ検出処理1を実施する場合には、第1検出角θ1と第2検出角θ2に関しては、軸ずれ検出部122の計算結果を利用すればよい。<回転角補正処理2>この回転角補正処理2においては、上述した4つの検出角θ1~θ4の平均値に最も近い検出角をモータ回転角θとして採用するものである。図21は、回転角補正処理2としてアシストECU100の補正部124マイコンの機能部が実行する回転角補正ルーチンを表す。回転角補正ルーチンは、所定の周期で繰り返し実行される。補正部124は、まず、ステップS51において、上述した回転角補正処理1の変形例のように式9~式12を使って第1検出角θ1、第2検出角θ2、第3検出角θ3、第4検出角θ4を計算する。つまり、4通りのMRセンサSの組み合わせによりモータ回転角を計算する。続いて、ステップS52において、4つの検出角θ1~θ4の平均値θave=θ1θ2θ3θ4/4を計算する。続いて、補正部124は、ステップS53において、平均値θaveと第k検出角θkk1234との差の絶対値を表す偏差θc[k]を計算するθc[k]=|θave-θk|。ここでは、偏差θc[1]から偏差θc[4]まで計算されることになる。続いて、補正部124は、ステップS54において、変数nを1,変数Nを1に設定し、続くステップS55において、偏差θc[N]が偏差θc[n1]よりも小さいか否かを判断する。この場合、偏差θc[1]が偏差θc[2]より小さいか否かを判断することになる。偏差θc[N]が偏差θc[n1]より小さい場合にはS55:Yes、ステップS56において、Nの値をnに設定し、偏差θc[N]が偏差θc[n1]以上である場合にはS55:No、ステップS57において、Nの値をn1に設定する。続いて、補正部124は、ステップS58において、変数nが3であるかを判断し、変数nが3でなければ、ステップS59において、変数nを値1だけインクリメントして、その処理をステップS55に戻す。補正部124は、変数nが3であると判定されるまでステップS55からステップS59までの処理を繰り返す。補正部124は、こうした処理を繰り返し、変数nが3であると判定するとS58:Yes、ステップS60において、モータ回転角θを第N検出角θNに設定して回転角補正ルーチンを終了する。この回転角補正ルーチンでは、偏差θc[k]が最も小さくなる検出角θkがモータ回転角θに設定される。従って、最も真の値に近い検出角θkをモータ回転角θに設定することができ、軸ずれによる角度誤差を簡単に低減することができる。<回転角補正処理3>軸ずれが発生すると、回転角計算部121により計算されたモータ回転角θ’に誤差が生じる。このモータ回転角’の誤差角度誤差と呼ぶは、例えば、図22aに示すように、周期的に変動するこの例では、検出角度が大きくなる方向に誤差が発生している例である。このため、軸ずれ検出処理4で説明したように、操舵トルク、角速度等にモータ回転角θ’の回転2次周波数成分が発生する。そこで、この回転角補正処理3においては、この回転2次周波数成分の振幅をゼロに近づけるように振幅をフィードバックして補正量を計算する。角度誤差は、モータ回転角θ’に応じて周期的に変動する。そこで、回転角補正処理3においては、計算の簡略化のために補正波形を正弦波として、この補正波形の振幅、位相、補正方向を計算して補正量を決定する。軸ずれが発生して、図22aに示すように、モータ回転角θ’に誤差が生じると、同図bに示すように、モータ回転角θ’を微分した角速度ω’=dθ’/dtが周期的に変動する。角速度ω’の変動は、角度誤差が最大のとき、および、ゼロのときに角速度ω’の誤差がゼロになるような、概ね正弦波に近い波形を示すと考えられる。また、角度誤差によりモータ力率が低下することから、角度誤差最大時にアシストトルクが小さくなり、結果的に、操舵トルクTrが大きくなる。従って、操舵トルクTrの変動は、図22cに示すように、概ね正弦波に近い波形を示す。ここで、軸ずれの影響で、例えば、図22aに示すように、角度が大きくなる方向に誤差が発生している場合においては、モータ回転角θ’を時間で微分した角速度ω’は、真のモータ回転角が45°,225°付近で最大、135°,315°付近で最小となる回転2次波形となる。逆に、角度が小さくなる方向に誤差が発生している軸ずれの場合においては、真のモータ回転角が45°,225°付近で最小、135°,315°付近で最大となる回転2次波形となる。一方、操舵トルクTrは、角度誤差の方向に関わらず、真のモータ回転角が0°,180°付近で最小、90°,270°付近で最大となる。従って、角速度ω’と操舵トルクTrとの関係に基づいて、補正方向を決定することができる。つまり、操舵トルクTrに対して角速度ω’の位相が90°進んでいれば、モータ回転角θ’をマイナス方向に補正し、逆に、操舵トルクTrに対して角速度ω’の位相が90°遅れていれば、モータ回転角θ’をプラス方向に補正すればよい。図23は、回転角補正処理3を実行するアシストECU100の補正部の機能ブロック図である。補正部124は、角速度計算部1241と、二つのFFT計算部1242,1243と、補正量計算部1244と、補正波形生成部1245と、補正量加算部1246とを備えている。角速度計算部1241は、回転角計算部121で計算されたモータ回転角θ’を入力し、モータ回転角θ’を時間で微分した角速度ω’を計算してFFT計算部1242に出力する。FFT計算部1242は、モータ回転角θ’と角速度ω’とを入力し、モータ回転角θ’が360/N°変化するたびに、角速度ω’をサンプリングしNは5以上の任意の整数、モータ回転角θ’における360°分または、その整数倍でもよいの角速度ω’kのサンプリングを終えた時点で、角速度ω’における回転2次周波数成分の振幅Aωおよび位相φωを高速フーリエ変換FFTを使って計算する。FFT計算部1242は、回転2次周波数成分のsin成分を表すSωsと、回転2次周波数成分のcos成分を表すSωcとを次式27、28によりFFT計算する。FFT計算部1242は、次式29、30により回転2次周波数成分の振幅Aωと位相φωを計算する。FFT計算部1242は、計算した振幅Aωと位相φωを補正量計算部1244に出力する。もう一方のFFT計算部1243は、モータ回転角θ’と操舵トルクTrとを入力し、モータ回転角θ’が360/N°変化するたびに、操舵トルクTrをサンプリングしNは5以上の任意の整数、モータ回転角θ’における360°分または、その整数倍でもよいの操舵トルクTrkのサンプリングを終えた時点で、操舵トルクTrにおける回転2次周波数成分の振幅Atおよび位相φtを高速フーリエ変換FFTを使って計算する。FFT計算部1243は、回転2次周波数成分のsin成分を表すStsと、回転2次周波数成分のcos成分を表すStcとを次式31、32によりFFT計算する。FFT計算部1243は、次式33、34により回転2次周波数成分の振幅Atと位相φtを計算する。FFT計算部1243は、計算した振幅Atと位相φtを補正量計算部1244に出力する。補正量計算部1244の処理については、フローチャートを使って説明する。図24は、補正量計算部1244の実行する補正量計算ルーチンを表す。補正量計算ルーチンは、所定の周期で繰り返し実行される。補正量計算部1244は、まず、ステップS71において、角速度ω’の回転2次周波数成分の振幅Aωが閾値Aωref1より大きいか否かを判断し、振幅Aωが閾値Aωref1以下であれば、本ルーチンを一旦終了し、所定のインターバルをあけて本ルーチンを繰り返す。一方、振幅Aωが閾値Aωref1より大きい場合には、補正量計算部1244は、続く、ステップS72において、操舵トルクTrの回転2次周波数成分の位相φtから角速度ω’の回転2次周波数成分の位相φωを引いた差φt-φωが約π/2であるか否かを判断する。差が約π/2であるとは、差がπ/2を中心としてプラスマイナスαの許容範囲内π/2とみなすことのできる範囲内に入っていることである。補正量計算部1244は、差φt-φωが約π/2である場合には、ステップS73において、補正量の位相φ、つまり補正波形の位相をφω-90°に設定し、補正方向sをマイナス方向-1に設定する。一方、差φt-φωが約π/2ではない場合においては、補正量計算部1244は、ステップS74において、操舵トルクTrの回転2次周波数成分の位相φtから角速度ω’の回転2次周波数成分の位相φωを引いた差φt-φωが約-π/2であるか否かを判断する。補正量計算部1244は、差φt-φωが約-π/2である場合には、ステップS75において、補正量の位相φをφω-90°に設定し、補正方向sをプラス方向1に設定する。また、補正量計算部1244は、差φt-φωが約-π/2ではない場合には、本ルーチンを一旦終了し、所定のインターバルをあけて本ルーチンを繰り返す。このステップS72からステップS75の処理は、操舵トルクTrの位相φtと角速度ω’の位相φωとを比較して、角速度ω’の位相φωが操舵トルクTrの位相φtよりも約90°進んでいる場合にはモータ回転角θ’の補正方向をモータ回転角θ’を減らす方向に設定し、角速度ω’の位相φωが操舵トルクTrの位相φtよりも約90°遅れている場合にはモータ回転角θ’の補正方向をモータ回転角θ’を増やす方向に設定するものである。続いて、補正量計算部1244は、ステップS76において、補正量の振幅Aを予め設定した一定値ΔAだけ増加させるA=AΔA。尚、振幅Aの初期値はゼロでよい。続いて、ステップS77において、FFT計算部1242で計算された角速度ω’の回転2次周波数成分の振幅Aωを読み込み、ステップS78において、振幅Aωが予め設定した閾値Aωref2より大きいか否かを判断する。補正量計算部1244は、振幅Aωが閾値Aωref2より大きい場合には、その処理をステップS76に戻して、補正量の振幅Aを一定値ΔAだけ増加させる。補正量計算部1244は、こうした処理S76~S78を繰り返し、振幅Aωが閾値Aωref2以下になるまで低下すると本ルーチンを一旦終了する。補正量計算部1244は、補正量計算ルーチンの実行時において、ステップS76で計算した補正量の振幅Aと、ステップS73,S75で計算した補正量の位相φ、補正方向s1または-1を補正波形生成部1245に出力する。補正波形生成部1245は、次式35を使って補正量補正角度θaを表す補正波形を生成する。θa=sAsin2θ-φ135補正波形生成部1245は、算出した補正波形を補正量加算部1246に出力する。補正量加算部1246は、回転角計算部121により計算されたモータ回転角θ’に、補正角度θaを加算することにより、修正されたモータ回転角度θ’θaを計算し、この計算結果をモータ回転角θとして出力する。この回転角補正処理3によれば、角速度ω’の回転2次周波数成分の振幅Aωをゼロに近づけるように振幅Aωをフィードバックして補正量を計算するため、回転角計算部121で計算されたモータ回転角θ’に軸ずれによる角度誤差が含まれていても、その角度誤差をゼロにするように補正されたモータ回転角θが計算される。従って、精度の高いモータ回転角θを計算することができる。また、MRセンサSの検出信号を使って補正量を計算するものではないため、一部のMRセンサSに異常が発生していても適正なモータ回転角θを計算することができる。<回転角補正処理4>上述の軸ずれ検出処理3において説明したように、マグネット部210とセンサ部220との相対位置がx軸方向にずれた場合においては、式16で表される角度φxだけマグネット部210の回転中心OからMRセンサSc1,Sc2の磁気検出位置への方向が変化する。また、マグネット部210とセンサ部220との相対位置がy軸方向にずれた場合においては、式21で表される角度φyだけマグネット部210の回転中心OからMRセンサSs1,Ss2の磁気検出位置への方向が変化する。従って、回転角補正処理4においては補正部124は、マグネット部210とセンサ部220との相対位置がx軸方向のみにずれた場合には、式16で計算した角度φxに符号-1を乗算した値-φxを補正角度として設定し、回転角計算部121により計算されたモータ回転角θ’に補正角度-φxを加算してモータ回転角θを計算する。また、補正部124は、マグネット部210とセンサ部220との相対位置がy軸方向のみにずれた場合には、式21で計算した角度φyに符号-1を乗算した値-φyを補正角度として設定し、回転角計算部121により計算されたモータ回転角θ’に補正角度-φyを加算してモータ回転角θを計算する。このように回転角補正処理4においては、軸ずれがx軸方向に発生した場合とy軸方向に発生した場合とにおいて、モータ回転角の位相ずれ量φxあるいはφyを計算し、その位相ずれ量でモータ回転角θ’を補正することにより適切なモータ回転角θを計算することができる。また、例えば、補正角度を常にメモリに記憶更新するようにすれば、一部のMRセンサSに異常が発生してそれ以降補正角度を計算できない状態になっても、記憶している最新の補正角度を使って、補正部124がモータ回転角の補正処理を行うことができる。従って、軸ずれを加味した操舵アシストを継続させることができる。尚、補正部124は、MRセンサSc1の出力電圧Vc1とMRセンサSc2の出力電圧Vc2とを足し合わせた加算値Vc12が閾値より大きく、かつ、MRセンサSs1の出力電圧Vs1とMRセンサSs2の出力電圧Vs2とを足し合わせた加算値Vs12がゼロ近傍となる場合に、マグネット部210とセンサ部220との相対位置がx軸方向のみにずれていると判定し、逆に、加算値Vc12がゼロ近傍となり、かつ、加算値Vs12が閾値より大きい場合に、マグネット部210とセンサ部220との相対位置がy軸方向のみにずれていると判定する。また、加算値Vc12と加算値Vs12とがともに閾値よりも大きい場合には、マグネット部210とセンサ部220との相対位置がx軸方向とy軸方向とにずれているため、モータ回転角θ’の補正を行わない。つまり、位相が互いにπずれた2つのMRセンサSの出力値の合計が閾値よりも大きく、かつ、位相が互いにπずれた他の2つの磁気センサSの出力値の合計がゼロ近傍となる軸ずれが発生している場合において、補正角度を計算する。次に、第2実施形態におけるアシストトルク設定部1011、アシスト電流指令部1021、制御変更指令部1301の処理について説明する。ここでは、第1実施形態のアシストトルク設定部101、アシスト電流指令部102、制御変更指令部1301と相違する点について説明する。第2実施形態における制御変更指令部1301は、軸ずれ検出部122により軸ずれの発生が検出されたときF=1に、制御態様の変更として操舵アシストを停止させるのではなく、アシスト制御量の計算方法を変更して操舵アシストを継続させるように作動する。制御変更指令部1301は、軸ずれ検出部122から出力される軸ずれ判定フラグFを入力し、この軸ずれ判定フラグFにしたがって、アシストトルク設定部1011に対して、目標アシストトルクTの計算方法を指定するための指令信号Ctを出力する。この指令信号Ctには、軸ずれ判定フラグFがそのまま用いられる。図25は、第1実施形態のアシストトルク設定部101と相違する部分のアシストトルク設定部1011の処理を表す。アシストトルク設定部1011は、ステップS81において、軸ずれ判定フラグFを表す指令信号Ctを読み込んで、軸ずれ判定フラグFが1であるか否かを判断し、軸ずれ判定フラグFが1である場合、つまり、軸ずれの発生が検出されている場合には、ステップS82において、ダンピング補償トルクTb1と戻し補償トルクTb2とをゼロに設定する。一方、軸ずれ判定フラグFが0である場合S81:No、つまり、軸ずれの発生が検出されていない場合には、アシストトルク設定部1011は、ステップS82の処理をスキップする。従って、この場合には、図4,5に示したダンピング補償トルクマップ、戻し補償トルクマップに基づいてダンピング補償トルクTb1と戻し補償トルクTb2とが設定される。ダンピング補償トルクTb1および戻し補償トルクTb2は、それぞれモータ回転角θから計算される角速度ωmおよび操舵角θhに基づいて計算されるものである。従って、このアシストトルク設定部1011においては、軸ずれの発生が検出されている場合に、ダンピング補償トルクTb1および戻し補償トルクTb2をゼロに設定することで、軸ずれがアシストトルクに与える影響を低減する。また、制御変更指令部1301は、軸ずれ検出部122から出力される軸ずれ判定フラグFを入力し、この軸ずれ判定フラグFにしたがって、アシスト電流指令部1021に対して、電流指令値d軸指令電流Idの計算方法を指定するための指令信号Ciを出力する。この指令信号Ciには、軸ずれ検出部122から入力した軸ずれ判定フラグFに加えて軸ずれ程度Qを表す情報が含まれている。従って、この第2実施形態においては、軸ずれ検出部122は、軸ずれ判定フラグFに加えて軸ずれ程度Qを表す情報を制御変更指令部1301に出力する。図26は、第1実施形態のアシスト電流指令部102と相違する部分にかかるアシスト電流指令部1021の処理を表す。アシスト電流指令部1021は、ステップS91において、軸ずれ判定フラグFおよび軸ずれ程度Qを表す指令信号Ctを読み込んで、軸ずれ判定フラグFが1であるか否かを判断し、軸ずれ判定フラグFが1である場合、ステップS92において、軸ずれ程度Qに基づいて制限ゲインGを計算する。アシスト電流指令部1021は、図6に示すd軸指令電流マップに加えて、図27に示す制限ゲインマップを記憶している。この制限ゲインマップは、軸ずれ程度Qが閾値Qref1以下となっている範囲においては、制限ゲインGを値1.0に設定し、軸ずれ程度Qが閾値Qref1を超える範囲においては、軸ずれ程度Qの増加にしたがって値0にまで減少する制限ゲインGを設定する特性を有する。軸ずれ程度Qは、例えば、軸ずれ検出部122が軸ずれ検出処理1を実施する場合であれば、第1検出角θ1と第2検出角θ2との偏差Δθ=|θ1-θ2|を用いることができる。この場合、軸ずれ程度Qの閾値Qref1は、判定閾値θrefに設定するとよい。また、軸ずれ程度Qは、例えば、軸ずれ検出部122が軸ずれ検出処理2を実施する場合であれば、加算値Vs12=Vs1Vs2と加算値Vc12=Vc1Vc2とのうちの大きい方の値を用いることができる。この場合、軸ずれ程度Qの閾値Qref1は、判定閾値Vrefに設定するとよい。また、軸ずれ程度Qは、例えば、軸ずれ検出部122が軸ずれ検出処理3を実施する場合であれば、軸ずれの距離を表す合成ずれ量Dを用いることができる。この場合、軸ずれ程度Qの閾値Qref1は、判定閾値Drefに設定するとよい。また、軸ずれ程度Qは、例えば、軸ずれ検出部122が軸ずれ検出処理4を実施する場合であれば、振幅Ayを用いることができる。この場合、軸ずれ程度Qの閾値Qref1は、判定閾値Ayrefに設定するとよい。アシスト電流指令部1021は、ステップS92において制限ゲインGを計算すると、続くステップS93において、図6に示すd軸指令電流マップを参照して計算されるd軸指令電流Idに制限ゲインG<1を乗算した値を、最終的なd軸指令電流Idに設定するId=GId。つまり、アシスト電流指令部1021は、角速度ωmに基づいて計算したd軸指令電流Idを軸ずれ程度Qに応じて低減するように補正する。一方、軸ずれ判定フラグFが0である場合S91:No、つまり、軸ずれの発生が検出されていない場合には、アシスト電流指令部1021は、ステップS92,S93の処理をスキップする。従って、この場合には、d軸指令電流Idは低減補正されない。d軸指令電流Idは、モータ回転角θから計算される角速度ωmに基づいて計算されるものである。従って、このアシスト電流指令部1021においては、軸ずれの発生が検出されている場合に、軸ずれ程度Qが大きいほどd軸指令電流Idを少なくなるように補正することで、軸ずれが弱め界磁制御に与える影響を低減する。以上説明した第2実施形態の回転角検出装置を備えた電動パワーステアリング装置によれば、軸ずれ検出部122により軸ずれの発生が検出された場合には、補正部124が軸ずれによる角度誤差を低減するようにモータ回転角θを計算し、このモータ回転角θを使ってモータ20を駆動制御する。従って、操舵アシストを継続させるためドライバーにとって使い勝手がよい。また、軸ずれの発生が検出されている場合には、モータ回転角θに関連して設定される制御量補償トルクTb1,Tb2、d軸指令電流Idを低減するようにしているため、軸ずれが操舵アシストに与える影響を低減することができる。次に、第3実施形態について説明する。この第3実施形態は、軸ずれ程度Qに基づいて、操舵アシストの制御態様を3通りに切り替えるように構成したものである。以下、第2実施形態と同一の構成については、図面に第2実施形態と同一の符号を付してその説明を省略する。図28は、第3実施形態におけるアシストECU100のマイクロコンピュータの処理を表す機能ブロック図である。第3実施形態におけるアシストECU100は、第2実施形態の構成に加えて、電気角推定部140と電気角選択部150とを備えている。また、第2実施形態の角速度計算部108,操舵角計算部109,制御変更指令部1301に代えて、角速度計算部1081,操舵角計算部1091,制御変更指令部1302を備えている。電気角推定部140は、モータ20で発生する誘起電圧逆起電力に基づいてモータ20の電気角を推定し、この推定した電気角を電気角選択部150に出力する。一方、電気角計算部107は、回転角検出部1201から出力されたモータ回転角θに基づいて電気角を計算し、この電気角を電気角選択部150に出力する。ここで、2つの電気角を区別するために、電気角推定部140により誘起電圧に基づいて推定された電気角を推定電気角θe2と呼び、電気角計算部107により計算された電気角をセンサ電気角θe1と呼ぶ。電気角選択部150は、センサ電気角θe1と推定電気角θe2とを入力し、その何れか一方を選択して出力する。この選択された電気角が最終的に操舵アシスト制御に使用される電気角θeとなる。電気角選択部150から出力された電気角θeは、3相/2相座標変換部104および2相/3相座標変換部105に出力されるとともに、角速度計算部1081および操舵角計算部1091に出力される。角速度計算部1081は、電気角θeを入力し、電気角θeを時間で微分することにより角速度ωmを求める。また、操舵角計算部1091は、電気角θeを入力し、操舵ハンドル11の中立位置を基準として、この中立位置からのモータ20が回転した電気角θeに基づいて操舵角θhを求める。電気角推定部140は、モータ20で発生する誘起電圧と角速度とが比例関係を有することを利用して、誘起電圧からモータ角速度を算出する。そして、演算周期とモータ角速度とから、1演算周期あたりにモータ20が回転した角度を求め、1演算周期前の電気角にこの回転角度をモータ回転方向に加算することで現時点の電気角、つまり、推定電気角を算出する。こうした推定電気角によりモータを駆動する制御を回転角センサレス制御と呼ぶ。ここで、電気角推定部140の行う推定電気角θe2の計算処理について説明する。電気角推定部140は、電圧センサ39から出力されるモータ端子電圧Vu,Vv,Vwを表す検出信号と、電流センサ38から出力されるモータ電流Iu,Iv,Iwを表す検出信号とを入力し、モータ20で発生する誘起電圧eを計算する。誘起電圧eの計算にあたっては、図30に示すように、モータ20のU相の誘起電圧をeu、V相の誘起電圧をev、W相の誘起電圧をewとして、次式36,37,38により誘起電圧eu、ev、ewを計算する。eu=Vu-IuR-Vm36ev=Vv-IvR-Vm37ew=Vw-IwR-Vm38ここで、Vmは中点電圧、Rは各相のコイルの巻線抵抗である。中点電圧Vmは、Vm=VuVvVw/3として計算すればよい。モータ20の誘起電圧eは、次式39を使って3相の誘起電圧eu,ev,ewを2相のd-q座標系における誘起電圧ed,eqに変換した後に、次式40を使って計算することができる。モータ20で発生する誘起電圧eとモータ角速度とは比例関係を有する。従って、モータ角速度ωは、次式41により推定することができる。ω=e/Ke41ここで、Keは、モータ20の角速度と誘起電圧との関係を表すモータ誘起電圧定数V/rad/sである。以下、推定されたモータ角速度ωを推定角速度ωと呼ぶ。電気角推定部140は、推定角速度ωと演算周期とから、1演算周期の間にモータ20の回転子が回転した電気角変化量|Δθe|を次式42により計算する。|Δθe|=Kfω42ここでKfは、モータ角速度rad/sから1演算周期のあいだにモータ20の回転子が回転する電気角radを求めるための定数であり、演算周期に相当する。電気角推定部140は、1周期前の演算タイミングで算出した推定電気角θe2を記憶しており、この推定電気角θe2に電気角変化量|Δθe|をモータ回転方向に応じて加減算することにより現在の推定電気角θe2を算出する。モータ20の回転方向は、例えば、操舵トルクTrの符号正負にて判定することができる。このため、推定電気角θe2は、操舵トルクTrの符号をSTrとすると、次式43にて表される。θe2=θe2n1STr|Δθe|43この場合、推定電気角θe2n1の初期値は、電気角推定部140が演算を開始する直前に検出されていたセンサ電気角θe1を使用すればよい。次に、制御変更指令部1302について説明する。制御変更指令部1302は、軸ずれ検出部122から出力される軸ずれ判定フラグFおよび軸ずれ程度Qを表す情報を入力する。そして、判定フラグFが1の場合には、第2実施形態と同様に、アシストトルク設定部1011に対して目標アシストトルクTの計算方法を変更するための指令信号Ctを出力し、アシスト電流指令部1021に対して電流指令値の計算方法を変更するための指令信号Ciを出力する。制御変更指令部1302は、軸ずれ程度Qが大きい場合には、電気角計算部107により計算されるセンサ電気角θe1に代えて、電気角推定部140により推定される推定電気角θe2を使ってモータ20を駆動する制御態様に切り替える。図29は、制御変更指令部1302マイコンの機能部が実行する制御態様切替ルーチンを表す。制御態様切替ルーチンは、所定の周期で繰り返し実行される。制御変更指令部1302は、まず、ステップS101において、軸ずれ検出部122から出力される軸ずれ程度Qを読み込む。続いて、ステップS102において、軸ずれ程度Qの大きさが、第1閾値Qref1以下であるのか、第1閾値Qref1より大きく第2閾値Qref2>Qref1以下であるのか、第2閾値Qref2より大きいのかについて判定する。制御変更指令部1302は、軸ずれ程度Qが第1閾値Qref1以下であると判定した場合には、ステップS103において、モータ20の制御態様をノーマル制御に設定し、ステップS104において、車室内のインストルメントパネルに設けられたインジケータ300をオフ消灯状態に維持する。この軸ずれ程度Qは、第2実施形態における軸ずれ程度Qと同様であり、例えば、軸ずれ検出部122が軸ずれ検出処理1を実施する場合であれば第1検出角θ1と第2検出角θ2との偏差Δθ=|θ1-θ2|に相当するものであり、軸ずれ検出部122が軸ずれ検出処理2を実施する場合であれば加算値Vs12=Vs1Vs2と加算値Vc12=Vc1Vc2とのうちの大きい方の値に相当するものであり、軸ずれ検出部122が軸ずれ検出処理3を実施する場合であれば軸ずれの距離を表す合成ずれ量Dに相当するものであり、軸ずれ検出部122が軸ずれ検出処理4を実施する場合であれば回転2次周波数成分の振幅Ayに相当するものである。また、第1閾値Qref1は、軸ずれ検出部122が軸ずれ判定フラグFを0から1に切り替える閾値に相当し、例えば、軸ずれ検出部122が軸ずれ検出処理1を実施する場合であれば判定閾値θrefに相当するものであり、軸ずれ検出部122が軸ずれ検出処理2を実施する場合であれば判定閾値Vrefに相当するものであり、軸ずれ検出部122が軸ずれ検出処理3を実施する場合であれば判定閾値Drefに相当するものであり、軸ずれ検出部122が軸ずれ検出処理4を実施する場合であれば判定閾値Ayrefに相当するものである。従って、制御変更指令部1302は、軸ずれが少なく、軸ずれ判定フラグFが0となる状況においては、モータ20の制御態様をノーマル制御に設定する。ノーマル制御とは、回転角検出部1201により検出されたモータ回転角θを使ってモータ20を駆動制御するとともに、軸ずれ検出によって操舵アシストの制限を行うことをしない通常の制御態様をいう。制御変更指令部1302は、モータ20の制御態様をノーマル制御に設定するにあたって、アシストトルク設定部1011に対しては指令信号Ctを使ってノーマル制御を指定し、アシスト電流指令部1021に対しては指令信号Ciを使ってノーマル制御を指定し、電気角推定部140および電気角選択部150に対しては指令信号Ceを使ってノーマル制御を指定する。ノーマル制御が指定されると、アシストトルク設定部1011は、補償トルクTb1,Tb2を組み込んだ目標アシストトルクTを計算する。また、アシスト電流指令部1021は、制限ゲインGを値1.0に設定する。また、電気角推定部140は、推定電気角θe2の計算処理を行わない。また、電気角選択部150は、電気角計算部107により出力されるセンサ電気角θe1を選択して、電気角θeとして出力する。また、ノーマル制御が設定されている場合には、軸ずれ判定フラグFが0になっているため、回転角検出部1201においては、回転角計算部121で計算されたモータ回転角θ’を補正することなくモータ回転角θとして出力する。一方、制御変更指令部1302は、ステップS102において、軸ずれ程度Qが第1閾値Qref1より大きく、かつ、第2閾値Qref2以下であると判定した場合には、ステップS105において、モータ20の制御態様を軸ずれ補正制御に設定し、ステップS106において、車室内のインストルメントパネルに設けられたインジケータ300を黄色にて点灯させて、ドライバーに対して注意を促す。軸ずれ程度Qが第1閾値Qref1より大きくなる場合、軸ずれ判定フラグFは1に設定されている。従って、モータ20の制御態様が軸ずれ補正制御に設定された場合、回転角検出部1201においては、補正部124が上述した回転角補正処理1~4の何れかを実行することにより、軸ずれに伴う角度誤差を低減したモータ回転角θを出力する。制御変更指令部1302は、制御態様を軸ずれ補正制御に設定するにあたって、アシストトルク設定部1011に対しては指令信号Ctを使って軸ずれ補正制御を指定し、アシスト電流指令部1021に対しては指令信号Ciを使って軸ずれ補正制御を指定し、電気角推定部140および電気角選択部150に対しては指令信号Ceを使って軸ずれ補正制御を指定する。アシストトルク設定部1011は、軸ずれ補正制御が指定されると、補償トルクTb1,Tb2をゼロTb1=0,Tb2=0にした目標アシストトルクTを計算する。また、アシスト電流指令部1021は、制限ゲインマップを参照して制限ゲインGを角速度ωmに基づいて設定し、この制限ゲインGによりd軸指令電流Idを低減するように補正する。また、電気角推定部140は、ノーマル制御と同様に推定電気角θe2の計算処理を行わない。また、電気角選択部150は、ノーマル制御と同様に電気角計算部107により出力されるセンサ電気角θe1を選択して、電気角θeとして出力する。この軸ずれ補正制御においては、モータ回転角θに関連して設定される制御量補償トルクTb1,Tb2、d軸指令電流Idが低減されるため、軸ずれが操舵アシストに与える影響を低減することができる。また、操舵アシストを停止せずに継続するためドライバーにとって使い勝手がよい。また、インジケータが黄色にて点灯するため、ドライバーに異常を知らせることができる。また、制御変更指令部1302は、ステップS102において、軸ずれ程度Qが第2閾値Qref2より大きいと判定した場合には、ステップS107において、モータ20の制御態様を回転角センサレス制御に設定し、ステップS108において、車室内のインストルメントパネルに設けられたインジケータ300を赤色にて点灯させて、ドライバーに対して強い注意を促す。尚、インジケータ300の点灯に加えて、更に、アラームブザー図示略を鳴動させるようにしてもよい。制御変更指令部1302は、制御態様を回転角センサレス制御に設定するにあたって、アシストトルク設定部1011に対しては指令信号Ctを使って回転角センサレス制御を指定し、アシスト電流指令部1021に対しては指令信号Ciを使って回転角センサレス制御を指定し、電気角推定部140および電気角選択部150に対しては指令信号Ceを使って回転角センサレス制御を指定する。アシストトルク設定部1011およびアシスト電流指令部1021は、回転角センサレス制御が指定された場合は、軸ずれ補正制御が指定された場合と同様の処理を行う。一方、電気角推定部140は、回転角センサレス制御が指定されると、上述した推定電気角θe2の計算処理を開始し、計算した推定電気角θe2を電気角選択部150に出力する。電気角選択部150は、回転角センサレス制御が指定されると、電気角推定部140から出力された推定電気角θe2と回転角検出部1201から出力されたセンサ電気角θe1とのうち推定電気角θe2を選択して、電気角θeとして出力する。回転角センサレス制御が実施される場合には、回転角検出部1201で検出したモータ回転角θはモータ20の駆動制御に使用されないため、回転角検出部1201においては、回転角計算部121および補正部124の計算処理を中止する。この回転角センサレス制御においては、回転角検出装置回転角センサ200と回転角検出部1201を使わずに、モータ20で発生する誘起電圧に基づいてモータ20の電気角を推定し、その推定した推定電気角θe2に基づいてモータ20を駆動制御する。従って、回転角センサ200に大きな軸ずれが発生していても、軸ずれに関係なくモータ20を駆動制御することができる。このため、操舵アシストを継続させるためドライバーにとって使い勝手がよい。また、回転角センサレス制御の場合には、回転角検出装置が適切に作動する場合に比べて、電気角の検出精度が低下している。そのため、この実施形態においては、モータ回転角θ電気角θeに対応するに関連して設定される制御量補償トルクTb1,Tb2、d軸指令電流Idを低減することで、不適切な操舵アシストが行われることを抑制することができる。以上説明した第3実施形態の回転角検出装置を備えた電動パワーステアリング装置によれば、軸ずれ程度Qに応じてモータ20の制御態様を切り替えるため、回転角センサ200の軸ずれ状態に応じた適切な操舵アシスト制御を実行することができる。また、モータ20の制御態様の切り替えにあわせて、インジケータ300の作動態様を切り替えるため、ドライバーに対して、軸ずれ程度が大きいほど強く修理の必要性を知らせることができる。尚、軸ずれ程度Qが第2閾値Qref2より大きい場合には、ステップS107において、操舵アシストを停止するようにしてもよい。また、モータ20の制御態様を、ノーマル制御と回転角センサレス制御の2通りとして、軸ずれ程度Qが第1閾値Qref1より大きい場合には、回転角センサレス制御を設定するようにしてもよい。以上、3つの実施形態にかかる回転角検出装置を備えた電動パワーステアリング装置について説明したが、本発明は上記実施形態に限定されるものではなく、本発明の目的を逸脱しない限りにおいて種々の変更が可能である。例えば、本実施形態においては、MRセンサSの異常を検出する異常検出部123を備えているが、必ずしも異常検出部123を設ける必要はない。異常検出部123を設けなくても、MRセンサSの異常が発生した場合には、軸ずれ検出部122が大きな軸ずれの発生を検出することになるため、その軸ずれの発生の検出により、操舵アシストの制御態様を変更停止あるいは回転角センサレス制御への変更することが可能となり、MRセンサSの異常に対処することができる。また、例えば、第1実施形態では、軸ずれの発生が検出された場合F=1、操舵アシスト制御を停止するようにしているが、第2実施形態のように、アシストトルク設定部1011、アシスト電流指令部1021、制御変更指令部1301を設けて、操舵アシストの制御量の計算方法を切り替えて操舵アシストを継続するようにしてもよい。また、本実施形態の回転角センサ200は、N極に着磁された領域211とS極に着磁された領域212とを1つずつ設けたマグネット部210を使用しているが、例えば、図31に示すように、N極とS極とが複数の領域に交互に着磁されたマグネット部210を使用することもできる。また、同図に示すように、センサ部220は、マグネット部210の外周面に向かい合って、その周方向に沿ってMRセンサSs1,Sc1,Ss2,Sc2を所定間隔で配設して設けるよう構成されたものであってもよい。この場合においても、MRセンサSs1,Sc1,Ss2,Sc2は、位相がπ/2ずつずれた検出信号を出力するように配置すればよい。また、本実施形態の回転角センサ200は、4つのMRセンサSを備えているが、MRセンサSの数は、4つに限るものではない。例えば、図31に示すように着磁されたマグネット部210を備えている場合には、破線にて示すセンサ部220を追加して、2組のセンサ部220を互いに周方向に180°ずれた位置に設けるようにすることもできる。この場合は、一方のセンサ部220が故障した場合でも、他方のセンサ部220を使用することができる。また、軸ずれ検出処理4においては、振幅を計算する対象データとして、操舵トルクTr、d軸指令電流Id、q軸指令電流Iq、d軸実電流Id、q軸実電流Iq、ハンドル角速度ωh、誘起電圧e、モータ角速度ωmの何れか1つを使用しているが、それらのうちの複数種類の振幅を計算し、計算された複数種類の振幅に基づいて軸ずれを判断するようにしてもよい。例えば、複数種類の振幅の最大値、あるいは、最小値、あるいは、平均値等を使って軸ずれを判断するようにしてもよい。また、第2実施形態におけるアシストトルク設定部1011においては、軸ずれの発生が検出されている場合には、ダンピング補償トルクTb1および戻し補償トルクTb2をゼロに設定しているが、必ずしもゼロにする必要はなく、それらが低減されるように補正するものであればよい。また、回転角補正処置3においては、角速度ω’の回転2次周波数成分の振幅Aωが閾値Aωref2以下に低減されように補正量θを計算しているが、角速度ω’に代えて、軸ずれの発生に伴って回転2次周波数成分の振動が生じる他の物理量を採用することもできる。また、本実施形態においては、モータ20の発生するトルクをラックバー14に付与するラックアシスト式の電動パワーステアリング装置について説明したが、モータの発生するトルクをステアリングシャフト12に付与するコラムアシスト式の電動パワーステアリング装置であってもよい。"