(57)【特許請求の範囲】
【請求項１】
走行用の動力源になるモータと、
前記モータが３６０度／ｎ（ｎは１以上の整数）の基準角度回転する毎に、そのことを示す基準角度情報を出力すると共に、前記モータが前記基準角度よりも小さい一定の単位角度回転する毎に、前記基準角度情報の出力タイミングを基準とした前記モータの回転角度を示す単位角度情報を出力する回転検出手段と、
を備えた車両に用いられ、前記基準角度情報及び前記単位角度情報を用いて前記モータへの通電を制御する車両の走行用モータ制御装置であって、
前記単位角度情報の誤差を補正して、前記基準角度情報の出力タイミングを基準とした前記モータの回転角度を示す補正角度情報を出力する補正手段を備え、前記補正角度情報に基づいて前記モータへの通電を制御するよう構成されており、
前記補正手段は、
前記基準角度情報の出力タイミング毎に、該基準角度情報の前回出力時から今回出力時までの１周期時間を計測し、該計測した１周期時間に基づいて、前記モータの以後の回転において該モータが前記単位角度回転するのに要する時間を推定する時間推定手段と、
前記基準角度情報の出力タイミングから、前記時間推定手段により推定されている時間である推定時間が経過する毎に、該推定時間経過中に前記モータが前記単位角度回転したものと推定して前記基準角度情報の出力タイミングを基準とした前記モータの回転角度を推定し、該推定結果を推定角度情報として出力する角度推定手段と、
前記基準角度情報の出力間隔である１周期において、前記単位角度情報が示す回転角度である実検出角度が、該実検出角度の最終値である最終角度を含む複数の代表角度の各々になったとき毎に、前記推定角度情報が示す回転角度である推定角度が、前記実検出角度に対してどれだけ進んでいるかを示す推実差分を算出する推実差分算出手段と、
前記推実差分算出手段により算出された前記１周期分の前記各代表角度での推実差分に基づいて、前記実検出角度が前記基準角度情報の出力タイミングでの初期値から前記代表角度のうち最も小さい最小代表角度になるまでの区間と、隣接する前記代表角度同士の区間との各々について、その各区間での前記実検出角度の増加量に対して前記推定角度の増加量がどれだけ多かったかを示す増加量差分を算出し、該増加量差分を、記憶部に、どの区間に対応するものであるかを識別可能に記憶する増加量差分算出手段と、
前記増加量差分算出手段により前記記憶部に記憶された前記１周期分の前記増加量差分を、それと同じ前記１周期において前記推実差分算出手段により算出された前記最終角度での推実差分に応じて修正する修正手段と、
前記基準角度情報の出力タイミングで前記補正角度情報の値を前記初期値にする初期化処理と、前記基準角度情報の出力タイミングを基準として、前記単位角度情報が出力される毎に、前記補正角度情報の値を前記単位角度に相当する値ずつ増加させる出力更新処理と、前記実検出角度が前記基準角度情報の出力タイミングから前記最小代表角度になるまでの区間、及び前記実検出角度が前記代表角度のうちの何れかの代表角度になってから次の代表角度になるまでの区間の各々において、その区間での前記補正角度情報の値の増加量が、その区間に対応して前記記憶部に記憶されている前記増加量差分だけ多くなるように、前記出力更新処理で増加させる値を変更する補正処理と、を行う出力処理手段と、
を備えていること特徴とする車両の走行用モータ制御装置。
【請求項２】
請求項１に記載の車両の走行用モータ制御装置において、
前記修正手段は、
前記修正のための処理として、前記増加量差分算出手段により前記記憶部に記憶された前記１周期分の前記増加量差分の総和を、前記推実差分算出手段により算出された前記最終角度での推実差分だけ減らす処理を行うこと、
を特徴とする車両の走行用モータ制御装置。
【請求項３】
請求項２に記載の車両の走行用モータ制御装置において、
前記修正手段は、
前記推実差分算出手段により算出された前記最終角度での推実差分の絶対値が、前記単位角度に相当する値よりも大きい場合、前記修正のための処理として、前記最終角度での推実差分をＮ個（Ｎは２以上の整数）の値に分割し、前記増加量差分算出手段により前記記憶部に記憶された前記１周期分の前記増加量差分のうち、Ｎ個の増加量差分の各々から、前記分割したＮ個の各値をそれぞれ減じる処理を行うこと、
を特徴とする車両の走行用モータ制御装置。
【請求項４】
請求項１ないし請求項３の何れか１項に記載の車両の走行用モータ制御装置において、
前記実検出角度が前記最終角度になったときに前記推実差分算出手段により算出された前記最終角度での推実差分の絶対値が所定値以上の場合に、その回の前記１周期において前記推実差分算出手段が算出した前記推実差分を無効化して、前記出力処理手段が前記補正処理で用いる前記記憶部内の増加量差分が更新されるのを禁止する更新禁止手段を備えていること、
を特徴とする車両の走行用モータ制御装置。
【請求項５】
請求項１ないし請求項４の何れか１項に記載の車両の走行用モータ制御装置において、
前記時間推定手段は、
今回計測した前記１周期時間から前回計測した前記１周期時間を減算した結果と、今回計測した前記１周期時間とを加算した時間を、次回の１周期時間の推定値として算出し、その算出した１周期時間の推定値に基づいて、前記モータが前記単位角度回転するのに要する時間を推定すること、
を特徴とする車両の走行用モータ制御装置。
【請求項６】
走行用の動力源になるモータと、
前記モータが３６０度／ｎ（ｎは１以上の整数）の基準角度回転する毎に、そのことを示す基準角度情報を出力すると共に、前記モータが前記基準角度よりも小さい一定の単位角度回転する毎に、前記基準角度情報の出力タイミングを基準とした前記モータの回転角度を示す単位角度情報を出力する回転検出手段と、
を備えた車両に用いられ、前記基準角度情報及び前記単位角度情報を用いて前記モータへの通電を制御する車両の走行用モータ制御装置であって、
前記単位角度情報の誤差を補正して、前記基準角度情報の出力タイミングを基準とした前記モータの回転角度を示す補正角度情報を出力する補正手段を備え、前記補正角度情報に基づいて前記モータへの通電を制御するよう構成されており、
前記補正手段は、
前記基準角度情報の出力タイミング毎に、該基準角度情報の前回出力時から今回出力時までの１周期時間を計測し、該計測した１周期時間に基づいて、前記モータの以後の回転において該モータが前記単位角度回転するのに要する時間を推定する時間推定手段と、
前記基準角度情報の出力タイミングから、前記時間推定手段により推定されている時間である推定時間が経過する毎に、該推定時間経過中に前記モータが前記単位角度回転したものと推定して前記基準角度情報の出力タイミングを基準とした前記モータの回転角度を推定し、該推定結果を推定角度情報として出力する角度推定手段と、
前記基準角度情報の出力間隔である１周期において、前記単位角度情報が示す回転角度である実検出角度が、該実検出角度の最終値である最終角度を含む複数の代表角度の各々になったとき毎に、前記推定角度情報が示す回転角度である推定角度が、前記実検出角度に対してどれだけ進んでいるかを示す推実差分を算出する推実差分算出手段と、
前記推実差分算出手段により算出された前記１周期分の前記各代表角度での推実差分に基づいて、前記実検出角度が前記基準角度情報の出力タイミングでの初期値から前記代表角度のうち最も小さい最小代表角度になるまでの区間と、隣接する前記代表角度同士の区間との各々について、その各区間での前記実検出角度の増加量に対して前記推定角度の増加量がどれだけ多かったかを示す増加量差分を算出し、該増加量差分を、記憶部に、どの区間に対応するものであるかを識別可能に記憶する増加量差分算出手段と、
前記増加量差分算出手段により前記記憶部に記憶された前記１周期分の前記増加量差分を、それらの総和が０となるように修正する修正手段と、
前記基準角度情報の出力タイミングで前記補正角度情報の値を前記初期値にする初期化処理と、前記基準角度情報の出力タイミングを基準として、前記単位角度情報が出力される毎に、前記補正角度情報の値を前記単位角度に相当する値ずつ増加させる出力更新処理と、前記実検出角度が前記基準角度情報の出力タイミングから前記最小代表角度になるまでの区間、及び前記実検出角度が前記代表角度のうちの何れかの代表角度になってから次の代表角度になるまでの区間の各々において、その区間での前記補正角度情報の値の増加量が、その区間に対応して前記記憶部に記憶されている前記増加量差分だけ多くなるように、前記出力更新処理で増加させる値を変更する補正処理と、を行う出力処理手段と、
を備えていること特徴とする車両の走行用モータ制御装置。
【請求項７】
走行用の動力源になるモータと、
前記モータが３６０度／ｎ（ｎは１以上の整数）の基準角度回転する毎に、そのことを示す基準角度情報を出力すると共に、前記モータが前記基準角度よりも小さい一定の単位角度回転する毎に、前記基準角度情報の出力タイミングを基準とした前記モータの回転角度を示す単位角度情報を出力する回転検出手段と、
を備えた車両に用いられ、前記基準角度情報及び前記単位角度情報を用いて前記モータへの通電を制御する車両の走行用モータ制御装置であって、
前記単位角度情報の誤差を補正して、前記基準角度情報の出力タイミングを基準とした前記モータの回転角度を示す補正角度情報を出力する補正手段を備え、前記補正角度情報に基づいて前記モータへの通電を制御するよう構成されており、
前記補正手段は、
前記基準角度情報の出力タイミング毎に、該基準角度情報の前回出力時から今回出力時までの１周期時間を計測し、該計測した１周期時間に基づいて、前記モータの以後の回転において該モータが前記単位角度回転するのに要する時間を推定する時間推定手段と、
前記基準角度情報の出力タイミングから、前記時間推定手段により推定されている時間である推定時間が経過する毎に、該推定時間経過中に前記モータが前記単位角度回転したものと推定して前記基準角度情報の出力タイミングを基準とした前記モータの回転角度を推定し、該推定結果を推定角度情報として出力する角度推定手段と、
前記基準角度情報の出力間隔である１周期毎に、前記単位角度情報が示す回転角度である実検出角度が、前記基準角度情報の出力タイミングでの初期値から、該実検出角度の最終値を含む複数の代表角度のうち最も小さい最小代表角度になるまでの区間と、隣接する前記代表角度同士の区間との各々について、その各区間での前記実検出角度の増加量に対して前記推定角度情報が示す回転角度である推定角度の増加量がどれだけ多かったかを示す増加量差分を算出し、該増加量差分を、記憶部に、どの区間に対応するものであるかを識別可能に記憶する増加量差分算出手段と、
前記１周期毎に、前記推定角度の該１周期分の誤差であって、前記推定角度が前記実検出角度に対してどれだけ進んでいたかを示す総累積推定誤差を算出する推定誤差算出手段と、
前記増加量差分算出手段により前記記憶部に記憶された前記１周期分の前記増加量差分を、それと同じ前記１周期について前記推定誤差算出手段により算出された前記総累積推定誤差に応じて修正する修正手段と、
前記基準角度情報の出力タイミングで前記補正角度情報の値を前記初期値にする初期化処理と、前記基準角度情報の出力タイミングを基準として、前記単位角度情報が出力される毎に、前記補正角度情報の値を前記単位角度に相当する値ずつ増加させる出力更新処理と、前記実検出角度が前記基準角度情報の出力タイミングから前記最小代表角度になるまでの区間、及び前記実検出角度が前記代表角度のうちの何れかの代表角度になってから次の代表角度になるまでの区間の各々において、その区間での前記補正角度情報の値の増加量が、その区間に対応して前記記憶部に記憶されている前記増加量差分だけ多くなるように、前記出力更新処理で増加させる値を変更する補正処理と、を行う出力処理手段と、
を備えていること特徴とする車両の走行用モータ制御装置。
【請求項８】
請求項７に記載の車両の走行用モータ制御装置において、
前記修正手段は、
前記修正のための処理として、前記増加量差分算出手段により前記記憶部に記憶された前記１周期分の前記増加量差分の総和を、前記総累積推定誤差だけ減らす処理を行うこと、
を特徴とする車両の走行用モータ制御装置。
【請求項９】
請求項８に記載の車両の走行用モータ制御装置において、
前記修正手段は、
前記総累積推定誤差の絶対値が、前記単位角度に相当する値よりも大きい場合、前記修正のための処理として、前記総累積推定誤差をＮ個（Ｎは２以上の整数）の値に分割し、前記増加量差分算出手段により前記記憶部に記憶された前記１周期分の前記増加量差分のうち、Ｎ個の増加量差分の各々から、前記分割したＮ個の各値をそれぞれ減じる処理を行うこと、
を特徴とする車両の走行用モータ制御装置。
【請求項１０】
請求項７ないし請求項９の何れか１項に記載の車両の走行用モータ制御装置において、
前記推定誤差算出手段により算出された前記総累積推定誤差の絶対値が所定値以上の場合に、前記出力処理手段が前記補正処理で用いる前記記憶部内の増加量差分が更新されるのを禁止する更新禁止手段を備えていること、
を特徴とする車両の走行用モータ制御装置。
【請求項１１】
請求項７ないし請求項１０の何れか１項に記載の車両の走行用モータ制御装置において、
前記時間推定手段は、
今回計測した前記１周期時間から前回計測した前記１周期時間を減算した結果と、今回計測した前記１周期時間とを加算した時間を、次回の１周期時間の推定値として算出し、その算出した１周期時間の推定値に基づいて、前記モータが前記単位角度回転するのに要する時間を推定すること、
を特徴とする車両の走行用モータ制御装置。
【請求項１２】
走行用の動力源になるモータと、
前記モータが３６０度／ｎ（ｎは１以上の整数）の基準角度回転する毎に、そのことを示す基準角度情報を出力すると共に、前記モータが前記基準角度よりも小さい一定の単位角度回転する毎に、前記基準角度情報の出力タイミングを基準とした前記モータの回転角度を示す単位角度情報を出力する回転検出手段と、
を備えた車両に用いられ、前記基準角度情報及び前記単位角度情報を用いて前記モータへの通電を制御する車両の走行用モータ制御装置であって、
前記単位角度情報の誤差を補正して、前記基準角度情報の出力タイミングを基準とした前記モータの回転角度を示す補正角度情報を出力する補正手段を備え、前記補正角度情報に基づいて前記モータへの通電を制御するよう構成されており、
前記補正手段は、
前記基準角度情報の出力タイミング毎に、該基準角度情報の前回出力時から今回出力時までの１周期時間を計測し、該計測した１周期時間に基づいて、前記モータの以後の回転において該モータが前記単位角度回転するのに要する時間を推定する時間推定手段と、
前記基準角度情報の出力タイミングから、前記時間推定手段により推定されている時間である推定時間が経過する毎に、該推定時間経過中に前記モータが前記単位角度回転したものと推定して前記基準角度情報の出力タイミングを基準とした前記モータの回転角度を推定し、該推定結果を推定角度情報として出力する角度推定手段と、
前記基準角度情報の出力間隔である１周期毎に、前記単位角度情報が示す回転角度である実検出角度が、前記基準角度情報の出力タイミングでの初期値から、該実検出角度の最終値を含む複数の代表角度のうち最も小さい最小代表角度になるまでの区間と、隣接する前記代表角度同士の区間との各々について、その各区間での前記実検出角度の増加量に対して前記推定角度情報が示す回転角度である推定角度の増加量がどれだけ多かったかを示す増加量差分を算出し、該増加量差分を、記憶部に、どの区間に対応するものであるかを識別可能に記憶する増加量差分算出手段と、
前記増加量差分算出手段により前記記憶部に記憶された前記１周期分の前記増加量差分を、それらの総和が０となるように修正する修正手段と、
前記基準角度情報の出力タイミングで前記補正角度情報の値を前記初期値にする初期化処理と、前記基準角度情報の出力タイミングを基準として、前記単位角度情報が出力される毎に、前記補正角度情報の値を前記単位角度に相当する値ずつ増加させる出力更新処理と、前記実検出角度が前記基準角度情報の出力タイミングから前記最小代表角度になるまでの区間、及び前記実検出角度が前記代表角度のうちの何れかの代表角度になってから次の代表角度になるまでの区間の各々において、その区間での前記補正角度情報の値の増加量が、その区間に対応して前記記憶部に記憶されている前記増加量差分だけ多くなるように、前記出力更新処理で増加させる値を変更する補正処理と、を行う出力処理手段と、
を備えていること特徴とする車両の走行用モータ制御装置。
【請求項１３】
車両の駆動力を供給するモータと、
前記モータの回転角度を検出するための回転センサであって、前記モータが基準角度だけ回転する度に基準角度情報を出力すると共に、前記基準角度よりも小さい一定の単位角度だけ前記モータが回転する度に実検出角度情報を出力するように構成されており、前記実検出角度情報は前記基準角度情報が出力されたタイミングを基準として前記モータが回転した実検出角度を示すようになっている回転センサと、
前記回転センサと前記モータとに接続され、前記回転センサから前記実検出角度情報と前記基準角度情報とを受け取り、前記モータに対して通電制御指令を出力するコントローラと、
前記回転センサに接続された推定パルス生成器であって、前記基準角度情報が出力される度に前記基準角度情報の周期間隔を計測し、その計測した間隔に基づいて、前記モータが次に前記単位角度だけ回転するために必要とされる推定時間を算出し、その推定時間に基づいて推定パルスを生成する推定パルス生成器と、
前記回転センサと前記推定パルス生成器とに接続されたカウンタであって、前記推定時間が経過する間に前記モータは前記単位角度だけ回転するという仮定の下で、前記推定パルスが入力される度に前記推定パルスをカウントすることによって、前記基準角度情報が出力されるタイミングを基準として計測される前記モータの回転角度の推定値である推定角度を算出し、その推定角度を示す推定角度情報を出力するカウンタと、
メモリと、を備え、
前記メモリには、前記基準角度情報の１周期中における複数の代表角度毎の複数の第１差分が記憶され、前記複数の第１差分の各々は、前記実検出角度が、前記１周期中における前記複数の代表角度のうちの１つに相当する値になる度に記録され、前記複数の代表角度は前記実検出角度の最終値に相当する最終角度を含み、前記複数の第１差分は前記推定角度が前記実検出角度に対して進んでいる量を示し、
前記メモリには、さらに、複数の角度区間毎についての複数の第２差分が記憶され、前記複数の第２差分の各々は、前記メモリに記憶された前記複数の代表角度の前記複数の第１差分に基づいて算出され、前記複数の角度区間の１つは、前記基準角度情報が出力されたタイミングにおける前記実検出角度の初期値と前記複数の代表角度のうちの最小代表角度との間と定義され、前記複数の角度区間のうちのその他は、前記複数の代表角度の隣接するもの同士の間と定義され、前記複数の第２差分の各々は、その第２差分に対応する角度区間において、前記推定角度の増加量が前記実検出角度の増加量に対して進んでいる量を示し、
前記メモリには、さらに、前記複数の角度区間毎についての複数の学習値が記憶され、その学習値は、前記メモリに記憶された前記複数の第２差分を、前記複数の第１差分のうち前記最終角度での第１差分に応じて修正することにより算出されたものであり、
前記コントローラは、
前記基準角度情報が出力された時に、前記モータの回転の補正角度を示す補正角度情報の値を前記初期値にセットする初期化指令と、
前記基準角度情報の出力タイミングを基準として、前記実検出角度情報が出力される度に、前記単位角度に相当する所定値だけ前記補正角度情報の値を増加させる出力更新指令と、
前記複数の角度区間の各々で前記実検出角度が変化する間、前記メモリに記憶された前記複数の角度区間の前記複数の学習値のうち、現在の前記角度区間に対応する１つの学習値が示す値だけ、前記補正角度情報の値の増加量を増加させる補正指令と、を出力すると共に、
前記モータに対して、前記補正角度情報に基づいて算出される前記通電制御指令を出力すること、
を特徴とする車両用のモータ制御システム。
【請求項１４】
車両の駆動力を供給するモータの回転を検出するための回転検出装置であって、
前記モータが所定基準角度だけ回転する度に、基準角度情報を受信し、前記モータが前記基準角度よりも小さい所定の分解能値に基づく単位角度だけ回転する度に、単位回転角度情報を受信し、前記基準角度情報と前記単位回転角度情報とに基づいて、前記基準角度情報が受信された時である基準タイミングを基準として計測された前記モータの回転の実検出角度を示す実検出角度情報を算出する実検出角度算出手段と、
前記基準角度情報を受信した間隔である１周期の時間を計測し、その計測した時間と前記分解能値とに基づいて、前記基準タイミングを基準として計測された前記モータの回転の推定角度を示す推定角度情報を算出する推定角度算出手段と、
前記１周期における前記推定角度情報と前記実検出角度情報との間の差分を示す総累積推定誤差を算出する推定誤差算出手段と、
前記１周期中において、前記１周期中で定義された複数の角度区間の各々について、その角度区間での前記推定角度情報の増加量と前記実検出角度情報の増加量との間の差分を示す複数の増加量差分を算出する増加量差分算出手段と、
前記１周期分の前記複数の増加量差分を、前記総累積推定誤差に応じて修正することにより、複数の学習値を算出し、その算出した学習値の各々を、前記複数の角度区間の各々に関連するように記憶部に記憶する学習値算出手段と、
前記複数の角度区間の各々において、前記実検出角度情報の変化量が、前記記憶部に記憶された前記複数の学習値のうち、現在の前記角度区間に対応する１つの学習値が示す値だけ変化させられるように、前記実検出角度情報を補正し、その補正後の値を、前記モータの補正された回転角度を示す補正角度情報として出力する出力処理手段と、
を備えていることを特徴とする回転検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両の走行用モータを制御する装置に関する。
【背景技術】
【０００２】
例えば電気自動車やハイブリッド自動車、電車などのように走行用の動力源としてモータを備えた車両において、モータを制御するために用いられる走行用モータ制御装置としては、モータの回転角度を検出し、その検出結果に基づいてモータへの通電を制御（詳しくはモータへの通電を行うインバータ等の駆動装置を制御）するよう構成されたものが知られている（例えば、特許文献１参照。）。
【０００３】
特許文献１には、モータの回転角度を検出する回転角度センサとしてレゾルバを用いた制御装置が記載されている。レゾルバは、モータの出力軸の回転と共に回転するロータ、及びステータを備え、ロータの位置によるロータとステータとの間のリラクタンスの変化に応じた（即ちモータの回転角度に応じた）回転検出信号を出力する、周知の回転角度検出用のセンサである。尚、以下の説明では、レゾルバのステータ及びロータを、モータのステータ及びロータと区別するために、それぞれ、「レゾルバステータ」、「レゾルバロータ」という。
【０００４】
レゾルバのより具体的な構成について、位相が電気角で９０度ずれた２つの回転検出信号を出力する２相のレゾルバを例に挙げて説明すると、レゾルバロータ又はレゾルバステータのいずれか一方に一次コイルが設けられ、他方に二次コイルが設けられている。そして、一定周波数の励磁信号が一次コイルに供給されることにより、二次コイルから、励磁信号が振幅変調された信号であって且つ位相が９０度ずれた２つの回転検出信号が出力される。
【０００５】
レゾルバから出力される回転検出信号はアナログ信号である。そのため、レゾルバを用いてモータの回転角度を検出する場合は、通常、レゾルバと共に、このレゾルバからの回転検出信号をモータの回転角度を示すデジタルデータである角度データに変換するレゾルバ・デジタル変換器（ＲＤＣ：Resolver Digital Converter）が用いられる。そして、走行用モータ制御装置は、ＲＤＣからの角度データに基づいてモータへの通電を制御する。
【０００６】
尚、レゾルバから出力される２つの回転検出信号は、互いに振幅が等しく、また互いにオフセットが無く、更に互いの位相差が規定値（上記例では９０度）であることが理想的であり、ＲＤＣは、レゾルバから入力される２つの回転検出信号がそのように理想的なものである場合に理想的に機能し、回転角度の検出精度が良好になる。
【０００７】
また、モータの回転角度を検出する回転角度センサとしては、上述したレゾルバ以外にも、例えば一定角度回転する毎にそのことを示す信号（パルス）を出力すると共にモータが１回転する毎にそのことを示す信号（パルス）を出力するインクリメンタルエンコーダや、一定角度回転毎にそのときの回転角度を示す角度データを出力するアブソリュートエンコーダ、更には例えば特許文献２に記載されているような、縦型ホール素子と磁気抵抗素子（ＭＲＥ）との組み合わせにより回転角度に応じた信号を出力するセンサなど、様々な構成・方式のものがある。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平１０−２１５５０４号公報
【特許文献２】特開２００８−１８５４０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ところで、レゾルバを例に挙げると、実際には、レゾルバロータの形状のばらつきや、レゾルバの各コイルの特性、或いはレゾルバロータとレゾルバステータとのギャップのばらつき（以下これらをまとめて「製造ばらつき」ともいう）などの種々の原因により、そのレゾルバからの回転検出信号は上述した理想的なものとはならず、２相のレゾルバ信号に振幅差やオフセット、位相誤差が生じる可能性がある。つまり、レゾルバからの回転検出信号が、製造ばらつき等に起因する誤差を含むものとなってしまう。
【００１０】
そして、このようにレゾルバからの回転検出信号が誤差を含むものであると、ＲＤＣから出力される角度データも誤差を含むデータとなり、回転角度の検出精度が低下することとなる。具体的には、モータが等速度で回転している場合であっても、ＲＤＣからの角度データが時間に対して比例せずに非線形になってしまう。
【００１１】
すると、走行用モータ制御装置では、そのＲＤＣからの角度データに基づいてモータの回転角度を把握し、モータへの通電を制御するため、モータへの通電がモータの実際の回転角度に応じた適切な値にならず、モータの制御精度が低下してしまうこととなる。
【００１２】
更に具体的な現象としては、例えば、自動車が一定速度で走行しており、且つ、運転者がアクセルペダルの操作力（一般には踏む力）を変えていない場合に、ＲＤＣからの誤差を含む角度データ、即ち実際のモータの回転角度とは異なった回転角度を示すデータに基づいてモータの制御が行われることで、モータの発生トルクが増減してしまい、運転者がアクセルペダルの操作力を変えていないにも関わらず車両に前後方向の不要な加速度（正又は負の加速度）が発生してしまう。よって、運転者を含む車両の乗員に不快感を与えてしまう可能性がある。
【００１３】
また、前述したようなレゾルバ以外の回転角度センサにおいても、製造ばらつき等に起因して検出信号に誤差が発生する可能性があるため、同様の問題が生じる。
そこで、本発明は、車両の走行用モータ制御装置において、モータの回転角度を検出する回転検出手段の製造ばらつき等に起因した誤差を含む検出結果を、適切に補正して、モータの制御精度を向上させることを目的としている。
【課題を解決するための手段】
【００１４】
請求項１に記載の本発明は、走行用の動力源になるモータと、このモータが３６０度／ｎ（ｎは１以上の整数）の基準角度回転する毎に、そのことを示す基準角度情報を出力すると共に、モータが前記基準角度よりも小さい一定の単位角度回転する毎に、基準角度情報の出力タイミングを基準としたモータの回転角度を示す単位角度情報を出力する回転検出手段と、を備えた車両に用いられ、その回転検出手段からの基準角度情報及び単位角度情報を用いてモータへの通電を制御する車両の走行用モータ制御装置であって、単位角度情報の誤差を補正して、基準角度情報の出力タイミングを基準としたモータの回転角度を示す補正角度情報を出力する補正手段を備えており、その補正手段から出力される補正角度情報に基づいてモータへの通電を制御するよう構成されている。
【００１５】
そして、補正手段は、時間推定手段と、角度推定手段と、推実差分算出手段と、記憶部と、増加量差分算出手段と、修正手段と、出力処理手段とを備えている。
時間推定手段は、基準角度情報の出力タイミング毎（回転検出手段から基準角度情報が出力される毎）に、該基準角度情報の前回出力時から今回出力時までの１周期時間を計測し、その計測した１周期時間に基づいて、モータの以後の回転において該モータが前記単位角度回転するのに要する時間を推定する。
【００１６】
そして、角度推定手段は、基準角度情報の出力タイミングから、時間推定手段により推定されている時間である推定時間が経過する毎に、その推定時間経過中にモータが単位角度回転したものと推定して基準角度情報の出力タイミングを基準としたモータの回転角度を推定し、該推定結果を推定角度情報として出力する。
【００１７】
また、推実差分算出手段は、基準角度情報の出力間隔である１周期において、単位角度情報が示す回転角度である実検出角度が、該実検出角度の最終値である最終角度を含む複数の代表角度の各々になったとき毎に、推定角度情報が示す回転角度である推定角度が、前記実検出角度に対してどれだけ進んでいるかを示す推実差分を算出する。尚、この推実差分は、正と負の何れにもなり得るものである。
【００１８】
そして、増加量差分算出手段が、推実差分算出手段により算出された前記１周期分の各代表角度での推実差分に基づいて、実検出角度が基準角度情報の出力タイミングでの初期値から前記代表角度のうち最も小さい最小代表角度になるまでの区間と、隣接する代表角度同士の区間との各々について、その各区間での実検出角度の増加量に対して推定角度の増加量がどれだけ多かったかを示す増加量差分を算出し、該増加量差分を、記憶部に、どの区間に対応するものであるかを識別可能に記憶する。尚、この増加量差分も、正と負の何れにもなり得るものである。
【００１９】
そして更に、修正手段が、増加量差分算出手段により記憶部に記憶された前記１周期分の増加量差分を、それと同じ前記１周期において推実差分算出手段により算出された最終角度での推実差分に応じて修正する。
【００２０】
そして、出力処理手段は、基準角度情報の出力タイミングで補正角度情報の値を初期値にする初期化処理と、基準角度情報の出力タイミングを基準として、単位角度情報が出力される毎に（即ち、実検出角度が単位角度だけ進む毎に）、補正角度情報の値を単位角度に相当する値ずつ増加させる出力更新処理と、実検出角度が基準角度情報の出力タイミングから前記最小代表角度になるまでの区間、及び実検出角度が前記代表角度のうちの何れかの代表角度になってから次の代表角度になるまでの区間の各々において、その区間での補正角度情報の値の増加量が、その区間に対応して前記記憶部に記憶されている増加量差分だけ多くなるように、出力更新処理で増加させる値を変更する補正処理とを行う。尚、増加量差分が負の場合、「増加量差分だけ多くなるように」とは、換言すると「その増加量差分の絶対値だけ少なくなるように」ということになる。
【００２１】
次に、このような補正手段による補正原理について説明する。尚、ここでは、「推定角度−実検出角度」を推実差分として算出するものとして説明する。
まず、時間推定手段が推定する推定時間は、基準角度情報の出力タイミング毎に、その直前に基準角度回転するのに要した実際の１周期時間に基づいて推定されるものであるため、直前の回転状態が反映された信頼性のある値である。
【００２２】
そして、角度推定手段は、基準角度情報の出力タイミングから上記推定時間が経過する毎にモータが単位角度ずつ回転するであろうとの予測を前提に、基準角度情報の出力タイミングを基準とした回転角度を示す推定角度情報（その時点の推定角度を示す情報）を出力する。このため、推定角度情報（推定角度）は、直前の回転状態が反映された信頼性のある情報である。
【００２３】
そこで、推実差分算出手段が、基準角度情報の出力間隔である１周期において、単位角度情報が示す実検出角度が複数の代表角度の各々になったとき毎に、推定角度情報が示す推定角度が実検出角度に対してどれだけ進んでいるかを示す推実差分を算出する。この推実差分は、推定角度に対する実検出角度の不足分（遅れ分）を表すものとも言える。
【００２４】
そして、増加量差分算出手段が、推実差分算出手段により算出された１周期分の各代表角度での推実差分に基づいて、実検出角度が初期値から最小代表角度になるまでの区間と、隣接する代表角度同士の区間との各々について、実検出角度と推定角度との増加量差分を算出し、その各区間についての増加量差分を記憶部に記憶する。
【００２５】
ここで、その増加量差分は、各区間での実検出角度の増加量に対して推定角度の増加量がどれだけ多かったかを示すものであり、換言すれば、その各区間において、実検出角度が推定角度に対してどれだけ不足方向にずれるかを表すものである。
【００２６】
そのため、出力処理手段は、基準角度情報の出力タイミング毎に補正角度情報の値を初期値にし、基本的には、単位角度情報が出力される毎に（実検出角度が単位角度進む毎に）、補正角度情報の値を単位角度に相当する値ずつ増加させることで、補正角度情報の値を実検出角度と同じように変化させるが、更に、実検出角度が基準角度情報の出力タイミングで初期値になってから最小代表角度になるまでの区間、及び実検出角度が何れかの代表角度になってから次の代表角度になるまでの区間の各々において、その区間での補正角度情報の値の増加量が、その区間に対応して記憶部に記憶されている増加量差分だけ多くなるように、単位角度情報の出力タイミング毎に補正角度情報の値を増加させる値である単位角度毎増加値を変更する、という補正処理を行うことで、補正角度情報の値を推定角度と一致するように変化させるようにしている。
【００２７】
しかし、推定角度は、前述したように信頼性はあるものの、やはり過去の１周期時間から推定されるものであるため、モータの回転速度の変動によって、真の角度からの誤差（以下、推定誤差ともいう）Ｇを有することとなる。
【００２８】
このため、各代表角度での推実差分には、下記式１のように、推定誤差Ｇが含まれる。尚、推定誤差Ｇも、正と負の何れにもなり得るものである。
推実差分＝「推定角度−実検出角度」
＝「（真の角度＋推定誤差Ｇ）−実検出角度」
＝「（真の角度−実検出角度）＋推定誤差Ｇ」
＝角度検出誤差＋推定誤差Ｇ  …式１
そして、推定誤差Ｇは、それの絶対値が時間に比例して大きくなることと、一般に回転検出手段としてのセンサは、角度の検出原点となる基準角度情報の出力タイミング及びその直近では角度検出誤差（実検出角度の誤差）が無いことから、実検出角度が初期値に戻る直前の最終角度の時の推実差分は、推定角度の１周期分の誤差（以下、総累積推定誤差ΣＧという）を示すものとなる。
【００２９】
そこで特に、本発明では、修正手段により、出力処理手段が補正処理で用いる記憶部内の増加量差分を、それと同じ１周期における最終角度での推実差分（即ち、回転速度変動に伴う推定角度の総累積推定誤差ΣＧ）に応じて修正することにより、補正角度情報の値を、回転速度変動が反映された推定角度（即ち、真の角度からのずれが少ない推定角度）に追従させることができるようにして、回転速度変動の影響を受け難いようにしている。
【００３０】
このような本発明によれば、回転検出手段の製造ばらつき等の種々の要因によって、回転検出手段から出力される単位角度情報が誤差を含むものであったとしても、また、モータの運転中に回転速度変動があっても、補正手段によって単位角度情報の誤差が補正された信頼性の高い補正角度情報が生成され、その補正角度情報がモータの通電制御に用いられる。このため、回転角度検出精度の低下を抑えてモータの良好な制御性能を確保することができ、具体的には、前述した車両の不要な加速度を抑制して、車両の乗員に不快感を与えてしまうのを回避することができる。
【００３１】
更に、本発明によれば、補正のための演算処理を比較的簡単なものにすることができ、しかも、ハードウェア規模の増大も抑えることができる。
例えば、単位角度情報に対する単位角度毎の補正値を、学習演算してメモリに記憶しておき、実際にモータを制御する際に、回転検出手段からの単位角度情報が更新される毎に、その単位角度情報に対応してメモリに保存されている補正値を用いて該単位角度情報を補正し、補正角度情報として出力する、といった構成を採ることも考えられるが、そのような構成では、単位角度毎の補正値を保存しておくために大容量のメモリが必要となり、ハードウェア規模が増大してしまう。また、モータの定速運転時や加速時といった異なる運転状態に対応するためには、その運転状態毎に、異なる補正値を用意したり、補正のための演算を切り替えたりしなければならないことが予想される。これに対して、本発明によれば、そのような問題も回避することができる。
【００３２】
ところで、推実差分算出手段により算出された最終角度での推実差分を「Ｄｅ」と称することにすると、修正手段は、具体的には請求項２に記載のように、前記修正のための処理として、増加量差分算出手段により記憶部に記憶された１周期分の増加量差分の総和を、Ｄｅだけ減らす処理を行えば良い。尚、Ｄｅが負の場合、「Ｄｅだけ減らす」とは、換言すれば「そのＤｅの絶対値だけ増やす」ということになる。
【００３３】
このようにすれば、出力処理手段の補正処理で用いられる増加量差分を、直前の１周期における推定角度の増加量が実検出角度の増加量（即ち基準角度分の増加量）と同じであったと仮定した場合の増加量差分であって、推定角度に推定誤差Ｇが含まれていなかったと仮定した場合の増加量差分にすることができ、単位角度情報の誤差補正に適した増加量差分が得られる。
【００３４】
ここで、修正手段は、Ｄｅの絶対値が単位角度に相当する値（即ち最小値）ならば、記憶部に記憶された１周期分の増加量差分のうちの何れか１つから、そのＤｅを減じるしかないが、Ｄｅの絶対値が、単位角度に相当する値よりも大きい場合には、請求項３に記載のように、修正手段は、前記修正のための処理として、ＤｅをＮ個（Ｎは２以上の整数）の値に分割し、増加量差分算出手段により記憶部に記憶された１周期分の増加量差分のうち、Ｎ個の増加量差分の各々から、前記分割したＮ個の各値をそれぞれ減じる処理を行うことが好ましい。尚、Ｄｅが負の場合、「Ｄｅを減じる」とは、換言すれば「そのＤｅの絶対値を加える」ということになる。また、Ｄｅが負の場合、それを分割したＮ個の各値も負の値となる。つまり、Ｎ個の値は、合計するとＤｅになるものである。そして、そのＮ個の各値が負の場合、「Ｎ個の各値をそれぞれ減じる」とは、換言すると「Ｎ個の各値の絶対値をそれぞれ加える」ということになる。
【００３５】
そして、このようにすれば、Ｄｅの値を複数区間の増加量差分に分散させることができるため、１周期に渡って適切に単位角度情報の誤差補正を行うことができる。
更に具体的には、Ｄｅの値を、各区間同士の角度幅の比率と極力（可能な限り）同じ比率に分割すると共に、その分割した各値を、それの分割比に対応する角度幅比率の区間の増加量差分から減じるようにするのが好ましい。このようにすれば、単位角度情報の１周期分の補正において、Ｄｅの値を均等に反映させることができるからである。例えば、区間の数がＫで、そのＫ個の区間同士の角度幅比率が同じであるとすると、Ｄｅの絶対値が単位角度に相当する値のＫ倍よりも大きい場合には、そのＤｅの値をＫ個に極力均等に分割し、その分割した各値を、各区間の増加量差分から減じるようにすれば良い。
【００３６】
次に、請求項４の走行用モータ制御装置は、請求項１〜３の走行用モータ制御装置において、更新禁止手段を備えている。そして、その更新禁止手段は、実検出角度が最終角度になったときに推実差分算出手段により算出された最終角度での推実差分の絶対値が所定値以上の場合に、その回の１周期において推実差分算出手段が算出した推実差分を無効化して、出力処理手段が補正処理で用いる記憶部内の増加量差分が更新されるのを禁止する。
【００３７】
つまり、最終角度での推実差分の絶対値が所定値以上になった場合には、推定角度と実検出角度との間にあまりにも大きな差があり、その回の１周期における推実差分に基づいた増加量差分を次の１周期における補正処理で用いると、単位角度情報を正しく補正できない可能性があると判断して、記憶部内の増加量差分が更新されるのを禁止するようにしている。そして、この構成によれば、誤った補正をしてしまうことを回避することができる。
【００３８】
次に、請求項５の走行用モータ制御装置では、請求項１〜４の走行用モータ制御装置において、時間推定手段は、今回計測した１周期時間Ｔｂから前回計測した１周期時間Ｔａを減算した結果と、今回計測した１周期時間Ｔｂとを加算した時間を、次回の１周期時間の推定値として算出し、その算出した１周期時間の推定値に基づいて、モータが単位角度回転するのに要する時間（推定時間）を推定すること、を特徴としている。
【００３９】
つまり、単に今回計測した１周期時間Ｔｂを用いるのではなく、その今回の１周期時間Ｔｂに、前回の１周期時間Ｔａとの差（＝Ｔｂ−Ｔａ）を加味した時間（＝２×Ｔｂ−Ｔａ）を、１周期時間の推定値として算出するようにしている。そして、その１周期時間の推定値は、モータの加・減速状態が考慮されたものとなるため、その推定値に基づいて推定時間の推定を行うことにより、加・減速状態であっても、その状態に応じたより高精度の推定を行うことができる。そして、このようにして推定された高精度の推定時間に基づいて、角度推定手段はより高精度な推定角度情報を生成することができ、その結果、基準角度情報の補正精度を一層向上させることができる。
【００４０】
尚、推実差分と増加量差分は、正と負の何れにもなり得るため、請求項１〜３は、下記第１〜第３の何れかのように読み替えることができる。つまり、本発明は、下記第１〜第３の３通りに読み替えたものでもある。
［第１の読み替え］
請求項１における増加量差分の説明として「前記推定角度の増加量がどれだけ多かったかを示す増加量差分」と記載しているところを、「前記推定角度の増加量がどれだけ少なかったかを示す増加量差分」と読み替え、
請求項１における補正処理の説明として「前記増加量差分だけ多くなるように」と記載しているところを、「前記増加量差分だけ少なくなるように」と読み替え、
請求項２において「減らす処理を行う」と記載しているところを「増やす処理を行う」と読み替え、
請求項３において「Ｎ個の増加量差分の各々から、前記分割したＮ個の各値をそれぞれ減じる処理を行う」と記載しているところを、「Ｎ個の増加量差分の各々に、前記分割したＮ個の各値をそれぞれ加える処理を行う」と読み替えることができる。
［第２の読み替え］
請求項１における推実差分の説明として「推定角度が、前記実検出角度に対してどれだけ進んでいるかを示す推実差分」と記載しているところを、「推定角度が、前記実検出角度に対してどれだけ遅れているかを示す推実差分」と読み替え、
請求項２において「減らす処理を行う」と記載しているところを「増やす処理を行う」と読み替え、
請求項３において「Ｎ個の増加量差分の各々から、前記分割したＮ個の各値をそれぞれ減じる処理を行う」と記載しているところを、「Ｎ個の増加量差分の各々に、前記分割したＮ個の各値をそれぞれ加える処理を行う」と読み替えることができる。
［第３の読み替え］
請求項１における推実差分の説明として「推定角度が、前記実検出角度に対してどれだけ進んでいるかを示す推実差分」と記載しているところを、「推定角度が、前記実検出角度に対してどれだけ遅れているかを示す推実差分」と読み替え、
請求項１における増加量差分の説明として「前記推定角度の増加量がどれだけ多かったかを示す増加量差分」と記載しているところを、「前記推定角度の増加量がどれだけ少なかったかを示す増加量差分」と読み替え、
請求項１における補正処理の説明として「前記増加量差分だけ多くなるように」と記載しているところを、「前記増加量差分だけ少なくなるように」と読み替えることができる。
【００４１】
一方、請求項６の走行用モータ制御装置は、請求項１の走行用モータ制御装置と比較すると、修正手段が異なっており、その修正手段は、増加量差分算出手段により記憶部に記憶された１周期分の増加量差分（１周期分の各区間での増加量差分）を、それらの総和が０となるように修正する。そして、この構成によっても、請求項１及び２の走行用モータ制御装置と同様の効果が得られる。
【００４２】
また、請求項７の走行用モータ制御装置では、請求項１の走行用モータ制御装置と比較すると、前述の推実差分算出手段を備えておらず、増加量差分算出手段は、前記基準角度情報の出力間隔である１周期毎に、前記単位角度情報が示す回転角度である実検出角度が、前記基準角度情報の出力タイミングでの初期値から、該実検出角度の最終値を含む複数の代表角度のうち最も小さい最小代表角度になるまでの区間と、隣接する前記代表角度同士の区間との各々について、その各区間での実検出角度の増加量に対して前記推定角度情報が示す回転角度である推定角度の増加量がどれだけ多かったかを示す増加量差分を算出し、該増加量差分を、記憶部に、どの区間に対応するものであるかを識別可能に記憶する。
【００４３】
また、前述の推実差分算出手段に代えて、推定誤差算出手段を備えており、その推定誤差算出手段は、前記１周期毎に、推定角度の該１周期分の誤差であって、推定角度が実検出角度に対してどれだけ進んでいたかを示す総累積推定誤差を算出する。尚、この総累積推定誤差の１つの算出形態として、前述した最終角度での推実差分が考えられる。
【００４４】
そして、修正手段は、増加量差分算出手段により記憶部に記憶された１周期分の増加量差分（元の増加量差分）を、それと同じ１周期について推定誤差算出手段により算出された総累積推定誤差に応じて修正する。
【００４５】
このため、請求項７の走行用モータ制御装置によっても、請求項１の走行用モータ制御装置と同様の効果が得られる。
次に、請求項８の走行用モータ制御装置では、請求項７の走行用モータ制御装置において、修正手段は、前記修正のための処理として、増加量差分算出手段により記憶部に記憶された１周期分の増加量差分の総和を、総累積推定誤差だけ減らす処理を行う。そして、このような請求項８の走行用モータ制御装置によれば、請求項２の走行用モータ制御装置と同様の効果が得られる。
【００４６】
次に、請求項９の走行用モータ制御装置では、請求項８の走行用モータ制御装置において、修正手段は、総累積推定誤差の絶対値が、単位角度に相当する値よりも大きい場合、前記修正のための処理として、総累積推定誤差をＮ個（Ｎは２以上の整数）の値に分割し、増加量差分算出手段により記憶部に記憶された１周期分の増加量差分のうち、Ｎ個の増加量差分の各々から、前記分割したＮ個の各値をそれぞれ減じる処理を行う。そして、このような請求項９の走行用モータ制御装置によれば、請求項３の走行用モータ制御装置と同様の効果が得られる。
【００４７】
次に、請求項１０の走行用モータ制御装置では、請求項７〜９の走行用モータ制御装置において、推定誤差算出手段により算出された総累積推定誤差の絶対値が所定値以上の場合に、出力処理手段が補正処理で用いる記憶部内の増加量差分が更新されるのを禁止する更新禁止手段を備えている。このため、請求項４の走行用モータ制御装置と同様の効果が得られる。
【００４８】
また、請求項１１の走行用モータ制御装置は、請求項５に記載の構成と同様の構成を備えているため、その請求項５の走行用モータ制御装置と同様の効果が得られる。
また、請求項１２の走行用モータ制御装置では、請求項６の走行用モータ制御装置と比較すると、前述の推実差分算出手段を備えておらず、請求項７の走行用モータ制御装置と同様の増加量差分算出手段を備えている。そして、このような請求項１２の走行用モータ制御装置によっても、請求項６の走行用モータ制御装置と同様の効果が得られる。
【００４９】
一方、請求項１３のモータ制御システムも、請求項１の走行用モータ制御装置と同様の特徴を有しているため、請求項１の走行用モータ制御装置と同様の効果が得られる。尚、第１差分は、推実差分に相当するものであり、第２差分は、増加量差分に相当するものであり、学習値は、修正した後の増加量差分に相当するものである。
【００５０】
また、請求項１４の回転検出装置も、請求項７の走行用モータ制御装置と同様の特徴を有しているため、請求項７の走行用モータ制御装置と同様の効果が得られる。
【図面の簡単な説明】
【００５１】
【図１】実施形態の電気自動車の制御システムを表す構成図である。
【図２】実施形態のレゾルバ及び回転角検出部の概略構成を表す構成図である。
【図３】実施形態の誤差補正部の構成を表す構成図である。
【図４】ＲＤ変換部から出力されるＡ，Ｂ，Ｚ各相信号と、これら信号に基づいて誤差補正部内で生成される実パルスＰｒとそのカウント値（実カウント値Ｋｒ）を説明するための説明図である。
【図５】ＲＤ変換部から出力されるＺ相信号と、このＺ相信号に基づいて誤差補正部内で生成される推定パルスＰｐとそのカウント値（推定カウント値Ｋｐ）を説明するための説明図である。
【図６】実施形態の除算方法を説明するための説明図である。
【図７】差分記録部にて行われる学習処理を表すフローチャートである。
【図８】学習値を求める手順を説明する説明図である。
【図９】配分規則を説明する説明図である。
【図１０】推定角度が正しい場合と正しくない場合とを説明する説明図である。
【図１１】補正カウント部にて行われる出力更新処理を表すフローチャートである。
【図１２】補正量計算部を説明する説明図である。
【図１３】誤差補正部の動作の流れを表す説明図である。
【図１４】学習値を求める第１変形例の手順を説明する説明図である。
【図１５】第１変形例における差分記録部にて行われる学習処理を表すフローチャートである。
【図１６】第２変形例における差分記録部にて行われる学習処理を表すフローチャートである。
【図１７】ホール素子と磁気抵抗素子を有する回転センサを説明する説明図である。
【発明を実施するための形態】
【００５２】
以下に、本発明が適用された実施形態の、車両の走行用モータ制御装置について説明する。尚、本実施形態の走行用モータ制御装置は、車両としての電気自動車に搭載されて、その電気自動車の動力源となる走行用モータを制御するものである。
【００５３】
まず、図１は、実施形態の電気自動車の制御システムを表す構成図である。
図１に示すように、本実施形態の電気自動車には、公知の交流同期モータからなる走行用モータ（以下単に、モータともいう）１と、直流電源であるバッテリ３と、バッテリ３の直流出力電圧を三相交流に変換し、該変換したＵ相、Ｖ相及びＷ相の三相交流電流によってモータ１を駆動する公知のインバータ５と、インバータ５を介してモータ１を制御する走行用モータ制御装置（以下、ＥＣＵという）７と、が搭載されている。そして、モータ１の出力軸１ａは、ディファレンシャルギヤ９を介して左右の駆動輪１１に連結されている。
【００５４】
尚、インバータ５は、例えばＩＧＢＴ（絶縁ゲート型バイポーラトランジスタ）等からなる６個のスイッチング素子と、それらスイッチング素子を駆動する駆動回路とを備え、その駆動回路が、ＥＣＵ７から入力されるパルス幅変調信号ＵＵ，ＵＶ，ＵＷに基づいて、上記スイッチング素子をオン／オフさせることにより、バッテリ３の直流を三相交流に変換する。
【００５５】
更に、モータ１の出力軸１ａには、該モータ１の回転角度（詳しくは、モータ１のロータの回転角度）を検出するためのセンサとして、レゾルバ１３が設けられている。レゾルバ１３は、レゾルバステータと、そのレゾルバステータ内に回転自在に配置されると共に、モータ１の出力軸１ａに固定されて該出力軸１ａと共に回転するレゾルバロータとを備えている。
【００５６】
そして、レゾルバ１３は、レゾルバロータとレゾルバステータとの間のリラクタンスが、レゾルバロータの回転位置（モータ１の回転角度でもある）によって変化するように構成されており、そのリラクタンスの変化に応じて（即ち、モータ１の回転角度に応じて）正弦波状に振幅が変わると共に位相が電気角で９０°ずれた２つの回転検出信号Ｓａ，Ｓｂを出力する。
【００５７】
より詳しく説明すると、レゾルバ１３において、レゾルバステータには、一次コイルと、２つの二次コイルとが設けられている。そして、一次コイルに一定周波数の励磁信号ｆ（ｔ）が供給されることで、二次コイルの各々から、モータ１の回転角度に応じた回転検出信号として、励磁信号ｆ（ｔ）をｓｉｎθで振幅変調した波形の回転検出信号Ｓａ（＝ｆ（ｔ）・ｓｉｎθ）と、励磁信号ｆ（ｔ）をｃｏｓθで振幅変調した波形の回転検出信号Ｓｂ（＝ｆ（ｔ）・ｃｏｓθ）とが出力される。
【００５８】
尚、θは、モータの回転角度を１以上の整数ｎ倍した角度であり、レゾルバ１３の電気的な回転角度（電気角）を示すものでもある。また、ｎは、モータの１回転あたりにθが回転する回数（即ち、機械角に対する電気角の倍速比）であり、一般には軸倍角と呼ばれる。
【００５９】
また、以下の説明においては、特に断りのない限り、レゾルバ１３について「回転」というときは、レゾルバロータの機械的な回転ではなく電気的な回転を意味し、レゾルバ１３について「周期」というときは、レゾルバ１３の電気的な１回転の期間を意味するものとする。そのため、レゾルバ１３の回転角度とは、レゾルバ１３の電気的な回転角度（電気角）を意味するものである。
【００６０】
本実施形態のレゾルバ１３は、レゾルバロータとレゾルバステータとの間のリラクタンス変化の１周期、即ち回転検出信号Ｓａ，Ｓｂの１周期（詳しくは、基本波成分であるｓｉｎθ及びｃｏｓθの１周期）が、レゾルバロータの１回転（即ち、機械的な１回転でありモータ１の１回転でもある）に対応するように構成されている。つまり、回転検出信号Ｓａ，Ｓｂの電気角とレゾルバロータの機械角とが同じであり、軸倍角が１になっている。
【００６１】
但し、このようにレゾルバ１３の軸倍角が１であるのはあくまでも一例であり、このような構成に限らず、レゾルバ１３は、回転検出信号Ｓａ，ＳｂのＮ周期（Ｎは２以上の整数）が、レゾルバロータの１回転に対応するように構成されているもの（つまり、軸倍角がＮであるもの）であっても良い。そのため、例えば軸倍角が２のレゾルバの場合、モータ１が１回転する間に、レゾルバ１３の回転角度は０度〜７２０度となる。換言すれば、モータ１が半回転する毎にレゾルバは１回転する、ということである。レゾルバ１３の１回転あたりのモータ１の回転角度は本発明の基準角度に相当するものである。
【００６２】
一方更に、図１に示す如く、インバータ５からモータ１への各相の電流供給線２１，２２，２３の各々には、電流センサ２５，２６，２７が配設されている。そして、電流センサ２５は、モータ１のＵ相電流レベルを検出してこれに対応するＵ相電流信号を出力する。同様に、電流センサ２６は、モータ１のＶ相電流レベルを検出してこれに対応するＶ相電流信号を出力し、電流センサ２７は、モータ１のＷ相電流レベルを検出してこれに対応するＷ相電流信号を出力する。そして、電流センサ２５〜２７からの各相の電流信号は、ＥＣＵ７に入力される。
【００６３】
また更に、電気自動車には、その電気自動車の運転状態を検出するためのセンサとして、アクセルセンサ３１、ブレーキセンサ３２、及びシフトポジションセンサ３３等が設けられている。
【００６４】
アクセルセンサ３１は、運転者によって操作される図示しないアクセルペダルに付設されており、同アクセルペダルの踏み込み量に対応したアクセル開度信号を出力する。ブレーキセンサ３２は、運転者によって操作される図示しないブレーキペダルに付設されており、同ブレーキペダルの踏み込み量に対応したブレーキ油圧信号を出力する。シフトポジションセンサ３３は、運転者によって操作される図示しないシフトレバーに付設されており、当該レバーが車両の前進、ニュートラル、後退、駐車の各モードのいずれかに選択的に操作されたかを検出しこれをシフトポジション信号として出力する。
【００６５】
そして、それら各センサ３１〜３３からの信号（アクセル開度信号，ブレーキ油圧信号，シフトポジション信号）も、車両運転情報としてＥＣＵ７に入力される。
ＥＣＵ７は、レゾルバ１３に励磁信号ｆ（ｔ）を供給すると共に、レゾルバ１３から出出力される回転検出信号Ｓａ，Ｓｂを入力して、その回転検出信号Ｓａ，Ｓｂから、モータ１の回転角度を示すデジタルデータ（以下、角度データという）φを出力する回転角検出部３５と、周知のＣＰＵ、ＲＯＭ、ＲＡＭ、及びＩ／Ｏ回路等からなるマイコン３７と、パルス幅変調回路（ＰＷＭ回路）３９とを備えている。尚、回転角検出部３５から出力される角度データφは、レゾルバ１３の回転角度を表すデータであり、モータ１の回転角度を直接的に表しているものではない。しかし、本実施形態ではレゾルバ１３の軸倍角が１であるため、回転角検出部３５から出力される角度データφは、結果的にはモータ１の回転角度を直接表すものとなっている。
【００６６】
パルス幅変調回路３９は、マイコン３７からの制御信号に従って、三相交流電流の各相に対応したパルス幅変調信号ＵＵ，ＵＶ，ＵＷを生成し、それら各パルス幅変調信号ＵＵ，ＵＶ，ＵＷをインバータ５に出力する。これにより、インバータ５からモータ１へ、Ｕ相、Ｖ相及びＷ相の三相交流電流が供給される。
【００６７】
マイコン３７は、回転角検出部３５からの角度データφを、モータ１の回転角度の検出値として入力すると共に、例えば、その角度データφの単位時間あたりの変化分から、モータ１の回転数（回転速度）を算出する。
【００６８】
そして、マイコン３７は、モータ１の回転情報である回転角度及び回転数と、電流センサ２５〜２７や他のセンサ３１〜３３からの信号に基づいて、インバータ５を駆動することにより、車両の運転状態に応じた所望のトルクをモータ１に発生させる。尚、こうしたモータ１の制御自体は公知のものであるが、簡単に説明しておく。
【００６９】
即ち、マイコン３７は、モータ１の回転角度及び回転数と、車両運転情報（アクセル開度信号、ブレーキ油圧信号及びシフトポジション信号）等に基づいて、モータ１に発生させるべきトルクの要求量を演算し、その要求量に基づいて公知のベクトル演算によりモータ１を通電するための電流指令ベクトルを演算する。そして、その演算結果に基づいて、上記要求量のトルクをモータ１に発生させるための制御信号を、パルス幅変調回路３９に出力する。更に、このとき、マイコン３７は、電流センサ２５〜２７からの電流信号のうちの少なくとも２つ（例えば、Ｕ相電流信号とＷ相電流信号）に基づいて、モータ１に流れる三相の各電流が目標値となるように、パルス幅変調回路３９への制御信号（延いては、パルス幅変調回路３９からインバータ５へのパルス幅変調信号ＵＵ，ＵＶ，ＵＷ）をフィードバック制御する。
【００７０】
次に、回転角検出部３５の構成について、図２及び図３を用いて説明する。図２は、レゾルバ１３及び回転角検出部３５の概略構成を表す構成図であり、図３は、回転角検出部３５を構成する誤差補正部１７の構成を表す構成図である。
【００７１】
まず、モータ１の回転角度の検出方法の概略を説明する。
図２は、レゾルバ１３（回転検出手段）と、回転検出部３５を構成するＲＤ変換部（回転検出手段）と誤差補正部１７（補正手段）を示す。誤差補正部１７は、より詳しくは、図３に示すように、排他的論理和演算部４１（回転検出手段）と、実パルスカウンタ４２（回転検出手段）と、推定角度パルス信号生成部４３（時間推定手段）と、推定パルスカウンタ４４（角度推定手段）と、差分記録部４５（推実差分算出手段、増加量差分算出手段、修正手段）と、補正量計算部４６（出力処理手段）と、補正カウント部４７（出力処理手段）と、を備えている。
【００７２】
図２に示すように、レゾルバ１３にて検出されたモータ１の回転角度は、回転検出信号Ｓａ、ＳｂとしてＲＤ変換部１６に送られる。ＲＤ変換部１６は、入力された回転検出信号Ｓａ、Ｓｂに基づき、Ａ相信号（単位回転角度情報（単位角度情報でもある））、Ｂ相信号（単位回転角度情報（単位角度情報でもある））、及びＺ相信号（基準角度情報）を誤差補正部１７に出力する。
【００７３】
そして、図３に示すように、まず、誤差補正部１７の排他的論理和演算部４１（回転検出手段）は、Ａ相信号、Ｂ相信号を受け取り、実パルスＰｒを生成する。生成された実パルスＰｒと前述のＺ相信号とが実パルスカウンタ４２に入力され、実パルスカウンタ４２はモータ１の回転の実検出角度を示す実カウント値Ｋｒ（実検出角度情報）を算出する。同時に、推定角度パルス信号生成部４３（時間推定手段）は、Ｚ相信号に基づき推定パルスＰｐを生成する。また、推定パルスカウンタ４４（角度推定手段）は、推定パルスＰｐとＺ相信号とから、モータ１の回転角度の推定値を示す推定カウント値Ｋｐ（推定角度情報）を算出する。そして、上記のように、ともにＺ相信号に基づいて算出された実カウント値Ｋｒと推定カウント値Ｋｐとが差分記録部４５（推実差分算出手段、増加量差分算出手段、修正手段）に入力される。差分記録部４５は、実カウント値Ｋｒと推定カウント値Ｋｐとに基づき学習値ｄｘを算出し、メモリ４５ａ（記憶部）に保存する。そして、補正量計算部４６（出力処理手段）と補正カウント部４７（出力処理手段）は、保存された学習値ｄｘを用いて実カウント値Ｋｒを補正することで、補正されたモータ１の回転角度を示す補正カウント値φ（補正角度情報）を算出して出力する。
【００７４】
更に詳細に言えば、レゾルバ１３、ＲＤ変換部１６、排他的論理和演算部４１、及び実パルスカウンタ４２（回転検出手段）は、Ｚ相信号（基準角度情報）をモータ１が基準角度だけ回転する度に出力し、また、モータ１が基準角度よりも小さい一定の単位角度を回転する度に実カウント値Ｋｒ（実検出角度情報）を出力する。尚、基準角度情報とは、モータ１が基準角度回転したことを示す。基準角度は、３６０度をｎ（ｎは正の整数）で割って計算される角度を示す。実検出角度情報は、基準角度情報が出力された時のタイミング（基準タイミング）を基準にして計測されたモータ１の実際の回転検出角度を示す。また、以下では、Ｚ相信号のことを基準角度情報とも言い、実カウント値Ｋｒのことを実検出角度情報とも言い、補正カウント値φのことを補正角度情報とも言う。
【００７５】
そして、ＥＣＵ７（走行用モータ制御装置）は、基準角度情報と実検出角度情報とを使って、モータ１の通電を制御するが、制御精度を上げるために誤差補正部１７（補正手段）を備える。
【００７６】
誤差補正部１７（補正手段）は、基準角度情報が出力されるタイミングを基準にして計測された、モータ１の補正された回転角度を示す補正角度情報を出力するために、実検出角度情報の誤差を補正する。そして、ＥＣＵ７（走行用モータ制御装置）は、補正角度情報に基づいてモータ１の通電を制御する。
【００７７】
上記補正角度情報を出力するため、誤差補正部１７（補正手段）は、推定角度パルス信号生成部４３（時間推定手段）と、推定パルスカウンタ４４（角度推定手段）と、差分記録部４５（推実差分算出手段、増加量差分算出手段、修正手段）と、補正量計算部４６（出力処理手段）と、補正カウント部４７（出力処理手段）とを含む。
【００７８】
推定角度パルス信号生成部４３（時間推定手段）は、Ｚ相信号（基準角度情報）が出力される度に、Ｚ相信号の１周期である時間（１周期時間）Ｔを計測する。その時間Ｔは、Ｚ相信号が前回出力された時刻から、Ｚ相信号が今回出力された時刻までの間を計測したものである。更に、推定角度パルス信号生成部４３は、推定時間ΔＴを演算する。推定時間ΔＴとは、モータ１の以後の回転においてモータ１が分解角（単位角度）だけ回転するのに必要な時間である。
【００７９】
推定パルスタウンタ４４（角度推定手段）は、推定角度パルス信号生成部４３（時間推定手段）によって推定された時間ΔＴが経過する毎に、その時間ΔＴが経過する間においてモータ１が分解角（単位角度）だけ回転するという想定の下で、Ｚ相信号の出力タイミングを基準にしたモータ１の推定回転角度を演算し、その推定回転角度を示す推定カウント値Ｋｐ（推定角度情報）を出力する。
【００８０】
そして、差分記録部４５の推実差分算出手段としての機能により、複数の代表角度毎の推実差分（第１差分）が算出される。即ち、Ｚ相信号（基準角度情報）の１周期の間、実カウント値Ｋｒ（実検出角度情報）が複数の代表角度（本実施形態では４５度、９０度、１３５度、１８０度、２２５度、２７０度、３１５度、実カウント値Ｋｒの最終値である３６０度）のうちの１つに相当する値になることによって、モータ１の回転の実検出角度が上記複数の代表角度のうちの１つになる度に、その時の代表角度についての推実差分（第１差分）が算出される。推実差分（第１差分）は、「実検出カウント値Ｋｒ（実検出角度情報）によって示される実検出角度」に対する「推定カウント値Ｋｐ（推定角度情報）によって示される推定角度」の進み量を示す。
【００８１】
更に、上記算出された１周期分の複数の代表角度の推実差分（第１差分）に基づいて、差分記録部４５の増加量差分算出手段としての機能により、複数の角度区間についての増加量差分（第２差分）が算出される。複数の角度区間の１つは、Ｚ相信号（基準角度情報）の出力タイミングにおける実カウント値Ｋｒが示す実検出角度の初期値と、複数の代表角度のうちの最小の代表角度（本実施形態では４５度）との間と定義されている。また、複数の角度区間のうちの他の各々は、隣接した代表角度同士の間と定義される。そして、複数の増加量差分（第２差分）の各々は、その増加量差分（第２差分）に対応する角度区間での、「実カウント値Ｋｒ（実検出角度情報）により示される実検出角度の増加量」に対する「推定カウント値Ｋｐ（推定角度情報）により示される推定角度の増加量」の進み量を示す。
【００８２】
そして、複数の角度区間についての複数の第２差分の各々は、差分記録部４５の増加量差分算出手段としての機能により、複数の角度区間の各々に関連するように（つまり、どの角度区間に対応するものか識別できるように）メモリ４５ａ（詳しくは、メモリ４５ａに設けられた増加量差分（第２差分）記録テーブル）（記憶部）に記録される。
【００８３】
更に、差分記録部４５（修正手段）は、メモリ４５ａ（記憶部）に記憶された１周期分の複数の角度区間毎の増加量差分（第２差分）を、最終角度（３６０度）での推実差分（前述の総累積推定誤差ΣＧでもある）に応じて修正する。その修正後の増加量差分（第２差分）が学習値である。
【００８４】
また、補正量計算部４６及び補正カウント部４７（出力処理手段）は、初期化処理と、出力更新処理と、補正処理とを実行する。
初期化処理においては、Ｚ相信号（基準角度情報）が出力された時に、補正カウント値φ（補正角度情報）が初期値（本実施形態では０）にセットされる。
【００８５】
出力更新処理においては、Ｚ相信号（基準角度情報）の出力タイミングを基準として、実カウント値Ｋｒ（実検出角度情報）が出力される度に、補正カウント値φ（補正角度情報）が、単位角度に相当する所定値ずつ増加させられる。
【００８６】
補正処理においては、実カウント値Ｋｒ（実検出角度情報）により示される実検出角度が上記複数の各角度区間で変化する各期間において、上記修正された後の増加量差分（第２差分）である学習値のうち、現在の角度区間に対応する１つの学習値が示す値だけ、補正カウント値φ（補正角度情報）の増加量が多くなるように、出力更新処理で使われる所定値（補正量）が変化させられる。つまり、初期角度（０度）と最小代表角度（４５度）との間と、１つの代表角度と次の代表角度との間との、各々として定義される各角度区間において、実検出角度が変化していく間に、補正カウント値φの増加量が、実際の実検出角度の変化量に加えて、現在の角度区間に対応する学習値（修正された増加量差分）の分だけ増加するように、上記所定値（補正量）は変化させられる。
【００８７】
以上が概略であり、以下では、最初に、モータ１の回転角度の実検出角度を示す実カウント値Ｋｒを補正するための学習値ｄｘ（ｘは正の整数）の算出方法を説明し、その後、学習値ｄｘを用いた実カウント値Ｋｒの補正方法を説明する。
【００８８】
図２に示すように、回転角検出部３５は、ＲＤ変換部１６と、誤差補正部１７と、を備えている。ＲＤ変換部１６は、レゾルバ１３に励磁信号ｆ（ｔ）を供給すると共に、レゾルバ１３から出力される回転検出信号Ｓａ，Ｓｂを入力して、その回転検出信号Ｓａ，Ｓｂから、モータ１の回転角度（詳しくはレゾルバ１３の回転角度）を示す回転情報であるＡ相信号、Ｂ相信号、及びＺ相信号を出力する。
【００８９】
ＲＤ変換部１６は、デジタルトラッキング方式のＲＤＣ（Resolver Digital Converter）であり、図示は省略しているものの、その内部で、レゾルバ１３から入力される回転検出信号Ｓａ，Ｓｂを、レゾルバ１３の回転角度を表すデジタルデータ（以下、実検出データという）に変換する。この変換方法についてはよく知られているため、ここでは詳細説明を省略する。
【００９０】
また、ＲＤ変換部１６は、その内部にエンコーダ・エミュレータを備えており、上記変換後の実検出データが、いわゆるインクリメンタルエンコーダが出力する信号と同等の形式のパルス信号（Ａ相信号、Ｂ相信号、Ｚ相信号）に変換される。これら各パルス信号の具体例を、図４（ａ）〜（ｃ）に示す。
【００９１】
図４（ａ）〜（ｃ）に示すように、Ａ相信号及びＢ相信号は、いずれも、レゾルバ１３が所定角度回転する毎に１つのパルスが発生するものであり、Ａ相信号とＢ相信号は互いに位相が９０度ずれている。Ｚ相信号は、角度検出の原点（０度）を指定する信号であり、レゾルバ１３が１回転する毎に１つのパルスが発生する。
【００９２】
なお、詳しくは後述するが、誤差補正部１７では、Ａ相信号及びＢ相信号に基づき、両者の排他的論理和を計算して、その計算結果に応じたパルスである実パルスＰｒ（図４（ｄ）参照）が生成される。この実パルスＰｒの、レゾルバ１３１回転中に発生するパルスエッジ（立ち上がりエッジ及び立ち下がりエッジ）の回数が、ＲＤ変換部１６の分解能（即ち、角度検出の分解能）を示すものとなる。
【００９３】
具体的には、本実施形態のＲＤ変換部１６の分解能が、例えば１２ビット（０〜４０９５）であるとすると、レゾルバ１３が０度〜３６０度まで１回転する間に、実パルスＰｒが２０４８個発生し、よってそのパルスエッジ発生回数は４０９６回となる。
【００９４】
尚、実パルスＰｒのエッジ発生タイミングから次のエッジ発生タイミングまでの間隔をパルス幅として、１つのパルス幅あたりのレゾルバ１３の回転角度が、レゾルバ１３にて検出可能な最小単位の角度であり、この１つのパルス幅あたりのモータ１の実際の回転角度が本発明の「単位角度」に相当するものである。本実施形態では、実パルスＰｒの１つのパルス幅あたりのレゾルバ回転角度は、３６０／４０９６度であり、以下この角度を分解角とも称す。言い換えれば、分解角は、“３６０度”÷“レゾルバ１３の軸倍角”÷“ＲＤ変換部１６の分解能”である。
【００９５】
ところで、レゾルバ１３から出力される２つの回転検出信号Ｓａ，Ｓｂは、互いに振幅が等しく、また互いにオフセットが無く、更に互いの位相差が９０度であることが理想的である。しかし、実際には、上述した製造ばらつき等の種々の原因により、レゾルバ１３からの回転検出信号Ｓａ，Ｓｂは上述した理想的なものとはならず、製造ばらつき等に起因する誤差を含むものとなってしまう。そのため、ＲＤ変換部１６内部で生成される実検出データも誤差を含むデータとなり、これに基づいて生成されるＡ，Ｂ各相信号も誤差を含む信号となってしまう。
【００９６】
そこで本実施形態では、回転角検出部３５内に、ＲＤ変換部１６による検出結果を補正するための誤差補正部１７が設けられている。誤差補正部１７は、ＲＤ変換部１６からＡ，Ｂ，Ｚ各相信号を入力し、これら各相信号に基づいて、レゾルバ１３の製造ばらつき等に起因する誤差が抑えられた（或いは完全に除去された）角度データφを生成する。そして、この誤差補正部１７により生成された角度データφが、マイコン３７へ入力される。
【００９７】
誤差補正部１７は、より詳しくは、図３に示すように、排他的論理和演算部４１と、実パルスカウンタ４２と、推定角度パルス信号生成部４３と、推定パルスカウンタ４４と、差分記録部４５と、補正量計算部４６と、補正カウント部４７と、を備えている。
【００９８】
排他的論理和演算部４１は、Ａ相信号及びＢ相信号の排他的論理和を計算して、その計算結果に応じた実パルスＰｒ（図４（ｄ）参照）を生成する。
実パルスカウンタ４２は、排他的論理和演算部４１にて生成された実パルスＰｒが入力され、この実パルスＰｒをカウントする。より詳しくは、実パルスＰｒの立ち上がりエッジ及び立ち下がりエッジを検出して、各エッジの検出タイミングにてカウント値をカウントアップしていく。そして、そのカウント値を実カウント値Ｋｒとして出力する。
【００９９】
この実パルスカウンタ４２には、実パルスＰｒの他にＺ相信号も入力され、Ｚ相信号のパルスが立ち上がるタイミング毎に、実カウント値Ｋｒを０にリセットするよう構成されている。つまり、実パルスカウンタ４２は、Ｚ相信号のパルスエッジ立ち上がりタイミング毎にそのタイミングを基準（実カウント値Ｋｒ＝０）として、実パルスＰｒのカウントを行う。
【０１００】
図４（ｅ）に、実パルスＰｒに対する実カウント値Ｋｒの出力例を示す。図４（ｅ）に示すように、実カウント値Ｋｒは、Ｚ相信号のパルスエッジ立ち上がりタイミングにて０にリセットされ、その後、実パルスＰｒのエッジ発生タイミング毎にカウントアップされていく。本実施形態では、既述の通りＲＤ変換部１６の分解能が１２ビットであるため、レゾルバ１３が０度〜３６０度まで一回転する間に、実カウント値Ｋｒは０〜４０９５までの値をとる。
【０１０１】
推定角度パルス信号生成部４３は、Ｚ相信号のパルスエッジ立ち上がりタイミング毎に、Ｚ相信号のパルス間隔ＴとＲＤ変換部１６の分解能とに基づき、以後の回転において分解角（単位角度）回転するのに要するであろう時間を予測（推定）して、その推定した時間（推定時間）をパルス幅とする推定パルスＰｐを生成する。つまり、推定角度パルス信号生成部４３は、Ｚ相信号（基準角度情報）の出力タイミング毎に、Ｚ相信号の前回出力時から今回出力時までの１周期時間を計測し、計測した１周期時間に基づいて、モータの以後の回転においてモータが分解角（単位角度）回転するのに要する時間を推定する。
【０１０２】
具体的には、Ｚ相信号のパルスエッジ立ち上がりタイミング毎に、その直前のＺ相信号のパルス間隔（前回のパルスエッジ立ち上がりタイミングから今回の該タイミングまでの時間間隔）を計測する。このパルス間隔は、直前にレゾルバ１３が１回転するのに要した実際の１周期時間である。そして、その計測した１周期時間を、レゾルバ１３の分解能で除算（本例では４０９６で除算）することにより、レゾルバ１３の分解能単位での時間（即ち、モータ１が単位角度回転するのに要する時間）を得る。そして、そのようにして得られた分解能単位での時間をパルス幅（推定パルス幅）とする推定パルスＰｐを生成する。
【０１０３】
図５を用いてより具体的に説明する。図５（ａ）は、Ｚ相信号を表し、図５（ｂ）は、推定パルスＰｐを表す。図５において、例えば時刻ｔnでＺ相信号のパルスが入力されると、直前のレゾルバ１３の１周期時間Ｔn-1を計測し、その１周期時間Ｔn-1を分解能Ｒで除算して、推定パルス幅ΔＴnを得る。これにより、時刻ｔn以後、次にＺ相信号のパルスが入力される時刻ｔn+1までの間は、上記算出した推定パルス幅ΔＴnをパルス幅とする推定パルスＰｐ、即ち推定パルス幅ΔＴnが経過する毎にパルスエッジが発生するような推定パルスＰｐを生成する。
【０１０４】
その後、時刻Ｔn+1になってＺ相信号のパルスが再び入力されると、時刻ｔｎのときと全く同じように、直前のレゾルバ１３の１周期時間Ｔnを計測し、その１周期時間Ｔnを分解能Ｒで除算して、推定パルス幅ΔＴn+1を得る。これにより、時刻ｔn+1以後、次にＺ相信号のパルスが入力される時刻Ｔn+2までの間は、上記算出した推定パルス幅ΔＴn+1をパルス幅とする推定パルスＰｐを生成する。時刻ｔn+2になったときも同じ要領である。
【０１０５】
ここで、推定パルス幅ΔＴを算出する際に行う除算の方法としては、例えば周知のシフト演算により行うことができる。具体的には、レゾルバ１３の１周期時間（Ｚ相信号のパルス間隔）Ｔの計測については、その１周期時間Ｔよりも短い所定周期でカウントアップするカウンタを使用して、１周期時間Ｔに要するカウント値Ｃｔｒを取得する。そして、このカウント値Ｃｔｒを分解能Ｒに応じたビット分（本例では１２ビット）右シフトすれば、除算結果としての推定パルス幅ΔＴが得られる。
【０１０６】
しかし、このような単純なシフト演算による除算結果は、必ずしも精度が高いとはいえず、その結果次第では、推定パルス幅ΔＴの精度が低くなるおそれがある。
そこで、本実施形態では、基本的にはシフト演算を行いつつも、そのシフト演算における右シフトによって無視された１２ビット分を考慮することにより、精度の高い推定パルスＰｐを生成するようにしている。その具体的な生成方法について、図６を用いて説明する。
【０１０７】
推定パルス幅ΔＴを求めるために、レゾルバ１３の１周期時間Ｔを計測する必要があるが、この１周期時間Ｔの計測を、例えば、４０ＭＨｚ（周期２５nsec）の基本パルスを用いて、１周期中の基本パルス数をカウンタでカウントすることにより行う。そして、一例として、その計測結果が図６（ａ）のような１５桁のカウント値として得られたものとする。このカウント値は、１０進数で表すと「２８２５０」である。つまり、レゾルバ１３の１回転中に基本パルスが２８２５０個カウントされた、ということである。
【０１０８】
そして、このカウント値に基づき、推定パルス幅ΔＴを演算する。即ち、ＲＤ変換部１６の分解能（１２ビット；０〜４０９５）を考慮し、カウント値「２８２５０」を「４０９６」で除算する。具体的には、シフト演算を用いて、図６（ｂ）に示すように１２ビットだけ右シフトさせる。これにより、「６」という除算結果が得られる。つまり、推定パルス幅ΔＴは基本パルス６個分の時間である、ということである。
【０１０９】
ところが、このようにシフト演算によって得られた除算結果である「６」というのは、正確な値ではない。なぜなら、「６」という演算結果は、右シフトすることによって小数点以下の部分が無視された、正確性に欠けたものだからである。このことは、２８２５０／４０９６の除算を正確に行うと６．８９６９７３・・・となって、６というよりもむしろ７に近い除算結果となることからも明らかである。
【０１１０】
そのため、基本パルス６個分という時間を推定パルス幅ΔＴとして推定パルスＰｐを出力するようにすると、無視された小数点以下の分（０．８９６９７３・・・）が誤差となって蓄積されていく。その結果、定速回転しているにもかかわらず、推定パルスＰｐのカウント値（推定カウント値Ｋｐ）が４０９５になっても、まだレゾルバ１３は１回転していない、ということになってしまう。
【０１１１】
そこで本実施形態では、小数点以下の部分を完全に無視することなく、小数点以下の部分が十分に考慮された精度の高い推定パルスＰｐを生成するようにしている。
上述の通り、本来の正しい除算結果は６ではなく、６．８９６９７３・・・であるため、可能であるならば、基本パルスの６．８９６９７３・・・個分の時間を推定パルス幅ΔＴとすべきである。しかし、基本パルスが６．８９６９７３・・・個出力される毎に推定パルスＰｐを出力する、ということは物理的に不可能である。
【０１１２】
そのため、本実施形態では、推定パルス幅ΔＴが基本パルス６個分である推定パルスＰｐ６と、推定パルス幅ΔＴが基本パルス７個分である推定パルスＰｐ７とを、適切に切り替えながら出力する。即ち、除算結果の小数点以下の部分を考慮し、推定パルスＰｐ７を推定パルスＰｐ６よりも多く出力するようにして、結果として、レゾルバ１３が１回転する間に推定パルス幅ΔＴが基本パルスの６．８９６９７３・・・個分の推定パルスＰｐを出力し続けたことと等価な結果となるようにする。
【０１１３】
これを実現すべく、まず、１回転中に出力すべき推定パルスＰｐ７及び推定パルスＰｐ６のそれぞれの総数を算出する。１回転中に出力すべき推定パルスＰｐはトータルで４０９６個であるため、推定パルスＰｐ７と推定パルスＰｐ６の総合計も４０９６となるようにする必要がある。そのため、図６（ｃ）に示すように、上記除算結果の小数点以下の１２ビットに着目し、この１２ビットが表す数（図６では「３６７４」）を推定パルスＰｐ７の出力回数としてレジスタ（ｒｅｇ）１にセットし、この１２ビットの各ビットを反転させて１を加えたときの数（図６では「４２２」（＝４０９６−３６７４））を推定パルスＰｐ６の出力回数としてレジスタ（ｒｅｇ）２にセットする。
【０１１４】
このとき、例えば推定パルスＰｐ７だけ連続して３６７４回出力し続け、その後に推定パルスＰｐ６だけ連続して４２２回出力し続けたとしても、結果だけをみれば１回転中に所望の数の推定パルスＰｐを出力できることになる。しかし当然ながら、このような偏った出力方法では、推定パルスＰｐ７が出力されている間は誤差がどんどん増大していき、推定パルスＰｐ６へ移行した後は逆に誤差が減っていくというように、過渡的には誤差が非常に大きくなってしまうこととなる。
【０１１５】
つまり、単に推定パルスＰｐ７と推定パルスＰｐ６の出力回数の割合が結果として上記割合（３６７４：４２２）となればいい、というわけではなく、１周期全体に渡って誤差の発生が極力抑制されるように、推定パルスＰｐ７と推定パルスＰｐ６とをバランスよくおりまぜながら出力していく必要がある。例えば推定パルスＰｐ７をＪ回出力したら次は推定パルスＰｐ６をＫ回出力する・・・という具合である。
【０１１６】
まず、ベースとなる割合、即ち、推定パルスＰｐ６を１回に対して推定パルスＰｐ７を何回出力するのが適切かを決める。具体的には、図６（ｃ）に示すように、ｒｅｇ２のＭＳＢから、最初に「１」が出現する最上位ビットまでのビット数から、ベースとなる出力割合を決める。図６（ｃ）の例では、ｒｅｇ２のＭＳＢから４ビット目にはじめて「１」が出現する。そこで、ＭＳＢから４ビット分に着目し、その４ビットが表す回数を、各推定パルスＰｐ７，Ｐｐ６の出力割合のベースとする。本例では、推定パルスＰｐ７が１４回で推定パルスＰｐ６が１回、という割合となる。
【０１１７】
このようにしてベースとなる出力割合が得られたら、まずはこの出力割合にて、各推定パルスＰｐ７，Ｐｐ６を出力していく。つまり、まず推定パルスＰｐ７を連続して１４回出力し、次に推定パルスＰｐ６を１回出力し、次に再び推定パルスＰｐ７を連続して１４回出力する、という具合である。
【０１１８】
しかし、このベースとなる出力割合（１４：１）は、４ビット精度での割合であるため、少々荒い割合である。即ち、出力割合の精度をより高めてみると、例えば図６（ｄ）のように６ビット精度で出力割合を決めた場合、５７：６の出力割合となる。更に精度を上げて図６（ｅ）のように７ビット精度で出力割合を決めた場合、１１４：１３の出力割合となる。
【０１１９】
これに対し、４ビット精度での出力割合である１４：１にて出力し続けるとどうなるかを考えると、例えば推定パルスＰｐ７を５７回出力したとき、推定パルスＰｐ６はまだ４回しか出力されていないこととなり、６ビット精度（図６（ｄ））と比べると誤差が生じている。
【０１２０】
そのままさらに１４：１の出力割合で出力し続けると、例えば推定パルスＰｐ７を１１２回出力したとき、推定パルスＰｐ６はまだ８回しか出力されていないこととなり、７ビット精度（図６（ｅ））と比べると、明らに誤差が増えている。
【０１２１】
そこで、単にベースとなる出力割合（１４：１）で出力し続けるのではなく、ある程度出力したら、より精度の高い出力割合と比較して、その出力割合と現在の出力回数が一致していなければその出力割合に合わせるようにする。
【０１２２】
つまり、例えば上記例示したように、推定パルスＰｐ７を５７回出力したとき、推定パルスＰｐ６がまだ４回しか出力されていない場合は、推定パルスＰｐ７の出力を５７回で一旦中止して、推定パルスＰｐ６を、その出力回数が６ビット精度での回数である６回になるまで、推定パルスＰｐ６を連続して出力する。これにより、推定パルスＰｐ７が５７回、推定パルスＰｐ６が６回と、６ビット精度での出力割合に一致したら、再び、ベースとなる出力割合である１４：１の割合にて各推定パルスＰｐ７，Ｐｐ６を出力する。
【０１２３】
そして、次に比較するのは７ビット精度での出力割合である１１４：１３である。そのため、各推定パルスＰｐ７，Ｐｐ６のうち、いずれか早くその出力割合が示す回数（推定パルスＰｐ７ならば１１４回、推定パルスＰｐ６ならば１３回）に到達するまでは、ベースの出力割合で出力を継続する。
【０１２４】
すると、本例の場合は、推定パルスＰｐ６が１３回に到達するよりも先に、推定パルスＰｐ７の方が１１４回に到達する。そして、推定パルスＰｐ７が１１４回に到達したとき、推定パルスＰｐ６は１０回となっており、７ビット精度での出力割合に一致していない。そのため、この場合も推定パルスＰｐ７を一旦中止して、推定パルスＰｐ６を、その出力回数が１３回に到達するまで連続して出力する。これによって、推定パルスＰｐ７が１１４回、推定パルスＰｐ６が１３回と、７ビット精度での出力割合に一致したら、再び、ベースとなる出力割合の１４：１で出力する。
【０１２５】
なお、出力割合の精度をどこまで高めるかは任意であり、例えば図６に示したように７ビット精度で終えてもよいし、更に精度を高めても良い。
図３に戻り、推定パルスカウンタ４４は、推定角度パルス信号生成部４３にて生成された推定パルスＰｐが入力され、この推定パルスＰｐをカウントする。より詳しくは、推定パルスＰｐの立ち上がりエッジ及び立ち下がりエッジを検出して、各エッジの検出タイミングにてカウント値をカウントアップしていく。そして、そのカウント値を推定カウント値Ｋｐとして出力する。つまり推定パルスカウンタ４４は、Ｚ相信号（基準角度情報）の出力タイミングから、推定角度パルス信号生成部４３（時間推定手段）により推定されている時間である推定時間が経過する毎に、推定時間経過中にモータが分解角（単位角度）回転したものと推定してＺ相信号の出力タイミングを基準としたモータの回転角度を推定し、推定結果を推定カウント値Ｋｐ（推定角度情報）として出力する。
【０１２６】
この推定パルスカウンタ４４には、推定パルスＰｐの他にＺ相信号も入力され、Ｚ相信号のパルスが立ち上がるタイミング毎に、推定カウント値Ｋｐを０にリセットするよう構成されている。つまり、推定パルスカウンタ４４は、Ｚ相信号のパルスエッジ立ち上がりタイミング毎にそのタイミングを基準（推定カウント値Ｋｐ＝０）として、推定パルスＰｐのカウントを行う。
【０１２７】
図５（ｃ）に、推定パルスＰｐに対する推定カウント値Ｋｐの出力例を示す。図５（ｃ）に示すように、推定カウント値Ｋｐは、Ｚ相信号のパルスエッジ立ち上がりタイミングにて０にリセットされ、その後、推定パルスＰｐのエッジ発生タイミング毎にカウントアップされていく。本実施形態では、ＲＤ変換部１６の分解能が１２ビットであるため、推定カウント値Ｋｐは、モータ１の回転速度に変動がなければ、レゾルバ１３が０度〜３６０度まで１回転する間に０〜４０９５までの値をとることとなる。
【０１２８】
つまり、実カウント値Ｋｒは、レゾルバ１３からの各相信号に基づいて生成される実際の検出角度（実検出角度）を表す値であるのに対し、推定カウント値Ｋｐは、直前のレゾルバ１３の１周期時間に基づいた推定パルス幅ΔＴが経過する毎にレゾルバ１３が分解角ずつ回転していくであろうとの予測によって推定される推定角度を示す値である。
【０１２９】
次に、差分記録部４５について説明する。
差分記録部４５は、実カウント値Ｋｒのカウントアップ毎（換言すれば実パルスＰｒのエッジ発生タイミング毎）に、図７の学習処理を行う。
【０１３０】
そして、差分記録部４５は、図７の学習処理を開始すると、まずＳ１１０にて、現在の実カウント値Ｋｒが、予め定められた複数の代表角度のうち、最終角度以外の代表角度に該当する値であるか否かを判定する。
【０１３１】
本実施形態では、図８（Ａ）の１段目に示すように、４５度間隔の８つの角度、即ち、４５度、９０度、１３５度、１８０度、２２５度、２７０度、３１５度、３６０度の各々を、代表角度としている。そして、Ｓ１１０では、実カウント値Ｋｒが、最終角度である３６０度以外の代表角度（４５度、９０度、１３５度、１８０度、２２５度、２７０度、３１５度）の何れかに該当する値であるか否か（換言すれば、実検出角度が最終角度以外の代表角度の何れかであるか否か）を判定する。尚、本実施形態において、最終角度としての３６０度とは、実際に３６０度ではなく、実カウント値Ｋｒが初期値の０に戻る直前の最終値である４０９５の時の角度を意味している。
【０１３２】
上記Ｓ１１０にて、実カウント値Ｋｒが３６０度以外の代表角度に該当する値であると判定した場合には、Ｓ１２０に進む。
Ｓ１２０では、その時の「推定カウント値Ｋｐ−実カウント値Ｋｒ」の値を、推実差分として算出すると共に、その算出した推実差分を、当該差分記録部４５に備えられた記憶部としてのメモリ４５ａに、どの代表角度での推実差分かを識別可能に記憶する。そして、その後、当該学習処理を終了する。尚、推実差分は、推定カウント値Ｋｐの示す推定角度が、実カウント値Ｋｒの示す実検出角度に対して、どれだけ進んでいるかを示すものである。
【０１３３】
更に詳しく説明すると、図８（Ａ）の１，２段目に示すように、メモリ４５ａには、レゾルバ１３の１周期（１回転期間）における８つの各代表角度での推実差分（以下、１周期分の推実差分ともいう）ａ１〜ａ８を、代表角度と対応付けて記録するための推実差分記録テーブルが設けられている。そして、上記Ｓ１２０では、算出した推実差分を、推実差分記録テーブルにおける推実差分の記録領域（図８（Ａ）の２段目）のうち、現在の実検出角度が到達している代表角度に対応した記録領域に書き込む。
【０１３４】
一方、上記Ｓ１１０にて、実カウント値Ｋｒが３６０度以外の代表角度に該当する値ではないと判定した場合には、Ｓ１３０に移行して、実カウント値Ｋｒが最終値の４０９５であるか否か（換言すれば、実検出角度が３６０度であるか否か）を判定する。
【０１３５】
そして、実カウント値Ｋｒが４０９５でなければ、そのまま当該学習処理を終了するが、実カウント値Ｋｒが４０９５であれば、Ｓ１４０に進む。
Ｓ１４０では、Ｓ１２０と同様に、その時の「推定カウント値Ｋｐ−実カウント値Ｋｒ」の値を、推実差分として算出すると共に、その算出した推実差分を、推実差分記録テーブルにおける推実差分の記録領域のうち、現在の実検出角度が到達している代表角度（即ち、３６０度）に対応した記録領域に書き込む。
【０１３６】
このため、実カウント値Ｋｒが０〜４０９５まで変化する１周期（レゾルバ１３の１周期）が経過する毎に、推実差分記録テーブルには、最新の１周期分の推実差分ａ１〜ａ８が記録されることとなる。つまり、Ｓ１１０〜Ｓ１４０では、Ｚ相信号（基準角度情報）の出力間隔である１周期において、実カウント値Ｋｒ（実検出角度）が、実カウント値Ｋｒの最終値である３６０度（最終角度）を含む４５度、９０度、１３５度、１８０度、２２５度、２７０度、３１５度（代表角度）の各々になったとき毎に、推定カウント値Ｋｐ（推定角度情報）が、実カウント値Ｋｒ（実検出角度）に対してどれだけ進んでいるかを示す推実差分を算出している。
【０１３７】
そして、次のＳ１５０にて、今回のＳ１４０で算出した３６０度での推実差分ａ８の絶対値が、所定値以上であるか否かを判定し、所定値以上でなければ、Ｓ１６０に進む。尚、本実施形態において、Ｓ１５０での判定に用いられる上記所定値は、例えば１０度相当値（＝４０９６×１０／３６０）である。
【０１３８】
Ｓ１６０では、実カウント値Ｋｒを補正した角度データφを得るための学習値を、今回の１周期で推実差分記録テーブルに記録した推実差分ａ１〜ａ８から求めて、メモリ４５ａに記憶する。
【０１３９】
具体的には、学習値を下記（１）〜（３）の手順で求める。
（１）まず、図８（Ａ）の３段目に示すように、メモリ４５ａには、０度から代表角度のうち最も小さい４５度（最小代表角度）までの区間と、隣接する代表角度同士の区間との各々について、その８つの各区間での実検出角度の増加量に対して推定角度の増加量がどれだけ多かったかを示す増加量差分ｂ１〜ｂ８を記録するための、増加量差分記録テーブルが設けられている。
【０１４０】
そして、Ｓ１６０では、推実差分記録テーブルに記録された今回１周期分の推実差分ａ１〜ａ８のうち、４５度での推実差分ａ１を、０〜４５度の区間での増加量差分ｂ１として増加量差分記録テーブルに記録する。
【０１４１】
更に、隣接する各代表角度同士の区間については、その区間の終了に該当する代表角度での推実差分から、該区間の開始に該当する代表角度での推実差分を減算することにより、その区間での増加量差分を求めて、増加量差分記録テーブルに記録する。
【０１４２】
例えば、４５〜９０度の区間については、９０度での推実差分ａ２から４５度での推実差分ａ１を引いた値が、その区間での増加量差分ｂ２（＝ａ２−ａ１）として算出される。尚、４５度相当値の実カウント値ＫｒをＫｒ１とし、９０度相当値の実カウント値ＫｒをＫｒ２とし、実カウント値ＫｒがＫｒ１の時（即ち、実検出角度が４５度の時）の推定カウント値ＫｐをＫｐ１とし、実カウント値ＫｒがＫｒ２の時（即ち、実検出角度が９０の時）の推定カウント値ＫｐをＫｐ２とすると、「ａ１＝Ｋｐ１−Ｋｒ１」、「ａ２＝Ｋｐ２−Ｋｒ２」となり、「ｂ２＝ａ２−ａ１＝（Ｋｐ２−Ｋｐ１）−（Ｋｒ２−Ｋｒ１）」となるため、増加量差分ｂ２は、４５〜９０度の区間での実検出角度の増加量（Ｋｒ２−Ｋｒ１）に対して推定角度の増加量（Ｋｐ２−Ｋｐ１）がどれだけ多かったかを示すこととなる。
【０１４３】
また同様に、例えば３１５〜３６０度の区間については、３６０度での推実差分ａ８から、３１５度での推実差分ａ７を引いた値が、その区間での増加量差分ｂ８（＝ａ８−ａ７）として算出される。つまり、図７のＳ１６０で行う（１）の処理は、図７のＳ１１０〜Ｓ１４０の処理（推実差分算出手段）により算出された１周期分の各代表角度での推実差分に基づいて、実カウント値Ｋｒ（実検出角度）がＺ相信号（基準角度情報）の出力タイミングでの初期値から代表角度のうち最も小さい４５度（最小代表角度）になるまでの区間と、隣接する代表角度同士の区間との各々について、その各区間での実カウント値Ｋｒ（実検出角度）の増加量に対して推定カウント値Ｋｐの増加量がどれだけ多かったかを示す増加量差分を算出し、増加量差分を、増加量差分テーブル（記憶部）に、どの区間に対応するものであるかを識別可能に記憶する処理である。
【０１４４】
続いて、上記（１）（増加量差分算出手段）により増加量差分記録テーブル（記憶部）に記憶された１周期分の増加量差分を、モータの加減速の度合いに応じて修正する方法について説明する。
【０１４５】
（２）そして、Ｓ１６０では、上記（１）で増加量差分記録テーブルに記録した増加量差分ｂ１〜ｂ８を修正して最終的な学習値とするための修正値を、推実差分記録テーブルに記録された最終角度である３６０度での推実差分ａ８に応じて、図９に示す配分規則に基づき決定する。
【０１４６】
図９に示すように、その配分規則は、最終角度を含む区間の推実差分ａ８を、各区間での増加量差分ｂ１〜ｂ８の修正値ｃ１〜ｃ８として出来るだけ均等に配分するための規則であると共に、推実差分ａ８の値毎に、修正値ｃ１〜ｃ８をどのような値にするかを規定したものである。尚、図９において、（）内に示しているのは、推実差分ａ８が負の場合の各値であり、それらは、推実差分ａ８が正の場合の各値を単に符号反転させた値になっている。
【０１４７】
例えば、「ａ８＝＋８」ならば、その値が区間数と同じ８個に均等に分割され、その分割された＋１の各々が、増加量差分ｂ１〜ｂ８の修正値ｃ１〜ｃ８となる。つまり、推実差分ａ８が８の整数倍ならば、その値を８で割った値が、各修正値ｃ１〜ｃ８となる。
【０１４８】
また例えば、推実差分ａ８が＋１〜＋７の何れかである場合には、それを区間数（８個）に整数で分けることができないため、推実差分ａ８を＋１ずつに分割した各値を、できるだけ分散した区間に関する修正値とするようになっている。
【０１４９】
また例えば、推実差分ａ８が＋９ならば、各修正値ｃｘ（ｘは１〜８の何れか）は、「ａ８＝＋８」の場合の修正値ｃｘと「ａ８＝＋１」の場合の修正値ｃｘとを加算した値となる。また、図９には図示していないが、例えば、推実差分ａ８が＋１７ならば、各修正値ｃｘは、「ａ８＝＋１６」の場合の修正値ｃｘ（＝２）と「ａ８＝＋１」の場合の修正値ｃｘとを加算した値となる。つまり、推実差分ａ８が「８×ｈ＋ｉ」（ｈは整数、ｉは１〜７の何れか）であるならば、各修正値ｃｘは、ｈと「ａ８＝ｉ」の場合の修正値ｃｘとを加算した値となる。
【０１５０】
そして、図８（Ａ）の４段目に示すように、メモリ４５ａには、各区間での増加量差分ｂ１〜ｂ８の修正値ｃ１〜ｃ８を記録するための、修正値記録テーブルが設けられており、推実差分ａ８と図９の配分規則とに基づき決定した修正値ｃ１〜ｃ８を、その修正値記録テーブルに記録する。
【０１５１】
（３）更に、Ｓ１６０では、各区間について、上記（１）で増加量差分記録テーブルに記録した増加量差分ｂｘ（ｘは１〜８の何れか）から、上記（２）で修正値記録テーブルに記録した修正値ｃｘを減じた値（＝ｂｘ−ｃｘ）を、その区間での学習値ｄｘとして算出する。そして、その算出した各区間についての学習値ｄ１〜ｄ８を、図８（Ａ）の５段目に示すように、メモリ４５ａに設けられた学習値記録テーブルに記録する。
【０１５２】
よって、例えば、推実差分ａ１〜ａ８が、図８（Ｂ）の２段目に例示する値であったならば、上記（１）の処理により、各区間での増加量差分ｂ１〜ｂ８が、図８（Ｂ）の３段目に示す値となり、上記（２）の処理により、増加量差分ｂ１〜ｂ８の修正値ｃ１〜ｃ８が、図８（Ｂ）の４段目に示す値となる（ａ８＝＋２であるため、図９の３段目により、ｃ１〜ｃ８のうち、ｃ３とｃ６が＋１となり、他は０となる）。更に、上記（３）の処理により、各区間についての学習値ｄ１〜ｄ８が、図８（Ｂ）の５段目に示す値となる。
【０１５３】
そして、このようなＳ１６０の処理が終わると、当該学習処理を終了する。
ここで、上記Ｓ１６０で記録される各区間についての学習値ｄ１〜ｄ８は、各区間において、実検出角度が、モータ１の回転速度変動を考慮したより確かな推定角度（即ち、真の角度からのずれが少ない推定角度）に対して、どれだけ不足方向にずれるかを表すものである。
【０１５４】
その理由について説明すると、まず、前述したように、増加量差分ｂ１〜ｂ８は、各区間での実検出角度の増加量に対して推定角度の増加量がどれだけ多かったか（正負を区別すると、正なら多い、負なら少ない）を示すが、換言すれば、その各区間において、実検出角度が、正しいと思われる推定角度に対して、どれだけ不足方向（正負を区別すると、正なら不足方向、負なら過剰方向）にずれるかを表すものである。
【０１５５】
しかし、推定角度は、前回の１周期時間から推定されるものであるため、モータ１の回転速度変動によって、真の角度からの誤差（推定誤差）を有することとなる。
現象としては、図１０（Ａ）に示すように、モータ１の回転速度が一定であれば、推定カウント値Ｋｐの示す推定角度（図１０にて二点鎖線で示されている）は正しいものとなり、３６０度での推実差分ａ８は０となるが、図１０（Ｂ）に示すように、モータ１の回転速度が一定でなければ、推定角度が真の角度（図１０（Ｂ）にて一点鎖線で示されている）からずれる（即ち推定誤差が生じる）こととなり、３６０度での推実差分ａ８は、０にならず、推定角度の１周期分の総累積誤差（総累積推定誤差）を示すものとなる。推定誤差の絶対値は時間に比例して大きくなることと、Ｚ相信号の出力タイミング及びその直近では実検出角度の誤差が無いためである。
【０１５６】
そこで、Ｓ１６０では、３６０度での推実差分ａ８を各区間に対して極力均等に分散させ、その分散させた値を各増加量差分ｂ１〜ｂ８から減ずることにより、各区間について、モータ１の回転速度変動が無かったと仮定した場合の増加量差分、即ち、モータ１の回転速度変動の分を修正したより確かな推定角度であって、図１０（Ｂ）の一点鎖線で示す真の角度と思われる推定角度に対し、実検出角度がどれだけ不足方向にずれるかを表す増加量差分を求め、その増加量差分を学習値ｄ１〜ｄ８としてメモリ４５ａ内の学習値記録テーブルに記録するようにしている。
【０１５７】
更に分かりやすくするために、３６０度での推実差分ａ８が正であった場合を例に挙げて説明すると、その場合には、推定角度が真の角度よりも進み気味になっていたということであり、推定角度が正しい場合よりも、各区間での増加量差分ｂ１〜ｂ８が大きめの値になると共に、その増加量差分ｂ１〜ｂ８の総和が推実差分ａ８と同じ値だけ大きくなることから、増加量差分ｂ１〜ｂ８の総和が推実差分ａ８と同じ値だけ減るように各増加量差分ｂ１〜ｂ８を修正して、その修正した各増加量差分を学習値ｄ１〜ｄ８としている。つまり、図７のＳ１６０で行う上記（２）（３）の処理では、図７のＳ１６０で行う（１）の処理（増加量差分算出手段）により増加量差分記録テーブル（記憶部）に記憶された１周期分の増加量差分を、それと同じ１周期において図７のＳ１１０〜Ｓ１４０の処理（推実差分算出手段）により算出された最終角度での推実差分に応じて修正している。
【０１５８】
また換言すると、３６０度での推実差分ａ８は増加量差分ｂ１〜ｂ８の総和と等しく、推定角度が正しい場合には、３６０度での推実差分ａ８と増加量差分ｂ１〜ｂ８の総和とが０になるが、推定角度が正しくなくて、３６０度での推実差分ａ８が０以外のＤｅになった場合には、増加量差分ｂ１〜ｂ８の総和がＤｅだけ減るように各増加量差分ｂ１〜ｂ８を修正することで、総和が０となる８区間分の増加量差分を求め、その総和が０となる修正後の増加量差分を学習値ｄ１〜ｄ８としている。つまり、図７のＳ１６０で行う上記（２）（３）の処理では、図７のＳ１６０で行う（１）の処理（増加量差分算出手段）により増加量差分記録テーブル（記憶部）に記憶された１周期分の増加量差分を、それらの総和が０となるように修正している。
【０１５９】
一方、図７に戻り、上記Ｓ１５０にて、３６０度での推実差分ａ８の絶対値が所定値以上であると判定した場合には、Ｓ１７０に移行して、今回の１周期で推実差分記録テーブルに記録した推実差分ａ１〜ａ８を無効化する。実際には、Ｓ１６０の処理を行わないことで、今回の１周期分の推実差分ａ１〜ａ８によって学習値ｄ１〜ｄ８が更新されないようにしている。そして、その後、当該学習処理を終了する。つまり、Ｓ１５０では、実カウント値Ｋｒ（実検出角度）が３６０度（最終角度）になったときに“図７におけるＳ１１０〜Ｓ１４０の処理”（推実差分算出手段）により算出された３６０度での推実差分の絶対値が所定値以上の場合に、その回の１周期において“図７におけるＳ１１０〜Ｓ１４０の処理”（推実差分算出手段）が算出した推実差分を無効化して、後述する“図１２の処理”（補正処理）で用いる増加量差分記録テーブル（記憶部）内の増加量差分が更新されるのを禁止している。
【０１６０】
次に、補正カウント部４７について説明する。
補正カウント部４７は、内部にカウンタ（以下、補正カウンタという）を備えており、その補正カウンタの値である補正カウント値が、角度データφとしてマイコン３７に出力される。
【０１６１】
そして、補正カウント部４７は、Ｚ相信号が立ち上がる毎に、補正カウント値を初期値の０にリセットする初期化処理を行う。つまり、Ｚ相信号（基準角度情報）の出力タイミングで補正カウント値（補正角度情報の値）を０（初期値）にする。
【０１６２】
更に、補正カウント部４７は、初期化処理で補正カウント値を０にした後、実パルスＰｒのエッジ（立ち上がりエッジ及び立ち下がりエッジ）が生じる毎に、補正量計算部４６から補正量が入力されて、その補正量が示す値だけ補正カウント値をカウントアップさせる。つまり、Ｚ相信号の立ち上がりタイミングを基準（補正カウント値＝０）として、実パルスＰｒのエッジが生じる毎に、補正カウント値を補正量計算部４６からの補正量だけ増加させる。
【０１６３】
具体的には、補正カウント部４７は、補正量計算部４６から補正量が入力される毎に、図１１の出力更新処理を行う。尚、基本的には、この図１１の処理は、Ｚ相信号（基準角度情報）の出力タイミングを基準として、実パルスＰｒの両エッジ（単位角度情報）が出力される毎に、補正カウント値（補正角度情報の値）を分解角（単位角度）に相当する値ずつ増加させる処理である。
【０１６４】
その出力更新処理で、まずＳ２１０にて、補正量計算部４６からの今回の補正量が、補正無しを意味する「１」と、１増加補正を意味する「２」と、１減少補正を意味する「０」との、何れであるかを判別する。尚、１増加補正とは、実カウント値Ｋｒの増加量に対して補正カウント値の増加量を１つ増やすという意味であり、１減少補正とは、実カウント値Ｋｒの増加量に対して補正カウント値の増加量を１つ減らすという意味である。
【０１６５】
そして、補正カウント部４７は、補正量が１であれば、Ｓ２２０にて、補正カウント値を１カウントアップさせ、その後、当該出力更新処理を終了する。
これに対して、補正量が２であれば、Ｓ２３０にて、補正カウント値を２カウントアップさせ、その後、当該出力更新処理を終了する。よって、この場合には、実カウント値Ｋｒが１増加するのに対して、補正カウント値が２増加する（即ち、実カウント値Ｋｒに比べて補正カウント値の増加量が１つ増える）こととなる。
【０１６６】
また、補正量が０であれば、補正カウント値のカウントアップを行わずに、そのまま当該出力更新処理を終了する。よって、この場合には、実カウント値Ｋｒが１増加するのに対して、補正カウント値が増加しない（即ち、実カウント値Ｋｒに比べて補正カウント値の増加量が１つ減る）こととなる。
【０１６７】
次に、補正量計算部４６について説明する。
補正量計算部４６は、実パルスＰｒのエッジが生じる毎に、補正カウント部４７へ前述の補正量を出力するが、実カウント値Ｋｒをモニタして、実カウント値Ｋｒが０から４５度相当値（＝４０９６×４５／３６０）になるまでの区間、及び実カウント値Ｋｒが代表角度のうちの何れかに相当する値になってから次の代表角度に相当する値になるまでの区間の各々（即ち、０〜３６０度の１周期における４５度間隔の各区間）において、その区間での角度データφの値（即ち補正カウント値）の増加量が、実カウント値Ｋｒの増加量よりも、その区間に対応してメモリ４５ａの学習値記録テーブルに記憶されている学習値だけ多くなるように、補正カウント部４７への補正量を設定する。
【０１６８】
例えば、図８（Ｂ）の５段目に示した例では、１３５〜１８０度の区間に対応する学習値ｄ４が＋６であるため、その１３５〜１８０度の区間（詳しくは、実カウント値Ｋｒが１３５度相当値から１８０度相当値まで増加する４５度分の区間）では、角度データφの値の増加量が、４５度分の増加量よりも６（＝ｄ４）だけ多くなるように、補正量が設定される。
【０１６９】
ここで、図１２を用いて更に具体的に説明する。尚、ここでは、説明を簡略化するために、角度検出の分解能が１１ビット（０〜２０４７）であるとする。また、以下では、実パルスＰｒのエッジのことを、実パルスエッジとも言う。
【０１７０】
まず、分解能が１１ビットの場合、４５度間隔の各区間において、実パルスエッジは２５６（＝２０４８×４５／３６０）回発生する。
このため、１３５〜１８０度の区間において、角度データφの値の増加量を実カウント値Ｋｒの増加量（＝２５６）よりも６（＝ｄ４）だけ多くするには、実パルスエッジが２５６回発生する各回のうち、６回だけ補正量を２に設定し、他の２５０回は補正量を１に設定すれば良い。尚、もし補正量を２５６回全て１に設定すれば、４５度分の区間において、角度データφの値は実カウント値Ｋｒと同じだけ増えることとなる。
【０１７１】
ところで、例えば、２５６回のうち、２５０回連続して補正量を１にし、その後の６回連続して補正量を２にする、といった設定をしたとしても、結果だけをみれば、２５６回のうち６回の割合で補正量を１以外の２に設定することになるが、このような偏った設定方法では、４５度分の区間全体に学習値ｄ４を均等に反映させることができず、好ましくない。
【０１７２】
そこで、本実施形態では、図６で説明したのと同様の手法を採っている。即ち、４５度分の区間全体に渡って角度検出誤差が極力抑制されるように、１の補正量と２又は０の補正量とをバランスよくおりまぜながら出力していくようになっている。
【０１７３】
そのため、図１２に示すように、まず、区間の全出力回数である２５６から、学習値ｄ４の絶対値を引いた値（この例ではｄ４＝６のため、２５０）を、８ビットのレジスタＡにセットし、また、学習値ｄ４の絶対値（＝６）を、８ビットのレジスタＢにセットする。
【０１７４】
次に、１の補正量と２の補正量との、ベースの出力割合を決める。このベースの出力割合は、１の補正量を何回出力したら２の補正量を１回出力するか、という割合を示すものである。
【０１７５】
具体的には、図１２の点線で示すように、レジスタＢのＭＳＢから、最初に「１」が出現する最上位ビットまでのビット数から、ベースの出力割合を決める。この例では、レジスタＢのＭＳＢから６ビット目にはじめて「１」が出現するため、レジスタＡのＭＳＢから６ビット分に着目し、その６ビットが表す回数を、ベースの出力割合における１の補正量の出力回数とする。つまり、この例では、１の補正量を６２回出力したら２の補正量を１回出力する、という６２対１の出力割合となる。
【０１７６】
このようにしてベースの出力割合が得られたら、まずはこの出力割合にて、１の補正量と２の補正量とを出力していく。つまり、まず１の補正量を連続して６２回出力し、次に２の補正量を１回出力し、次に再び１の補正量を連続して６２回出力する、という具合である。
【０１７７】
しかし、このベースの出力割合（６２：１）は、６ビット精度での割合であるため、少々荒い割合である。即ち、出力割合の精度をより高めてみると、図１２の一点鎖線で示すように、７ビット精度で出力割合を決めた場合、１２５対３の出力割合となる。
【０１７８】
そこで、単にベースの出力割合（６２：１）で出力し続けるのではなく、ある程度出力したら、より精度の高い出力割合と比較して、その出力割合と現在の出力回数が一致していなければその出力割合に合わせるようにする。
【０１７９】
つまり、例えば、１の補正量を１２５回出力したとき、２の補正量がまだ２回しか出力されていない場合は、１の補正量の出力を１２５回で一旦中止して、２の補正量を、その出力回数が７ビット精度での回数である３回になるまで連続して出力する。これにより、１の補正量が１２５回、２の補正量が３回と、７ビット精度での出力割合に一致したら、再び、ベースの出力割合である６２対１の割合にて、１の補正量と２の補正量を出力する。
【０１８０】
そして、本例の場合は、２の補正量の出力回数が目標の６回に到達するよりも先に、１の補正量の出力回数が２５０回に到達する。尚、そのときの２の補正量の出力回数は５回である。そのため、この場合も１の補正量の出力を中止して、２の補正量を、それの出力回数が６回に到達するまで連続して出力する。
【０１８１】
これにより、４５度分の区間全体における１の補正量と２の補正量との出力割合が、２５０対６になり、その結果、補正カウント部４７でカウントアップされる角度データφの値（補正カウント値）の増加量が、実カウント値Ｋｒの増加量よりも６だけ多くなる。
【０１８２】
尚、上記の例では、学習値が正で、１つの区間における角度データφの値の増加量を、実カウント値Ｋｒの増加量よりも増やす補正を行う場合について説明したが、学習値が負で、角度データφの値の増加量を、実カウント値Ｋｒの増加量よりも少なくする補正を行う場合には、前述の図１２を用いた説明において、「２の補正量」を「０の補正量」に読み替えれば良い。つまり、補正量計算部４６は、補正カウント部４７へ、２の補正量に代えて、０の補正量を出力することとなる。図１２で示した処理は、実カウント値Ｋｒ（実検出角度）がＺ相信号（基準角度情報）の出力タイミングから４５度（最小代表角度）になるまでの区間、及び実カウント値Ｋｒ（実検出角度）が代表角度のうちの何れかの代表角度になってから次の代表角度になるまでの区間の各々において、その区間での補正カウント値（補正角度情報の値）の増加量が、その区間に対応して増加量差分記録テーブル（記憶部）に記憶されている増加量差分だけ多くなるように、図１１の処理（出力更新処理）で増加させる値を変更する処理である。
【０１８３】
次に、以上のような誤差補正部１７の動作の流れを図１３に示す。
図１３に示すように、誤差補正部１７の動作は、計測動作と、学習動作と、補正動作との、３つに大別することができる。そして、誤差補正部１７は、Ｚ相信号が出力される間隔（レゾルバ１３の１回転期間）である各周期において、計測動作、学習動作、及び補正動作を、パイプライン処理の如く行っている。
【０１８４】
ここで、計測動作とは、１周期時間を計測する動作である。
学習動作とは、前回周期の１周期時間の計測値から推定パルスＰｐを生成して推定カウント値Ｋｐをカウントアップさせると共に、各代表角度での推実差分ａ１〜ａ８を記録し、今回周期の終了時に、４５度間隔の各区間に関する学習値ｄ１〜ｄ８を決定し記録する動作である。
【０１８５】
補正動作とは、前回周期の終了時に記録した学習値ｄ１〜ｄ８の分だけ、その学習値に対応する区間での角度データφの値の増加量を実カウント値Ｋｒの増加量に対して増減させることにより、実カウント値Ｋｒを補正したかたちの角度データφを出力する動作である。
【０１８６】
このため、例えば、現在が「ｎ＋２」周期目であるとすると、その「ｎ＋２」周期目での補正動作に用いられる学習値ｄ１〜ｄ８は、前回の「ｎ＋１」周期目の学習動作で記録したものとなり、その「ｎ＋１」周期目の学習動作で学習値ｄ１〜ｄ８を決定するのに用いられる推定カウント値Ｋｐは、前々回の「ｎ」周期目の計測動作で計測した１周期時間Ｔｎに基づくものとなる。
【０１８７】
以上のような本実施形態のＥＣＵ（走行用モータ制御装置）７に設けられた誤差補正部１７は、モータ１の０〜３６０度の回転角度を４５度間隔に分割した各区間について、その区間での実検出角度の増加量に対し推定角度の増加量がどれだけ多かったかを正負符号付きで示す増加量差分ｂ１〜ｂ８を記録すると共に、推定角度の１周期分の総累積誤差を示す３６０度での推実差分ａ８を、各区間に対して極力均等に分散させ、その分散させた値（修正値ｃ１〜ｃ８）を各増加量差分ｂ１〜ｂ８から減ずることにより、各区間について、モータ１の回転速度変動が無かったと仮定した場合の増加量差分であって、総和が０となる各区間の増加量差分を求め、その修正後の増加量差分を各区間についての学習値ｄ１〜ｄ８としている。そして、その各区間についての学習値ｄ１〜ｄ８は、モータ１の回転速度変動の分を修正したより確かな推定角度に対して、実検出角度がどれだけ不足方向にずれるかを表すものとなる。
【０１８８】
このため、誤差補正部１７は、マイコン３７へ出力する角度データφの値を、基本的には、実パルスエッジが発生する毎に１ずつ増加させることで、実検出角度に該当する実カウント値Ｋｒと同じになるように変化させるが、４５度間隔の各区間での角度データφの値の増加量が、その区間に対応する学習値（ｄ１〜ｄ８の何れか）だけ多くなるように（尚、学習値が負ならば、その学習値の絶対値だけ少なくなるように）、実パルスエッジの発生時毎に角度データφの値を増加させる値（補正量）を１以外の２か０に変更することにより、その角度データφの値を、モータ１の回転速度変動の分を修正したより確かな推定角度と一致するように変化させている。
【０１８９】
よって、本実施形態のＥＣＵ７によれば、レゾルバ１３の製造ばらつき等の種々の要因によって、レゾルバ１３から出力される回転検出信号Ｓａ，Ｓｂ（延いては、Ａ，Ｂ相信号に基づく実パルスＰｒ及び実カウント値Ｋｒ）が誤差を含むものであったとしても、また、モータ１の運転中に回転速度変動があっても、誤差補正部１７によってその誤差が補正された信頼性の高い角度データφが生成され、その角度データφがモータ１の通電制御に用いられる。
【０１９０】
このため、回転角度検出精度の低下を抑えてモータ１の良好な制御性能を確保することができ、具体的には、前述した車両の不要な加速度を抑制して、車両の乗員に不快感を与えてしまうのを回避することができる。
【０１９１】
更に、本実施形態によれば、誤差補正のための演算処理を比較的簡単なものにすることができる。特に、概して処理負荷が大きくなる数学計算としての除算の処理が不要である。しかも、角度検出の分解能毎の補正値をメモリに記憶しておく、といったものでないため、ハードウェア規模（特に必要とされるメモリ資源）の増大も抑えることができる。
【０１９２】
また、本実施形態において、誤差補正部１７（詳しくは、差分記録部４５）は、３６０度での推実差分ａ８の絶対値が所定値以上であったならば（Ｓ１５０：ＹＥＳ）、その回の１周期において記録した推実差分ａ１〜ａ８を無効化して、学習値ｄ１〜ｄ８が更新されないようにしているため、誤った補正をしてしまうことを回避することができる。推実差分ａ８の絶対値が所定値以上になった場合には、推定角度と実検出角度との間にあまりにも大きな差があり、その回の１周期における大きな推実差分ａ１〜ａ８に基づいて学習値ｄ１〜ｄ８を更新してしまうと、学習値ｄ１〜ｄ８が誤って算出される可能性がある。結果、次の周期での補正動作において、実カウント値Ｋｒが、誤って更新された学習値ｄ１〜ｄ８によって補正されてしまい、実カウント値Ｋｒを正しく補正した角度データφが得られない可能性があるからである。
【０１９３】
［他の実施形態］
上記実施形態において、推定角度パルス信号生成部４３は、図５に示したように、最新の１つの１周期時間（Ｚ相信号の発生間隔）Ｔのみから、推定パルス幅ΔＴを求めた（即ち、モータ１が単位角度回転するのに要する時間を推定した）。しかし、モータ１の回転速度変化も考慮して推定パルス幅ΔＴを求めれば、更に精度の良い角度データφを得ることができる。
【０１９４】
そこで、推定角度パルス信号生成部４３は、最新の２つの１周期時間を使用して、今回計測した１周期時間Ｔｂから前回計測した１周期時間Ｔａを減算した結果（＝Ｔｂ−Ｔａ）と、今回計測した１周期時間Ｔｂとを加算した時間（＝２×Ｔｂ−Ｔａ）を、次回の１周期時間の推定値Ｔｐとして算出し、その１周期時間の推定値Ｔｐを、例えば図６で説明した手法により分解能Ｒで除算して、推定パルス幅ΔＴを求めれば良い。
【０１９５】
つまり、上記「Ｔｂ−Ｔａ」は、モータ１の速度変化が定量的に表わされた値（速度変化成分）であり、その値をＴｂに加味することで、モータ１の加・減速状態が考慮された１周期時間の推定値Ｔｐが得られる。よって、その推定値Ｔｐから推定パルス幅ΔＴを求めることにより、加・減速状態であっても、その状態に応じたより精度の高い推定角度（推定カウント値Ｋｐ）が得られることとなり、延いては、一層精度の良い角度データφが得られるようになる。
【０１９６】
次に、前述した実施形態の構成要素と本発明の構成要素との対応関係を説明する。
本実施形態においては、レゾルバ１３及びＲＤ変換部１６が、回転検出手段に相当し、誤差補正部１７が、補正手段に相当し、Ｚ相信号の立ち上がりエッジが、基準角度情報に相当し、Ａ相信号とＢ相信号との各エッジ（誤差補正部１７の内部では実パルスＰｒの両エッジ）が、単位角度情報に相当し、更に詳しくは単位回転角度情報に相当している。また、誤差補正部１７の内部に着目すると、実パルスＰｒの両エッジ（Ａ相信号とＢ相信号との各エッジ）をカウントした実カウント値Ｋｒが、単位角度情報又は実検出角度情報に相当しているとも言え、その場合には、レゾルバ１３及びＲＤ変換部１６と排他的論理和演算部４１及び実パルスカウンタ４２とが、回転検出手段又は回転センサに相当する。
【０１９７】
そして、推定角度パルス信号生成部４３が、時間推定手段に相当し、推定パルスカウンタ４４が、角度推定手段に相当し、推定カウント値Ｋｐが、推定角度情報に相当している。
【０１９８】
更に、差分記録部４５の動作のうち、図７におけるＳ１１０〜Ｓ１４０の処理を行う部分が、推実差分算出手段に相当し、図７におけるＳ１６０で前述の（１）の処理を行う部分が、増加量差分算出手段に相当し、図７におけるＳ１６０で前述の（２）及び（３）の処理を行う部分が、修正手段に相当し、図７におけるＳ１５０及びＳ１７０の処理を行う部分が、更新禁止手段に相当している。一方、図７におけるＳ１４０の処理は、推実差分ａ８を総累積推定誤差として算出するため、推定誤差算出手段にも相当している。
【０１９９】
また、補正量計算部４６と補正カウント部４７が、出力処理手段に相当し、角度データφが、補正角度情報に相当している。
そして、補正カウント部４７が行う前述の初期化処理が、出力処理手段が行う初期化処理に相当し、補正カウント部４７が行う図１１の出力更新処理が、出力処理手段が行う出力更新処理に相当し、補正量計算部４６が補正カウント部４７へ補正量を出力する処理（図１２を用いて説明した処理）が、出力処理手段が行う補正処理に相当している。
【０２００】
以上、本発明の一実施形態について説明したが、本発明はこうした実施形態に何等限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々なる態様で実施し得ることは勿論である。
【０２０１】
例えば、前述した各区間は４５度間隔でなくても良く、３０度、６０度、９０度、１２０度といったように、２以上かつ１８０未満の３６０の約数としても良い。さらには、等角度間隔でなくても良い。そして、各区間が等角度間隔でない場合には、３６０度での推実差分ａ８の値を、各区間同士の角度幅の比率と極力同じ比率に分割し、その分割した各値を、それの分割比に対応する角度幅比率の区間の増加量差分から減じるようにするのが好ましい。例えば、代表角度を「９０度、２７０度、３６０度」の３つに設定した場合に、３６０度での推実差分ａ８が−１６であったならば、その−１６を、各区間同士の角度幅比率（１：２：１）と同じ比率に分割して「−４，−８，−４」の３つにし、−４を０〜９０度区間の増加量差分から減じ、−８を９０〜２７０度区間の増加量差分から減じ、−４を２７０〜３６０度区間の増加量差分から減じる、というようにすれば良い。
【０２０２】
一方、既述したように３６０度での推実差分ａ８は各区間の増加量差分ｂ１〜ｂ８の総和と等しいため、図７のＳ１６０における前述の（２）の処理で各区間に関する修正値ｃ１〜ｃ８を決定する際には、図９の配分規則テーブルに、推実差分ａ８の値を当てはめることに代えて、増加量差分ｂ１〜ｂ８の総和を当てはめるようにしても良い。但し、結局は同じことであり、また、推実差分ａ８は、修正値ｃ１〜ｃ８を決定する上記（２）の処理を行う前に既に記録されているため、その推実差分ａ８を（２）の処理で用いた方が余分な処理（即ち増加量差分ｂ１〜ｂ８の総和を求める処理）を無くすことができる。
【０２０３】
また例えば、「実カウント値Ｋｒ−推定カウント値Ｋｐ」の値を、推実差分として算出するようにしても良い。尚、その場合には、上記実施形態に対して、推実差分ａ１〜ａ８、増加量差分ｂ１〜ｂ８及び学習値ｄ１〜ｄ８の正負が逆になるため、上記実施形態と結果が同じになるように、補正量計算部４６は、学習値が負なら、その学習値の絶対値に応じた出力割合で２の補正量を出力し、学習値が正なら、その学習値の値に応じた出力割合で０の補正量を出力すれば良い。
【０２０４】
ここで、他の変形例について説明する。
［第１変形例］
前述の実施形態では、各代表角度毎に推実差分ａ１〜ａ８を演算し、この推実差分ａ１〜ａ８に基づいて増加量差分ｂ１〜ｂ８を演算していた。しかし、増加量差分ｂ１〜ｂ８は、実検出角度が各代表角度になったとき毎の推定カウント値Ｋｐに基づいて演算することも可能である。また、修正値ｃ１〜ｃ８を増加量差分ｂ１〜ｂ８に基づいて決定することも可能である。
【０２０５】
そこで以下、図１４と図１５を用いて、推定カウント値Ｋｐに基づき増加量差分ｂ１〜ｂ８を演算すると共に、修正値ｃ１〜ｃ８を増加量差分ｂ１〜ｂ８に基づき決定する変形例について説明する。
【０２０６】
尚、図１４は、前述した図８と同様の図であって、学習値を求める手順を表す図であり、図１５は、差分記録部４５が図７の処理に代えて行う学習処理を表すフローチャートである。また、図１４及び以下の説明において、Ｋｒｙ（ｙは４５、９０、１３５、１８０、２２５、２７０、３１５、３６０の何れか）は、ｙの値の代表角度（４５度、９０度、１３５度、１８０度、２２５度、２７０度、３１５度、３６０度の何れか）での実カウント値Ｋｒを意味している。このため、図１４（Ａ）の２段目と図１４（Ｂ）の２段目とに示しているように、Ｋｒ４５の値（即ち、４５度に該当する実カウント値Ｋｒ）は５１１であり、Ｋｒ９０〜Ｋｒ３６０の各値は、５１１から４５度分に相当する５１２（＝４０９６／８）ずつ増加した値である。また同様に、図１４及び以下の説明において、Ｋｐｙとは、実検出角度がｙの値の代表角度になったときの推定カウント値Ｋｐを意味している。
【０２０７】
本変形例において、差分記録部４５は、図１５の学習処理を開始すると、まずＳ１１０にて、図７の場合と同様に、実カウント値Ｋｒが、最終角度である３６０度以外の代表角度（４５度、９０度、１３５度、１８０度、２２５度、２７０度、３１５度）の何れかに該当する値であるか否か（換言すれば、実検出角度が最終角度以外の代表角度の何れかであるか否か）を判定する。そして、このＳ１１０にて、実カウント値Ｋｒが３６０度以外の代表角度に該当する値であると判定した場合には、Ｓ３００に進む。
【０２０８】
Ｓ３００では、その時の推定カウント値Ｋｐを、当該差分記録部４５に備えられた記憶部としてのメモリ４５ａに、どの代表角度での推定カウント値Ｋｐかを識別可能に記憶する。そして、その後、当該学習処理を終了する。
【０２０９】
更に詳しく説明すると、図１４（Ａ）の３段目に示すように、メモリ４５ａには、レゾルバ１３の１周期（１回転期間）における８つの各代表角度での推定カウント値Ｋｐ（Ｋｐ４５，Ｋｐ９０，Ｋｐ１３５，Ｋｐ１８０，Ｋｐ２２５，Ｋｐ２７０，Ｋｐ３１５，Ｋｐ３６０）を、代表角度と対応付けて記録するための推定カウント値記録テーブルが設けられている。そして、上記Ｓ３００では、検出した推定カウント値Ｋｐを、推定カウント値記録テーブルにおける推定カウント値Ｋｐの記録領域（図１４（Ａ）の３段目）のうち、現在の実検出角度が到達している代表角度に対応した記録領域に書き込む。例えば、実カウント値Ｋｒが４５度に該当する５１１になったときには、そのときの推定カウント値Ｋｐが、Ｋｐ４５（４５度での推定カウント値Ｋｐ）として記憶される。
【０２１０】
一方、上記Ｓ１１０にて、実カウント値Ｋｒが３６０度以外の代表角度に該当する値ではないと判定した場合には、Ｓ１３０に移行して、図７の場合と同様に、実カウント値Ｋｒが最終値の４０９５であるか否か（換言すれば、実検出角度が３６０度であるか否か）を判定する。
【０２１１】
そして、実カウント値Ｋｒが４０９５でなければ、そのまま当該学習処理を終了するが、実カウント値Ｋｒが４０９５であれば、Ｓ３１０に進む。
Ｓ３１０では、Ｓ３００と同様に、その時の推定カウント値Ｋｐを、推定カウント値記録テーブルにおける推定カウント値Ｋｐの記録領域のうち、現在の実検出角度が到達している代表角度（即ち、３６０度）に対応した記録領域に書き込む。このため、Ｓ３１０では、実カウント値Ｋｒが４０９５の時の推定カウント値Ｋｐ（＝Ｋｐ３６０）が、推定カウント値記録テーブルに記憶されることとなる。
【０２１２】
そして、続くＳ３２０では、代表角度で区切られる８つの各区間での増加量差分ｂ１〜ｂ８を、推定カウント値記録テーブルに記憶した各代表角度での推定カウント値Ｋｐを用いて、図１４（Ａ）の４段目における各枠内に示す式の通りに算出し、その算出した各区間での増加量差分ｂ１〜ｂ８を、既述した増加量差分記録テーブルに記録する。尚、図１４（Ａ）の４段目における各枠内に示す式において、各代表角度での実カウント値Ｋｒｙは、既知の値である。
【０２１３】
例えば、４５〜９０度の区間での増加量差分ｂ２は、代表角度９０度における推定カウント値Ｋｐ（＝Ｋｐ９０）から代表角度の間隔（４５度分）前の推定カウント値Ｋｐ（＝Ｋｐ４５）を引いた推定カウント値増加量（＝Ｋｐ９０−Ｋｐ４５）から、代表角度９０度における実カウント値Ｋｒ（＝Ｋｒ９０）から代表角度の間隔（４５度分）前の実カウント値Ｋｒ（＝Ｋｒ４５）を引いた実カウント値増加量（＝Ｋｒ９０−Ｋｒ４５）を、減算することによって算出される。即ち、増加量差分ｂ２は、「ｂ２＝｛Ｋｐ９０−Ｋｐ４５｝−｛Ｋｒ９０−Ｋｒ４５｝」の式で算出される。
【０２１４】
尚、本例では、代表角度の間隔が一定であるため、実カウント値増加量も一定になる。具体的には、４５〜９０度の区間での実カウント値増加量は、Ｋｒ９０（＝１０２３）からＫｒ４５（＝５１１）を引いた５１２であり、次の９０〜１３５度の区間での実カウント値増加量も、Ｋｒ１３５（＝１５３５）からＫｒ９０（＝１０２３）を引いた５１２である。このため、ある区間での増加量差分は、その区間の終了時の推定カウント値Ｋｐから、その区間の開始時の推定カウント値Ｋｐと、実カウント値Ｋｒの取り得る最大値＋１を代表角度の数（区間数でもある）で割った値｛（４０９５＋１）÷８＝５１２｝とを、減算することによって算出することができる。また、最初の０〜４５度の区間での増加量差分ｂ１は、代表角度４５度における推定カウント値Ｋｐ（＝Ｋｐ４５）から、代表角度４５度における実カウント値Ｋｒ（＝Ｋｒ４５＝５１１）を引くことで算出することができる。そして、この図１４を用いて説明した増加量差分ｂ１〜ｂ８の演算方法は、前述の図８を用いて説明した増加量差分ｂ１〜ｂ８の演算方法と同じ結果が得られるものである。
【０２１５】
次に、Ｓ３３０にて、上記Ｓ３２０で算出した増加量差分ｂ１〜ｂ８を合計（積算）し、その合計値の絶対値が所定値以上であるか否かを判定する。そして、増加量差分ｂ１〜ｂ８の合計値の絶対値が所定値以上でなければ、Ｓ３４０に進む。尚、Ｓ３３０での判定に用いられる上記所定値は、図７のＳ１５０と同様に、例えば１０度相当値（＝４０９６×１０／３６０）である。
【０２１６】
Ｓ３４０では、前述の学習値ｄ１〜ｄ８を、今回の１周期で増加量差分記録テーブルに記録した増加量差分ｂ１〜ｂ８から求めて、メモリ４５ａに記憶する。
具体的に説明すると、まず、Ｓ３４０では、Ｓ３２０で増加量差分記録テーブルに記録した増加量差分ｂ１〜ｂ８を修正して最終的な学習値とするための修正値ｃ１〜ｃ８を、増加量差分ｂ１〜ｂ８の合計値（ｂ１＋ｂ２＋ｂ３＋ｂ４＋ｂ５＋ｂ６＋ｂ７＋ｂ８）に応じて、前述の図９に示す配分規則に基づき決定し、その決定した修正値ｃ１〜ｃ８を、図１４（Ａ）の６段目に示すように、メモリ４５ａに設けられた修正値記録テーブルに記録する。
【０２１７】
ここで、既述したように、増加量差分ｂ１〜ｂ８の合計値（総和）は、前述の図８における３６０度（最終角度）での推実差分ａ８と等しく、推定角度に相当する推定カウント値Ｋｐの、１周期分の総累積誤差（即ち総累積推定誤差）を示すものである。このため図９の配分規則において、前述の実施形態における推実差分ａ８を、増加量差分ｂ１〜ｂ８の合計値に置き換えることで、修正値ｃ１〜ｃ８を決定することができる。よって、Ｓ３４０では、増加量差分ｂ１〜ｂ８の合計値を求め、その求めた合計値と図９の配分規則とから、修正値ｃ１〜ｃ８を決定することができる。尚、Ｓ３４０では、増加量差分ｂ１〜ｂ８の合計値を改めて算出しても良いが、Ｓ３３０で算出した増加量差分ｂ１〜ｂ８の合計値を記憶しておいて、Ｓ３４０では、その記憶しておいた合計値を用いて、修正値ｃ１〜ｃ８を決定しても良い。
【０２１８】
更に、Ｓ３４０では、前述の実施形態と同様に、各区間について、増加量差分記録テーブルに記録した増加量差分ｂｘ（ｘは１〜８の何れか）から、修正値記録テーブルに記録した修正値ｃｘを減じた値（＝ｂｘ−ｃｘ）を、その区間での学習値ｄｘとして算出する。そして、その算出した各区間についての学習値ｄ１〜ｄ８を、図１４（Ａ）の７段目に示すように、メモリ４５ａに設けられた学習値記録テーブルに記録する。
【０２１９】
よって、例えば、推定カウント値Ｋｐが、図１４（Ｂ）の３段目に例示する値であったならば、各区間での増加量差分ｂ１〜ｂ８が、図１４（Ｂ）の４段目に示す値となり、その増加量差分ｂ１〜ｂ８の合計値（上記実施形態の推実差分ａ８に相当）が、図１４（Ｂ）の５段目に示す値となり、増加量差分ｂ１〜ｂ８の修正値ｃ１〜ｃ８が、図１４（Ｂ）の６段目に示す値となる（ｂ１〜ｂ８の合計値＝＋２であるため、図９の３段目により、ｃ１〜ｃ８のうち、ｃ３とｃ６が＋１となり、他は０となる）。更に、各区間についての学習値ｄ１〜ｄ８が、図１４（Ｂ）の７段目に示す値となる。
【０２２０】
そして、このようなＳ３４０の処理が終わると、当該学習処理を終了する。
一方、上記Ｓ３３０にて、増加量差分ｂ１〜ｂ８の合計値の絶対値が所定値以上であると判定した場合には、Ｓ３５０に移行し、今回の１周期で増加量差分記録テーブルに記録した増加量差分ｂ１〜ｂ８を無効化する。実際には、Ｓ３４０の処理を行わないことで、今回の１周期分の増加量差分ｂ１〜ｂ８によって学習値ｄ１〜ｄ８が更新されないようにしている。そして、その後、当該学習処理を終了する。
【０２２１】
このように、増加量差分ｂ１〜ｂ８は、各代表角度毎の推定カウント値Ｋｐに基づいて演算することも可能である。また、修正値ｃ１〜ｃ８は、増加量差分ｂ１〜ｂ８の合計値に基づいて決定することも可能である。
【０２２２】
尚、増加量差分ｂ１〜ｂ８を示す図８（Ｂ）の３段目と図１４（Ｂ）の４段目、及び、図８（Ｂ）の推実差分ａ８と図１４（Ｂ）の増加量差分ｂ１〜ｂ８の合計値とが等しいため、修正値ｃ１〜ｃ８を示す図８（Ｂ）の４段目と図１４（Ｂ）の６段目、学習値ｄ１〜ｄ８を示す図８（Ｂ）の５段目と図１４（Ｂ）の７段目も等しくなる。
【０２２３】
一方、この第１変形例では、図１５におけるＳ３２０の処理が、増加量差分算出手段に相当している。また、図１５におけるＳ３４０の処理が、修正手段に相当している。また、図１５におけるＳ３３０又はＳ３４０の処理のうち、増加量差分ｂ１〜ｂ８の合計値を算出する処理は、推定誤差算出手段にも相当している。そして、図１５におけるＳ３３０及びＳ３５０の処理が、更新禁止手段に相当している。
【０２２４】
［第２変形例］
また、増加量差分ｂ１〜ｂ８は実検出角度が各代表角度になったとき毎の推定カウント値Ｋｐに基づいて演算し、修正値ｃ１〜ｃ８は推実差分ａ８に基づいて決定することによっても、同様の効果を得ることができる。つまり、図８の演算方法と図１４の演算方法とを組み合わせても良い。
【０２２５】
この場合の処理について、図１６を用いて説明する。尚、図１６は、差分記録部４５が図７又は図１５の処理に代えて行う学習処理を表すフローチャートである。そして、図１６において、Ｓ１１０、Ｓ３００、Ｓ１３０、Ｓ３１０、及びＳ３２０は、図１５と同様である。つまり、図１６の学習処理では、第１変形例の図１５と比較すると、Ｓ３２０以降の処理が異なっている。
【０２２６】
図１６の学習処理において、Ｓ３２０の処理が終了した時点では、増加量差分記録テーブルに今回の１周期分の増加量差分ｂ１〜ｂ８が記憶されている。
そして、そのＳ３２０に続くＳ１４０では、その時の「推定カウント値Ｋｐ−実カウント値Ｋｒ」の値を、推実差分ａ８として算出すると共に、その算出した推実差分ａ８を所定の記録領域に書き込む。
【０２２７】
つまり、実検出角度が３６０度、即ち実カウント値Ｋｒが４０９５の時の推定カウント値Ｋｐ（＝Ｋｐ３６０）を検出し、そのＫｐ３６０からＫｒ３６０（＝４０９５）を引くことで推実差分ａ８を演算する。その推実差分ａ８は、実カウント値Ｋｒが３６０度相当の最終値（＝４０９５）になったときに、推定カウント値Ｋｐ（推定角度）が実カウント値Ｋｒ（実検出角度）に対してどれだけ進んでいたかを示すものであり、１周期分の総累積推定誤差に相当する。
【０２２８】
そして、次のＳ１５０にて、図７のＳ１５０と同様に、今回のＳ１４０で算出した３６０度での推実差分ａ８の絶対値が、所定値以上であるか否かを判定し、所定値以上でなければ、Ｓ３６０に進む。
【０２２９】
Ｓ３６０では、前述の学習値ｄ１〜ｄ８を、今回の１周期で増加量差分記録テーブルに記録した増加量差分ｂ１〜ｂ８と、上記Ｓ１４０で算出した推実差分ａ８とから求めて、メモリ４５ａに記憶する。
【０２３０】
即ち、Ｓ３６０では、まず、Ｓ３２０で増加量差分記録テーブルに記録した増加量差分ｂ１〜ｂ８を修正して最終的な学習値とするための修正値ｃ１〜ｃ８を、推実差分ａ８に応じて、前述の図９に示す配分規則に基づき決定する。そして、前述の実施形態と同様に、各区間の学習値ｄ１〜ｄ８を、増加量差分ｂ１〜ｂ８と修正値ｃ１〜ｃ８とに基づいて算出する。
【０２３１】
一方、上記Ｓ１５０にて、推実差分ａ８の絶対値が所定値以上であると判定された場合には、Ｓ３７０に移行して、今回の１周期で増加量差分記録テーブルに記録した増加量差分ｂ１〜ｂ８、及び推実差分ａ８を無効化する。実際には、Ｓ３６０の処理を行わないことで、今回の１周期分の増加量差分ｂ１〜ｂ８及び推実差分ａ８によって学習値ｄ１〜ｄ８が更新されないようにしている。そして、その後、当該学習処理を終了する。
【０２３２】
この図１６のように、増加量差分ｂ１〜ｂ８を各代表角度毎の推定カウント値Ｋｐに基づいて演算し、修正値ｃ１〜ｃ８を推実差分ａ８に基づいて決定した場合は、図１４（Ａ）及び図１４（Ｂ）の５段目を、増加量差分合計値から推実差分ａ８に読み替えることになる。そして、図１６の処理によって得られる学習値ｄ１〜ｄ８は、図８（Ｂ）及び図１４（Ｂ）の学習値と同様の値となる。
【０２３３】
尚、この第２変形例では、図１６におけるＳ３２０の処理が、増加量差分算出手段に相当している。また、図１６におけるＳ３６０の処理が、修正手段に相当している。また、図１６におけるＳ１４０の処理が、推定誤差算出手段に相当している。そして、図１６におけるＳ１５０及びＳ３７０の処理が、更新禁止手段に相当している。
【０２３４】
また、上記実施形態では、ＲＤ変換部１６から誤差補正部１７に入力される誤差補正対象の単位角度情報（単位回転角度情報でもある）が、パルス信号、即ちＲＤ変換部１６からのＡ，Ｂ各相信号であって、これら各相信号に基づいてレゾルバ１３の製造ばらつき等に起因する誤差を補正するようにしたが、誤差補正対象の単位角度情報（単位回転角度情報）は、そのようなパルス信号（詳しくは、Ａ，Ｂ各相信号のエッジという形態）に限らず、回転角度を示す角度データであってもよい。実際に、上記実施形態において、誤差補正部１７の内部では、実カウント値Ｋｒが、誤差補正対象の単位角度情報としての角度データに該当している。
【０２３５】
尚、誤差補正部１７に、回転角度を示す角度データが入力されるのであれば、実カウント値Ｋｒが直接入力されるということであるため、その場合は、誤差補正部１７において、排他的論理和演算部４１と実パルスカウンタ４２は不要となる。また、この場合、誤差補正部１７に入力される角度データが角度検出の原点を示す初期値（通常は０）になったことが、Ｚ相信号の発生に相当することとなる。つまり、角度データの値うちの初期値が、基準角度情報に相当することとなる。
【０２３６】
また、回転検出手段は、レゾルバ１３及びＲＤ変換部１６に限定されるものではなく、例えば、既述のインクリメンタルエンコーダや、アブソリュートエンコーダ、更には特許文献２に記載されているような、縦型ホール素子と磁気抵抗素子（ＭＲＥ）との組み合わせたセンサなどであってもよい。
【０２３７】
ここで、縦型ホール素子と磁気抵抗素子とを組み合わせた回転検出手段としての回転センサの構成例を、図１７に示す。尚、図１７（ａ）は回転センサの平面図であり、図１７（ｂ）は図１７（ａ）におけるＡ−Ａ線での断面図である。
【０２３８】
図１７の回転センサでは、被検出体としてマグネットロータ５１を用いており、マグネットロータ５１は、有底円筒状のロータボディ５２を有している。そのロータボディ５２の内側（内面）にはＳ極永久磁石５３とＮ極永久磁石５４とが対向して配置されている。また、ロータボディ５２の内部におけるＳ極永久磁石５３とＮ極永久磁石４５とが対向する部位には、センサチップとしての半導体チップ５５が、永久磁石５３，５４と離間して配置されている。そして、永久磁石５３，５４により半導体チップ５５に磁界が印加される。
【０２３９】
こうした構成により、半導体チップ５５を挟んで対向してＳ極永久磁石５３とＮ極永久磁石５４とが配置される。そして、マグネットロータ５１の回転に伴い、Ｓ極永久磁石３とＮ極永久磁石４とは、対向したまま半導体チップ５５の周囲を回る。
【０２４０】
一方、半導体チップ５５には縦型ホール素子６１が作り込まれており、その縦型ホール素子６１は、Ｓ極永久磁石５３とＮ極永久磁石５４の回転に伴って発生するホール効果によって半導体チップ５５の表面に平行な磁界を検出する。また、半導体チップ５５上には磁気抵抗素子６２，６３も形成されており、その磁気抵抗素子６２，６３は、半導体チップ５５の表面に平行な磁界の強さにより抵抗値が変化する。
【０２４１】
そして、この回転センサでは、縦型ホール素子６１の出力信号と、磁気抵抗素子６２、６３の出力信号とを用いることで、回転角度を検出する。
また、上記実施形態では、マイコン３７とは別に回転角検出部３５を設けるようにしたが、回転角検出部３５を構成するＲＤ変換部１６及び誤差補正部１７のうち、例えば誤差補正部１７をマイコン３７に内蔵させてもよいし、誤差補正部１７及びＲＤ変換部１６の双方（即ち回転角検出部３５全体）をマイコン３７に内蔵させるようにしてもよい。
【０２４２】
また、上記実施形態では、本発明を電気自動車に適用した場合について説明したが、電気自動車への適用はあくまでも一例であり、本発明は、例えば走行用の動力源として内燃機関とモータを備えたいわゆるハイブリッド自動車や、電車（鉄道車両）など、走行用の動力源としてモータを備えたあらゆる車両に適用可能である。
【０２４３】
上記実施形態では、ＲＤ変換部１６の分解能（角度検出の分解能）を１２ビット、又は、１１ビットである場合を例に説明を行ったが、分解能は１１ビット又は１２ビットに限定されず、４ビット、５ビット、６ビット、７ビット、８ビット、９ビット、１０ビット、１３ビット、１４ビット、１５ビット、１６ビット、１７ビット、１８ビット、１９ビット、２０ビット、２１ビット、２２ビット、２３ビット、２４ビット、２５ビット、２６ビット、２７ビット、２８ビット、２９ビット、３０ビット、３１ビット、３２ビット、６４ビットといったように、整数となる任意のビット数に設定することができる。また、整数となる軸倍角と任意に組合せることができる。例えば、軸倍角が３のレゾルバ１３と、分解能が１６ビットのＲＤ変換部１６とを組合せても良い。
【０２４４】
上記実施形態では、推定パルス幅の演算方法は、直前にレゾルバ１３が１回転するのに要した実際の１周期時間をレゾルバ１３の分解能で除算することにより得た時間としていた。しかし、上記方法以外にも、推定パルス幅の演算方法は考えられる。例えば、１回前と３回前のＺ相信号のパルスエッジ立ち上がりタイミングの間の２周期分の時間を計測し、該計測した２周期時間から推定パルス幅を演算しても良い。すなわち、推定パルス幅の演算には、少なくとも１周期時間を含むｎ周期時間を用いれば良い。
【０２４５】
上記実施形態では、修正値を決定する際の規則として図９を用いて説明を行った。しかし、修正値を決定する際の規則は図９には限定されず、出来るだけ均等に、最終角度を含む区間の推実差分（総累積推定誤差）を配分できる規則であればあれば他の規則であっても良い。具体的には、最終角度における推実差分の絶対値が代表角度の数（区間数）よりも小さい時は、各区間の修正値を１又は０にしておけば、図９のような規則でなくても良い。一例としては、最も大きい代表角度（最終角度）÷ｎの商である角度を含む区間に優先的に修正値を配置すると良い。なお、ここでいうｎは１以上の自然数である。更に、ｎは、最終角度における推実差分の絶対値が区間数以下である場合には推実差分の絶対値以下の全ての自然数であり、最終角度における推実差分の絶対値が区間数より大きい場合には最終角度における推実差分の絶対値が区間数以下である場合のｎの組み合わせにより分配を決定する。
【０２４６】
つまり区間数が３であれば、最終角度における推実差分の絶対値が１の時にはｎ＝１、推実差分の絶対値が２の時にはｎ＝１，２、推実差分の絶対値が３の時にはｎ＝１，２，３、推実差分の絶対値が４の時には推実差分の絶対値が１の時のｎと推実差分の絶対値が３の時のｎを組み合わせて分配を決定する。
【０２４７】
一例を具体例を使って説明すると、レゾルバ１３が取りえる角度が０度〜３６０度であり、これを１〜１２０度、１２１〜２４０度、２４１度〜３６０度の３種類の角度範囲に３等分した場合を考える。ここで、最終角度である３６０度での推実差分が＋１であったなら、３６０÷１＝３６０となり３６０度を含む２４１度〜３６０度区間の修正値を＋１、他の区間の修正値を０とする。一方、最終角度の推実差分が＋２であったなら、ｎ＝１で３６０÷１＝３６０、ｎ＝２で３６０÷２＝１８０となり、１８０度を含む１２１〜２４０度区間の修正値を＋１、３６０度を含む２４１〜３６０度区間の修正値を＋１、他の区間の修正値を０とする。そして、最終角度の推実差分が＋３であったなら、ｎ＝１で３６０÷１＝３６０、ｎ＝２で３６０÷２＝１８０、ｎ＝３で３６０÷３＝１２０となり、１〜１２０度、１２１〜２４０度、２４１度〜３６０度の各々の区間の修正値を＋１とする。更に、最終角度の推実差分が＋４であったなら、最終角度における推実差分の絶対値が区間数より大きいため最終角度の推実差分が＋３の場合の修正値に、最終角度の推実差分が＋１の場合の修正値を加えたものとなる。よって、２４１度〜３６０度区間の修正値を＋２、他の区間の修正値を＋１とする。
【０２４８】
上記実施形態では、ＲＤ変換部１６をＥＣＵ７内に配置する構成とした。しかし、ＲＤ変換部１６を、ＥＣＵ７内ではなくレゾルバ１３側に配置しても良いし、ＥＣＵ７内でもなくレゾルバ１３内でもなく別に配置しても良い。この場合、ＥＣＵ７には、Ｚ相信号、Ａ相信号、Ｂ相信号の３種類の信号が入力される。
【０２４９】
上記実施形態では、排他的論理和演算部４１と実パルスカウンタ４２とがをＥＣＵ７内に配置する構成とした。しかし、排他的論理和演算部４１と実パルスカウンタ４２の両方、もしくは排他的論理和演算部４１だけを、ＥＣＵ７内ではなくレゾルバ１３側に配置しても良いし、ＥＣＵ７ともレゾルバ１３とも別に配置しても良い。排他的論理和演算部４１だけをＥＣＵ７内ではなくレゾルバ１３側に配置した場合、ＥＣＵ７には実パルスＰｒが直接入力される構成となる。排他的論理和演算部４１と実パルスカウンタ４２の両方をＥＣＵ７内ではなくレゾルバ１３側に配置した場合、ＥＣＵ７には実カウント値が直接入力される構成となる。
【０２５０】
誤差補正部１７の機能は、マイコン３７の内部で実現されても良いし、マイコン３７とは別に設けられたマイコン、又は、マイコン３７とは別に設けられた回路上で実現されても良い。また、前述した通り、誤差補正部１７の一部の機能を、レゾルバ１３側に配置しても良いし、マイコン３７とは別に設けられたマイコン、又は、マイコン３７とは別に設けられたＩＣ上で実現しても良い。より詳細には、補正カウント部４７は、マイコン３７、又は、マイコン３７とは別のマイコン、又は、ＩＣ上で実現することができる。補正量計算部４６は、マイコン３７、又は、マイコン３７とは別のマイコン、又は、ＩＣ上で実現することができる。差分記録部４５は、マイコン３７、又は、マイコン３７とは別のマイコン、又は、ＩＣ上で実現することができる。実パルスカウンタ４２は、マイコン３７、又は、マイコン３７とは別のマイコン、又は、ＩＣ上で実現することができる。推定パルスカウンタ４４は、マイコン３７、又は、マイコン３７とは別のマイコン、又は、ＩＣ上で実現することができる。排他的論理和演算部４１は、マイコン３７、又は、マイコン３７とは別のマイコン、又は、ＩＣ上で実現することができる。推定角度パルス信号生成部４３は、マイコン３７、又は、マイコン３７とは別のマイコン、又は、ＩＣ上で実現することができる。また、これらの機能をマイコン３７とは別のマイコン、又は、ＩＣ上で実現する場合には、この別のマイコンまたはＩＣは、ＥＣＵ内、又は、ＥＣＵ７内ではなくレゾルバ１３側、又は、ＥＣＵ７及びレゾルバ１３とは別体に配置しても良い。
【０２５１】
補正カウント部４７、補正量計算部４６、差分記録部４５、実パルスカウンタ４２、推定パルスカウンタ４４、排他的論理和演算部４１、推定角度パルス信号生成部４３で行われる処理の実行命令（即ち、それらの各機能をコンピュータに実現させるためのプログラム）を、ＥＣＵ３７内の記録媒体（例えばＲＯＭやＥＥＰＲＯＭ等の不揮発性メモリ）に記憶しておくことにより、誤差補正部１７の機能を、マイコン３７、又は、マイコン３７とは別のマイコンでプログラムを実行することで実現することができる。
【０２５２】
また、マイコン３７が、プロセッサとプロセッサとは別に設けられた回路からなる場合には、プロセッサとは別に設けられたトランジスタやダイオードなどのディスクリート素子からなる回路で、補正カウント部４７、補正量計算部４６、差分記録部４５、実パルスカウンタ４２、推定パルスカウンタ４４、排他的論理和演算部４１、推定角度パルス信号生成部４３の機能を実現しても良い。なお、このように誤差補正部１７の機能をプロセッサとは別の回路で実現した場合、誤差補正部１７の機能を実行するにあたってプロセッサに負荷を掛けることが無い。
【０２５３】
上記実施形態では、推実差分記録テーブル、増加量差分記録テーブル、修正値記録テーブル、学習値記録テーブルが、メモリ４５ａに記録されていた。しかし、推実差分記録テーブル、増加量差分記録テーブル、修正値記録テーブル、学習値記録テーブルを各々別のメモリに記憶させても良い。また、推実差分記録テーブル、増加量差分記録テーブル、修正値記録テーブル、学習値記録テーブルのうちの幾つかを１個のメモリにまとめて記憶させても良い。一方、メモリ４５ａは、ＥＣＵ７の内部に配置されるのであれば、図３に示したように誤差補正部１７に配置されても良いし、メモリだけマイコン３７の内部に配置されても良い。
【０２５４】
一方、請求項１３の対応として、レゾルバ１３から排他的論理和演算部４１と実パルスカウンタ４２までの構成は、回転センサに相当し、推定角度パルス信号生成部４３は、推定パルス生成器に相当し、推定パルスカウンタ４４は、カウンタに相当し、差分記録部４５のメモリ４５ａに記憶された図８に示すテーブルが、メモリに相当し、補正量計算部４６と補正カウント部４７とマイコン３７とは、コントローラに相当する。
【０２５５】
一方、請求項１４の対応として、排他的論理和演算部４１と実パルスカウンタ４２は、実検出角度算出手段に相当し、推定角度パルス信号生成部４３と推定パルスカウンタ４４は、推定角度算出手段に相当し、差分記録部４５は、推定誤差算出手段、増加量差分算出手段、学習値算出手段に相当し、補正量計算部４６と補正カウント部４７は、出力処理手段に相当する。
【符号の説明】
【０２５６】
１…モータ、１ａ…出力軸、３…バッテリ、５…インバータ、７…走行用モータ制御装置（ＥＣＵ）、９…ディファレンシャルギヤ、１１…駆動輪、１３…レゾルバ、１６…ＲＤ変換部、１７…誤差補正部、２１，２２，２３…電流供給線、２５，２６，２７…電流センサ、３１…アクセルセンサ、３２…ブレーキセンサ、３３…シフトポジションセンサ、３５…回転角検出部、３７…マイコン、３９…パルス幅変調回路、４１…排他的論理和演算部、４２…実パルスカウンタ、４３…推定角度パルス信号生成部、４４…推定パルスカウンタ、４５…差分記録部、４５ａ…メモリ、４６…補正量計算部、４７…補正カウント部
【図１】
0005381958.tif 000002
【図２】
0005381958.tif 000003
【図３】
0005381958.tif 000004
【図４】
0005381958.tif 000005
【図５】
0005381958.tif 000006
【図７】
0005381958.tif 000007
【図８】
0005381958.tif 000008
【図９】
0005381958.tif 000009
【図１１】
0005381958.tif 000010
【図１２】
0005381958.tif 000011
【図１３】
0005381958.tif 000012
【図１４】
0005381958.tif 000013
【図１５】
0005381958.tif 000014
【図１６】
0005381958.tif 000015
【図１７】
0005381958.tif 000016
【図６】
0005381958.tif 000017
【図１０】
0005381958.tif 000018