以下、本発明のさらに具体的で例示的な複数の実施の形態のうちのいくつかを図面に基づいて詳細に説明する。
図1には、本発明の例示的な一実施形態に従うモータ制御装置10を有するシステム11を概略的に表す機能ブロック図である。このシステム11は、そのシステム11の駆動源として実モータ12を備えている。このシステム11のいくつかの具体例としては、前述のように、移動体を絶対空間に対して移動させるための推進装置や、可動部材に運動を付与する運動付与装置などがある。
実モータ12は、一般に、複数極のロータ(図示しない)と、複数極のステータ(図示しない)と、磁束形成部(図示しないが、具体的には、例えば、巻き線)とを有するように構成される。図2に示すように、実モータ12は、前記ロータと共に回転するシャフト13を有しており、そのシャフト13が可動部材(図示しないが、具体的には、例えば、車両の車輪、工作機械の工具、ロボットのアームなど)に機械的に連結され、それにより、可動部材が駆動される。その可動部材は、実モータ12にとり、いわゆる実負荷となる。
実モータ12のいくつかの具体例としては、界磁に永久磁石を使用して回転する永久磁石同期モータ(PMSM)、永久磁石を使用せず、渦電流を利用して回転する誘導モータ(IM)、スイッチ・リラクタンス・モータ(SRM)などがある。そのリラクタンス・モータにおいては、ロータが、永久磁石を使用することなく、強磁性の鉄心で構成されるため、リラクタンス・モータは、永久磁石を使用しない無整流子モータの一種である。
実モータ12が3相(U相、V相およびW相)の巻線を有する場合、実モータ12の各種物理量を記述するために、次のような記号が使用される。
Vu,Vv,Vw:端子電圧(「巻線電圧」または「相電圧」ともいう。)[V]
Iu,Iv,Iw:相電流(「巻線電流」ともいう。)[A]
θm:ロータ(またはシャフト)の角度(位相または回転位置であり、「モータ角」または「モータ位置」ともいう)[rad]
ωm:ロータ(またはシャフト13)の角速度(「モータ速度」ともいう)[rad/sec]
T:モータ出力トルク[Nm]
Eu,Ev,Ew:誘起電圧[V]
Fu,Fv,Fw:相磁束[Wb]
なお、本実施形態および後述のいくつかの実施形態の説明において、同じ記号が、単独で使用される箇所と、「*」を末尾に有するように使用される箇所とが存在する。それら実施形態においては、同じ記号が、単独で使用される場合には、実際値または検出値を意味する一方、「*」と組み合わせて使用される場合には、指令値または目標値を意味するという用法と、同じ記号が、単独で使用される場合には、実モータ12についての物理量であることを意味する一方、「*」と組み合わせて使用される場合には、後述の仮想モータ60(図3参照)についての物理量であることを意味するという用法とがあるが、特記しない限り、前者の用法を採用することに留意されたい。
図1に示すように、システム11は、実モータ12を駆動するために、モータ制御装置10と、実インバータ(「ドライバ」の一例)14と、実モータ状態検出部15と、電源16(例えば、直流電源)とをさらに備えている。
実モータ状態検出部15は、実モータ12の作動状態として実モータ12の実モータ位置(回転角)θmを検出する角度センサを有する。この角度センサは、例えば、ロータリ・エンコーダ(図示しない)を含むように構成される。
実モータ状態検出部15は、さらに、実モータ12のU相、V相およびW相の電流を3相実電流iu,iv,iwとして検出する電流センサを有する。この電流センサは、例えば、CT(Current Transformer)を含むように構成される。
実インバータ14は、電源(例えば、直流電源)16から供給される電気エネルギーを変調して実モータ12に供給するように構成される。実モータ12に供給される電気エネルギーは、実モータ12が3相(U相、V相およびW相)の巻線を有する場合、端子電圧Vu,Vv,Vwを形成する。
図2には、実インバータ14が概念的に回路図で表されている。実インバータ14は、既によく知られているように、直流電圧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に応じてスイッチング動作を行う。
それらゲート24は、実モータ12のU相コイルに対応する2つのゲート24であって、ゲート信号GuおよびGxがそれぞれ入力されるものと、実モータ12のV相コイルに対応する2つのゲート24であって、ゲート信号GvおよびGyがそれぞれ入力されるものと、実モータ12のW相コイルに対応する2つのゲート24であって、ゲート信号GwおよびGzがそれぞれ入力されるものとを有する。
U相用のゲート24がオン状態にあれば、U相コイルが励磁され、同様に、V相用のゲート24がオン状態にあれば、V相コイルが励磁され、また、同様に、W相用のゲート24がオン状態にあれば、W相コイルが励磁される。
このように構成された実インバータ14は、後述のゲート信号発生部34から複数のゲート信号Gu,Gv,Gw,Gx,Gy,Gwが制御信号として入力されると、その制御信号に基づいて端子電圧Vu,Vv,VwをPWM(パルス幅変調)方式によって生成し、それら生成された端子電圧Vu,Vv,Vwを実モータ12に供給する。
図1に示すように、モータ制御装置10は、目標電流決定部30と、時間指令値決定部32と、PWM方式のゲート信号発生部34とを備えており、そのゲート信号発生部34において、実インバータ14を介して実モータ12に電気的に接続されている。
時間指令値決定部32は、ゲート信号発生部34および実モータ12に対し、「コントローラ」の一例として位置づけられる。この時間指令値決定部32については、システム構成が図3に機能ブロック図で概念的に表されており、また、作動シーケンスが、図6にはタイムチャートで、図11および図12にはフローチャートでそれぞれ概念的に表されている。
図1に示すように、目標電流決定部30は、実モータ12によって実現されるべき制御目標値を表す目標信号が入力されると、その目標信号によって表される制御目標値を目標電流値に変換するように構成されている。
前記制御目標値は、例えば、実モータ12からの出力に関連する物理量の目標値である。その目標値は、例えば、実モータ12の前記ロータの位置に関する物理量(例えば、位置、速度、加速度など)の目標値としたり、実モータ12の前記ロータに作用する力に関する物理量(例えば、トルク、軸力、歪み、応力など)の目標値とすることが可能である。
これに対し、その制御目標値から変換される目標電流値は、実モータ12に発生する電流の値である。その値は、例えば、3相指令電流値Iu*,Iv*,Iw*としたり、dq軸指令電流値Id*,Iq*とすることが可能である。ただし、本実施形態においては、その目標電流値が、dq軸指令電流値id*,iq*(すなわち、d軸指令電流値id*およびq軸指令電流値iq*)とされている。
図1に示すように、時間指令値決定部32は、目標電流決定部30から入力されたdq軸指令電流値id*,iq*を、実モータ12の各相コイルごとの時間指令値tu,tv,twに変換するように構成されている。
各時間指令値tu,tv,twは、対応するゲート24をオフ状態とオン状態との間において切り替える向きとタイミングとを表す指令値であり、パルス信号としてゲート信号発生部34に供給される。それにより、ゲート信号発生部34は、1周期ごとに、時間指令値tu,tv,twをそれぞれ表す3つのパルス信号から、実インバータ14に供給すべきゲート信号Gu,Gv,Gw,Gx,Gy,Gzを発生させる。すなわち、時間指令値tu,tv,twは、ゲート信号Gu,Gv,Gw,Gx,Gy,Gzを生成するために参照される時間的な物理量なのである。
各時間指令値tu,tv,twを表すパルス信号は、図13において「時間指令値」というラベルを付して示すように、対応するゲート24をオフ状態とオン状態との間において切り替える向きを表す符号と、その切替えを行うタイミングを表す絶対値とを有する。
このパルス信号は、1周期の間、レベルが0に維持されない場合には、正の符号を有する場合もあれば、負の符号を有する場合もあるが、これとは異なり、ゲート信号Gu,Gv,Gw,Gx,Gy,Gzは、図13に「ゲート信号」というラベルを付して示すように、1周期の間、レベルが0に維持されない場合には、正の符号と負の符号とのうち予め選択されたもの(本実施形態においては、正の符号)のみを有する。
これに対し、各ゲート信号Gu,Gv,Gw,Gx,Gy,Gzは、図13において「ゲート信号」というラベルを付して示すように、立ち上がりエッジと立下がりエッジとのうち選択されたものを有するパルス信号である。各ゲート信号Gu,Gv,Gw,Gx,Gy,Gzは、立ち上がりエッジで、対応するゲート24がオフ状態からオン状態に切り替えられるタイミングを示す一方、立下がりエッジで、対応するゲート24がオン状態からオフ状態に切り替えられるタイミングを示す。
図3に示すように、時間指令値決定部32は、電圧パターン発生部40と、仮想モータ計算部42と、座標変換器44と、Δθ推定器46と、誤差演算器48と、電圧パターン選択部50とを備えている。目標電流決定部30から出力されたdq軸指令電流値id*,iq*は、電圧パターン発生部40に入力される。電圧パターン選択部50は、時間指令値tu,tv,twを表す複数のパルス信号を生成して、図1に示すゲート信号発生部34に出力する。ゲート信号発生部34は、時間指令値tu,tv,twをそれぞれの入力ポート52(「信号入力部」の一例)において入力する。
まず、時間指令値決定部32の作動を概略的に説明するに、この時間指令値決定部32は、図4に例示するように、連続した所定複数回の単位計算サイクルの間に各相のコイルに印加される複数の電圧値のシーケンスである電圧パターン(または電圧シーケンス)についての複数の候補(すなわち、「複数の候補電圧パターン」)のうち、他の相のコイルに印加される電圧パターンも考慮したうえで、dq軸指令電流値id*,iq*を実現するのに最適なものを最適電圧パターンとして探索するように構成されている。
本実施形態においては、各電圧パターンに従う複数の電圧値のうちの最高値(すなわち、実モータ12のコイルをオン状態にする際にそのコイルに電源16からゲート24を介して印加される電圧)が一定値として設定されているが、可変値として設定することが可能である。
この時間指令値決定部32は、最適な3相電圧パターン(U相用の電圧パターンと、V相用の電圧パターンと、W相用の電圧パターンとの組合せであり、以下、「組合せ電圧パターン」といい、これに対し、各相ごとの電圧パターンを、「相別電圧パターン」という。)を決める最適化問題を総当たり方式で探索するように構成されている。
ただし、これに代えて、この時間指令値決定部32を、図4に示す複数の電圧パターンの一部のみを複数の候補として選択し、それら選択された候補電圧パターンを対象に総当たり探索を行うように構成することが可能である。
具体的には、この時間指令値決定部32は、図6にタイムチャートで例示するように、実モータ12の各回の制御サイクルに先立ち、推定工程を実行する。その推定工程においては、図3に示す電圧パターン発生部40と仮想モータ計算部42(後に図7および図8を参照して詳述する仮想モータ60を主体とする)とにより、前記複数の候補電圧パターンのすべてにつき、各候補電圧パターンで順次実モータ12を励磁したときのその実モータ12の作動状態が推定される。その実モータ12の作動状態は、仮想モータ60の3相仮想電流値Iu,Iv,Iwとして推定される。
さらに、この時間指令値決定部32は、図6に例示するように、前記推定工程に引き続いて評価工程を実行する。その評価工程においては、まず、図3に示す座標変換器44により、各電圧パターンごとに、3相仮想電流値Iu,Iv,Iwであって仮想モータ60を用いて取得されたものがUVW座標系からdq軸座標系に座標変換され、それにより、dq軸仮想電流値Id,iqが取得される。
この評価工程においは、さらに、誤差演算器48により、前記dq軸指令電流値id*,iq*とdq軸仮想電流値Id,iqとの差であって3相について合算されたものが総合電流誤差J(m)として計算され、それにより、各候補電圧パターンの妥当性が評価される。
さらに、この時間指令値決定部32は、図6に例示するように、前記評価工程に引き続いて選択工程を実行する。その選択工程においては、電圧パターン選択部50により、前記複数の候補電圧パターン(図5参照)のうち、計算された総合電流誤差J(m)(1<=m<=216)が最小であるものが最適電圧パターンとして選択される。
この選択行程においては、さらに、図3に示す電圧パターン選択部50により、その選択された最適電圧パターンを記述する時間指令値tu,tv,twが決定され、それら時間指令値tu,tv,twはゲート信号発生部34に出力される。
各相ごとの複数の候補電圧パターン(すなわち、「相別電圧パターン」)の一例が図4にタイムチャートで表されている。本実施形態においては、各相別電圧パターンが、仮想モータ60についての連続3周期分の単位計算サイクルに3つの単位電圧パターンをそれぞれ割り当てた場合の、それら単位電圧パターンの直列配列として定義される。各単位電圧パターンは、コイルが2つの状態、すなわち、オフ状態とオン状態とのうちのいずれかにあることを表す2値表現である。
それら相別電圧パターンは、3周期分、コイルがオフ状態に維持される1つのパターンと、3周期分、コイルがオン状態に維持される1つのパターンと、ある時点でコイルがオフ状態からオン状態に変化する2つのパターンと、ある時点でコイルがオン状態からオフ状態に変化する2つのパターンとを有しており、全部で、6つの相別電圧パターンとして構成されている。図4に示すように、それら6つの相別電圧パターンにはそれぞれ、識別のため、番号k(1<=k<=6)が付与されている。U相、V相およびW相につき、それぞれ6つの相別電圧パターンが存在する。
なお付言するに、他の複数の相別電圧パターンも存在する。例えば、3周期分の単位計算サイクルのうち最初のものにおいては、コイルがオフ状態にあり、2番目の単位計算サイクルにおいては、そのコイルがオン状態にあり、3番目の単位計算サイクルにおいては、そのコイルがオフ状態にあるという相別電圧パターンである。しかし、この種の相別電圧パターンは、3周期分の単位計算サイクルにおいて、コイルがオフ状態からオン状態に遷移するターンオン・タイミングと、オン状態からオフ状態に遷移するターンオフ・タイミングとが共存する。
一方、本実施形態においては、3周期分の単位計算サイクルにおいて、ターンオン・タイミングとターンオフ・タイミングとがいずれも存在しないか、いずれかのみが存在することが前提となっている。
さらに付言するに、本実施形態においては、コイルのオン状態が、そのコイルに電圧が一方向にのみ印加されることによって実現されるシナリオのみが想定され、電圧が正逆方向に選択的に印加されることによって実現されるシナリオは想定されていない。
ただし、後者のシナリオが想定される状態で本発明を実施することが可能であり、その場合には、図4に示す6つの相別電圧パターンに加えて、4つの相別電圧パターン(図4に示す第2、第3、第5および第6相別電圧パターンに対応するもの)が使用されることになる。
すなわち、本実施形態においては、単位電圧パターンが、2つの状態、すなわち、オフ状態とオン状態とのうちのいずれかにあることを表す2値表現として定義されているが、これに代えて、3つの状態、すなわち、オフ状態と、コイルに正方向に電圧が印加される第1のオン状態と、コイルに逆方向に電圧が印加される第2のオン状態とのうちのいずれであるかを表す3値表現として定義することが可能なのである。
図5に示すように、実モータ12の3相全体としての電圧パターン(「組合せ電圧パターン」)は、上述の6つの相別電圧パターンのうちU相について選択されたものと、上述の6つの相別電圧パターンのうちV相について選択されたものと、上述の6つの相別電圧パターンのうちW相について選択されたものとの組合せであり、全部で、216(=6×6×6)通りの組合せ電圧パターンが存在する。図5に示すように、216通りの組合せ電圧パターンにはそれぞれ、識別のため、番号m(1<=m<=216)が付与されている。
図4に示すように、各相別電圧パターンは、前記時間指令値tu,tv,twによって記述される。それら時間指令値tu,tv,twの定義を、U相コイルの時間指令値tuを例にとり具体的に説明するに、時間指令値tuは、符号と絶対値との組合せとして表現される。
時間指令値tuの符号が正である場合には、その時間指令値tuが、実モータ12の各回の制御サイクルにおいてU相コイルがオフ状態からオン状態に切り替わるタイミングを表す一方、時間指令値tuの符号が負である場合には、その時間指令値tuが、実モータ12の各回の制御サイクルにおいてオン状態からオフ状態に切り替わるタイミングを表す。さらに、時間指令値tuの絶対値は、それの符号が正である場合には、各回の制御サイクルの開始時点から、U相コイルがオフ状態からオン状態に切り替わるタイミングまでの経過時間の長さを表す一方、時間指令値tuの符号が負である場合には、各回の制御サイクルの開始時点から、U相コイルがオン状態からオフ状態に切り替わるタイミングまでの経過時間の長さを表す。
図4に示すように、各相別電圧パターンに時間比率γ(0<=γ<=1)が割り当てられている。この時間比率γは、最終的に、実モータ12の制御周期TSの長さに乗算される。
具体的には、図6に示すように、第n回の制御サイクルにおいて、ある相別電圧パターンが選択されると、それに対応する時間比率γが、制御周期TSの長さに乗算され、それにより、第(n+1)回の制御サイクルにおいて、対応する時間比率γの符号が正であれば、実モータ12のある相のコイルがオフ状態からオン状態に切り替わるタイミングが特定される一方、対応する時間比率γの符号が負であれば、実モータ12のある相のコイルがオン状態からオフ状態に切り替わるタイミングが特定される。
本実施形態においては、図4に示すように、前記単位電圧パターンが3周期分の計算周期についてそれぞれ割り当てられ、その結果、実モータ12の制御サイクルの途中に設定可能なコイル状態遷移点(すなわち、実モータ12のコイルがオフ状態からオン状態に、またはオン状態からオフ状態に遷移する点)の数が2つとなる。
このように、単位電圧パターンが設定される計算周期の数と、潜在的コイル状態遷移点の数、ひいては、複数の潜在的コイル状態遷移点によって前記制御サイクルを等分割した場合の分割幅(時間分解能)とが互いに連動する。よって、単位電圧パターンが設定される計算周期の数が多いほど、コイル状態遷移点の時間分解能が増加する。
図1に示すように、モータ制御装置10は、実モータ12を制御するために、プロセッサ54を備えている。プロセッサ54は、FPGA(field-programmable gate array)やASIC(application specific integrated circuit)などの演算回路(例えば、PLD(Programmable logic device)、ワイヤード論理回路)56と、コンピュータのCPU58とを含むように構成されている。
演算回路56により、例えば、1μsecという長さの第1の周期で、32ビットの浮動小数点演算を行い、それにより、例えば、仮想モータ計算部42を有する時間指令値決定部32による計算と、ゲート信号発生部34による計算とを行う。
また、CPU58により、例えば、数10μsecという長さの第2の周期であって前記第1の周期より長いもので、システム11の全体を制御するための処理を行う。そのような処理としては、例えば、初期化、終了処理、時間的に可変である制御目標値を表す目標信号を入力する処理(例えば、目標電流決定部30)などがある。
ここで、図7および図8を参照することにより、仮想モータ計算部42を説明する。仮想モータ計算部42は、図7に示すように、仮想モータ60を主体として構成され、その仮想モータ60を用いることにより、実モータ12の作動状態を計算する。
仮想モータ60は、電圧パターン発生部40から3相指令電圧値Vu,Vv,Vwが制御信号として入力されると、実モータ12を模擬する解析プログラムを演算回路56(図1参照)に実行させることにより、前記入力された制御信号と同じ制御信号が実モータ12に出力された場合にその制御信号に応答して実モータ12によって実現される作動状態を推定するための計算を行う。すなわち、仮想モータ計算部42は、演算回路56により、高速演算可能であるように構成されているのである。
従来の技術では、仮想モータ60は、実モータ12や、その実モータ12を制御する実コントローラについての試験が終了するまで、実モータ12を代替するものとして試験機において使用される。そして、それら実モータ12や実コントローラが完成する(仕様が確定する)と、今度は、実モータ12が、仮想モータ60を代替するものとして実機に搭載される。このように、従来の技術では、試験機においても実機においても、仮想モータ60が実モータ12と一緒に搭載されるとともに一緒に作動させられることはなかった。
これに対し、本実施形態においては、試験機であるか実機であるかを問わず、仮想モータ60が実モータ12と一緒に搭載されるとともに一緒に作動させられ、それにより、仮想モータ60を用いて実モータ12を制御したり、実モータ12を用いて仮想モータ60をティーチングすることが可能である。
ここで、一般的なモータの入出力特性を説明するに、図8に示すように、3相巻線のモータの入出力特性は、一般に、電圧方程式(電圧電流方程式)によって近似的に記述できることが既に知られている。この事実によれば、その電圧方程式を解くことにより、各相ごとの端子電圧を表すモータ電圧ベクトルv(=[vu,vv,vw])から、各相ごとの相電流を表すモータ電流ベクトルi(=[iu,iv,iw])を計算することができる。
図8に示す電圧方程式中の各種記号の定義を説明するに、「Ra」は、モータの巻線抵抗を表し、また、「ψ」は、モータの鎖交磁束ベクトルψ(=[ψu,ψv,ψw])を表し、また、「t」は、時間を表している。
図8に示すように、モータの鎖交磁束ベクトルψは、相電流による鎖交磁束と、電機子鎖交磁束との和に等しい。相電流による鎖交磁束は、「L(自己インダクタンス)」と「M(相互インダクタンス)」を各要素とするインダクタンス行列を用いて表現され、また、電機子鎖交磁束は、ベクトルφ(=[φu,φv,φw])として表現される。
インダクタンス行列は、各要素L,Mが、モータの電流と角度(位置、位相)との少なくとも一方に依存するテーブルとして表現され、また、電機子鎖交磁束ベクトルφも、各要素が、モータの電流と角度(位置、位相)との少なくとも一方に依存するテーブルとして表現される。それらテーブルにより、前記電圧方程式と協働して、モータの非線形特性を、モータの駆動周波数全域にわたって表現することができる。
したがって、図8に示す電圧方程式によって表現される非線形モータモデルを使用すれば、モータの入出力特性が非線形であっても、モータの駆動周波数全域を複数の帯域に分割して各帯域ごとに異なる線形モータモデルを使用することなく、モータの駆動周波数全域を実質的に漏れなくカバーする非線形モータ特性を単一のモデルで精度よく表現することが可能となる。
図8に示す電圧方程式は、実モータ12についても成立し、よって、仮想モータ60は、その電圧方程式を解くことにより、図7に示すように、仮想モータ60の各相ごとの端子電圧を表す仮想モータ電圧ベクトルV*(=[Vu*,Vv*,Vw*]であって、図4に示すモータ電圧ベクトルv(=[vu,vv,vw]に相当する)から、仮想モータ60の各相ごとの相電流を表す仮想モータ電流ベクトルI*(=[Iu*,Iv*,Iw*]であって、図8に示すモータ電流ベクトルi(=[iu,iv,iw])に相当する)を計算する。
したがって、本実施形態によれば、仮想モータ60が、図8に示す電圧方程式によって表現される非線形モータモデル(すなわち、実モータ12の実際の入力電圧−出力電流間関係を精度よく反映する電圧−電流間関係に従い、電圧値から電流値を推定するもの)を使用して実モータ12の作動を模擬するため、入出力特性が非線形である実モータ12の駆動周波数全域にわたり、実モータ12の作動を精度よく模擬することが可能となる。
仮想モータ60が採用する前記モータモデルは、それの電気系を記述する前記電圧方程式に加えて、それの磁気系を記述するフレミング方程式と、それの機械系を記述する運動方程式(仮想ロータ軸周りのモーメントのつりあいを記述する)とを記述する。
フレミング方程式は、フレミングの法則に従い、仮想モータ電流ベクトルI*と仮想電機子鎖交磁束ベクトルφ*とから、仮想モータ60に発生する仮想トルクTe*を計算する。運動方程式は、仮想発生トルクTe*と、仮想負荷トルクTm*と、仮想電機子イナーシャJ*と、仮想減衰係数F*とから、仮想モータ速度ωm*を計算し、さらに、それを時間積分することにより、仮想モータ位置θm*を計算する。
実モータ12は、前記ロータを含む可動部材が質量(イナーシャ)や抵抗を有するなどの理由により、応答遅れを有するが、仮想モータ60は、応答遅れを実質的に有しない。その結果、それら実モータ12と仮想モータ60とに同時に同じ制御信号が入力される状況を想定すると、その制御信号に対して実モータ12が応答するタイミングより早いタイミングで、仮想モータ60が応答する。
したがって、ある制御目標値に基づき、ある時刻tに、制御信号を実モータ12に供給することが必要である場合に、その供給に先立ち、その制御信号と同じ制御信号を仮想モータ60のみに供給すれば、その時刻tが到来する前に、その制御信号に対して仮想モータ60の応答が終了するように仮想モータ60を作動させることが可能である。
このような仮想モータ60の特性を踏まえて図6を参照するに、仮想モータ60の第n回の制御サイクル(計算サイクル)は、実モータ12の第(n+1)回の制御サイクルに対応し、かつ、それに先立って(例えば、1周期分または複数周期分先行して)実行される。仮想モータ60の制御サイクルの周期である制御周期は、TPで表し、一方、実モータ12の制御サイクルの周期である制御周期は、TSで表す。制御周期TPと制御周期TSとは互いに一致する。
仮想モータ60は、同じ制御信号を仮想モータ60と実モータ12とに供給した場合にその実モータ12によって実現されるべき作動状態を、その実モータ12の作動時間(応答に必要な時間)より短い時間で、推定することが可能である。例えば、実モータ12の実際の制御周期はTSであるが、仮想モータ60の実際の最小計算周期はTQであって制御周期TSより短い。仮想モータ60の実際の最小計算周期は、実モータ12の1回分の制御に必要な、仮想モータ60を用いた1回の計算を行うのに必要な時間であり、図4に示す1個の相別電圧パターンについて仮想モータ60を用いて計算を行うのに必要な時間である。
具体的には、仮想モータ60の各回の制御サイクルにおいては、複数回のシーケンシャル計算サイクルが直列的に実行され、各回のシーケンシャル計算サイクルにおいては、1つの相別電圧パターンについて計算を行う。各回のシーケンシャル計算サイクルにおいては、複数回の単位計算サイクルが直列に並び、各回の単位計算サイクルにおいては、全サイクル中、コイルがオン状態またはオフ状態に維持された場合の実モータ12の作動状態が推定される。シーケンシャル計算サイクルの周期は、上述の最小計算周期TQであり、また、単位計算サイクルの周期は、最小計算周期TQより短いTRであり、また、実際、その最小計算周期TQは、実モータ12の制御周期TSより短い。
しかし、仮想モータ60は、実モータ12の状態変化を時間軸上で圧縮して、すなわち、高速化して観察することが可能であり、その結果、物理現象的には、最小計算周期TQが実モータ12の制御周期TSに一致する。
さらに、仮想モータ60は、一度に複数の計算を行うことが可能であり、その結果、図6に示すように、一度に3回分のシーケンシャル計算サイクルというように複数回のシーケンシャル計算サイクルを実行することが可能である。このことによっても、仮想モータ60が1回の制御サイクル中に実行可能な計算の回数、すなわち、実モータ12を仮想的に作動可能な電圧パターンの数が増加する。
具体的には、例えば、U相についての1つの単位計算サイクルと、V相についての1つの単位計算サイクルと、W相についての1つの単位計算サイクルとが、互いに並列的に実行される。その結果、単位計算周期TRが1msであり、最小計算周期TQが3msであり、制御周期TPが1sであれば、1回の制御サイクルの間に216通りの組合せ電圧パターンについての仮想モータ60を用いて計算が可能となる。
図3に示すように、電圧パターン発生部40は、注目する組合せ電圧パターンの番号mと、単位計算サイクルの番号c(1:3つの単位計算サイクルのうち最初のもの、2:2番目の単位計算サイクル、3:3番目の単位計算サイクル)との組合せが特定されると、図4に示す6つの相別電圧パターンのうち、各回の単位計算サイクルのために各相のコイルに入力すべきものを選択して仮想モータ計算部42に出力する。
具体的には、電圧パターン発生部40は、216通りの組合せ電圧パターンを順次、今回の組合せ電圧パターンとして選択し、その選択された組合せ電圧パターンのうち、U相コイルに対応する部分を2値の3相指令電圧値Vuとして、V相コイルに対応する部分を2値の3相指令電圧値Vvとして、また、W相コイルに対応する部分を2値の3相指令電圧値Vwとしてそれぞれ仮想モータ計算部42に出力する。
図3に示すように、仮想モータ計算部42は、仮想モータ60の作動状態を検出する仮想モータ状態検出部62をさらに備えている。
仮想モータ状態検出部62は、仮想モータ60の作動状態として、仮想モータ60の計算によって取得された仮想モータ電流ベクトルI*すなわち3相仮想電流Iu*,Iv*,Iw*を検出する。
図7に示すように、仮想モータ計算部42は、各回の単位計算サイクルごとに、電圧パターン発生部40から出力された3相指令電圧値Vu,Vv,Vwと、実モータ状態検出部15から出力された実モータ位置θmおよび3相実電流iu,iv,iwと、仮想モータ状態検出部62から前回の単位計算サイクルのときに出力された仮想モータ状態信号(例えば、前回の3相仮想電流値Iu*,Iv*,Iw*)とに基づき、仮想モータ60を作動させ、それにより、実モータ12の3相仮想電流値Iu,Iv,Iw(今回の3相仮想電流値Iu*,Iv*,Iw*)を推定する。
具体的には、この仮想モータ計算部42は、仮想モータ60の今回の入出力特性(前述のインダクタンス行列および電機子鎖交磁束ベクトル)を、前述のテーブルを用いて、実モータ位置θmの検出値と前回の3相仮想電流値Iu*,Iv*,Iw*とに対応するように、決定する。その決定された今回の入出力特性に従い、3相指令電圧値Vu,Vv,Vwに対応する3相仮想電流値Iu,Iv,Iwが決定される。
仮想モータ60においては、図8に示すように、そのようにして特定されたインダクタンス行列および電機子鎖交磁束ベクトルφと、前回の3相仮想電流値Iu*,Iv*,Iw*とを用いて、鎖交磁束ベクトルψが特定され、その鎖交磁束ベクトルψと、3相指令電圧値Vu,Vv,Vwとを用いて、今回の3相仮想電流値Iu,Iv,Iwが計算される。
仮想モータ60の入出力特性が、最新の実モータ12の位置である回転角θmを用いて特定される結果、仮想モータ60は、実モータ12に対して角度的に同期するように作動させられることになる。一方、図6に示すように、実モータ位置θmは、第n回の制御サイクルの開始時点での実測値であるのに対し、本当に欲しい実モータ位置θmは、第(n+1)の制御サイクルの開始時点での実測値である。しかし、第n回の制御サイクルの段階では、その本当に欲しい実モータ位置θmの実測値は存在しない。
これに対し、本実施形態においては、図3に示すように、Δθ推定器46が、実モータ位置θmが入力された時期と、次回の制御信号が実モータ12に入力され始める時期(または、その制御信号に対する実モータ12の応答が完了する時期)との間の期間に、実モータ位置θmが変化することが予想される変化量Δθを推定する。
その変化量Δθは、例えば、実モータ位置θmが入力される時期と、次回の制御信号が実モータ12に入力され始める時期(または、その制御信号に対する実モータ12の応答が完了する時期)との間の期間の長さは、前記制御周期TSの長さを超えないし、それにほぼ近いという事実に着目し、制御周期TSの長さと、実モータ12の角速度ωmとの積として推定したり、制御周期TSの長さに応じて推定したり(制御周期TSの長さが可変である場合には、それが長いほど、変化量Δθが大きい可能性が高いから)、実モータ12の角速度ωmに応じて推定する(実モータ12の角速度ωmが高速であるほど、変化量Δθが大きい可能性が高いから)ことが可能である。
Δθ推定器46は、上述のようにして、前記変化量Δθを取得すると、その変化量Δθを、同じ回の計算サイクルの当初において取得した実モータ位置θmに加算し、それにより、仮想モータ計算部42および座標変換器44に入力される実モータ位置θmが、θm+Δθに等しくなり、結局、実モータ12の作動に追従するように補正される。
図3に示すように、座標変換器44は、仮想モータ計算部42から3相仮想電流値Iu,Iv,Iwが入力されると、3相仮想電流値Iu,Iv,Iwに対して、補正後の実モータ位置(θm+Δθ)のもと、UVW座標系からdq軸座標系への座標変換を行い、それにより、dq軸仮想電流値Id,Iqを取得する。
誤差演算器46は、図1に示す目標電流決定部30からdq軸指令電流値id*,iq*が指令値として入力されるともに、座標変換器44からdq軸仮想電流Id,Iqが推定値として入力されると、216通りの組合せ電圧パターンのそれぞれごとに、3回分の単位計算サイクルのそれぞれについて、指令値と推定値との差を演算し、さらに、3回分の単位計算サイクルについての3つの誤差計算値の総合値(例えば、単純和、重み付き和、単純平方和、重み付き平方和)を総合電流誤差J(m)として演算する。この誤差演算器46は、組合せ電圧パターンごとに、総合電流誤差J(m)を電圧パターン選択部48に出力する。
電圧パターン選択部48は、216通りの組合せ電圧パターンのうち、演算された総合電流誤差J(m)が最小であるものを、今回のdq軸指令電流値id*,iq*にとって最適の組合せ電圧パターンとして選択する。
例えば、図9に例示するように、総合電流誤差Jが組合せ電圧パターン番号mと共に変化するシナリオについては、m=3のときに総合電流誤差Jが最小となるため、3番目の組合せ電圧パターン(図5参照)が最適パターンとして選択される。3番目の組合せ電圧パターンにおいては、U相については第1電圧パターン(図4参照)が選択され、V相についても同様であるが、W相については第3電圧パターン(図4参照)が選択されることになる。
さらに、この電圧パターン選択部48は、選択された最適な組合せ電圧パターンのうち、U相コイルに対応する部分につき、対応する時間比率γをメモリ(図示しない)から読み出し、その時間比率γと制御周期TSとの積として、時間指令値tuを計算する。この電圧パターン選択部48は、同様にして、時間指令値tvおよびtwを計算する。それら計算された時間指令値tu,tv,twは、図1に示すゲート信号発生部34に出力される。
図10には、以上説明した時間指令値決定部32の作動シーケンスの一例が概念的にフローチャートで表されている。その作動シーケンスは、図6に示すように、各シーケンシャル計算サイクルごとに実行される。
この作動シーケンスが実行されると、まず、ステップS1において、目標電流決定部30からdq軸指令電流値id*,iq*が入力される。
次に、ステップS2において、同期制御が行われる。具体的には、実モータ位置θmが実モータ状態検出部15から入力されるとともに、Δθ推定器46により前記変化量Δθが推定される。さらに、実モータ位置θmが、もとの値θmと変化量Δθとの和と等しくなるように補正される。
続いて、ステップS3において、今回の制御サイクルの開始時点で実モータ状態検出部15によって検出された3相実電流iu,iv,iwがその実モータ状態検出部15から入力される。
その後、ステップS4において、前記補正された実モータ位置(θm+Δθt)と、前記入力された3相実電流iu,iv,iwとに基づき、前述のテーブルに従い、仮想モータ60の入出力特性(特に、前記インダクタンス行例および電機子鎖交磁束ベクトルφ)が、そのときの実モータ12の実際の入出力特性をできる限り忠実に反映するように、決定される。
続いて、ステップS5において、組合せ電圧パターンの番号mが「1」にセットされる。その後、ステップS6において、単位計算サイクルの番号cが「1」にセットされる。続いて、ステップS7において、番号mの今回値と、番号cの今回値とに対応する3相指令電圧値Vu,Vv,Vwが電圧パターン発生部40によって発生させられ、それら3相指令電圧値Vu,Vv,Vwが仮想モータ60に入力される。
その後、ステップS8において、仮想モータ60が作動させられ、それにより、入力sれた3相指令電圧値Vu,Vv,Vwに基づき、前記電圧方程式を用いた計算が行われる。
続いて、ステップS9において、仮想モータ60から出力された3相仮想電流値Iu,Iv,Iwが仮想モータ状態検出部62によって検出される。
その後、ステップS10において、座標変換器44により、それら検出された3相仮想電流値Iu,Iv,Iwがdq軸仮想電流値Id,Iqに座標変換される。続いて、ステップS11において、番号cの現在値が最大値cmax(本実施形態においては、cmax=3)以上であるか否かが判定される。今回は、番号cの現在値が「1」であって、最大値cmaxより小さいため、ステップS11の判定がNOとなる。その後、ステップS12において、番号cが1だけインクリメントされる。続いて、ステップS7に戻る。
ステップS7−S12の実行が何回か繰り返された結果、ステップS11の判定がYESとなると、ステップS13において、番号mの現在値につき、誤差演算器48により、総合電流誤差J(m)(今回は、J(1))が計算される。その計算値は前記メモリに保存される。
続いて、ステップS14において、番号mcの現在値が最大値mmax(本実施形態においては、mmax=216)以上であるか否かが判定される。今回は、番号mの現在値が「1」であって、最大値mmaxより小さいため、ステップS14の判定がNOとなる。その後、ステップS15において、番号mが1だけインクリメントされる。続いて、ステップS6に戻る。
ステップS6−S15の実行が何回か繰り返された結果、ステップS14の判定がYESとなると、図11に示すステップS16において、216通りの組合せ電圧パターンのうち、対応する総合電流誤差Jが最小となるものが最適組合せ電圧パターンとして選択される。
続いて、ステップS17において、その選択された最適組合せ電圧パターンのうち、U相に対応する部分、V相に対応する部分およびW相に対応する部分につき、それぞれの時間比率γを用いて、時間指令値tu,tv,twがそれぞれ決定される。
その後、ステップS18において、それら決定された時間指令値tu,tv,twが、今回の制御サイクルの終了時点で、ゲート信号発生部34に出力される。
それら時間指令値tu,tv,twが入力されると、ゲート信号発生部34は、図4に例示するように、それら時間指令値tu,tv,twを反映するように、次回の制御サイクルのためのゲート信号を発生させ、そのゲート信号を実インバータ14に出力する。その結果、実モータ12が、図4に例示するように、時間指令値tu,tv,twを実現するように作動させられる。
続いて、ステップS19において、実モータ12の制御が終了したか否かが判定される。その制御が未だ終了していない場合には、ステップS19の判定がNOとなり、ステップS2に戻る。これに対し、その制御が終了した場合には、ステップS19の判定がYESとなり、この作動シーケンスの実行が終了する。
次に、図1に示すゲート信号発生部34を図12−図18を参照して説明する。ゲート信号発生部34は、前記時間指令値tu,tv,twが入力されると、それら時間指令値tu,tv,twについて個別に、かつ、後述の最小刻み時間ごとに動作タイミングが到来するごとに、一連の動作を行うように構成されている。
各時間指令値tu,tv,twが、1つの値ごとに、仮想モータ60の各回の計算サイクル(計算周期TP)の実行に使用されるとともに、実モータ12の各回の制御サイクル(制御周期TS)の実行に使用され、さらに、ゲート信号発生部34の各回の制御サイクル(制御周期TG)の実行にも使用される。計算周期TPと、制御周期TSと、制御周期TGとは、長さが互いに一致するとともに、互いに同期させられる。
図12に示すように、このゲート信号発生部34は、鋸波信号発生回路100と、絶対値検出回路102と、コンパレータ104と、符号検出回路106とを備えている。
具体的には、鋸波信号発生回路100は、図13において「鋸波信号」というラベルを付して示すように、ゲート信号発生部34の各回の動作サイクル(制御周期TG)ごとに、時間と共にレベルが一方向に変化する鋸波信号を反復的に発生させるように構成されている。この鋸波信号発生回路100は、各回の動作サイクル中、各回の動作タイミング(前記最小刻み時間が経過するごとに到来する)ごとに、前記鋸波信号のレベルを所定量ずつ(例えば、リニアに)増加させる。以下、その鋸波信号の、鋸波信号発生回路100の各回の動作タイミングにおけるレベルを「鋸波波高値」という。
本明細書において、「鋸波波高値」という用語は、鋸波信号の一周期内における最大振幅値を意味するのではなく、各瞬間における振幅値(すなわち、振幅の瞬間値)を意味する。
鋸波信号は、時間の長さを表す振幅を有し、さらに、実モータ12の制御周期TSと等しい制御周期TGを有する。この鋸波信号は、各時間指令値tu,tv,twの絶対値(ゲート24がオフ状態からオン状態に、またはオン状態からオフ状態に遷移する状態遷移点までの経過時間の長さを表す)と比較される。
具体的には、この鋸波信号は、各回の制御サイクルにおいて、振幅が0から正の最大振幅値まで、最小刻み時間が経過するごとに、それと同じ量だけ増加する。この鋸波信号の最大振幅値は、制御周期TGに等しく、ひいては、実モータ12の制御周期TSに等しい。
絶対値検出回路102は、図13において「時間指令値(絶対値)」というラベルを付して示すように、ゲート信号発生部34の各回の動作サイクルごとに、各時間指令値tu,tv,twが入力されると、各時間指令値tu,tv,twの絶対値を表す絶対値信号を、各回の動作サイクルの途中でレベルが変化しない全区間パルス信号(今回は、多値信号)として発生させるように構成されている。
コンパレータ104は、図13において「コンパレータ(入力)」というラベルと「コンパレータ(出力)」というラベルとを付してそれぞれ示すように、ゲート信号発生部34の各回の動作サイクル中、各回の動作タイミングごとに、鋸波信号発生回路100から出力された鋸波信号と、絶対値検出回路102から出力された絶対値信号とを互いに比較し、その比較結果を表す比較結果信号を、各回の制御サイクルの途中でレベルが変化することが可能であるパルス信号(今回は、2値信号)として発生させるように構成されている。
このコンパレータ104は、各回の動作タイミングごとに、前記鋸波波高値と前記絶対値とを互いに比較するとともに、鋸波波高値が絶対値より大きい場合には、比較結果が「真」であることを表す比較結果信号を出力する一方、鋸波波高値が絶対値以下である場合には、比較結果が「偽」であることを表す比較結果信号を出力する。
符号検出回路106は、図13において「時間指令値(符号)」というラベルを付して示すように、ゲート信号発生部34の各回の動作サイクルごとに、各時間指令値tu,tv,twが入力されると、各時間指令値tu,tv,twの符号を表す符号信号を全区間パルス信号(今回は、3値信号)として発生させるように構成されている。
このゲート信号発生部34は、さらに、図13において「ゲート信号」というラベルを付して示すように、ゲート信号発生部34の各回の動作サイクルごとに、コンパレータ104から出力された比較結果信号と、符号検出回路106から出力された符号信号とに基づき、前記ゲート信号Gu,Gv,Gw,Gx,Gy,Gzを、各回の制御サイクルの途中でレベルが変化することが可能であるパルス信号(今回は、電圧のコイルへの一方向印加と非印加という2状態のうちのいずれかを表す2値信号であるが、電圧のコイルへの正方向印加と逆方向印加と非印加という3状態のうちのいずれかを表す3値信号とすることも可能である)として発生させるように構成されているゲート信号出力部110を備えている。
本実施形態においては、そのゲート信号出力部110の一例を構成するために、立ち上がり検出回路120と、第1および第2のAND(論理和)回路122,124と、RS−FF回路126とを備えている。
立ち上がり検出回路120は、ゲート信号発生部34の各回の動作サイクルごとに、コンパレータ104の比較結果信号における立ち上がりエッジを検出することを目的とする。
その目的を達成するために、この立ち上がり検出回路120は、ゲート信号発生部34の各回の動作サイクル中、各回の動作タイミングごとに、コンパレータ104の比較結果の今回値(以下、単に「比較結果」という。)と比較結果の前回値(前回の動作タイミングにおいてコンパレータ104から出力された比較結果信号によって表されるものであり、以下、「一次遅れ比較結果」という。)とを互いに比較するとともに、一次遅れ比較結果が「偽」であり、かつ、今回の比較結果が「真」である場合(すなわち、鋸波信号が絶対値信号を上向きにクロスした場合)に、所望の立ち上がりエッジが検出されたことを表す「真」のエッジ信号を出力する一方、そうではない場合には、所望の立ち上がりエッジが検出されなかったことを表す「偽」のエッジ信号を出力するように構成されている。
第1のAND回路122は、時間指令値の符号が正である場合に、所望の立ち上がりエッジが検出されたタイミングで、時間指令値tu,tv,twのうち今回の処理対象である時間指令値に対応するゲート24(以下、単に「対応するゲート24」という。)をオフ状態からオン状態に切り替えるためのセット指令を出力するように構成されている。
第2のAND回路124は、時間指令値の符号が負である場合に、所望の立ち上がりエッジが検出されたタイミングで、対応するゲート24をオン状態からオフ状態に切り替えるためのセット指令を出力するように構成されている。
RS−FF回路126は、各回の制御サイクルについて、対応するゲート24に出力すべきゲート信号(以下、「対応するゲート信号」という。)を、いずれのAND回路122,124からもセット指令もリセット指令も入力されなかった区間については、対応するゲート24が前回の区間と同じ状態に維持されるように、生成するように構成されている。
この場合、RS−FF回路126は、対応するゲート24に、それの状態を維持するホールド信号を出力することになる。
さらに、RS−FF回路126は、ゲート信号発生部34の各回の動作サイクルについて、対応するゲート信号を、第2のAND回路124からリセット指令が出力されないが第1のAND回路122からセット指令が出力された区間については、対応するゲート24がオフ状態からオン状態に切り替わるように、生成するように構成されている。
この場合、RS−FF回路126は、対応するゲート24に、それの状態を、その制御サイクルの途中で、オフ状態からオン状態に変化させるターンオン信号を出力することになる。
さらに、RS−FF回路126は、各回の制御サイクルについて、対応するゲート信号を、第1のAND回路122からセット指令が出力されないが第2のAND回路124からリセット指令が出力された区間については、対応するゲート24がオン状態からオフ状態に切り替わるように、生成するように構成されている。
この場合、RS−FF回路126は、対応するゲート24に、それの状態を、その制御サイクルの途中で、オン状態からオフ状態に変化させるターンオフ信号を出力することになる。
図14には、以上のように構成されたゲート信号発生部34の作動シーケンスの一例が概念的にフローチャートで表されている。まず、ステップS101において、初期化が行われ、次に、ステップS102において、波形生成が行われる。続いて、ステップS103において、前記最小刻み時間が経過するのが待たれる。経過したならば、ステップS104において、ゲート信号発生部34の各回の動作サイクルの周期時間(制御周期TG)が満了したか否か、すなわち、その周期時間が、経過した1回または複数回分の最小刻み時間の累積値を表す累積刻み時間と等しいか否かが判定される。
今回は、周期時間TPが満了していないと仮定すると、ステップS104の判定がNOとなり、ステップS105において、累積刻み時間が1回分の最小刻み時間だけ増加させられる。その後、ステップS102に戻る。これに対し、今回は、周期時間TPが満了したと仮定すると、ステップS104の判定がYESとなり、ステップS106において、累積刻み時間が「0」にリセットされる。その後、ステップS105に移行する。
図15には、図14に示すステップS101の詳細がフローチャートで表されている。ステップS101は、ステップS201を有しており、そのステップS201においては、ゲート信号発生部の一連の動作に先立ち、各種変数が初期化される。
図16−図18には、図14に示すステップS102の詳細がフローチャートで表されている。ステップS102は、ステップS301−S322を有している。
図16に示すように、まず、ステップS301において、累積刻み時間と同じ値となるように、今回の動作タイミングでの鋸波波高値が計算される。次に、ステップS302において、時間指令値tu,tv,twのうち今回の処理対象である時間指令値から、それの絶対値が検出される。
続いて、ステップS303において、今回の時間指令値から、それの符号が検出される。その時間指令値が負の値であれば、ステップS304において、符号信号が「−1」とされる。その時間指令値が0であれば、ステップS305において、符号信号が「0」とされる。その時間指令値が正の値であれば、ステップS306において、符号信号が「+1」とされる。
その後、ステップS307において、今回の動作タイミングで、鋸波波高値が前記絶対値より大きいか否かが判定される。鋸波波高値が前記絶対値より大きい場合には、ステップS308において、コンパレータ104の比較結果が真とされるが、鋸波波高値が前記絶対値以下である場合には、ステップS309において、コンパレータ104の比較結果が偽とされる
続いて、図17に示すステップS310において、前記一次遅れ比較結果が偽であり、かつ、前記今回の比較結果が真であるか否か、すなわち、鋸波信号が絶対値信号を上向きにクロスしたか否かが判定される。前記一次遅れ比較結果が偽であり、かつ、前記今回の比較結果が真である場合には、ステップS311において、エッジが検出されたと判定されるが、そうではない場合には、ステップS312において、エッジが検出されなかったと判定される。
その後、ステップS313において、ステップS310の次回の実行に備えて、今回の比較結果が、一次遅れ比較結果(ステップS310の次回の実行に用いられる)と等しくされる。
続いて、ステップS314において、前記エッジが検出されたか否かが判定される。前記エッジが検出されなかった場合には、ステップS315において、第1および第2のAND回路122,124のいずれからも前記セット指令も前記リセット指令も出力されない。これに対し、前記エッジが検出された場合には、ステップS314の判定がYESとなり、ステップS316において、前記符号信号が「0」であるか、「−1」であるか、または「+1」であるかが判定される。
前記フラグが「0」である場合には、ステップS315に移行する。前記フラグが「−1」である場合には、ステップS317において、第1のAND回路122からセット指令が出力されることなく、第2のAND回路124からリセット指令が出力される。、前記フラグが「+1」である場合には、ステップS318において、第2のAND回路124からリセット指令が出力されることなく、第1のAND回路122からセット指令が出力される。
その後、図18に示すステップS319において、第2のAND回路124からリセット指令が出力されたか否かが判定される。リセット指令が出力された場合には、ステップS320において、前記対応するゲート24に出力されるゲート信号のレベルが、そのゲート24をオフ状態に切り替えるためのレベルに変化させられる。
これに対し、第2のAND回路124からリセット指令が出力されなかった場合には、ステップS321において、第1のAND回路122からセット指令が出力されたか否かが判定される。セット指令が出力された場合には、ステップS322において、前記対応するゲート24に出力されるゲート信号のレベルが、そのゲート24をオン状態に切り替えるためのレベルに変化させられる。
これに対し、第1および第2のAND回路122,124のいずれからもセット指令もリセット指令も出力されなかった場合には、前記対応するゲート24に出力されるゲート信号のレベルが、そのゲート24が同じ状態に維持されるように、維持される。
以上の説明から明らかなように、本実施形態によれば、実モータ12への入力電圧の高さの時間的推移を表す従来の指令信号とは異なる種類の指令信号がゲート信号発生部34に入力されても、ゲート信号発生部34がゲート信号を発生させることが可能となる。
具体的には、本実施形態によれば、ゲート24がオフ状態からオン状態に、またはオン状態からオフ状態に遷移する状態遷移点が出現するタイミングの時間的推移(例えば、そのタイミングが属する回の制御サイクルの開始時点からそのタイミングまでの経過時間の長さの時間的推移)を表す指令信号からゲート信号が発生させられる。
さらに、本実施形態においては、ゲート24がオン状態とオフ状態とのいずれかを連続的に取り続ける単位制御区間(図4に示す制御周期TR)が複数個並んだ連続制御区間(図4に示す制御周期TQ)が想定され、その連続制御区間の間にゲート24の電圧が取り得る複数の電圧シーケンスである複数の候補電圧パターン(ゲート24がオン状態とオフ状態とに切り替えられるパターン)のうち最適なものが事前に探索され、その探索された最適電圧パターンを直接的に反映するゲート信号が発生させられる。
したがって、本実施形態によれば、実モータ12への入力電圧の高さに注目することなく、ゲート24がオン/オフ制御される可能性がある複数の電圧パターンに最初から注目し、それらのうちの最適な電圧パターンが総当たり探索によって取得され、その最適な電圧パターンを反映するようにゲート信号が発生させられる。
一方、コイルをオン/オフ制御する場合に、そのコイルがオン状態にある時間の累積値が同じであっても、そのコイルがオン状態に切り替えられる頻度などにより、そのコイルから出力される電流が変動するのが一般的である。そのため、コイルへの印加電圧の高さからそのコイルをオン/オフ制御するパターンを決定しても、所望の電流がコイルから出力されない可能性がある。
これに対し、本実施形態によれば、複数の電圧パターンのうち、各電圧パターンで実モータ12を駆動した場合にその実モータ12から出力される電流値の、目標電流値からの誤差が最小であるものが最適な電圧パターンとして選択される。
したがって、本実施形態によれば、できる限り理想に近い形で、実モータ12を制御するために必要なゲート信号が発生させられる。その結果、例えば、実モータ12のコイルが必要以上に頻繁に励磁状態と非励磁状態とに切り替わることが抑制され、それにより、実モータ12の回転運動がスムーズになるとともに、実モータ12のコイル発熱が抑制されて負担が軽減されるという効果が得られる可能性がある。
さらに、本実施形態においては、各時間指令値tu,tv,twが、対応するゲート24がオフ状態とオン状態との間において切り替えられるタイミングを表す絶対値のみならず、対応するゲート24がオフ状態とオン状態との間において切り替えられる向きを表す符号をも有するように定義されている。したがって、例えば、図4に示すように、6つの候補電圧パターンを採用することが可能となる。
これに対し、本発明は、各時間指令値tu,tv,twが、対応するゲート24がオフ状態とオン状態との間において切り替えられるタイミングを表す絶対値のみを有する態様で実施することも可能である。この実施態様によれば、例えば、図4に示す例においては、第1−第4候補電圧パターンという4つの候補電圧パターン、または、第1および第4−第6候補電圧パターンという4つの候補電圧パターンしか採用することができない。しかし、図4に示す例より少ない数の候補電圧パターンしか採用することができなくても、実モータ12を十分に精度よく制御することが可能である場合がある。
以上、本発明の実施の形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、前記[発明の概要]の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。