以下、本発明のさらに具体的で例示的な実施の形態のうちのいくつかを図面に基づいて詳細に説明する。
<第1実施形態>
図1には、本発明の例示的な第1実施形態に従うモータ制御装置10を有するシステム11を概略的に表す機能ブロック図である。このシステム11は、そのシステム11の駆動源として実モータ12を備えている。このシステム11のいくつかの具体例としては、前述のように、絶対空間に対して移動する移動体や、可動部材に運動を付与する運動付与装置などがある。
実モータ12は、一般に、複数極のロータ(図示しない)と、複数極のステータ(図示しない)と、磁束形成部(図示しないが、具体的には、例えば、巻き線)とを有するように構成される。図2に示すように、実モータ12は、前記ロータと共に回転するシャフト13を有しており、そのシャフト13が可動部材(図示しないが、具体的には、例えば、車両の車輪、工作機械の工具、ロボットのアームなど)に機械的に連結され、それにより、可動部材が駆動される。
実モータ12のいくつかの具体例としては、界磁に永久磁石を使用して回転する永久磁石同期モータ(PMSM)、永久磁石を使用せず、渦電流を利用して回転する誘導モータ(IM)、スイッチ・リラクタンス・モータ(SRM)などがある。そのリラクタンス・モータにおいては、ロータが、永久磁石を使用することなく、強磁性の鉄心で構成されるため、リラクタンス・モータは、永久磁石を使用しない無整流子モータの一種である。
実モータ12が3相(U相、V相、W相)の巻線を有する場合、実モータ12の各種物理量を記述するために、次のような記号が使用される。
Vu,Vv,Vw:端子電圧(「巻線電圧」または「相電圧」ともいう。)[V]
Iu,Iv,Iw:相電流(「巻線電流」ともいう。)[A]
θm:ロータ(またはシャフト13)の角度(位相または回転位置であり、「モータ角」または「モータ位置」ともいう)[rad]
ωm:ロータ(またはシャフト13)の角速度(「モータ速度」ともいう)[rad/sec]
T:モータ出力トルク[Nm]
Fu,Fv,Fw:相磁束[Wb]
なお、本実施形態および後述のいくつかの実施形態の説明において、同じ記号が、単独で使用される箇所と、「*」を末尾に有するように使用される箇所とが存在する。それら実施形態においては、同じ記号が、単独で使用される場合には、実際値または検出値を意味する一方、「*」と組み合わせて使用される場合には、指令値を意味するという用法と、同じ記号が、単独で使用される場合には、実モータ12についての物理量であることを意味する一方、「*」と組み合わせて使用される場合には、後述の仮想モータ60についての物理量であることを意味するという用法とがあるが、特記しない限り、前者の用法を採用することに留意されたい。
図1に示すように、システム11は、実モータ12を駆動するために、実インバータ/パワーアンプ14をさらに備えている。その実インバータ/パワーアンプ14は、実モータ12に電気エネルギーを供給する実インバータまたは実パワーアンプを有するように構成される。実モータ12に供給される電気エネルギーは、実モータ12が3相(U相、V相、W相)の巻線を有する場合、端子電圧Vu,Vv,Vwである。
図2には、実インバータ/パワーアンプ14が実インバータ16を有する場合につき、その実インバータ16が概念的に回路図で表されている。実インバータ16は、既によく知られているように、直流電圧Vdcが印加される入力端子20と、端子電圧Vu,Vv,Vwを実モータ12に出力するための出力端子22と、それら入力端子20と出力端子22との間に接続された複数のゲート24と、端子電圧Vu,Vv,Vwを検出する抵抗26と、その抵抗26に作用する電圧によって端子電圧Vu,Vv,Vwを表すアナログ信号をデジタル信号に変換するADC(交直変換器)28とを有するように構成される。
複数のゲート24は、複数のスイッチング素子(すなわち、複数の上アーム・スイッチング素子および複数の下アーム・スイッチング素子)として構成されており、それらゲート24は、外部からの複数のパルス信号であるゲート信号Gu,Gv,Gw,Gx,Gy,Gwに応じてスイッチング動作を行う。
このように構成されることにより、実インバータ16は、外部から複数のゲート信号Gu,Gv,Gw,Gx,Gy,Gwが制御信号として入力されると、その制御信号に応じた高さの端子電圧Vu,Vv,VwをPWM(パルス幅変調)方式によって生成し、それら生成された端子電圧Vu,Vv,Vwを実モータ12に供給する。すなわち、本実施形態においては、複数のゲート信号Gu,Gv,Gw,Gx,Gy,Gwが、複数の制御信号を構成するとともに、各信号が、PWM信号として形成されるのである。
外部から実インバータ/パワーアンプ14に入力される制御信号は、実インバータ/パワーアンプ14が実インバータ16を有する場合には、上述のように、前記複数のゲート信号であるが、実インバータ/パワーアンプ14が実パワーアンプ(図示しない)を有する場合には、実モータ12の相数と同数のアナログ信号となる。
図1に示すように、システム11は、実モータ12の作動状態をモニタするために、実モータ12の作動状態を検出し、その結果を表す実モータ状態信号を出力する実モータ状態検出部30をさらに備えている。実モータ状態検出部30は、実モータ12の作動状態として、例えば、実モータ12の実3相電流Iu,Iv,Iw、実モータ速度ωm、実モータ位置θmなどを検出できる。実3相電流Iu,Iv,Iwをモニタすることが必要である場合には、実モータ状態検出部30は、電流センサ(図示しない)を含むように構成され、また、実モータ位置θmを検出することが必要である場合には、実モータ状態検出部30は、例えば、ロータリ・エンコーダ(図示しない)を含むように構成される。
図1に示すように、システム11は、実モータ12を制御するために、プロセッサ40を備えている。プロセッサ40は、FPGA(field-programmable gate array)やASIC(application specific integrated circuit)などの演算回路(例えば、PLD(Programmable logic device)、ワイヤード論理回路)42と、コンピュータのCPU44とを含むように構成されている。演算回路42により、例えば、1μsecという長さの第1の周期で、32ビットの浮動小数点演算を行い、それにより、仮想モータ計算部50による計算を行う。また、CPU44により、例えば、数10μsecという長さの第2の周期であって前記第1の周期より長いもので、システム11の全体を制御するための処理を行う。そのような処理としては、例えば、初期化、終了処理、時間的に可変である制御目標値を表す目標信号を入力する処理などがある。
演算回路42により、仮想モータ計算部50が実現される。すなわち、仮想モータ計算部50は、演算回路42により、高速演算可能であるように構成されているのである。
概略的に説明するに、仮想モータ計算部50は、図3に示すように、実モータ12の電圧−電流特性(後に図4を参照して詳述される電圧電流方程式により表される)を模擬する仮想モータ60を主体として構成されている。仮想モータ計算部50は、その仮想モータ60を用いることにより、目標信号によって表される制御目標値に応じた実モータ12の電流(指令電流)を生成するためにその実モータ12に供給すべき電圧(指令電圧)を計算する。
仮想モータ60は、それに、指令電流を表す電流信号が入力されると、実モータ12を模擬する解析プログラムを演算回路42(図1参照)に実行させることにより、前記入力された電流信号によって表される仮想電流(仮想3相電流)と同じ大きさを有する実電流(実3相電流)を実モータ12によって実現するためにその実モータ12に供給すべき実電圧(実3相電圧)が計算される。その計算された実電圧が、上述の指令電圧である。
その実モータ12の指令電圧は、仮想モータ60にとっての指令電圧でもあり、また、上述の、実モータ12の指令電流は、仮想モータ60にとっての指令電流でもある。よって、結局、仮想モータ計算部50は、実モータ12と仮想モータ60との共通の指令電流から、それら実モータ12と仮想モータ60とに共通の指令電圧を計算することになる。
前記「背景技術」の欄において詳述したように、従来の技術では、仮想モータ60は、実モータ12や、その実モータ12を制御する実コントローラについての試験が終了するまで、実モータ12を代替するものとして試験機において使用される。そして、それら実モータ12や実コントローラが完成する(仕様が確定する)と、今度は、実モータ12が、仮想モータ60を代替するものとして実機に搭載される。このように、従来の技術では、試験機においても実機においても、仮想モータ60が実モータ12と一緒に搭載されるとともに一緒に作動させられることはなかった。
これに対し、本実施形態においては、試験機であるか実機であるかを問わず、仮想モータ60が実モータ12と一緒に搭載されるとともに一緒に作動させられ、それにより、仮想モータ60を用いて実モータ12を制御したり、実モータ12を用いて仮想モータ60をティーチングすることが可能である。
仮想モータ計算部50は、実モータ12の停止中(実モータ12に入力される制御信号が時間的に変化しないために、実モータ12への電気エネルギーの供給が不要である場合)であっても、作動し続ける。
本実施形態においては、システム11のうち、図1に示す仮想モータ計算部50(プロセッサ40によって実現される)を構成する部分が、モータ制御装置10を構成し、図3に示す仮想モータ計算部50のうち、仮想モータ60を除く部分が、モータ制御装置10のうちの「制御部」を構成している。
ここで、一般的なモータの入出力特性を説明するに、図4に示すように、3相巻線のモータの入出力特性は、一般に、電圧方程式(電圧電流方程式)によって近似的に記述できることが既に知られている。この事実によれば、その電圧方程式を用いることにより、各相ごとの相電流を表すモータ電流ベクトルi(=[iu,iv,iw])から、各相ごとの端子電圧を表すモータ電圧ベクトルv(=[vu,vv,vw])を計算することができる。
図4に示す電圧方程式中の各種記号の定義を説明するに、「Ra」は、モータの巻線抵抗を表し、また、「ψ」は、モータの鎖交磁束ベクトルψ(=[ψu,ψv,ψw])を表し、また、「t」は、時間を表している。
図4に示すように、モータの鎖交磁束ベクトルψは、相電流による鎖交磁束と、電機子鎖交磁束との和に等しい。相電流による鎖交磁束は、「L(自己インダクタンス)」と「M(相互インダクタンス)」を各要素とするインダクタンス行列を用いて表現され、また、電機子鎖交磁束は、ベクトルφ(=[φu,φv,φw])として表現される。インダクタンス行列は、各要素L,Mが、モータの電流と角度(位置、位相)との少なくとも一方に依存するテーブルとして表現され、また、電機子鎖交磁束ベクトルφも、各要素が、モータの電流と角度(位置、位相)との少なくとも一方に依存するテーブルとして表現される。それらテーブルにより、前記電圧方程式と協働して、モータの非線形特性を、モータの駆動周波数全域にわたって表現することができる。
したがって、図4に示す電圧方程式によって表現される非線形モータモデルを使用すれば、モータの入出力特性が非線形であっても、モータの駆動周波数全域を複数の帯域に分割して各帯域ごとに異なる線形モータモデルを使用することなく、モータの駆動周波数全域を実質的に漏れなくカバーする非線形モータ特性を単一のモデルで精度よく表現することが可能となる。
図4に示す電圧方程式は、実モータ12についても成立し、よって、仮想モータ60は、その電圧方程式を用いることにより、図3に示すように、仮想モータ60の各相ごとの相電流を表す仮想モータ電流ベクトルI*(=[Iu*,Iv*,Iw*](仮想3相指令電流信号によって表される)であって、図4に示すモータ電流ベクトルi(=[iu,iv,iw])に相当する)から、仮想モータ60の各相ごとの端子電圧を表す仮想モータ電圧ベクトルV*(=[Vu*,Vv*,Vw*](仮想3相指令電圧信号によって表される)であって、図4に示すモータ電圧ベクトルv(=[vu,vv,vw]に相当する)を計算する。
したがって、本実施形態によれば、仮想モータ60が、図4に示す電圧方程式によって表現される非線形モータモデルを使用して実モータ12の作動を模擬するため、入出力特性が非線形である実モータ12の駆動周波数全域にわたり、実モータ12の作動を精度よく模擬することが可能となる。
図4に示す電圧方程式は、実モータ12につき、電流から電圧を計算するために使用することも、電圧から電流を計算するために使用することも可能である。前者の計算は、実モータ12において電圧から電流が発生するという現実の物理的現象の時間的進行方向とは逆向きの計算であるため、逆モデル計算と称することができるのに対し、後者の計算は、上述の現実の物理的現象の時間的進行方向と同じ向きの計算であるため、順モデル計算と称することができる。本実施形態においては、それら2種類の計算のうち、逆モデル計算が採用されている。
実モータ12は、前記ロータを含む可動部材が質量(イナーシャ)や抵抗を有するなどの理由により、応答遅れを有するが、仮想モータ60は、応答遅れを実質的に有しない。その結果、実モータ12に指令電圧が入力されるタイミングと同じタイミングで仮想モータ60に指令電流が入力されると、指令電圧に対して実モータ12の出力電流(現実の物理量)が応答するタイミングより早いタイミングで、仮想モータ60の出力電圧(電圧の計算値)が応答する。その結果、各回の計算サイクル(図5参照)内において、実モータ12に入力すべき指令電圧が、その指令電圧を実モータ12に入力すべきタイミングより早いタイミングで計算されることが保証されるように仮想モータ計算部50を設計することが容易となる。
図3に示すように、仮想モータ計算部50は、前記目標信号と、実モータ状態検出部30から出力された実モータ状態信号(例えば、実モータ位置θmを表す信号)とに基づき、仮想モータ60を制御することにより(すなわち、前記逆モデル計算を行うことにより)、複数の制御信号(前述のゲート信号Gu,Gv,Gw,Gx,Gy,Gw)を生成する。仮想モータ計算部50は、それら生成された複数の制御信号を、実インバータ/パワーアンプ14に出力し、それにより、実モータ12を制御する。
具体的には、仮想モータ計算部50は、前記目標信号によって表される制御目標値に基づき、かつ、仮想モータ60の仮想作動位置(仮想可動部材としての仮想ロータの作動位置)が実モータ12の実作動位置(実可動部材としての実ロータの実作動位置)に一致すると仮定して、実モータ12と仮想モータ60とに共通の指令電圧を前記逆モデル計算によって決定する。これにより、実モータ12と仮想モータ60とが、一緒に、かつ、ロータ位置に関して互いに実質的に同期するように、駆動されることになる。
仮想モータ計算部50のより具体的な構成については、後に図3を参照することにより、説明するが、それに先立ち、図5に示すタイミングチャートを参照することにより、この仮想モータ計算部50の作動の一例を詳細に説明する。
仮想モータ計算部50の全体シーケンスを表す図5(a)に例示するように、制御目標値T0は、仮想モータ計算部50に入力周期Tin(例えば、数10μsec)で反復的に入力される。仮想モータ計算部50は、1サイクル分の計算を入力周期Tinより短い仮想モータ計算周期Tv(例えば、1μsec)で反復的に行い、それにより、制御目標値T0の1回の入力サイクルの間、複数サイクル分の計算を行う。本実施形態においては、入力周期Tinが、仮想モータ計算周期Tvより長い長さを有するように設定されているが、これに代えて、仮想モータ計算周期Tvと実質的に同じ長さを有するように設定することが可能である。
ここに、「制御目標値T0」は、例えば、実モータ12からの出力に関連する物理量の指令値、例えば、実モータ12の前記ロータの位置に関する物理量(例えば、位置、速度、加速度)の指令値や、実モータ12の前記ロータに作用する力に関する物理量(例えば、トルク、軸力)の指令値としたり、実モータ12への入力に関連する物理量の指令値、例えば、3相指令電流信号Iu*,Iv*,Iw*や、dq軸指令電流信号Id*,Iq*としたり、それら複数種類の指令値からの任意の組合せとすることが可能である。
仮想モータ計算部50の各回の計算サイクル内の処理のシーケンスを表す図5(b)に例示するように、仮想モータ計算部50は、1サイクル分の計算を仮想モータ計算周期Tvで反復的に行い、各回の計算サイクルにおいては、制御目標値T0(i)と、実モータ12の実モータ位置θm(t)とに基づき、前記制御信号Gu−Gzを決定し、その決定された制御信号Gu−Gzを実インバータ/パワーアンプ14に出力し、それにより、実モータ12を制御する。
制御目標値T0(i)は、入力周期Tinを有する入力サイクルごとに、例えば外部装置から、入力されるのに対し、実モータ位置θm(t)は、仮想モータ計算周期Tvを有する計算サイクルごとに、実モータ状態検出部30から取り込まれる。制御目標値T0(i)は、入力サイクルごとに入力されると、メモリに一時的に保存される。同じ入力サイクルに属する複数回の計算サイクルについては、同じ制御目標値T0(i)が、各回の計算サイクルごとに、前記メモリから仮想モータ計算部50に取り込まれることになる。
各回の計算サイクルにおける複数の処理のシーケンスをより具体的に説明するに、図5(b)に例示するように、仮想モータ計算部50は、各回の計算サイクルにおいて、まず、制御目標値T0(t)と、実モータ位置θm(t)とを取り込む。この処理を、図5(b)においては、「θm(t)入力」で表す。
次に、仮想モータ計算部50は、状態量の変換を行う。具体的には、仮想モータ計算部50は、取り込まれた制御目標値T0(t)を後述の仮想dq軸指令電流信号(前記(2)項における「目標電流信号」の一例)に変換する第1変換と、その仮想dq軸指令電流信号を、実モータ位置θm(t)のもと、仮想3相指令電流信号(前記(1)および(2)項における「仮想電流信号」の一例)に変換する第2変換とを行う。この処理を、図5(b)においては、「変換」で表す。
その後、仮想モータ計算部50は、前記仮想3相指令電流信号に基づいて前記逆モデル計算を行い、それにより、前記仮想3相指令電流信号に対応する仮想3相指令電圧信号(前記(1)項における「仮想電圧信号」の一例)を決定し、その決定された仮想3相指令電圧信号を前記制御信号Gu−Gzに変換する第3変換を行う。この処理を、図5(b)においては、「逆モデル計算」で表す。
続いて、仮想モータ計算部50は、その取得された制御信号Gu−Gzを実インバータ/パワーアンプ14に出力し、それにより、実モータ12を制御する。この処理を、図5(b)においては、「Gu〜Gz出力」で表す。各回の計算サイクルにおいて、仮想モータ60に仮想3相指令電流信号が1回しか入力されないため、仮想モータ60は、1回しか作動しない。
なお、図5(b)(図8も同様)においては、制御信号Gu−Gzが実インバータ/パワーアンプ14に供給された後、その制御信号Gu−Gzが属する回の計算サイクルが終了するタイミングと同じタイミングで、実モータ位置θm(t)がθm(t+1)(=θm(t)+Δθ)に変化することが図示されている。しかし、これは、説明のための一例にすぎず、実際には、前記タイミングより早いか遅いタイミングで、実モータ位置θm(t)がθm(t+1)に変化する。
次に、図3を参照することにより、仮想モータ計算部50の構成の一例を具体的に説明する。ただし、同じ記号が、単独で使用される場合には、仮想モータ60についての実際値または検出値を意味する一方、「*」と組み合わせて使用される場合には、仮想モータ60についての指令値を意味する。
仮想モータ計算部50は、dq座標系(回転直交2軸dq座標系)上において磁束−トルク制御を行う。ここに、「d」は、仮想モータ60の仮想磁束を表し、また、「q」は、仮想モータ60の仮想トルクを表している。
そのような制御を実現するために、仮想モータ計算部50は、前記目標信号を仮想dq軸指令電流信号Id*,Iq*(仮想d軸指令電流信号Id*および仮想q軸指令電流信号Iq*)に変換する目標信号変換器66と、ベクトル制御(前記ロータの位置情報を用いて、軸電流をdq座標系から3相座標系へ座標変換し、前記ステータの相電流を制御する)により、それら仮想dq軸指令電流信号Id*,Iq*を仮想3相指令電流信号Iu*,Iv*,Iw*に変換するdq/UVW座標変換器68とを備えている。
仮想モータ60を実モータ12から切り離して使用する従来の技術では、dq−UVW座標変換器68は、仮想モータ60の仮想モータ位置θmのもとで、仮想dq軸指令電流信号Id*,Iq*を仮想3相指令電流信号Iu*,Iv*,Iw*に変換するように設計されるのが通常である。これに対し、本実施形態においては、dq−UVW座標変換器68が、仮想モータ位置θmに代えて実モータ位置θmを用いる。
その結果、本実施形態によれば、仮想3相指令電流信号Iu*,Iv*,Iw*が、仮想モータ60の仮想モータ位置θと、実モータ12の実モータ位置θmとが互いに一致する状態で取得されることになる。
しかし、仮想モータ60が実モータ12の入出力特性を十分に正確に再現するように教示される場合には、仮想モータ位置θと実モータ位置θmとが互いに十分に一致することになる。この場合には、dq−UVW座標変換器68が実モータ位置θmに代えて仮想モータθを参照したとしても、仮想3相指令電圧信号Vu*,Vv*,Vw*が、仮想モータ60の仮想モータ位置θと、実モータ12の実モータ位置θmとが互いに一致する状態で取得されることになる。
仮想モータ計算部50においては、仮想3相指令電流信号Iu*,Iv*,Iw*が仮想モータ60に入力され、その後、仮想モータ60は、前記逆モデル計算により、それら仮想3相指令電流信号Iu*,Iv*,Iw*によって表される電流を実モータ12において実現するためにその実モータ12に供給すべき電圧を表す仮想3相指令電圧信号Vu*,Vv*,Vw*を出力する。
仮想モータ計算部50は、さらに、その出力された仮想3相指令電圧信号Vu*,Vv*,Vw*を、各々PWM信号という形態を有する複数の制御信号Gu,Gv,Gw,Gx,Gy,Gzに変換するPWM信号発生器78を備えている。
図6には、モータ制御装置10の作動の一例がフローチャートで表されている。このフローチャートは、CPU44によって実行されるステップS1およびS2と、演算回路42によって反復的に実行されるステップS3−S9とを表している。それらステップS3−S11は、1回ずつ実行されることにより、一回の計算サイクルを達成する。
まず、ステップS1において、初期化が行われる。具体的には、例えば、実モータ状態検出部30により、初期の実モータ位置θinitが取得され、同じ位置が、仮想モータ60の初期の仮想モータ位置θinitとされる。
次に、入力周期Tin(例えば、数10μsec)が経過するごとに割り込みが発生してステップS2が実行される。このステップS2においては、今回の制御目標値T0が入力される。
続いて、ステップS3において、データ入力が行われ、具体的には、実モータ状態検出部30から実モータ位置θmが入力される。
その後、ステップS4において、目標信号変換器66により、制御目標値T0を表す目標信号が仮想dq軸指令電流信号Id*,Iq*に変換される。これにより、前記第1変換が行われる。続いて、ステップS5において、dq/UVW座標変換器68により、その仮想dq軸指令電流信号Id*,Iq*が、実モータ12の実モータ回転角θmのもとで、仮想3相指令電流信号Iu*,Iv*,Iw*に変換される。これにより、前記第2変換が行われる。
その後、ステップS6において、その仮想3相指令電流信号Iu*,Iv*,Iw*が仮想モータ60に入力され、それに応答して仮想モータ60から仮想3相指令電圧信号Vu*,Vv*,Vw*が出力される。これにより、前記逆モデル計算が行われる。続いて、ステップS7において、PWM信号発生器78により、仮想3相指令電圧信号Vu*,Vv*,Vw*がPWM信号Gu,Gv,Gw,Gx,Gy,Gzに変換される。これにより、前記第3変換が行われる。
その後、ステップS8において、そのようにして取得されたPWM信号Gu,Gv,Gw,Gx,Gy,Gzが実インバータ/パワーアンプ14に対して出力され、それにより、実モータ12が駆動される。
続いて、ステップS9において、システム11の主電源(図示しない)がオフにされたか否かが判定される。その主電源が未だオンである場合には、その判定がNOとなり、次回の計算サイクルでの計算のために、ステップS2に戻る。これに対し、主電源がオフにされた場合には、ステップS9の判定がYESとなり、以上で、モータ制御装置10の作動が終了する。
以上の説明から明らかなように、本実施形態においては、仮想モータ計算部50が、目標信号に基づいて仮想モータ60を作動させることにより、その目標信号によって表される制御目標値を実モータ12が実現するためにその実モータ12に必要な制御信号をフィードフォワード制御で決定する。
仮想モータ計算部50は、制御信号を決定するために実モータ位置θmを参照するが、これは、仮想モータ60の仮想モータ位置を実モータ位置θmに一致させ、それにより、仮想モータ60が実モータ12を模擬する精度を向上させるためである。
実モータ位置θmを参照するという処理が存在するという事実に注目すれば、仮想モータ計算部50が採用しているフィードフォワード制御がフィードバック要素を有するように解釈される余地がある。しかし、実モータ位置θmは、制御系においてフィードバック信号として用いられるのではなく、仮想モータ60のための前述のdq軸制御において座標変換のために用いられるに過ぎない。よって、仮想モータ計算部50が採用している制御は、前記処理の存在にもかかわらず依然としてフィードフォワード制御であると解釈するのが自然である。
<第2実施形態>
次に、本発明の第2実施形態に従うモータ制御装置100を図7ないし図9を参照することにより説明する。ただし、本実施形態は、第1実施形態と共通する要素があるため、共通する要素については、同一の符号または名称を付して引用することにより、重複した説明を省略し、異なる要素についてのみ、詳細に説明する。
図7に示すように、本実施形態に従うモータ制御装置100の仮想モータ計算部110は、位相遅れ補償を行うために、Δθ推定器120をさらに備えている。
図8(b)に例示するように、仮想モータ計算部110は、第1実施形態と同様に、仮想モータ計算周期Tvの長さを有する1計算サイクルの間に、次回の制御信号を決定するために仮想モータ60を作動させる。その間、実モータ位置θmが不変であれば、その次回の制御信号を決定するために用いられた実モータ位置θm(t)と、その決定された次回の制御信号が実モータ12に入力され始めるとき(または、その制御信号に対する実モータ12の応答が完了するとき)の実モータ位置θm(t+1)とが互いに一致するため、前記制御信号の誤差が発生しない。
しかし、その間、実モータ位置θmが変化すると、その次回の制御信号を決定するために用いられた実モータ位置θm(t)と、その決定された次回の制御信号が実モータ12に入力され始めるとき(または、その制御信号に対する実モータ12の応答が完了するとき)の実モータ位置θm(t+1)とが互いに一致しないため、前記制御信号の誤差が発生してしまう。
そこで、本実施形態においては、Δθ推定器120が、実モータ位置θmが入力された時期と、次回の制御信号が実モータ12に入力され始める時期(または、その制御信号に対する実モータ12の応答が完了する時期)との間の期間に、実モータ位置θmが変化することが予想される変化量Δθを推定する。
その変化量Δθは、例えば、実モータ位置θmが入力される時期と、次回の制御信号が実モータ12に入力され始める時期(または、その制御信号に対する実モータ12の応答が完了する時期)との間の期間の長さは、仮想モータ計算周期Tvの長さを超えないし、それにほぼ近いという事実に着目し、仮想モータ計算周期Tvの長さと、実モータ12の角速度ωmとの積として推定したり、仮想モータ計算周期Tvの長さに応じて推定したり(仮想モータ計算周期Tvの長さが可変である場合には、それが長いほど、変化量Δθが大きい可能性が高いから)、実モータ12の角速度ωmに応じて推定する(実モータ12の角速度ωmが高速であるほど、変化量Δθが大きい可能性が高いから)ことが可能である。
図7に示すように、仮想モータ計算部110は、Δθ推定器120が、上述のようにして、前記変化量Δθを取得すると、その変化量Δθを、同じ回の計算サイクルの当初において取得した実モータ位置θmに加算し、それにより、dq−UVW座標変換器68に入力されるモータ位置が、θm+Δθに等しくなり、結局、実モータ12の作動に追従するように補正される。
なお、本実施形態においては、変化量Δθの今回値が実モータ位置θmの最新実際値に加算されることにより、その実モータ位置θmの最新実際値が補正されるが、その補正の仕方は、それに限定されない。
例えば、変化量Δθの今回値を、その今回値より過去に取得された少なくとも1つの過去変化量Δθに基づき、例えば重み付き平均化などによって平滑化することにより、その変化量Δθの今回値を補正し、その補正された値に基づいて実モータ位置θmの最新実際値を補正することが可能である。
図7に示すように、dq−UVW座標変換器68は、そのように補正された実モータ位置θmのもとで、仮想dq軸指令電流信号Id*,Iq*を仮想3相指令電流信号Iu*,Iv*,Iw*に変換し、その結果、それら仮想3相指令電流信号Iu*,Iv*,Iw*は、変化量Δθを見込んだ値として取得されることになる。これにより、前記制御信号が、実モータ位置θmの将来の変化を予測して決定されるため、前述の位相遅れ補償が別のフィードフォワード要素として前述の基本的なフィードフォワード制御に付加されることになる。
図8(a)に例示するように、モータ制御装置100の全体シーケンスについては、第1実施形態と同様に、制御目標値T0が、仮想モータ計算部110に入力周期Tin(例えば、数10μsec)で反復的に入力される。
図8(b)に例示するように、仮想モータ計算部110は、1サイクル分の計算を入力周期Tinより短い仮想モータ計算周期Tv(例えば、1μsec)で反復的に行い、それにより、制御目標値T0の1回の入力サイクルの間、複数サイクル分の計算を行う。
仮想モータ計算部110は、各回の計算サイクルにおいて、まず、制御目標値T0(t)と、実モータ位置θm(t)とを取り込む。この処理を、図8(b)においては、「θm(t)入力」で表す。次に、仮想モータ計算部110は、その取り込まれた制御目標値T0(t)を仮想dq軸指令電流信号に変換する。この処理を、図8(b)においては、「目標信号変換」で表す。
続いて、仮想モータ計算部110は、同じ回の計算サイクルにおいて、前記変化量Δθを推定する。この処理を、図8(b)においては、「Δθ推定」で表す。その後、仮想モータ計算部110は、その推定された変化量Δθに基づき、前記取り込まれた実モータ位置θm(t)を補正し、その補正されたを実モータ位置θm(t)のもと、仮想dq軸指令電流信号を仮想3相指令電流信号に変換する。この処理を、図8(b)においては、「座標変換」で表す。
その後、仮想モータ計算部110は、前記仮想3相指令電流信号に基づいて前記逆モデル計算を行い、それにより、前記仮想3相指令電流信号に対応する仮想3相指令電圧信号を決定し、その決定された仮想3相指令電圧信号を前記制御信号Gu−Gzに変換する第3変換を行う。この処理を、図8(b)においては、「逆モデル計算」で表す。
続いて、仮想モータ計算部110は、その取得された制御信号Gu−Gzを実インバータ/パワーアンプ14に出力し、それにより、実モータ12を制御する。この処理を、図8(b)においては、「Gu〜Gz出力」で表す。
図9には、モータ制御装置100の作動の一例がフローチャートで表されている。このフローチャートは、図6に示すフローチャートであって第1実施形態に従うモータ制御装置10の作動の一例を表すものに対し、ステップS4とS5との間にステップS4aおよびS4bが追加されている点を除き、共通する。よって、それらステップS4aおよびS4bのみを説明し、他のステップS1−S9は、図6におけるステップS1−S9と共通するため、文章による説明を省略する。
図9に示すように、ステップS4が終了すると、ステップS4aにおいて、Δθ推定器120により、前記変化量Δθが推定される。次に、ステップS4bにおいて、その推定された変化量Δθに基づき、前記取り込まれた実モータ位置θm(実モータ位置θmの最新検出値)が補正される。
その後、ステップS5において、その補正されたを実モータ位置θm(t)のもと、仮想dq軸指令電流信号が仮想3相指令電流信号に変換される。
<第3実施形態>
次に、本発明の第3実施形態に従うモータ制御装置200を図10および図11を参照することにより説明する。ただし、本実施形態は、第1実施形態と共通する要素があるため、共通する要素については、同一の符号または名称を付して引用することにより、重複した説明を省略し、異なる要素についてのみ、詳細に説明する。
図10に示すように、本実施形態に従うモータ制御装置200においては、第1実施形態に従うモータ制御装置10に対し、モータ制御装置200の製造段階における実モータ12の実運転中か、またはモータ制御装置200の使用段階における実モータ12の実運転中に、実モータ12の作動状態量を用いて、仮想モータ60のモデル特性、すなわち、実モータ12における入力電圧と出力電流との関係である実入出力特性を模擬する仮想入出力特性をキャリブレートし、それにより、実モータ12に入力されるべき制御信号を最適化する仮想モータ・キャリブレーション部220が追加されている。
概略的に説明すれば、この仮想モータ・キャリブレーション部220においては、実モータ12の実3相電流信号によって表される実3相電流Iu,Iv,Iwと、その実3相電流Iu,Iv,Iwの検出タイミングと実質的に同じタイミングで仮想モータ60に入力されるべき仮想3相指令電流信号によって表される仮想3相電流Iu*,Iv*,Iw*との差に基づき、実3相電流Iu,Iv,Iwの次回値と仮想3相電流Iu*,Iv*,Iw*の次回値との差が減少するように、仮想モータ60のモデル特性が修正される。
この仮想モータ・キャリブレーション部220においては、実モータ12の実電流値の今回値であってその実モータ12の実入出力特性を反映したものの、制御目標値を反映した仮想電流値の今回値からの偏差に基づき、その偏差の次回値が減少するように、仮想モータ60の仮想入出力特性がキャリブレートされる。その結果、上述の仮想電流値の今回値に応答して仮想モータ60から出力されることとなる指令電圧信号の今回値であって実モータ12にその後入力されることとなる指令電圧を表すものが最適化される。
図1に示すモータ制御装置10と同様に、モータ制御装置200は、実モータ状態検出部30を備えている。その実モータ状態検出部30は、実モータ12の実モータ位置θmのみならず、実モータ電流Iu,Iv,Iw、実モータ速度ωm等、他の実モータ状態量を検出し、それを表す実モータ状態信号を出力する。
図10に示すように、モータ制御装置200は、仮想モータ計算部210を有し、その仮想モータ計算部210は、仮想モータ60を有し、さらに、比較部222およびモデル修正部224を有する。仮想モータ60は、演算回路42により、高速に、すなわち、短い周期で反復的に実行されるのに対し、比較部222およびモデル修正部224は、CPU44により、低速に、すなわち、長い周期で反復的に実行される。
図10に示すように、比較部222は、実モータ状態検出部30から出力された実モータ12の実3相電流Iu,Iv,Iwの今回値(最新値)と、座標変換器68から出力された仮想モータ60の仮想3相電流Iu*,Iv*,Iw*の今回値(最新値)とを互いに比較し、両者の差を電流誤差ΔI(ΔIu,ΔIv,ΔIw)として各相ごとに計算する。それら互いに比較されるべき実3相電流Iu,Iv,Iwの今回値と、仮想3相電流Iu*,Iv*,Iw*の今回値はいずれも、図5に示す同じ仮想モータ計算サイクル(周期Tv)内に取得される。
具体的には、図5(b)に示すように、実3相電流Iu,Iv,Iwの今回値は、「θm(t)入力」で表される処理において取得され、一方、仮想3相電流Iu*,Iv*,Iw*の今回値は、「変換」で表される処理において取得される。よって、それら2つの今回値は、実質的に同じタイミングで取得されることになる。
図10に示すように、モデル修正部224は、前記計算された電流誤差ΔI(ΔIu,ΔIv,ΔIw)に基づき、実3相電流Iu,Iv,Iwの次回値(次回の計算サイクルにおいて取得される実3相電流Iu,Iv,Iw)と仮想3相電流Iu*,Iv*,Iw*の次回値(次回の計算サイクルにおいて取得される仮想3相電流Iu*,Iv*,Iw*)との差ΔI(ΔIu,ΔIv,ΔIw)が減少するように、仮想モータ60の入出力特性を定義する前記モータモデル(図4参照)を修正する。
モデル修正部224は、例えば、各相ごとに、前記計算された電流誤差ΔIに基づき、図4に示すインダクタンス行列のうち、該当する要素を、電流誤差ΔIと要素の値との間に予め定められた関係(例えば、経験的にまたは実験的に取得される)を表すテーブルに従って修正する。
このモデル修正部224は、実モータ12を実際に駆動することにより、その実モータ12の入出力特性を仮想モータ60に教示するティーチングを実行し、その結果、実モータ12の作動状態と仮想モータ60の作動状態、すなわち、その仮想モータ60の計算結果とが互いに一致するようになる。
図11には、仮想モータ・キャリブレーション部220を実現するための比較部222およびモデル修正部224の作動の一例がフローチャートで概念的に表されている。それら比較部222およびモデル修正部224は、CPU44により、誤差監視計算周期Tc(例えば、数10μsec)で反復的に実行される。
具体的には、まず、ステップS121において、仮想モータ60の仮想3相電流の、実モータ12の実3相電流からの誤差である電流誤差ΔIが、各相U,V,Wごとに計算され、それら3相のうちの少なくとも一つにつき、前記計算された電流誤差ΔIの絶対値が、予め定められたしきい値ΔIthより大きいか否かが判定される。今回は、いずれの相についても、電流誤差ΔIの計算値がしきい値ΔIth以下であると仮定すると、このステップS121の判定がNOとなり、同じステップS121が再度実行される。
これに対し、今回は、少なくとも一つの相につき、電流誤差ΔIの計算値がしきい値ΔIthを超えていると仮定すると、このステップS121の判定がYESとなり、ステップS122に移行する。
このステップS122においては、比較部222が作動させられる。具体的には、電流誤差ΔIがいずれの相についても、しきい値ΔIthを超えないように前記モータモデルを修正すべき修正量が計算される。
その計算手法の一例においては、各相ごとの電流誤差ΔIが取り得る複数の離散的な代表値と、前記インダクタンス行列における複数の要素L,Mのうち、修正すべき要素と、その要素についての修正量との間において予め定められた関係(例えば、テーブルとして、プロセッサ40のためのメモリに予め記憶されている)に従い、電流誤差ΔIの実際の計算値に対応する修正量(もとの値に加算される値としたり、もとの値に乗算される係数とすることが可能である)が取得される。
続いて、ステップS123において、モデル修正部224が作動させられる。具体的には、仮想モデル60の入出力特性を定義するモータモデルが、前記計算された修正量に基づいて修正される(例えば、前記インダクタンス行列の複数の要素に共通に取得される補正係数または要素ごとに取得される修正係数が、それら要素のもとの値に乗算される)。電流誤差ΔIの計算値に基づいて仮想モデル60のティーチングが行われるのであり、その結果、仮想モデル60の入出力特性が、実モータ12の入出力特性をより正確に反映することとなる。その後、ステップS121に戻る。
それらステップS121からS123までのステップ群が、仮想モータ計算周期Tvより長い誤差監視周期(ティーチング周期でもある)Tcで反復的に実行される。
以上の説明から明らかなように、本実施形態によれば、モータ制御装置200が試験的に稼動させられる状況(試験運転中)にあるか実際に稼動している状況(本格稼動中)にあるかを問わず、実モータ12の実際の入出力特性を反映するように、仮想モータ60の入出力特性すなわち前記モータモデルを個別にチューニングすることが可能である。
したがって、本実施形態によれば、モータ制御装置200の製造段階にあっては、実モータ12の入出力特性の個体ばらつきなどを反映するように、仮想モータ60の入出力特性すなわちモータモデルを個別にチューニングすることが可能である。また、モータ制御装置200の出荷後であって、ユーザが実際にモータ制御装置200を使用する段階にあっては、実モータ12の入出力特性の経時劣化や、実モータ12の入出力特性の、外的環境(例えば、温度環境)に起因する変化などを反映するように、仮想モータ60の入出力特性すなわちモータモデルを個別に、かつ、本来の用途で使用しつつ、それと並行して、かつ、自動的にチューニングすることが可能である。
なお、本実施形態に従う仮想モータ・キャリブレーション部220は、第2実施形態に従うモータ制御装置100に追加することが可能である。
<第4実施形態>
次に、本発明の第4実施形態に従うモータ制御装置300を図12および図13を参照することにより説明する。ただし、本実施形態は、第1実施形態および第3実施形態と共通する要素があるため、共通する要素については、同一の符号または名称を付して引用することにより、重複した説明を省略し、異なる要素についてのみ、詳細に説明する。
図12に示すように、本実施形態に従うモータ制御装置300においては、第1実施形態に従うモータ制御装置10に対し、モータ制御装置200の製造段階における実モータ12の実運転中か、またはモータ制御装置200の使用段階における実モータ12の実運転中に、実モータ12の作動状態量を用いて、仮想モータ60から出力された仮想3相指令電圧信号Vu*,Vv*,Vw*を補正し、それにより、実モータ12に入力されるべき制御信号Gu,Gv,Gw,Gx,Gy,Gzを最適化する仮想モータ出力値補正部320が追加されている。
この仮想モータ出力値補正部320においては、実モータ12の実電流値の今回値であってその実モータ12の実入出力特性を反映したものの、制御目標値を反映した仮想電流値の今回値からの偏差に基づき、その偏差の次回値が減少するように、上述の仮想電流値の今回値に応答して仮想モータ60から出力された指令電圧信号の今回値であって実モータ12にその後入力されることとなる指令電圧を表すものが補正される。
概略的に説明すれば、この仮想モータ出力値補正部320においては、実モータ12の実3相電流Iu,Iv,Iwと、その実3相電流Iu,Iv,Iwの検出タイミングと実質的に同じタイミングで仮想モータ60に入力されるべき仮想3相指令電流信号によって表される仮想3相電流Iu*,Iv*,Iw*との差に基づき、実3相電流Iu,Iv,Iwの次回値と仮想3相電流Iu*,Iv*,Iw*の次回値との差が減少するように、仮想モータ60から出力された仮想3相指令電圧信号Vu*,Vv*,Vw*が補正される。
図12に示すように、モータ制御装置300は、仮想モータ計算部310を有し、その仮想モータ計算部310は、仮想モータ60を有し、さらに、比較部322および電圧補正部324を有する。仮想モータ60は、演算回路42により、高速に、すなわち、短い周期で反復的に実行されるのに対し、比較部322および電圧補正部324は、CPU44により、低速に、すなわち、長い周期で反復的に実行される。
図12に示すように、比較部322は、第3実施形態に従う比較部222と同様にして、実モータ状態検出部30から出力された実モータ12の実3相電流Iu,Iv,Iwの今回値(最新値)と、座標変換器68から出力された仮想モータ60の仮想3相電流Iu*,Iv*,Iw*の今回値(最新値)とを互いに比較し、両者の差を電流誤差ΔI(ΔIu,ΔIv,ΔIw)として各相ごとに計算する。それら互いに比較されるべき実3相電流Iu,Iv,Iwの今回値と、仮想3相電流Iu*,Iv*,Iw*の今回値はいずれも、図5に示す同じ仮想モータ計算サイクル(周期Tv)内に取得される。
具体的には、図5(b)に示すように、実3相電流Iu,Iv,Iwの今回値は、「θm(t)入力」で表される処理において取得され、一方、仮想3相電流Iu*,Iv*,Iw*の今回値は、「変換」で表される処理において取得される。よって、それら2つの今回値は、実質的に同じタイミングで取得されることになる。
図12に示すように、電圧補正部324は、前記計算された電流誤差ΔIに基づき、実3相電流Iu,Iv,Iwの次回値(次回の計算サイクルにおいて取得される実3相電流Iu,Iv,Iw)と仮想3相電流Iu*,Iv*,Iw*の次回値(次回の計算サイクルにおいて取得される仮想3相電流Iu*,Iv*,Iw*)との差ΔI(ΔIu,ΔIv,ΔIw)が減少するように、仮想3相電流Iu*,Iv*,Iw*の今回値の入力に応答して仮想モータ60から出力された仮想3相指令電圧信号Vu*,Vv*,Vw*の補正量ΔV*(ΔVu*,ΔVv*,ΔVw*)を決定する。
電圧補正部324は、例えば、各相ごとに、前記計算された電流誤差ΔIに基づき、電流誤差ΔIと補正量ΔV*との間に予め定められた関係(例えば、経験的にまたは実験的に取得される)を表すテーブルに従って、補正量ΔV*を決定する。さらに、電圧補正部324は、その決定された補正量ΔV*に基づき、補正量ΔV*を仮想3相指令電圧信号Vu*,Vv*,Vw*のもとの値に加算するか、または、掛け算することにより、仮想3相指令電圧信号Vu*,Vv*,Vw*を補正する。
図13には、仮想モータ出力値補正部320を実現するための比較部322および電圧補正部324の作動の一例がフローチャートで概念的に表されている。それら比較部322および電圧補正部324は、CPU44により、誤差監視計算周期Tc(例えば、数10μsec)で反復的に実行される。
具体的には、まず、ステップS201において、図11に示すステップS121と同様にして、仮想モータ60の仮想3相電流の、実モータ12の実3相電流からの誤差である電流誤差ΔIが、各相U,V,Wごとに計算され、それら3相のうちの少なくとも一つにつき、前記計算された電流誤差ΔIの絶対値が、予め定められたしきい値ΔIthより大きいか否かが判定される。今回は、いずれの相についても、電流誤差ΔIの計算値がしきい値ΔIth以下であると仮定すると、このステップS201の判定がNOとなり、同じステップS201が再度実行される。
これに対し、今回は、少なくとも一つの相につき、電流誤差ΔIの計算値がしきい値ΔIthを超えていると仮定すると、このステップS201の判定がYESとなり、ステップS202に移行する。
このステップS202においては、比較部322が作動させられる。具体的には、電流誤差ΔIがいずれの相についても、しきい値ΔIthを超えないようにするための補正量ΔVu*,ΔVv*,ΔVw*が計算される。
その計算手法の一例においては、各相ごとの電流誤差ΔIが取り得る複数の離散的な代表値と、補正量ΔV*との間において予め定められた関係(例えば、テーブルとして、プロセッサ40のためのメモリに予め記憶されている)に従い、電流誤差ΔIの実際の計算値に対応する補正量ΔV*(もとの値に加算される値としたり、もとの値に乗算される係数とすることが可能である)が取得される。
続いて、ステップS203において、電圧補正部324が作動させられる。具体的には、仮想モデル60から出力された仮想3相指令電圧信号Vu*,Vv*,Vw*の今回値(最新値)が取り込まれ、その今回値が、前記計算された補正量ΔVu*,ΔVv*,ΔVw*に基づいて補正される。その後、ステップS201に戻る。
なお、本実施形態に従う仮想モータ出力値補正部320は、第2実施形態に従うモータ制御装置100に追加したり、第3実施形態に従うモータ制御装置200に追加することが可能である。仮想モータ出力値補正部320がモータ制御装置200に追加されれば、実モータ12の実稼動中に、その実モータ12の作動状態量を用いて、仮想モータ60の仮想入出力特性を修正することと、その仮想モータ60の出力値を補正することとの双方が行われるため、最終的な制御信号の精度が向上し、ひいては、実モータ12の制御精度が向上する。
以上、本発明の実施の形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、前記[発明の概要]の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。