(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
以下、図面にしたがって実施の形態について説明する。但し、適用される技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【0011】
図1は、本実施形態におけるモータ制御装置の構成例を示す図である。モータ制御装置2は、モータ4の制御を行う。モータ4は、たとえば、三相交流式のブラシレスモータである。モータ4は、それぞれ2π/3ずつ位相がずれたU相、V相、W相の三相交流が供給されることで磁界を発生させるステータコイルと、ステータコイルが発生する磁界により吸引・反発されて回転する永久磁石付きのロータとを有する。モータ4は、たとえば、車両に搭載され、車体各部位のアクチュエータや車両の駆動用モータとして用いられる。
【0012】
モータ4付近には、モータ4の回転位置を示す信号を生成する回転角度検出装置6が設けられる。モータ4の回転位置は、たとえばモータ4のロータが回転することで変化する、ロータ外周上の位置である。モータ4の回転位置を示す信号は、ロータの回転位置を示す信号である。ここでは、回転角度検出装置6は、レゾルバである。回転角度検出装置6では、モータ4のロータに連動する励磁コイル6aが、入力される励磁信号により検出コイル対6b、6cを励磁する。検出コイル対6b、6cは、ロータの回転位置に応じて位相がずれた信号を出力する。
【0013】
モータ制御装置2は、回転角度検出装置6が出力する信号を処理してモータ4の制御に必要なデータを生成する信号処理部8と、信号処理部8が生成するデータに基づきモータ4の制御のための演算処理を行う演算処理部16とを有する。モータ制御装置2は、たとえばMCU(Micro Control Unit)である。ここでは、信号処理部8は、レゾルバ−デジタルコンバータである。また、演算処理部16は、たとえば、制御用プログラムに従って制御処理を実行するCPU(Central Processing Unit)である。
【0014】
信号処理部8は、励磁信号生成回路9、増幅器10a、10b、AD変換器11a、11b、回転角度/角速度導出部12、回転角度補正部13、正弦/余弦導出部14、及び、駆動信号生成部36を有する。励磁信号生成回路9は、励磁信号を生成して回転角度検出装置6の励磁コイル6aに供給する。励磁信号は、増幅器5により増幅されて回転角度検出装置6に入力される。回転角度検出装置6の出力信号は、増幅器10a、10bにより増幅され、AD変換器11a、11bによりデジタル信号に変換される。AD変換器11a、11bは、たとえば12ビットのAD変換器である。これにより、モータ4の回転角度を示す12ビットのデータが生成される。
【0015】
回転角度/角速度導出部12は、回転角度検出装置6が出力するモータ4の回転位置を示す信号に基づき、モータ4の回転角度θと角速度ωとを導出する。回転角度θは、たとえば、回転位置の変化量に対応する角度から導出される。角速度ωは、たとえば、回転角度θの時間変化率から導出される。回転角度θは、回転角度補正部13、正弦/余弦導出部14、及び演算処理部16に入力される。ここでは、回転角度θは、たとえば12ビットのデータである。また、角速度ωは、回転角度補正部13と演算処理部16に入力される。ここでは、角速度ωは、たとえば16ビットのデータである。
【0016】
回転角度補正部13は、角速度ωに基づき回転角度θの補正量を求め、その補正量により回転角度θを補正して補正回転角度θ´を求める。回転角度補正部13の構成は、後に詳述する。補正回転角度θ´は、正弦/余弦導出部14に入力される。
【0017】
正弦/余弦導出部14は、回転角度θに基づき、回転角度θに対応する第1の正弦、余弦、つまりsinθ、cosθを導出する。また、正弦/余弦導出部14は、補正回転角度θ´に基づき、補正回転角度θ´に対応する第2の正弦、余弦、つまりsinθ´、cosθ´を導出する。sinθ、cosθと、sinθ´、cosθ´は、演算処理部16に入力される。
【0018】
演算処理部16は、三相電流取得部24と、回転角度/正弦/余弦取得部26を有する。三相電流取得部24は、モータ4に流れる三相交流電流Iu、Iv、Iwを取得する。三相交流電流Iu、Iv、Iwは、モータ制御装置2に設けられるAD変換器18_1〜18_3によりそれぞれデジタル信号化され、演算処理部16に取り込まれる。回転角度/正弦/余弦取得部26は、回転角度/角速度導出部12から回転角度θを取得し、正弦/余弦導出部14から第1の正弦sinθ、余弦cosθと、第2の正弦sinθ´、余弦cosθ´を取得する。
【0019】
また、演算処理部16は、三相/二相電流変換部28、トルク制御部30、電流/電圧変換部32、及び二相/三相電圧変換部34を有する。三相/二相電流変換部28は、sinθ、cosθに基づき、モータ4に流れる三相交流電流Iu、Iv、Iwを二相直流電流Id、Iqに変換する第1の変換手順を実行する。
【0020】
トルク制御部30と、電流/電圧変換部32は、角速度ωに基づき、二相直流電流Id、Iqから目標のトルクを得るための二相直流電圧Vd、Vqを求める制御手順を実行する。まず、トルク制御部30が、たとえばPID制御により、角速度ωに基づき、二相直流電流Id、Iqから目標のトルクを得るための二相直流電流Id´、Iq´を求める。目標トルク値は、予め設定されていてもよいし、外部からの入力に基づき演算処理により求めてもよい。たとえば、モータ4が車両の駆動用モータとして用いられる場合、車両に対する速度指示信号がモータ制御装置2に入力され、これに基づいてトルク制御部30が目標トルクを決定する。次いで、電流/電圧変換部32が、角速度ωに基づき、二相直流電流Id´、Iq´を二相直流電圧Vd、Vqに変換する。
【0021】
二相/三相電圧変換部34は、sinθ´、cosθ´に基づき、二相直流電圧Vd、Vqを三相交流電圧Vu、Vv、Vwに変換する第2の変換手順を実行する。三相交流電圧Vu、Vv、Vwは、信号処理部8に入力される。
【0022】
信号処理部8において、駆動信号生成部36は、三相交流電圧Vu、Vv、Vwを生成してモータ4に印加する。駆動信号生成部36は、たとえば、三相交流電圧Vu、Vv、Vwに対応するパルス信号を生成するPWM(パルス幅変調器)である。これにより、モータ4が目標トルクを出力するように制御される。
【0023】
なお、ここでは回転角度検出装置6がレゾルバである場合が例示されるが、回転角度検出装置6は、たとえば、モータ4の回転位置を示す信号を出力するロータリエンコーダであってもよい。その場合、回転角度/角速度導出部12は、ロータリエンコーダが出力するデジタル信号から、モータ4の回転角度を示す信号に基づきモータ4の回転角度θと角速度ωとを導出する。
【0024】
回転角度/正弦/余弦取得部26がモータ4の回転角度を取得してから、三相/二相電流変換部28による変換手順と、トルク制御部30、電流/電圧変換部32による制御手順が行われるとき、時間経過にともないモータ4の回転位置が変化する。よって、回転角度補正部13は、かかる変化量に対応する補正量により回転角度θを補正し、補正回転角度θ´を求める。三相/二相電流変換部28とトルク制御部30、電流/電圧変換部32による処理時間をtとするとき、回転位置の変化量に対応する回転角度の補正量Δθは、次のようになる。
Δθ=ω×t×res2/res1
ここでは、回転角度θを示すデータの分解能res1と角速度ωを示すデータの分解能res2とが考慮される。具体例を示す。たとえば、回転角度θを示すデータは12ビットであるので、1ビットあたりの分解能res1は、次のようになる。
res1=360×2^(−12)=0.0879(度)
また、角速度ωを示すデータは16ビットであるので、16ビットのうち14ビットで角速度ωを表し、角速度の最大値を40,000rps(ラジアン毎秒)としたとき、1ビット当たりの分解能res2は、次のようになる。
res2=40,000×2^(−14)=0.261(rps)
すると、たとえば処理時間t=100μ秒としたとき、補正量Δθは次の[式1]で表わされる。
[式1]
Δθ=ω×t×res2/res1
=ω×0.0001×0.261/0.0879
=ω×0.0001×1068.94198
=ω×0.106894198
ここで、詳しくは後述する方法により、補正量Δθの小数部分が次のように近似化される。
Δθ=ω×0.10681152
よって、回転角度補正部13は、次の[式2]を演算して、補正回転角度θ´を導出する構成を有する。
[式2] θ´=θ+Δθ
=θ+ω×0.10681152
図2は、回転角度補正部13の構成例を示す図である。回転角度補正部13は、角速度ωをビットシフトにより2のべき乗で除算する5個のビットシフト回路BS1〜BS5、1番目のビットシフト回路BS1の出力値から2〜5番目のビットシフト回路BS2〜BS5の出力値を減算して前記回転角度の補正量Δθを求める減算回路132、及び、回転角度θに補正量Δθを加算して回転角度θを補正し、補正回転角度θ´を求める加算回路134を有する。ビットシフト回路BS1〜BS5は、角速度ωをそれぞれ下位側にビットシフトすることで、角速度ωを2のべき乗で除算する。ビットシフト回路BS1〜BS5がシフトするビット数は、角速度ωの除数となる2の指数に対応する。
【0025】
図3は、各ビットシフト回路がシフトするビット数と出力値について説明する図である。ビットシフト回路BS2〜BS5は、それぞれ1つ前のビットシフト回路がシフトするビット数より大きいビット数シフトする。たとえば、ビットシフト回路BS1〜BS5がシフトするビット数は、順に、3ビット、6ビット、9ビット、11ビット、そして13ビットである。
【0026】
1番目のビットシフト回路BS1がシフトするビット数は、出力値が目標値以上であってこれに最近似する値になるように設定される。ここで、目標値は、補正量Δθ(=ω×0.10681152)である。たとえば、ビットシフト回路BS1は、角速度ωを3ビット下位側にシフトすることで角速度ωを2の3乗で除算し、目標値以上であってこれに最近似する出力値「ω×0.125」を出力する。
【0027】
2〜5番目のビットシフト回路BS2〜BS5がシフトするビット数は、出力値が目標値以下であってこれに最近似する値になるように設定される。ここで、目標値は、1番目のビットシフト回路BS1の出力値「ω×0.125」から補正量Δθと1つ前のビットシフト回路の出力値とを減算した差である。たとえば、2番目のビットシフト回路BS2は、角速度ωを6ビット下位側にシフトすることで角速度ωを2の6乗で除算し、目標値「ω×0.01818848」以下であってこれに最近似する出力値「ω×0.015625」を出力する。また、3番目のビットシフト回路BS3は、角速度ωを9ビット下位側にシフトすることで角速度ωを2の9乗で除算し、目標値「ω×0.00256348」以下であってこれに最近似する出力値「ω×0.001953125」を出力する。また、4番目のビットシフト回路BS4は、角速度ωを11ビット下位側にシフトすることで角速度ωを2の11乗で除算し、目標値「ω×0.00061036」以下であってこれに最近似する出力値「ω×0.000488281」を出力する。そして、5番目のビットシフト回路BS5は、角速度ωを13ビット下位側にシフトすることで角速度ωを2の13乗で除算し、目標値「ω×0.00012207」以下であってこれに最近似する出力値「ω×0.00012207」を出力する。
【0028】
減算回路132は、1番目のビットシフト回路BS1の出力値から2〜5番目のビットシフト回路BS2〜BS5の出力値を減算して、回転角度θの補正量Δθ(「ω×0.10681152」)を求める。そして、加算回路134は、回転角度θに補正量Δθを加算して補正回転角度θ´を求める。
【0029】
回転角度補正部13は、上記のようなビットシフト回路と加減算回路により、浮動小数点演算の近似計算を行う。よって、たとえば浮動小数点演算用の回路構成と比較して、簡易な回路構成が可能である。さらに、ビットシフトと加減算を行うので、乗算を行う場合と比較して演算時間を短縮できる。よって、回転角度θを補正する場合であっても、スループットを向上させることができる。
【0030】
図4は、回転角度補正部13の別の構成例とその動作を説明する図である。
図4(A)では、回転角度補正部13は、ビットシフト回路BS2〜BS5の出力値を加算する加算回路136と、加算回路136による加算結果sum1を格納するレジスタreg1と、ビットシフト回路BS1の出力値から加算結果sum1を減算する減算回路137と、減算回路137による減算結果sum2を格納するレジスタreg2と、回転角度θに減算結果sum2を加算する加算回路138とを有する。
【0031】
ここで、回転角度θは12ビットのデータである。また、角速度ωは16ビットのデータである。ビットシフト回路BS2〜BS5は、16ビットの角速度ωを最大で13ビット下位側にシフトする。よって、ビットシフト回路BS2〜BS5の出力値のデータ長は、29ビットである。よって、レジスタreg1は、29ビットの加算結果sum1を格納する。一方、角速度ωを3ビット下位側にシフトするビットシフト回路BS1の出力値は、19ビットである。減算回路137は、たとえば、29ビットの加算結果sum1の2の補数を生成してビットシフト回路BS1の出力値に加算することで、減算を行う。よって、レジスタreg2は、29ビットの減算結果sum2を格納する。そして、加算回路138は、減算結果sum2のたとえば下位14ビットを切り捨てて、上位15ビットを12ビットの回転角度θに加算する。ここで、上位12ビットが選択されて、12ビットに近似された補正回転角度θ´が出力される。
【0032】
図4(B)は、
図4(A)に示した回転角度補正部13の動作タイミングを示すタイミングチャート図である。
図4(B)には、回転角度補正部13の動作クロックCLKと、たとえばモータ4の駆動回路から数十μ秒ごとに信号処理部8に入力される、データ取込起動信号SSが示される。データ取込起動信号SSの立下りに同期して、次のような動作シーケンスが開始される。ここに示す動作シーケンスは、データ取込起動信号SSの入力ごとに繰り返し実行される。
【0033】
まず、ビットシフト回路BS1〜BS5が角速度ωを取得する(seq1)。そして、次のクロックの立ち上がりに同期して、ビットシフト回路BS1〜BS5がそれぞれビットシフトを行い(seq2)、加算回路136がビットシフト回路BS2〜BS5の出力値を加算する(seq3)。そして、次のクロックの立ち上がりに同期して、減算回路137が加算結果sum1の2の補数を生成し(seq4)、ビットシフト回路BS1の出力値に加算する(seq5)。そして、次のクロックの立ち上がりに同期して、加算回路138が減算結果sum2の下位14ビットを切り捨てて(seq6)、回転角度θに加算する(seq7)。そして、次のクロックの立ち上がりに同期して、加算回路138が補正回転角度θ´を出力する(seq8)。
【0034】
図5は、モータ制御装置の動作手順を説明するフローチャート図である。
図5の手順は、たとえば、数十μ秒の制御サイクルごとに実行される。
【0035】
まず、手順S2で、回転角度/角速度導出部10がモータ4の回転角度θと角速度ωとを導出し、正弦/余弦導出部14が回転角度に対応する正弦sinθ、余弦cosθを導出すると、回転角度/正弦/余弦取得部26が、回転角度/角速度導出部10から回転角度θを取得し、正弦/余弦導出部14からsinθ、cosθを取得する。
【0036】
次いで、手順S4で、三相電流取得部24が、モータ4に流れる三相交流電流Iu、Iv、Iwを取得する。次いで、手順S6で、三相/二相電流変換部28が、sinθ、cosθに基づき、三相交流電流Iu、Iv、Iwを二相直流電流Id、Iqに変換する。次いで、手順S8で、トルク制御部30が、角速度ωに基づき、二相直流電流Id、Iqから目標のトルクを得るための二相直流電圧Id´、Iq´を求めるトルク制御を行う。次いで、手順S10で、電流/電圧変換部32が、角速度ωに基づき、二相直流電流Id´、Iq´を二相直流電圧Vd、Vqに変換する。
【0037】
一方、手順S4〜S10と並行して、手順S12で、回転角度補正部13が補正回転角度θ´を求め、正弦/余弦導出部14が補正回転角度θ´からsinθ´、cosθ´を求めると、二相/三相電圧変換部34が、正弦/余弦導出部14からsinθ´、cosθ´を取得する。そして、手順S14で、二相/三相電圧変換部34が、sinθ´、cosθ´に基づき、二相直流電圧Vd、Vqを三相交流電圧Vu、Vv、Vwに変換する。そして、手順S16で、駆動信号生成部36が、前記三相交流電圧Vu、Vv、Vwを生成してモータ4に印加する。このような手順S2〜S16が繰り返され、モータ4が目標トルクを出力するように制御が行われる。
【0038】
図6、
図7は、本実施形態と比較する例を示す。
【0039】
図6は、比較例におけるモータ制御装置2の構成を示す。この例では、信号処理部8が回転角度補正部13を有する代わりに、演算処理部16が回転角度補正処理を実行する回転角度補正部13aを有する。たとえば、演算処理部16は、回転角度補正部13aとして、制御プログラムに従って回転角度補正処理を実行する。回転角度補正部13aは、回転角度/正弦/余弦取得部26から回転角度θを取得して、補正回転角度θ´を求める演算処理を行う。そして、回転角度補正部13aは、補正回転角度θ´を正弦/余弦導出部14に渡す。すると、正弦/余弦導出部14が補正回転角度θ´からsinθ´、cosθ´を求めて、二相/三相電圧変換部34に返す。こうして、二相/三相電圧変換部34が補正回転角度θ´に対応するsinθ´、cosθ´を取得する。
【0040】
図7は、
図6に示すモータ制御装置の動作手順を示すフローチャート図である。
図7では、手順S4〜S10と並行して手順S12が実行される代わりに、手順S10の後に手順S12が挿入される。手順S12では、回転角度補正部13aが補正回転角度θ´を求め、補正回転角度θ´を正弦/余弦導出部14に渡す。そして、二相/三相電圧変換部34が正弦/余弦導出部14から補正回転角度θ´に対応するsinθ´、cosθ´を取得する。
【0041】
図5の処理手順と
図7の処理手順を比較すると、
図5の手順は手順S4〜S10と手順S12を並行処理することで、
図7の処理手順より処理時間が短縮される。このように、本実施形態におけるモータ制御装置4は、回転角度補正部13を演算処理部16とは別に設けることで、演算処理部16の処理と並行して回転角度補処理を実行できる。よって、回転角度を補正する場合において、スループットを向上させることができる。
【0042】
次に、回転角度補正部13のビットシフト回路の個数と、各ビットシフト回路がシフトするビット数の設定方法について説明する。ここでは、補正量Δθ=ω×0.10681152を例とする。また、角速度ωを示すデータは、16ビットである。
【0043】
第1の工程では、1番目のビットシフト回路BS1がシフトするビット数が決定される。第1の工程では、補正量Δθに対応する補正係数「0.10681152」を目標値として、目標値以上であってこれに最近似する2のべき乗が求められる。ここにおいて、求められた2のべき乗の指数に対応して、1番目のビットシフト回路BS1がシフトするビット数が決定される。
【0044】
次いで、第2〜16(角速度ωを示すデータのビット数)の工程では、2番目以降のビットシフト回路がシフトするビット数が決定される。第2〜16の工程のうち、第i(iは2以上かつ16以下)の工程では、過去の工程で求めた2のべき乗の和を補正係数「0.10681152」から減算した差を目標値とし、目標値以下であってこれに最近似する2のべき乗が求められる。そして、求められた2のべき乗の指数に基づいて、i番目のビットシフト回路がシフトするビット数が決定される。
【0045】
図8は、上記方法により回転角度補正部13のビットシフト回路の個数と、各ビットシフト回路がシフトするビット数を決定する情報処理装置の構成例である。情報処理装置100は、たとえば、パーソナルコンピュータである。情報処理装置100は、バス104により接続されるCPU102、RAM(Random Access Memory)106、ROM(Read Only Memory)108、インターフェース107とを有する。インターフェース107には、入力装置110、出力装置112、及び補助記憶装置109が接続される。入力装置110は、たとえばキーボードやポインティングデバイスである。出力装置112は、たとえばディスプレイなどの表示装置である。補助記憶装置109は、たとえば、ハードディスクなどの記憶装置である。
【0046】
CPU102は、入力装置110から入力される指示に応答して、ROM108や補助記憶装置109に格納される処理プログラムPRGをRAM106に読出して実行する。そうすることで、回転角度補正部13のビットシフト回路の個数と、各ビットシフト回路がシフトするビット数を決定する手順が実行される。
【0047】
図9、
図10は、情報処理装置100の動作手順例を示すフローチャート図である。
図9の手順は、1番目のビットシフト回路BS1がシフトするビット数を決定する手順に対応する。ここで、補正量Δθは、次の[式3]で表される。
[式3] Δθ=ω・[Z(0)−(α(1)・2^(-1))+ α(2)・2^(-2)+α(3)・2^(-3)+ …
+α(k)・2^(-k)]
ここでは、kは角速度ωのビット数「16」である。また、角速度ωに対する乗数のうち第1項Z(0)はビットシフト回路BS1による2のべき乗に対応する。また、α(j)(j=2〜k)は2の−j乗を演算するビットシフト回路の有り「1」または無し「0」を示す。
【0048】
情報処理装置100は、各種変数の設定を行う(S102)。ワーク変数Xは、上述の[式1]で示した近似される前の補正量「ω×0.106894198」における、補正係数「0.106894198」に設定される。ワーク変数kは角速度ωのビット数「14」に設定される。補正係数や角速度ωのビット数は、たとえば操作者により情報処理装置100に入力される。また、カウンタ変数nは初期値「2」に設定される。次いで、情報処理装置100は、ワーク変数Yの設定を行う(S104)。ワーク変数Yは、ワーク変数Xの値、つまり補正係数「0.106894198」に設定される。このワーク変数Yの値を目標値として、情報処理装置100は、2の−n乗がワーク変数Yの値以下になるまで、カウンタ変数nを初期値「2」から1ずつインクリメントさせる(S106のFalse、S108)。
【0049】
2の−n乗がワーク変数Yの値以下のときであって(S106のTrue)、2の−n乗がワーク変数Yの値と一致していれば(S110のTure)、情報処理装置100は、近似された補正係数を示すワーク変数Y´の値を、2の−n乗に設定し(S112)、処理を終了する。この場合、補正係数は近似されることなく2のべき乗で表わされる。一方、2の−n乗がワーク変数Yの値と一致していなければ(S110のFalse)、手順S114に進む。手順S114では、情報処理装置100は、Z(0)を2の−(n−1)乗に設定する。ここにおいて、第1のビットシフト回路BS1がシフトするビット数「n−1」が決定する。この場合、ワーク変数Yの値とZ(0)の値には差が生じている。よって、2番目以降のビットシフト回路がシフトするビット数を決定する手順を実行するために、手順S114で、情報処理装置100は、ワーク変数Yの値を、2の−(n−1)乗と、ワーク変数Xの値(つまり補正係数「0.106894198」)の差に設定する。これにより、2番目以降のビットシフト回路による演算結果の目標値が設定される。さらに、カウンタ変数nがインクリメントされ、カウンタ変数mの値が、インクリメントされたカウンタ変数nの値に設定される。
【0050】
ここで、補正係数「0.106894198」について手順S102〜S112を実行したときのワーク変数Y、カウンタ変数n、2の−n乗の値が、
図11(A)に示される。
図11(A)に示すように、n=2〜4において、n=4のとき、2の−n乗がワーク変数Yの値以下となる。よって、Z(0)は、2の−(n−1)乗、つまり2の−3乗となる。よって、第1のビットシフト回路BS1がシフトするビット数「3」が決定する。
【0051】
次に、
図10に示す手順が実行される。
図10の手順は、2番目以降のビットシフト回路がシフトするビット数を決定する手順に対応する。情報処理装置100は、ワーク変数Z(m)を2の−m乗に設定する(S116)。これにより、2番目以降のビットシフト回路がシフトするビット数が、第1のビットシフト回路BS1がシフトするビット数「n−1」より大きい値に設定される。
【0052】
そして、2の−n乗がワーク変数Yの値を上回るときには(S118のFalse)、[式3]の項α(m)を「0」に設定する(S120)。一方、2の−n乗がワーク変数Yの値以下のときには(S118のTrue)、項α(m)を「1」に設定する(S122)。ここにおいて、目標値以下であって目標値に最近似する2のべき乗が求められる。そして、カウンタ変数mを1ずつインクリメントさせる(S124)。こうして、カウンタ変数mが角速度ωのビット数kになるまで(S126のTrue)、手順S116〜S126が繰り返される。このときのカウント変数n、Z(n)、及びα(n)が、
図11(B)に示される。
図11(B)に示すように、nが6、9、11、14〜16のときに、αが「1」となる。
【0053】
そして、カウンタ変数mが角速度ωのビット数kを上回ると(S126のFalse)、情報処理装置100は、近似された補正係数を示すワーク変数Y´の値を、次のように設定し(S128)、処理を終了する。
【0054】
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」について手順S116〜S126を実行したときの変数nの範囲ごとのワーク変数Y´の値が、
図12(A)に示される。n=4〜16において、nが6、9、11、14〜16のときにαが「1」となるので、ワーク変数Y´は、次の[式4]で示すようになる。
[式4]
Y´=2^(-3)-1・2^(-6) -1・2^(-9) -1・2^(-11) -1・2^(-14) -1・2^(-15) -1・2^(-16)
さらに、情報処理装置100は、ワーク変数Y´の値をビットシフト回路のビット数で表現可能な桁数で近似し、ビットシフト回路の個数とシフトするビット数を決定する(S130)。情報処理装置100は、たとえば、第1項を除く最終項のビット数を1ビット繰り上げる。そして、繰り上げ前のワーク変数Y´の計算結果と最も近い計算結果が得られる繰り上げ後のワーク変数Y´が選択される。
【0055】
たとえば、
図12(B)には、
図12(A)で示す例に対し、上記手順S130を実行した例が示される。
図12(A)、(B)において、n=4〜14のときに(矢印A1)、ビット数が繰り上げられたワーク変数Y´の値が、繰り上げられる前のワーク変数Y´の値に最も近くなり、項数が最小となる。よって、このとき、ビットシフト回路の個数が最小となる。よって、n=4〜14において、nが6、9、11、13となるような組合せが選択される。これにより、ビットシフト回路の個数は、1番目のビットシフト回路を合わせて5個に決定される。そして、ビットシフト回路BS2〜BS5がシフトするビット数が、それぞれ6ビット、9ビット、11ビット、13ビットに決定される。
【0056】
情報処理装置100は、たとえば、上記の処理結果を出力することで、開発者がこれを利用して回転角度補正部13を開発することができる。上記のような手順により回転角度θの補正量Δθを計算するための回転角度補正部13のビットシフト回路の個数と、各ビットシフト回路がシフトするビット数を決定することができる。上記の手順によれば、ビットシフト回路の個数を最小化できる。よって、回路規模を増大させることなく、簡易な構成により、浮動小数点演算の近似計算が可能となる。
【0057】
図13、
図14は、異なる条件下で上記手順を実行したときの例を示す。ここでは、三相/二相電流変換部28とトルク制御部30、電流/電圧変換部32による処理時間tが「120」μ秒の場合が示される。このとき、回転角度の補正量Δθは、次のようになる。
Δθ=ω×t×res2/res1
=ω×0.00012×0.261/0.0879
=ω×0.00012×1068.94198
=ω×0.1281788314
よって、補正係数「0.1281788314」について、
図9、
図10の手順が実行される。
【0058】
この条件において、
図9の手順S102〜S112を実行したときのワーク変数Y、カウンタ変数n、2の−n乗の値が、
図13(A)に示される。また、
図10の手順S116〜S128を実行したときのカウント変数n、Z(n)、及びα(n)が、
図13(B)に示される。また、カウント変数nの範囲ごとのワーク変数Y´の値が、
図14(A)に示される。そして、上記手順S130を実行した例が、
図14(B)に示される。
【0059】
図13(A)において、n=3のとき、2の−n乗がワーク変数Yの値以下となる。よって、Z(0)は、2の−2乗となる。よって、第1のビットシフト回路BS1がシフトするビット数「2」が決定する。また、
図13(B)において、nが4、5、6、7、8、11、13、14、15、16のときに、項α(n)の値が「1」となる。よって、ワーク変数Y´は、次の[式5]で示すようになる。
[式5]
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)
そして、
図14(A)、(B)において、n=3〜16のときに(矢印B1)、ビット数が繰り上げられたワーク変数Y´の値が、繰り上げられる前のワーク変数Y´の値に最も近くなり、ビットシフト回路の個数が最小となる。よって、n=3〜16において、nが4、5、6、7、8、11、13、14、15となるような組合せが選択される。これにより、ビットシフト回路の個数は、1番目のビットシフト回路を合わせて11個に決定される。そして、2番目のビットシフト回路〜11番目のビットシフト回路がシフトするビット数が、それぞれ4ビット、5ビット、6ビット、7ビット、8ビット、11ビット、13ビット、14ビット、15ビットに決定され、ワーク変数Y´は次の[式6]で示すようになる。
[式6]
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)
さらに、[式6]における乗数が同じ項を、次の[式7]で示すようにまとめることができる。
[式7]
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)
[式7]に示すように、ビットシフト回路の個数を8個(ここでは、8番目のビットシフト回路がシフトするビット数は12ビットである)とすることも可能である。
【0060】
このような手順によれば、ビットシフト回路の個数を最小化できる。よって、回路規模を増大させることなく、簡易な構成により、浮動小数点演算の近似計算が可能となる。
【0061】
以上説明した実施形態によれば、モータ制御装置がモータの回転角度の補正を行っても、制御処理のスループット低下を防止できる。