(57)【特許請求の範囲】
【請求項１】
モータの回転位置を示す信号に基づいて、前記モータの検出された回転角度及び検出された角速度を求める第１の導出部と、
前記検出された回転角度及び前記検出された角速度に基づいて、前記検出された回転角度の検出時刻から所定時間経過した後の補正された回転角度を求める補正部と、
前記検出された回転角度に対応する第１の正弦及び第１の余弦を求め、且つ、前記補正された回転角度に対応する第２の正弦及び第２の余弦を求める第２の導出部と、
前記第１の正弦及び前記第１の余弦に基づいて、前記モータに流れる三相交流電流を二相直流電流に変換する第１の変換手順と、前記検出された角速度に基づいて、前記二相直流電流から、目標のトルクを得るための二相直流電圧を求める制御手順と、前記第２の正弦及び前記第２の余弦に基づいて、前記二相直流電圧を三相交流電圧に変換する第２の変換手順とを実行する処理部と、
三相交流電圧信号を生成する生成部と、
を備え、
前記所定時間は、前記第１の変換手順及び前記制御手順の処理時間を含んでおり、前記所定時中の回転角度は、前記第１の変換手順及び前記制御手順の処理時間における回転位置の変化に対応し、
前記補正部は、２のべき乗で前記検出された角速度を除算するＮ（Ｎは２以上の正の整数）個のビットシフト回路と、前記Ｎ個のビットシフト回路により前記所定時間中の回転角度を求め、且つ、前記所定時間中の回転角度及び前記検出された回転角度に基づいて前記補正された回転角度を求める演算回路を備える、
モータ制御装置。
【請求項２】
１番目の前記ビットシフト回路は、前記所定時間中の回転角度以上であってこれに最近似する第１番目の出力値を出力し、
２番目の前記ビットシフト回路は、前記第１の出力値と前記所定時間中の回転角度との第２番目の差以下であって当該第２番目の差に最近似する第２の出力値を出力し、
ｎ（ｎ＝３〜Ｎ）番目の前記ビットシフト回路は、前記第１の出力値と、前記所定時間中の回転角度及び前記第２〜第ｎ−１番目の出力値の和との第ｎ番目の差以下であって、当該第ｎ番目の差に最近似する値を出力する、
請求項１記載のモータ制御装置。
【請求項３】
コンピュータ読み取り可能なプログラムを記憶する記録媒体であって、
前記プログラムはコンピュータに；
モータの回転位置を示す信号に基づいて、前記モータの検出された回転角度及び検出された角速度を求めること、
前記検出された回転角度及び前記検出された角速度に基づいて、前記検出された回転角度の検出時刻から所定時間経過した後の補正された回転角度を求めること、
前記検出された回転角度に対応する第１の正弦及び第１の余弦を求め、且つ、前記補正された回転角度に対応する第２の正弦及び第２の余弦を求めること、
前記第１の正弦及び前記第１の余弦に基づいて、前記モータに流れる三相交流電流を二相直流電流に変換する第１の変換手順と、前記検出された角速度に基づいて、前記二相直流電流から、目標のトルクを得るための二相直流電圧を求める制御手順と、前記第２の正弦及び前記第２の余弦に基づいて、前記二相直流電圧を三相交流電圧に変換する第２の変換手順とを実施すること、
を実行させ、
前記所定時間は、前記第１の変換手順及び前記制御手順の処理時間を含んでおり、前記所定時中の回転角度は、前記第１変換手順及び前記制御手順の処理時間における回転位置の変化に対応し、
前記補正された回転角度を求めることは、２のべき乗で前記検出された角速度を除算する第１〜第Ｎ（Ｎは２以上の正の整数）番目の除算と、前記第１〜第Ｎ番目の除算の出力により、前記所定時間中の回転角度を求めることと、前記所定時間中の回転角度及び前記検出された回転角度に基づいて前記補正された回転角度を求めることを含む、
記録媒体。
【請求項４】
コンピュータによって実行されるモータ制御方法であって、
モータの回転位置を示す信号に基づいて、前記モータの検出された回転角度及び検出された角速度を求めること、
前記検出された回転角度及び前記検出された角速度に基づいて、前記検出された回転角度の検出時刻から所定時間経過した後の補正された回転角度を求めること、
前記検出された回転角度に対応する第１の正弦及び第１の余弦を求め、且つ、前記補正された回転角度に対応する第２の正弦及び第２の余弦を求めること、
前記第１の正弦及び前記第１の余弦に基づいて、前記モータに流れる三相交流電流を二相直流電流に変換する第１の変換手順と、前記検出された角速度に基づいて、前記二相直流電流から、目標のトルクを得るための二相直流電圧を求める制御手順と、前記第２の正弦及び前記第２の余弦に基づいて、前記二相直流電圧を三相交流電圧に変換する第２の変換手順とを実施すること、
を含み、
前記所定時間は、前記第１の変換手順及び前記制御手順の処理時間を含んでおり、前記所定時中の回転角度は、前記第１の変換手順及び前記制御手順の処理時間における回転位置の変化に対応し、
前記補正された回転角度を求めることは、２のべき乗で前記検出された角速度を除算する第１〜第Ｎ（Ｎは２以上の正の整数）番目の除算と、前記第１〜第Ｎ番目の除算の出力により、前記所定時間中の回転角度を求めることと、前記所定時間中の回転角度及び前記検出された回転角度に基づいて前記補正された回転角度を求めることを含む、
モータ制御方法。
【請求項５】
前記補正部が前記第１の変換手順及び前記制御手順を実行している間に、前記補正部が前記補正された回転角度を求める、
請求項１又は２記載のモータ制御装置。
【請求項６】
前記補正部が前記第１の変換手順及び前記制御手順を実行している間に、前記補正部が前記補正された回転角度を求め、且つ、前記第２の導出部が前記第２の正弦及び第２の余弦を求める、
請求項１又は２記載のモータ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モータ制御装置等に関する。
【背景技術】
【０００２】
モータを制御するモータ制御装置は、モータに流れる駆動電流を監視して、所定のトルクが出力されるように駆動電圧を制御する（たとえば特許文献１〜３）。三交流式のブラシレスモータの場合、モータ制御装置は、たとえば、マイクロコンピュータにより、次のような手順からなる制御処理を実行する。たとえば、モータの駆動電流である三相交流電流を取得するとともにモータの回転角度と角速度を検出する第１の手順、回転角度を用いて三相交流電流を二相直流電流に変換する第２の手順、二相直流電流と角速度から、目標トルクを得るための二相直流電圧を求める第３の手順、及び、二相直流電圧を駆動電圧である三相交流電圧に変換する第４の手順である。モータ制御装置は、かかる制御処理により求めた駆動電圧を印加することで、モータの制御を行う。
【０００３】
ところで、上記の第４の手順では、二相直流電圧を三相交流電圧に変換する際、モータの回転角度の正弦、余弦がパラメータとして用いられる。しかし、第１の手順で回転角度を検出してから第４の手順までに、第２、第３の手順の処理時間が経過する。すると、その間にモータのロータが回転するので、求めた駆動電圧による制御は精度を欠く。このため、第２、第３の手順の処理時間に対応する補正量で回転角度を補正し、補正された回転角度を第４の手順で用いる方法が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−３３６９１３号公報
【特許文献２】特開２００８−２７３４７８号公報
【特許文献３】特開２００９−２４７１８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、回転角度を補正する手順の追加は、制御処理全体のスループットを低下させる一要因となる。
【０００６】
そこで、本発明の目的は、モータの回転角度の補正を行っても、制御処理のスループット低下を防止するモータ制御装置等を提供することにある。
【課題を解決するための手段】
【０００７】
上記の目的を達成するために、一実施形態におけるモータ制御装置は、モータの回転位置を示す信号に基づき前記モータの回転角度と角速度とを求める第１の導出部と、前記角速度をビットシフトにより２のべき乗で除算するＮ（Ｎは２以上の正の整数）個のビットシフト回路と、１番目の前記ビットシフト回路の出力値から２〜Ｎ番目の前記ビットシフト回路の出力値を減算して前記回転角度の補正量を求め、当該補正量により前記回転角度を補正する演算回路とを備える補正部と、前記回転角度に対応する第１の正弦、余弦を求め、補正された前記回転角度に対応する第２の正弦、余弦を求める第２の導出部と、前記モータに流れる三相交流電流を前記第１の正弦、余弦に基づいて二相直流電流に変換する第１の変換手順と、前記二相直流電流から目標のトルクを得るための二相直流電圧を前記角速度に基づいて求める制御手順と、前記二相直流電圧を前記第２の正弦、余弦に基づいて三相交流電圧に変換する第２の変換手順とを実行する処理部と、前記三相交流電圧を生成して前記モータに印加する生成部と、を有する。
【発明の効果】
【０００８】
以下の実施形態によれば、モータの回転角度の補正を行っても、制御処理のスループット低下を防止できる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態におけるモータ制御装置の構成例を示す図である。
【図２】回転角度補正部１３の構成例を示す図である。
【図３】ビットシフト回路がシフトするビット数と出力値について説明する図である。
【図４】回転角度補正部１３の別の構成例とその動作を説明する図である。
【図５】モータ制御装置の動作手順を説明するフローチャート図である。
【図６】比較例におけるモータ制御装置の構成を示す図である。
【図７】図６に示すモータ制御装置の動作手順を示すフローチャート図である。
【図８】回転角度補正部のビットシフト回路の個数と、ビットシフト回路がシフトするビット数を決定する情報処理装置の構成例を示す図である。
【図９】情報処理装置の動作手順例を示すフローチャート図である。
【図１０】情報処理装置の動作手順例を示すフローチャート図である。
【図１１】情報処理装置の処理について説明する図である。
【図１２】情報処理装置の処理について説明する図である。
【図１３】異なる条件下での情報処理装置の処理について説明する図である。
【図１４】異なる条件下での情報処理装置の処理について説明する図である。
【発明を実施するための形態】
【００１０】
以下、図面にしたがって実施の形態について説明する。但し、適用される技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【００１１】
図１は、本実施形態におけるモータ制御装置の構成例を示す図である。モータ制御装置２は、モータ４の制御を行う。モータ４は、たとえば、三相交流式のブラシレスモータである。モータ４は、それぞれ２π／３ずつ位相がずれたＵ相、Ｖ相、Ｗ相の三相交流が供給されることで磁界を発生させるステータコイルと、ステータコイルが発生する磁界により吸引・反発されて回転する永久磁石付きのロータとを有する。モータ４は、たとえば、車両に搭載され、車体各部位のアクチュエータや車両の駆動用モータとして用いられる。
【００１２】
モータ４付近には、モータ４の回転位置を示す信号を生成する回転角度検出装置６が設けられる。モータ４の回転位置は、たとえばモータ４のロータが回転することで変化する、ロータ外周上の位置である。モータ４の回転位置を示す信号は、ロータの回転位置を示す信号である。ここでは、回転角度検出装置６は、レゾルバである。回転角度検出装置６では、モータ４のロータに連動する励磁コイル６ａが、入力される励磁信号により検出コイル対６ｂ、６ｃを励磁する。検出コイル対６ｂ、６ｃは、ロータの回転位置に応じて位相がずれた信号を出力する。
【００１３】
モータ制御装置２は、回転角度検出装置６が出力する信号を処理してモータ４の制御に必要なデータを生成する信号処理部８と、信号処理部８が生成するデータに基づきモータ４の制御のための演算処理を行う演算処理部１６とを有する。モータ制御装置２は、たとえばＭＣＵ（Micro Control Unit）である。ここでは、信号処理部８は、レゾルバ−デジタルコンバータである。また、演算処理部１６は、たとえば、制御用プログラムに従って制御処理を実行するＣＰＵ（Central Processing Unit）である。
【００１４】
信号処理部８は、励磁信号生成回路９、増幅器１０ａ、１０ｂ、ＡＤ変換器１１ａ、１１ｂ、回転角度／角速度導出部１２、回転角度補正部１３、正弦／余弦導出部１４、及び、駆動信号生成部３６を有する。励磁信号生成回路９は、励磁信号を生成して回転角度検出装置６の励磁コイル６ａに供給する。励磁信号は、増幅器５により増幅されて回転角度検出装置６に入力される。回転角度検出装置６の出力信号は、増幅器１０ａ、１０ｂにより増幅され、ＡＤ変換器１１ａ、１１ｂによりデジタル信号に変換される。ＡＤ変換器１１ａ、１１ｂは、たとえば１２ビットのＡＤ変換器である。これにより、モータ４の回転角度を示す１２ビットのデータが生成される。
【００１５】
回転角度／角速度導出部１２は、回転角度検出装置６が出力するモータ４の回転位置を示す信号に基づき、モータ４の回転角度θと角速度ωとを導出する。回転角度θは、たとえば、回転位置の変化量に対応する角度から導出される。角速度ωは、たとえば、回転角度θの時間変化率から導出される。回転角度θは、回転角度補正部１３、正弦／余弦導出部１４、及び演算処理部１６に入力される。ここでは、回転角度θは、たとえば１２ビットのデータである。また、角速度ωは、回転角度補正部１３と演算処理部１６に入力される。ここでは、角速度ωは、たとえば１６ビットのデータである。
【００１６】
回転角度補正部１３は、角速度ωに基づき回転角度θの補正量を求め、その補正量により回転角度θを補正して補正回転角度θ´を求める。回転角度補正部１３の構成は、後に詳述する。補正回転角度θ´は、正弦／余弦導出部１４に入力される。
【００１７】
正弦／余弦導出部１４は、回転角度θに基づき、回転角度θに対応する第１の正弦、余弦、つまりsinθ、cosθを導出する。また、正弦／余弦導出部１４は、補正回転角度θ´に基づき、補正回転角度θ´に対応する第２の正弦、余弦、つまりsinθ´、cosθ´を導出する。sinθ、cosθと、sinθ´、cosθ´は、演算処理部１６に入力される。
【００１８】
演算処理部１６は、三相電流取得部２４と、回転角度／正弦／余弦取得部２６を有する。三相電流取得部２４は、モータ４に流れる三相交流電流Ｉｕ、Ｉｖ、Ｉｗを取得する。三相交流電流Ｉｕ、Ｉｖ、Ｉｗは、モータ制御装置２に設けられるＡＤ変換器１８＿１〜１８＿３によりそれぞれデジタル信号化され、演算処理部１６に取り込まれる。回転角度／正弦／余弦取得部２６は、回転角度/角速度導出部１２から回転角度θを取得し、正弦／余弦導出部１４から第１の正弦sinθ、余弦cosθと、第２の正弦sinθ´、余弦cosθ´を取得する。
【００１９】
また、演算処理部１６は、三相／二相電流変換部２８、トルク制御部３０、電流／電圧変換部３２、及び二相／三相電圧変換部３４を有する。三相／二相電流変換部２８は、sinθ、cosθに基づき、モータ４に流れる三相交流電流Ｉｕ、Ｉｖ、Ｉｗを二相直流電流Ｉｄ、Ｉｑに変換する第１の変換手順を実行する。
【００２０】
トルク制御部３０と、電流／電圧変換部３２は、角速度ωに基づき、二相直流電流Ｉｄ、Ｉｑから目標のトルクを得るための二相直流電圧Ｖｄ、Ｖｑを求める制御手順を実行する。まず、トルク制御部３０が、たとえばＰＩＤ制御により、角速度ωに基づき、二相直流電流Ｉｄ、Ｉｑから目標のトルクを得るための二相直流電流Ｉｄ´、Ｉｑ´を求める。目標トルク値は、予め設定されていてもよいし、外部からの入力に基づき演算処理により求めてもよい。たとえば、モータ４が車両の駆動用モータとして用いられる場合、車両に対する速度指示信号がモータ制御装置２に入力され、これに基づいてトルク制御部３０が目標トルクを決定する。次いで、電流／電圧変換部３２が、角速度ωに基づき、二相直流電流Ｉｄ´、Ｉｑ´を二相直流電圧Ｖｄ、Ｖｑに変換する。
【００２１】
二相／三相電圧変換部３４は、sinθ´、cosθ´に基づき、二相直流電圧Ｖｄ、Ｖｑを三相交流電圧Ｖｕ、Ｖｖ、Ｖｗに変換する第２の変換手順を実行する。三相交流電圧Ｖｕ、Ｖｖ、Ｖｗは、信号処理部８に入力される。
【００２２】
信号処理部８において、駆動信号生成部３６は、三相交流電圧Ｖｕ、Ｖｖ、Ｖｗを生成してモータ４に印加する。駆動信号生成部３６は、たとえば、三相交流電圧Ｖｕ、Ｖｖ、Ｖｗに対応するパルス信号を生成するＰＷＭ（パルス幅変調器）である。これにより、モータ４が目標トルクを出力するように制御される。
【００２３】
なお、ここでは回転角度検出装置６がレゾルバである場合が例示されるが、回転角度検出装置６は、たとえば、モータ４の回転位置を示す信号を出力するロータリエンコーダであってもよい。その場合、回転角度／角速度導出部１２は、ロータリエンコーダが出力するデジタル信号から、モータ４の回転角度を示す信号に基づきモータ４の回転角度θと角速度ωとを導出する。
【００２４】
回転角度／正弦／余弦取得部２６がモータ４の回転角度を取得してから、三相／二相電流変換部２８による変換手順と、トルク制御部３０、電流／電圧変換部３２による制御手順が行われるとき、時間経過にともないモータ４の回転位置が変化する。よって、回転角度補正部１３は、かかる変化量に対応する補正量により回転角度θを補正し、補正回転角度θ´を求める。三相／二相電流変換部２８とトルク制御部３０、電流／電圧変換部３２による処理時間をｔとするとき、回転位置の変化量に対応する回転角度の補正量Δθは、次のようになる。
Δθ＝ω×ｔ×ｒｅｓ２／ｒｅｓ１
ここでは、回転角度θを示すデータの分解能ｒｅｓ１と角速度ωを示すデータの分解能ｒｅｓ２とが考慮される。具体例を示す。たとえば、回転角度θを示すデータは１２ビットであるので、１ビットあたりの分解能ｒｅｓ１は、次のようになる。
res1＝360×2＾(−12)＝0.0879（度）
また、角速度ωを示すデータは１６ビットであるので、１６ビットのうち１４ビットで角速度ωを表し、角速度の最大値を40,000rps（ラジアン毎秒）としたとき、１ビット当たりの分解能ｒｅｓ２は、次のようになる。
res2＝40,000×2＾(−14)＝0.261（rps）
すると、たとえば処理時間ｔ＝100μ秒としたとき、補正量Δθは次の［式１］で表わされる。
［式１］
Δθ＝ω×ｔ×res2／res1
＝ω×0.0001×0.261／0.0879
＝ω×0.0001×1068.94198
＝ω×0.106894198
ここで、詳しくは後述する方法により、補正量Δθの小数部分が次のように近似化される。
Δθ＝ω×0.10681152
よって、回転角度補正部１３は、次の［式２］を演算して、補正回転角度θ´を導出する構成を有する。
［式２］    θ´＝θ＋Δθ
＝θ＋ω×0.10681152
図２は、回転角度補正部１３の構成例を示す図である。回転角度補正部１３は、角速度ωをビットシフトにより２のべき乗で除算する５個のビットシフト回路ＢＳ１〜ＢＳ５、１番目のビットシフト回路ＢＳ１の出力値から２〜５番目のビットシフト回路ＢＳ２〜ＢＳ５の出力値を減算して前記回転角度の補正量Δθを求める減算回路１３２、及び、回転角度θに補正量Δθを加算して回転角度θを補正し、補正回転角度θ´を求める加算回路１３４を有する。ビットシフト回路ＢＳ１〜ＢＳ５は、角速度ωをそれぞれ下位側にビットシフトすることで、角速度ωを２のべき乗で除算する。ビットシフト回路ＢＳ１〜ＢＳ５がシフトするビット数は、角速度ωの除数となる２の指数に対応する。
【００２５】
図３は、各ビットシフト回路がシフトするビット数と出力値について説明する図である。ビットシフト回路ＢＳ２〜ＢＳ５は、それぞれ１つ前のビットシフト回路がシフトするビット数より大きいビット数シフトする。たとえば、ビットシフト回路ＢＳ１〜ＢＳ５がシフトするビット数は、順に、３ビット、６ビット、９ビット、１１ビット、そして１３ビットである。
【００２６】
１番目のビットシフト回路ＢＳ１がシフトするビット数は、出力値が目標値以上であってこれに最近似する値になるように設定される。ここで、目標値は、補正量Δθ（＝ω×0.10681152）である。たとえば、ビットシフト回路ＢＳ１は、角速度ωを３ビット下位側にシフトすることで角速度ωを２の３乗で除算し、目標値以上であってこれに最近似する出力値「ω×0.125」を出力する。
【００２７】
２〜５番目のビットシフト回路ＢＳ２〜ＢＳ５がシフトするビット数は、出力値が目標値以下であってこれに最近似する値になるように設定される。ここで、目標値は、１番目のビットシフト回路ＢＳ１の出力値「ω×0.125」から補正量Δθと１つ前のビットシフト回路の出力値とを減算した差である。たとえば、２番目のビットシフト回路ＢＳ２は、角速度ωを６ビット下位側にシフトすることで角速度ωを２の６乗で除算し、目標値「ω×0.01818848」以下であってこれに最近似する出力値「ω×0.015625」を出力する。また、３番目のビットシフト回路ＢＳ３は、角速度ωを９ビット下位側にシフトすることで角速度ωを２の９乗で除算し、目標値「ω×0.00256348」以下であってこれに最近似する出力値「ω×0.001953125」を出力する。また、４番目のビットシフト回路ＢＳ４は、角速度ωを１１ビット下位側にシフトすることで角速度ωを２の１１乗で除算し、目標値「ω×0.00061036」以下であってこれに最近似する出力値「ω×0.000488281」を出力する。そして、５番目のビットシフト回路ＢＳ５は、角速度ωを１３ビット下位側にシフトすることで角速度ωを２の１３乗で除算し、目標値「ω×0.00012207」以下であってこれに最近似する出力値「ω×0.00012207」を出力する。
【００２８】
減算回路１３２は、１番目のビットシフト回路ＢＳ１の出力値から２〜５番目のビットシフト回路ＢＳ２〜ＢＳ５の出力値を減算して、回転角度θの補正量Δθ（「ω×0.10681152」）を求める。そして、加算回路１３４は、回転角度θに補正量Δθを加算して補正回転角度θ´を求める。
【００２９】
回転角度補正部１３は、上記のようなビットシフト回路と加減算回路により、浮動小数点演算の近似計算を行う。よって、たとえば浮動小数点演算用の回路構成と比較して、簡易な回路構成が可能である。さらに、ビットシフトと加減算を行うので、乗算を行う場合と比較して演算時間を短縮できる。よって、回転角度θを補正する場合であっても、スループットを向上させることができる。
【００３０】
図４は、回転角度補正部１３の別の構成例とその動作を説明する図である。図４（Ａ）では、回転角度補正部１３は、ビットシフト回路ＢＳ２〜ＢＳ５の出力値を加算する加算回路１３６と、加算回路１３６による加算結果ｓｕｍ１を格納するレジスタｒｅｇ１と、ビットシフト回路ＢＳ１の出力値から加算結果ｓｕｍ１を減算する減算回路１３７と、減算回路１３７による減算結果ｓｕｍ２を格納するレジスタｒｅｇ２と、回転角度θに減算結果ｓｕｍ２を加算する加算回路１３８とを有する。
【００３１】
ここで、回転角度θは１２ビットのデータである。また、角速度ωは１６ビットのデータである。ビットシフト回路ＢＳ２〜ＢＳ５は、１６ビットの角速度ωを最大で１３ビット下位側にシフトする。よって、ビットシフト回路ＢＳ２〜ＢＳ５の出力値のデータ長は、２９ビットである。よって、レジスタｒｅｇ１は、２９ビットの加算結果ｓｕｍ１を格納する。一方、角速度ωを３ビット下位側にシフトするビットシフト回路ＢＳ１の出力値は、１９ビットである。減算回路１３７は、たとえば、２９ビットの加算結果ｓｕｍ１の２の補数を生成してビットシフト回路ＢＳ１の出力値に加算することで、減算を行う。よって、レジスタｒｅｇ２は、２９ビットの減算結果ｓｕｍ２を格納する。そして、加算回路１３８は、減算結果ｓｕｍ２のたとえば下位１４ビットを切り捨てて、上位１５ビットを１２ビットの回転角度θに加算する。ここで、上位１２ビットが選択されて、１２ビットに近似された補正回転角度θ´が出力される。
【００３２】
図４（Ｂ）は、図４（Ａ）に示した回転角度補正部１３の動作タイミングを示すタイミングチャート図である。図４（Ｂ）には、回転角度補正部１３の動作クロックＣＬＫと、たとえばモータ４の駆動回路から数十μ秒ごとに信号処理部８に入力される、データ取込起動信号ＳＳが示される。データ取込起動信号ＳＳの立下りに同期して、次のような動作シーケンスが開始される。ここに示す動作シーケンスは、データ取込起動信号ＳＳの入力ごとに繰り返し実行される。
【００３３】
まず、ビットシフト回路ＢＳ１〜ＢＳ５が角速度ωを取得する（ｓｅｑ１）。そして、次のクロックの立ち上がりに同期して、ビットシフト回路ＢＳ１〜ＢＳ５がそれぞれビットシフトを行い（ｓｅｑ２）、加算回路１３６がビットシフト回路ＢＳ２〜ＢＳ５の出力値を加算する（ｓｅｑ３）。そして、次のクロックの立ち上がりに同期して、減算回路１３７が加算結果ｓｕｍ１の２の補数を生成し（ｓｅｑ４）、ビットシフト回路ＢＳ１の出力値に加算する（ｓｅｑ５）。そして、次のクロックの立ち上がりに同期して、加算回路１３８が減算結果ｓｕｍ２の下位１４ビットを切り捨てて（ｓｅｑ６）、回転角度θに加算する（ｓｅｑ７）。そして、次のクロックの立ち上がりに同期して、加算回路１３８が補正回転角度θ´を出力する（ｓｅｑ８）。
【００３４】
図５は、モータ制御装置の動作手順を説明するフローチャート図である。図５の手順は、たとえば、数十μ秒の制御サイクルごとに実行される。
【００３５】
まず、手順Ｓ２で、回転角度／角速度導出部１０がモータ４の回転角度θと角速度ωとを導出し、正弦／余弦導出部１４が回転角度に対応する正弦sinθ、余弦cosθを導出すると、回転角度／正弦／余弦取得部２６が、回転角度／角速度導出部１０から回転角度θを取得し、正弦／余弦導出部１４からsinθ、cosθを取得する。
【００３６】
次いで、手順Ｓ４で、三相電流取得部２４が、モータ４に流れる三相交流電流Ｉｕ、Ｉｖ、Ｉｗを取得する。次いで、手順Ｓ６で、三相／二相電流変換部２８が、sinθ、cosθに基づき、三相交流電流Ｉｕ、Ｉｖ、Ｉｗを二相直流電流Ｉｄ、Ｉｑに変換する。次いで、手順Ｓ８で、トルク制御部３０が、角速度ωに基づき、二相直流電流Ｉｄ、Ｉｑから目標のトルクを得るための二相直流電圧Ｉｄ´、Ｉｑ´を求めるトルク制御を行う。次いで、手順Ｓ１０で、電流／電圧変換部３２が、角速度ωに基づき、二相直流電流Ｉｄ´、Ｉｑ´を二相直流電圧Ｖｄ、Ｖｑに変換する。
【００３７】
一方、手順Ｓ４〜Ｓ１０と並行して、手順Ｓ１２で、回転角度補正部１３が補正回転角度θ´を求め、正弦／余弦導出部１４が補正回転角度θ´からsinθ´、cosθ´を求めると、二相／三相電圧変換部３４が、正弦／余弦導出部１４からsinθ´、cosθ´を取得する。そして、手順Ｓ１４で、二相／三相電圧変換部３４が、sinθ´、cosθ´に基づき、二相直流電圧Ｖｄ、Ｖｑを三相交流電圧Ｖｕ、Ｖｖ、Ｖｗに変換する。そして、手順Ｓ１６で、駆動信号生成部３６が、前記三相交流電圧Ｖｕ、Ｖｖ、Ｖｗを生成してモータ４に印加する。このような手順Ｓ２〜Ｓ１６が繰り返され、モータ４が目標トルクを出力するように制御が行われる。
【００３８】
図６、図７は、本実施形態と比較する例を示す。
【００３９】
図６は、比較例におけるモータ制御装置２の構成を示す。この例では、信号処理部８が回転角度補正部１３を有する代わりに、演算処理部１６が回転角度補正処理を実行する回転角度補正部１３ａを有する。たとえば、演算処理部１６は、回転角度補正部１３ａとして、制御プログラムに従って回転角度補正処理を実行する。回転角度補正部１３ａは、回転角度／正弦／余弦取得部２６から回転角度θを取得して、補正回転角度θ´を求める演算処理を行う。そして、回転角度補正部１３ａは、補正回転角度θ´を正弦／余弦導出部１４に渡す。すると、正弦／余弦導出部１４が補正回転角度θ´からｓｉｎθ´、ｃｏｓθ´を求めて、二相／三相電圧変換部３４に返す。こうして、二相／三相電圧変換部３４が補正回転角度θ´に対応するｓｉｎθ´、ｃｏｓθ´を取得する。
【００４０】
図７は、図６に示すモータ制御装置の動作手順を示すフローチャート図である。図７では、手順Ｓ４〜Ｓ１０と並行して手順Ｓ１２が実行される代わりに、手順Ｓ１０の後に手順Ｓ１２が挿入される。手順Ｓ１２では、回転角度補正部１３ａが補正回転角度θ´を求め、補正回転角度θ´を正弦／余弦導出部１４に渡す。そして、二相／三相電圧変換部３４が正弦／余弦導出部１４から補正回転角度θ´に対応するｓｉｎθ´、ｃｏｓθ´を取得する。
【００４１】
図５の処理手順と図７の処理手順を比較すると、図５の手順は手順Ｓ４〜Ｓ１０と手順Ｓ１２を並行処理することで、図７の処理手順より処理時間が短縮される。このように、本実施形態におけるモータ制御装置４は、回転角度補正部１３を演算処理部１６とは別に設けることで、演算処理部１６の処理と並行して回転角度補処理を実行できる。よって、回転角度を補正する場合において、スループットを向上させることができる。
【００４２】
次に、回転角度補正部１３のビットシフト回路の個数と、各ビットシフト回路がシフトするビット数の設定方法について説明する。ここでは、補正量Δθ＝ω×0.10681152を例とする。また、角速度ωを示すデータは、１６ビットである。
【００４３】
第１の工程では、１番目のビットシフト回路ＢＳ１がシフトするビット数が決定される。第１の工程では、補正量Δθに対応する補正係数「0.10681152」を目標値として、目標値以上であってこれに最近似する２のべき乗が求められる。ここにおいて、求められた２のべき乗の指数に対応して、１番目のビットシフト回路ＢＳ１がシフトするビット数が決定される。
【００４４】
次いで、第２〜１６（角速度ωを示すデータのビット数）の工程では、２番目以降のビットシフト回路がシフトするビット数が決定される。第２〜１６の工程のうち、第ｉ（ｉは２以上かつ１６以下）の工程では、過去の工程で求めた２のべき乗の和を補正係数「0.10681152」から減算した差を目標値とし、目標値以下であってこれに最近似する２のべき乗が求められる。そして、求められた２のべき乗の指数に基づいて、ｉ番目のビットシフト回路がシフトするビット数が決定される。
【００４５】
図８は、上記方法により回転角度補正部１３のビットシフト回路の個数と、各ビットシフト回路がシフトするビット数を決定する情報処理装置の構成例である。情報処理装置１００は、たとえば、パーソナルコンピュータである。情報処理装置１００は、バス１０４により接続されるＣＰＵ１０２、ＲＡＭ（Random Access Memory）１０６、ＲＯＭ（Read Only Memory）１０８、インターフェース１０７とを有する。インターフェース１０７には、入力装置１１０、出力装置１１２、及び補助記憶装置１０９が接続される。入力装置１１０は、たとえばキーボードやポインティングデバイスである。出力装置１１２は、たとえばディスプレイなどの表示装置である。補助記憶装置１０９は、たとえば、ハードディスクなどの記憶装置である。
【００４６】
ＣＰＵ１０２は、入力装置１１０から入力される指示に応答して、ＲＯＭ１０８や補助記憶装置１０９に格納される処理プログラムＰＲＧをＲＡＭ１０６に読出して実行する。そうすることで、回転角度補正部１３のビットシフト回路の個数と、各ビットシフト回路がシフトするビット数を決定する手順が実行される。
【００４７】
図９、図１０は、情報処理装置１００の動作手順例を示すフローチャート図である。図９の手順は、１番目のビットシフト回路ＢＳ１がシフトするビット数を決定する手順に対応する。ここで、補正量Δθは、次の［式３］で表される。
［式３］  Δθ＝ω・［Z(0)−(α(1)・2＾(-1))+ α(2)・2＾(-2)+α(3)・2＾(-3)+  …
+α(k)・2＾(-k)］  
ここでは、ｋは角速度ωのビット数「１６」である。また、角速度ωに対する乗数のうち第１項Z(0)はビットシフト回路ＢＳ１による２のべき乗に対応する。また、α(ｊ)（ｊ＝２〜ｋ）は２の−ｊ乗を演算するビットシフト回路の有り「１」または無し「０」を示す。
【００４８】
情報処理装置１００は、各種変数の設定を行う（Ｓ１０２）。ワーク変数Ｘは、上述の［式１］で示した近似される前の補正量「ω×0.106894198」における、補正係数「0.106894198」に設定される。ワーク変数ｋは角速度ωのビット数「１４」に設定される。補正係数や角速度ωのビット数は、たとえば操作者により情報処理装置１００に入力される。また、カウンタ変数ｎは初期値「２」に設定される。次いで、情報処理装置１００は、ワーク変数Ｙの設定を行う（Ｓ１０４）。ワーク変数Ｙは、ワーク変数Ｘの値、つまり補正係数「0.106894198」に設定される。このワーク変数Ｙの値を目標値として、情報処理装置１００は、２の−ｎ乗がワーク変数Ｙの値以下になるまで、カウンタ変数ｎを初期値「２」から１ずつインクリメントさせる（Ｓ１０６のＦａｌｓｅ、Ｓ１０８）。
【００４９】
２の−ｎ乗がワーク変数Ｙの値以下のときであって（Ｓ１０６のＴｒｕｅ）、２の−ｎ乗がワーク変数Ｙの値と一致していれば（Ｓ１１０のＴｕｒｅ）、情報処理装置１００は、近似された補正係数を示すワーク変数Ｙ´の値を、２の−ｎ乗に設定し（Ｓ１１２）、処理を終了する。この場合、補正係数は近似されることなく２のべき乗で表わされる。一方、２の−ｎ乗がワーク変数Ｙの値と一致していなければ（Ｓ１１０のＦａｌｓｅ）、手順Ｓ１１４に進む。手順Ｓ１１４では、情報処理装置１００は、Z(0)を２の−（ｎ−１）乗に設定する。ここにおいて、第１のビットシフト回路ＢＳ１がシフトするビット数「ｎ−１」が決定する。この場合、ワーク変数Ｙの値とZ(0)の値には差が生じている。よって、２番目以降のビットシフト回路がシフトするビット数を決定する手順を実行するために、手順Ｓ１１４で、情報処理装置１００は、ワーク変数Ｙの値を、２の−（ｎ−１）乗と、ワーク変数Ｘの値（つまり補正係数「0.106894198」）の差に設定する。これにより、２番目以降のビットシフト回路による演算結果の目標値が設定される。さらに、カウンタ変数ｎがインクリメントされ、カウンタ変数ｍの値が、インクリメントされたカウンタ変数ｎの値に設定される。
【００５０】
ここで、補正係数「0.106894198」について手順Ｓ１０２〜Ｓ１１２を実行したときのワーク変数Ｙ、カウンタ変数ｎ、２の−ｎ乗の値が、図１１（Ａ）に示される。図１１（Ａ）に示すように、ｎ＝２〜４において、ｎ＝４のとき、２の−ｎ乗がワーク変数Ｙの値以下となる。よって、Z(0)は、２の−（ｎ−１）乗、つまり２の−３乗となる。よって、第１のビットシフト回路ＢＳ１がシフトするビット数「３」が決定する。
【００５１】
次に、図１０に示す手順が実行される。図１０の手順は、２番目以降のビットシフト回路がシフトするビット数を決定する手順に対応する。情報処理装置１００は、ワーク変数Ｚ（ｍ）を２の−ｍ乗に設定する（Ｓ１１６）。これにより、２番目以降のビットシフト回路がシフトするビット数が、第１のビットシフト回路ＢＳ１がシフトするビット数「ｎ−１」より大きい値に設定される。
【００５２】
そして、２の−ｎ乗がワーク変数Ｙの値を上回るときには（Ｓ１１８のＦａｌｓｅ）、［式３］の項α（ｍ）を「０」に設定する（Ｓ１２０）。一方、２の−ｎ乗がワーク変数Ｙの値以下のときには（Ｓ１１８のＴｒｕｅ）、項α（ｍ）を「１」に設定する（Ｓ１２２）。ここにおいて、目標値以下であって目標値に最近似する２のべき乗が求められる。そして、カウンタ変数ｍを１ずつインクリメントさせる（Ｓ１２４）。こうして、カウンタ変数ｍが角速度ωのビット数ｋになるまで（Ｓ１２６のＴｒｕｅ）、手順Ｓ１１６〜Ｓ１２６が繰り返される。このときのカウント変数ｎ、Ｚ（ｎ）、及びα（ｎ）が、図１１（Ｂ）に示される。図１１（Ｂ）に示すように、ｎが６、９、１１、１４〜１６のときに、αが「１」となる。
【００５３】
そして、カウンタ変数ｍが角速度ωのビット数ｋを上回ると（Ｓ１２６のＦａｌｓｅ）、情報処理装置１００は、近似された補正係数を示すワーク変数Ｙ´の値を、次のように設定し（Ｓ１２８）、処理を終了する。
【００５４】
Y´=Z(0)-α・(n+1)・Z(n+1) -α・(n+2)・Z(n+2) -α・(n+3)・Z(n+3) …-α・(k-1)・Z(k-1)
補正係数「0.106894198」について手順Ｓ１１６〜Ｓ１２６を実行したときの変数ｎの範囲ごとのワーク変数Ｙ´の値が、図１２（Ａ）に示される。ｎ＝４〜１６において、ｎが６、９、１１、１４〜１６のときにαが「１」となるので、ワーク変数Ｙ´は、次の［式４］で示すようになる。
［式４］
Y´=2^(-3)-1・2^(-6) -1・2^(-9) -1・2^(-11) -1・2^(-14) -1・2^(-15) -1・2^(-16)
さらに、情報処理装置１００は、ワーク変数Ｙ´の値をビットシフト回路のビット数で表現可能な桁数で近似し、ビットシフト回路の個数とシフトするビット数を決定する（Ｓ１３０）。情報処理装置１００は、たとえば、第１項を除く最終項のビット数を１ビット繰り上げる。そして、繰り上げ前のワーク変数Ｙ´の計算結果と最も近い計算結果が得られる繰り上げ後のワーク変数Ｙ´が選択される。
【００５５】
たとえば、図１２（Ｂ）には、図１２（Ａ）で示す例に対し、上記手順Ｓ１３０を実行した例が示される。図１２（Ａ）、（Ｂ）において、ｎ＝４〜１４のときに（矢印Ａ１）、ビット数が繰り上げられたワーク変数Ｙ´の値が、繰り上げられる前のワーク変数Ｙ´の値に最も近くなり、項数が最小となる。よって、このとき、ビットシフト回路の個数が最小となる。よって、ｎ＝４〜１４において、ｎが６、９、１１、１３となるような組合せが選択される。これにより、ビットシフト回路の個数は、１番目のビットシフト回路を合わせて５個に決定される。そして、ビットシフト回路ＢＳ２〜ＢＳ５がシフトするビット数が、それぞれ６ビット、９ビット、１１ビット、１３ビットに決定される。
【００５６】
情報処理装置１００は、たとえば、上記の処理結果を出力することで、開発者がこれを利用して回転角度補正部１３を開発することができる。上記のような手順により回転角度θの補正量Δθを計算するための回転角度補正部１３のビットシフト回路の個数と、各ビットシフト回路がシフトするビット数を決定することができる。上記の手順によれば、ビットシフト回路の個数を最小化できる。よって、回路規模を増大させることなく、簡易な構成により、浮動小数点演算の近似計算が可能となる。
【００５７】
図１３、図１４は、異なる条件下で上記手順を実行したときの例を示す。ここでは、三相／二相電流変換部２８とトルク制御部３０、電流／電圧変換部３２による処理時間ｔが「120」μ秒の場合が示される。このとき、回転角度の補正量Δθは、次のようになる。
Δθ＝ω×ｔ×res2／res1
＝ω×0.00012×0.261／0.0879
＝ω×0.00012×1068.94198
＝ω×0.1281788314
よって、補正係数「0.1281788314」について、図９、図１０の手順が実行される。
【００５８】
この条件において、図９の手順Ｓ１０２〜Ｓ１１２を実行したときのワーク変数Ｙ、カウンタ変数ｎ、２の−ｎ乗の値が、図１３（Ａ）に示される。また、図１０の手順Ｓ１１６〜Ｓ１２８を実行したときのカウント変数ｎ、Ｚ（ｎ）、及びα（ｎ）が、図１３（Ｂ）に示される。また、カウント変数ｎの範囲ごとのワーク変数Ｙ´の値が、図１４（Ａ）に示される。そして、上記手順Ｓ１３０を実行した例が、図１４（Ｂ）に示される。
【００５９】
図１３（Ａ）において、ｎ＝３のとき、２の−ｎ乗がワーク変数Ｙの値以下となる。よって、Z(0)は、２の−２乗となる。よって、第１のビットシフト回路ＢＳ１がシフトするビット数「２」が決定する。また、図１３（Ｂ）において、ｎが４、５、６、７、８、１１、１３、１４、１５、１６のときに、項α（ｎ）の値が「１」となる。よって、ワーク変数Ｙ´は、次の［式５］で示すようになる。
［式５］
Y´=2^(-2)-1・2^(-4) -1・2^(-5) -1・2^(-6) -1・2^(-7) -1・2^(-8) 
-1・2^(-11) -1・2^(-13) -1・2^(-14) -1・2^(-15) -1・2^(-16) 
そして、図１４（Ａ）、（Ｂ）において、ｎ＝３〜１６のときに（矢印Ｂ１）、ビット数が繰り上げられたワーク変数Ｙ´の値が、繰り上げられる前のワーク変数Ｙ´の値に最も近くなり、ビットシフト回路の個数が最小となる。よって、ｎ＝３〜１６において、ｎが４、５、６、７、８、１１、１３、１４、１５となるような組合せが選択される。これにより、ビットシフト回路の個数は、１番目のビットシフト回路を合わせて１１個に決定される。そして、２番目のビットシフト回路〜１１番目のビットシフト回路がシフトするビット数が、それぞれ４ビット、５ビット、６ビット、７ビット、８ビット、１１ビット、１３ビット、１４ビット、１５ビットに決定され、ワーク変数Ｙ´は次の[式６]で示すようになる。
［式６］
Y´=2^(-2)-1・2^(-4) -1・2^(-5) -1・2^(-6) -1・2^(-7) -1・2^(-8) 
-1・2^(-11) -1・2^(-13) -1・2^(-14) -1・2^(-15) -1・2^(-15) 
さらに、[式６]における乗数が同じ項を、次の[式７]で示すようにまとめることができる。
［式７］
Y´=2^(-2)-1・2^(-4) -1・2^(-5) -1・2^(-6) -1・2^(-7) -1・2^(-8) 
-1・2^(-11) -1・2^(-13) -1・2^(-14) -1・2^(-15) -1・2^(-15) 
=2^(-2)-1・2^(-4) -1・2^(-5) -1・2^(-6) -1・2^(-7) -1・2^(-8) 
-1・2^(-11) -1・2^(-13) -1・2^(-14) -1・2^(-14) 
=2^(-2)-1・2^(-4) -1・2^(-5) -1・2^(-6) -1・2^(-7) -1・2^(-8) 
-1・2^(-11) -1・2^(-13) -1・2^(-13)
=2^(-2)-1・2^(-4) -1・2^(-5) -1・2^(-6) -1・2^(-7) -1・2^(-8) 
-1・2^(-11) -1・2^(-12)
［式７］に示すように、ビットシフト回路の個数を８個（ここでは、８番目のビットシフト回路がシフトするビット数は１２ビットである）とすることも可能である。
【００６０】
このような手順によれば、ビットシフト回路の個数を最小化できる。よって、回路規模を増大させることなく、簡易な構成により、浮動小数点演算の近似計算が可能となる。
【００６１】
以上説明した実施形態によれば、モータ制御装置がモータの回転角度の補正を行っても、制御処理のスループット低下を防止できる。  
【符号の説明】
【００６２】
２：モータ制御装置、  ４：モータ、  ６：回転位置検出装置、  ８：データ処理装置、
１２：回転角度／角速度導出部、  １３：回転角度補正部、  １４：正弦／余弦導出部、
１６：演算処理装置、  ３６：駆動電圧生成部
【図１】
0005744567.tif 000002
【図２】
0005744567.tif 000003
【図３】
0005744567.tif 000004
【図４】
0005744567.tif 000005
【図５】
0005744567.tif 000006
【図６】
0005744567.tif 000007
【図７】
0005744567.tif 000008
【図８】
0005744567.tif 000009
【図９】
0005744567.tif 000010
【図１０】
0005744567.tif 000011
【図１１】
0005744567.tif 000012
【図１２】
0005744567.tif 000013
【図１３】
0005744567.tif 000014
【図１４】
0005744567.tif 000015