(58)【調査した分野】(Int.Cl.,DB名)
【背景技術】
【0002】
モータの駆動方式として、矩形波駆動、正弦波駆動、ベクトル制御などが知られている。このうちベクトル制御は、モータのコイル電流を直交するd軸成分およびq軸成分に分解し、それぞれを個別に制御するものであり、正弦波駆動の一種とも言える。ベクトル制御は、制御効率が高いという利点を有するが、制御が複雑である。
【0003】
矩形波駆動や正弦波駆動は、アナログ回路あるいはデジタル回路などのハードウェアのみで実現することが可能である。一方、ベクトル制御は、その複雑さゆえに、ハードウェアのみで制御回路を構成することが困難であり、プロセッサ(マイコン)とプログラムの組み合わせによってソフトウェア制御に頼るのが一般的である。
【0004】
モータを適切に駆動するために、モータの機械的状態(回転数やロータの位置)に関する情報が必要となる。モータの機械的状態は、ロータリエンコーダやレゾルバといった回転センサによって検出することが可能である。あるいはセンサレス方式では、モータの電気的状態(モータのコイル電流および/またはコイル電圧)にもとづいて、モータの機械的状態を推定し、推定された状態にもとづいて駆動制御信号を生成する必要がある。
【0005】
図1は、ソフトウェア制御を利用したモータの駆動装置4Rのブロック図である。ここではセンサレス駆動を例とする。モータ2は三相ブラシレスモータである。駆動装置4Rは、主として、三相インバータ6およびモータ制御回路10Rを備える。
【0006】
モータ制御回路10Rは、主としてA/Dコンバータモジュール12、プロセッサ14、パルス幅変調器16を備える。A/Dコンバータモジュール12は、モータ2の電気的状態、すなわちコイル電流やコイルの電圧に応じたアナログの検出信号S1を、デジタルの検出信号S2に変換する。たとえばインバータ6には、U相、V相、W相の電流を検出するためのセンス抵抗Rs
U,Rs
v,Rs
wが設けられている(3シャント構成という)。センス抵抗Rsには、対応する相のコイル電流に比例した電圧降下が発生する。センス抵抗Rs
U〜Wの電圧降下は、複数のアナログポートを介して、A/Dコンバータモジュール12に入力される。A/Dコンバータモジュール12には、そのほかにも図示しないアナログ信号が入力可能となっている。
【0007】
プロセッサ14は、A/Dコンバータモジュール12からのデジタルの検出信号S2にもとづいて、モータ2の駆動制御信号(たとえば三相電圧の指令値)S3を生成する。プロセッサ14は、ユーザがあらかじめ記述したプログラム18を実行するように構成される。
【0008】
パルス幅変調器16は、駆動制御信号S3をパルス幅変調(PWM:Pulse Width Modulation)し、インバータ6の制御信号S4を生成する。インバータ6は、パルス幅変調器16からの制御信号S4に応じてスイッチングする。
【発明の概要】
【発明が解決しようとする課題】
【0011】
モータ制御回路10Rに求められる機能は、組み合わせられるモータ2の種類、駆動形式、用途によってさまざまである。たとえば電流検出の方式として、
図1に示す3シャント構成の他に、3相で1個のセンス抵抗が共有される1シャント構成が存在する。A/Dコンバータは、前者において3個の電流検出信号を処理し、後者においては1個の電流検出信号を処理することとなり、A/D変換の適切なタイミングも両者で異なる。
【0012】
モータ制御回路10Rに、多様な用途、駆動形式、モータとの組み合わせで使用可能な汎用性、柔軟性を持たせることができれば、モータ制御回路10Rのベンダーにとっては、品種数を減らすことができ、開発コスト、在庫管理の観点から有利である。またモータ制御回路10Rの購入者(ユーザ)にとっても、ハードウェア(すなわちモータ制御回路10R)を共通として、ソフトウェア(すなわちプログラム18)を修正することによりさまざまな用途、駆動形式、モータに対応することができれば、モータ2を搭載するさまざまな機器1の開発期間を短縮できる。
【0013】
本発明者は、従来のモータ制御回路10Rについて検討した結果、以下の課題を認識するに至った。すなわち従来のモータ制御回路10Rでは、A/Dコンバータモジュール12によるA/D変換の順序、タイミング、A/D変換の対象となるアナログポートをソフトウェアによって自由に設定、制御することができず、このことが、モータ制御回路10Rの汎用性、柔軟性を高めることの障壁の一因となっていた。
【0014】
本発明は係る課題に鑑みてなされたものであり、そのある態様の例示的な目的のひとつは、モータの制御回路において、ソフトウェア制御の容易性や柔軟性を提供することにある。
【課題を解決するための手段】
【0015】
本発明のある態様は、モータの制御回路に関する。制御回路は、それぞれにモータの電気的状態を示す検出信号が入力可能な複数m個(mは2以上の整数)のアナログポートと、m個のアナログポートそれぞれの検出信号を受けるマルチプレクサを有し、マルチプレクサが選択した検出信号をデジタルデータに変換するA/Dコンバータと、デジタルデータにもとづいてモータの駆動指令を生成するプロセッサと、プロセッサからの制御指令に応じてA/Dコンバータの動作を制御するとともに、デジタルデータをプロセッサに受け渡すインタフェース回路と、を備える。インタフェース回路は、ランレジスタ(RUN)と、ソフトウェアモードとハードウェアモードの一方を指定する値を格納するモードスタートレジスタ(MODE_START)と、を含む。インタフェース回路は、(i)ソフトウェアモードにおいて、ランレジスタのアサートをA/Dコンバータの動作スタートのトリガとし、(ii)ハードウェアモードにおいて、制御回路において生成される少なくともひとつの内部信号をA/Dコンバータの動作スタートのトリガとする。
【0016】
本明細書において、「レジスタのアサート」とは、そのレジスタに所定値(たとえば1)が書き込まれたことに対応する。
ハードウェアモードでは、A/Dコンバータを、制御回路の状態に同期させることができる。またソフトウェアモードにおいては、ハードウェアの状態に依存せずに、ソフトウェア制御によって、A/Dコンバータをトリガできる。
【0017】
インタフェース回路は、少なくともひとつの内部信号のひとつであるスタートイベント信号にもとづいてスタートタイミング信号を生成するタイミング信号生成回路と、スタートタイミング信号をA/Dコンバータの動作スタートのトリガとして、A/Dコンバータを制御するアクセス制御部と、を含んでもよい。
【0018】
インタフェース回路はさらに、イベント選択レジスタ(EVENT_SEL)と、複数の内部信号を受け、イベント選択レジスタに格納される値に応じたひとつを選択し、スタートイベント信号を出力するイベントセレクタと、を含んでもよい。タイミング信号生成回路は、スタートイベント信号にもとづいてスタートタイミング信号を生成してもよい。
これにより、動作スタートのトリガとなる内部信号(すなわちイベント)をソフトウェア制御できる。
【0019】
インタフェース回路はさらに、ハードウェアモードにおいて、スタートイベント信号のアサートからスタートタイミング信号のアサートまでの遅延時間の設定値を格納する遅延設定レジスタ(EVENT_DELAY_SEL,EVENT_DELAY_EN)を含んでもよい。タイミング信号生成回路は、スタートイベント信号に遅延設定レジスタの設定値に応じた遅延を与えて、スタートタイミング信号を出力する遅延回路を含んでもよい。
本明細書において、「信号のアサート」とは、その信号が所定レベルに遷移することに対応し、別の観点からは、その信号の所定のエッジが発生することに対応する。これにより動作スタートのタイミングを細かくソフトウェア制御できる。
【0020】
インタフェース回路によるA/Dコンバータの1制御周期は、n(nは2以上の整数)を最大とするk回(1≦k≦n)のA/D変換を含んでもよい。インタフェース回路はさらに、1回変換モードと連続変換モードの一方を指定する値を格納するモードバーストレジスタ(MODE_BURST)を含んでもよい。インタフェース回路は、(i)1回変換モードにおいて、1制御周期の変換処理が終了すると、次の動作スタートを待機し、(ii)連続変換モードにおいて、1制御周期の変換処理が終了すると、次の動作スタートを待たずに、次の制御周期に移行してもよい。
1回変換モードと連続変換モードを選択可能とすることで、さらなる柔軟性が提供される。
【0021】
インタフェース回路はさらに、1制御周期に含まれる変換の回数kを指定する値を格納するレジスタ(BURST_SEL)を含んでもよい。
これにより、必要最低限の変換処理が行われるため、プロセッサの負荷を減らすことができる。
【0022】
インタフェース回路によるA/Dコンバータの1制御周期は、n(nは2以上の整数)を最大とするk回(1≦k≦n)のA/D変換を含んでもよい。インタフェース回路はさらに、A/D変換ごとに、少なくともひとつの内部信号のひとつである変換イベント信号にもとづいて変換タイミング信号を生成するタイミング信号生成回路と、A/D変換ごとに、変換タイミング信号をA/D変換のトリガとして、A/Dコンバータを制御するアクセス制御部と、を含んでもよい。アクセス制御部は、シーケンシャルモードにおいて、k回のA/D変換それぞれを、対応する変換タイミング信号をトリガとして実行してもよい。
これにより、A/D変換のタイミングを、ハードウェアの状態にもとづいて制御できる。
【0023】
インタフェース回路はさらに、最大n回のA/D変換それぞれについて、トリガとすべき内部信号を個別に指定する値を格納するn個の個別イベント選択レジスタ(EVENT_SEL0-EVENT_SELn-1)と、複数の内部信号を受け、A/D変換ごとに、複数の内部信号のうち、n個の個別イベント選択レジスタのうち対応するひとつに格納される値に応じたひとつを選択し、変換イベント信号を出力するイベントセレクタと、を含んでもよい。タイミング信号生成回路は、シーケンシャルモードにおいて、A/D変換ごとに変換イベント信号にもとづいて、変換タイミング信号を生成してもよい。
これにより、変換毎に、トリガとするイベントを独立かつ個別に設定できる。
【0024】
インタフェース回路はさらに、最大n回のA/D変換それぞれについて、変換イベント信号のアサートから変換タイミング信号のアサートまでの遅延時間の設定値を格納する遅延設定レジスタ(EVENT_DELAY_SEL0〜EVENT_DELAY_SELn-1、EVENT_DELAY_EN0〜EVENT_DELAY_ENn-1)を含んでもよい。タイミング信号生成回路は、A/D変換ごとに、対応する変換イベント信号に、対応する遅延設定レジスタの設定値に応じた遅延を与えて、変換タイミング信号を出力する遅延回路を含んでもよい。
これにより、A/D変換のタイミングを細かくソフトウェア制御できる。
【0025】
インタフェース回路はさらに、オートモードとシーケンシャルモードの一方を指定する値を格納するモードシーケンスレジスタ(MODE_SEQ)を含んでもよい。インタフェース回路はオートモードにおいて、k回のA/D変換を自動的に実行してもよい。
オートモードでは、k回のA/D変換を、インタフェース回路が自動生成するタイミングで行うことができ、A/D変換のタイミングがそれほどシビアでない状況において有用である。シーケンシャルモード(マニュアルモード)では、各A/D変換のタイミングを個別にマニュアルで指定することができ、シビアなタイミング制御に対応できる。
【0026】
制御回路は、A/Dコンバータを、複数チャンネル備えてもよい。
【0027】
制御回路は、ひとつの半導体基板に一体集積化されてもよい。
「一体集積化」とは、回路の構成要素のすべてが半導体基板上に形成される場合や、回路の主要構成要素が一体集積化される場合が含まれ、回路定数の調節用に一部の抵抗やキャパシタなどが半導体基板の外部に設けられていてもよい。
【0028】
本発明の別の態様は、ファンに関する。ファンは、ファンモータと、ファンモータを駆動する上述のいずれかの制御回路と、を備える。
【0029】
なお、以上の構成要素の任意の組み合わせや本発明の構成要素や表現を、方法、装置、システムなどの間で相互に置換したものもまた、本発明の態様として有効である。
【発明の効果】
【0030】
本発明のある態様によれば、ソフトウェア制御の容易性や柔軟性を提供できる。
【発明を実施するための形態】
【0032】
(全体構成)
図2は、実施の形態に係る制御回路10を備える駆動装置4のブロック図である。駆動装置4はモータ2とともに機器1に用いられる。機器1の種類は特に限定されないが、家電製品をはじめ、OA機器、産業機器、車載機器、携帯用電子機器など多岐にわたって利用することができる。身近なところでは、エアコンや冷蔵庫などのコンプレッサや、多くの機器の冷却用のファンに、モータ2が用いられている。駆動装置4は、制御回路10に加えて、インバータ6を備える。インバータ6は、U相、V相、W相のブリッジ回路(ドライバ)を含む。
【0033】
本実施の形態において、制御回路10の制御対象は三相ブラシレスモータであり、センサレス方式でインバータ6を制御するものとする。制御回路10からインバータ6へは、U,V,W相それぞれのハイサイドスイッチ、ローサイドスイッチを制御するために必要な駆動信号が出力される。
【0034】
制御回路10は、ひとつの半導体基板に集積化された機能IC(Integrated Circuit)であり、モータ2の電気的状態を監視し、その結果にもとづいて、駆動信号を生成する。制御回路10は、複数m個(mは2以上の整数)のアナログポートPORT-0〜PORT-m-1が設けられる。本実施の形態ではm=8とし、PORT-0〜PORT-7が設けられる。各アナログポートには、モータ2の電気的状態を示す検出信号が入力可能である。なお各アナログポートには、そのほかの電気信号、たとえばサーミスタなどの温度センサの出力電圧や、モータ2の回転数を指示するアナログ電圧などを入力してもよい。
【0035】
図2には3シャント構成が示されており、U,V,W相ごとにセンス抵抗(シャント抵抗)R
Sが設けられ、各センス抵抗は、ひとつのアナログポートに割り当てられ、それぞれの電圧降下が検出信号として割り当てられたアナログポートに入力される。1シャント構成の場合、1個のシャント抵抗の電圧降下が、いずれかのアナログポートに入力される。
【0036】
制御回路10は、主として、デジタル演算処理部30、A/Dコンバータ50、メモリ60、クロック発生器70を備える。本発明と関係のないブロックは省略されている。A/Dコンバータ50は、その入力側に、m個のアナログポートそれぞれの検出信号を受けるマルチプレクサ52を有する。A/Dコンバータ50は、マルチプレクサ52が選択した検出信号をデジタルデータ(変換データ)DOUTに変換する。
図2の制御回路10は、3チャンネル分ch0〜ch2のA/Dコンバータ50を備えるが、チャンネル数は任意である。A/Dコンバータ50の構成、方式は特に限定されないが、たとえば逐次比較型のA/Dコンバータを用いてもよい。
【0037】
デジタル演算処理部30は、A/Dコンバータ50からの変換データDOUTを受け、インバータ6を制御するためのPWM信号(PWM_U,PWM_V,PWM_Wおよびそれらの反転信号#PWM_U,#PWM_V,#PWM_W)を生成する。デジタル演算処理部30のシステムプラットフォーム32は、いわゆる組み込みプロセッサであり、たとえばARM社が提供するARMアーキテクチャを用いて構成してもよい。システムプラットフォーム32は、CPUコア34に加えて、メモリコントローラ36,38、パワーマネージメントユニット40、システムコントローラ42などが内蔵される。
【0038】
メモリ60は、フラッシュメモリなどの不揮発性メモリ62と、SRAMなどの揮発性メモリ64を含む。不揮発性メモリ62には、CPUコア34が実行すべきプログラムが格納される。揮発性メモリ64は、主記憶装置として利用される。
【0039】
デジタル演算処理部30のうちモータ制御ブロック44は、モータ2の制御に固有の回路ブロックである。ADCインタフェース(インタフェース回路)46は、システムプラットフォーム32とA/Dコンバータ50のインタフェースであり、A/Dコンバータ50からの変換データをCPUコア34に受け渡す。また詳しくは後述するが、A/Dコンバータ50の動作は、CPUコア34によってソフトウェア制御可能となっている。ADCインタフェース46は、CPUコア34からの制御指令に応じて、A/Dコンバータ50の動作を制御する。CPUコア34からADCインタフェース46への制御指令は、後述する制御レジスタへの書き込みによって行われる。
【0040】
システムプラットフォーム32は、プログラムを実行することにより、モータ2の駆動指令(たとえば3相の電圧指令値)を生成する。パルス幅変調器48は、システムプラットフォーム32が生成した駆動指令をパルス幅変調し、U,V,W相のPWM信号およびその反転信号を生成する。なおモータの制御方式やアルゴリズムは特に限定されず、公知のベクトル制御の技術を用いることができる。
【0041】
システムプラットフォーム32内の各ブロックと、モータ制御ブロック44内の各ブロックは、バス31を介して接続され、レジスタを介してさまざまなデータや制御ビットを、相互に参照し、あるいは書き込み可能となっている。
【0042】
以上が制御回路10の全体構成である。続いて、ADCインタフェース46について説明する。
【0043】
(ADCインタフェース)
図3は、
図2の制御回路10の一部の詳細なブロック図である。
図3には、ADCインタフェース46の構成が詳細に示されている。ADCインタフェース46は、ADC I/Fレジスタ(以下、単にレジスタと称する)80、インタフェースユニット82_1〜82_3、イベントセレクタ84を備える。インタフェースユニット82は、チャンネルごとに設けられ、それらは同様に構成される。
【0044】
ADCインタフェース46は、CPUコア34と同じシステムクロックCLK_SYS(たとえば40MHz)と同期して動作する。一方、複数のA/Dコンバータ50は、A/Dコンバータ50の変換周波数動作範囲(たとえば16MHz)のクロックCLK_IRと同期して動作する。ADCインタフェース46とA/Dコンバータ50は、非同期であってよい。
【0045】
図4は、ADCインタフェース46とA/Dコンバータ50のインタフェースを説明する図である。
図4には1回の変換動作が示される。A/Dコンバータ50はたとえば12ビット逐次比較型であり、1回の変換に、クロックCLK_IRの12サイクルを要する。変換に先だって、ADCインタフェース46からA/Dコンバータ50に対して、アナログポートを指定するポート選択信号PORT_SEL[2:0]が与えられる。変換開始信号CONV_IHがアサートされると、A/D変換が開始される。そして12サイクルの経過後に、12ビット分の変換が完了すると、変換完了信号TRIG_OUT_OHがアサートされ、12ビットの変換データDOUT[11:0]が有効となる。なおA/Dコンバータ50のビット数は特に限定されず、10ビットあるいは8ビットであってもよく、あるいはビット数が可変であってもよい。
【0046】
図3に戻る。レジスタ80は、CPUコア34からバス31を介してアクセス可能である。レジスタ80は、チャンネルごとに、データレジスタと制御レジスタを含む。各チャンネルのデータレジスタには、そのチャンネルのA/Dコンバータ50が生成した変換データDOUTが格納される。CPUコア34は、データレジスタにアクセスすることにより、複数のアナログポートPORT-0〜PORT7に入力された検出信号のデジタル値を取得する。また各チャンネルのA/Dコンバータ50の動作は、CPUコア34がそのチャンネルの制御レジスタに書き込んだ値にもとづいて制御される。具体的にはADCインタフェース46は、制御レジスタの値にもとづいて、ポート選択信号PORT_SELおよび変換開始信号CONV_IHのタイミングを制御する。
【0047】
(制御周期)
続いて、制御周期について説明する。ADCインタフェース46によるA/Dコンバータ50の1制御周期は、n(nは2以上の整数)を最大とするk回(1≦k≦n)のA/D変換を含む。本実施の形態ではn=8とする。以下では1チャンネル分について説明する。
【0048】
回数kを設定するために、以下の制御レジスタが設けられる。なお本明細書に示す制御レジスタの値は例示であり、別の値を割り当ててもよい。またレジスタの名称も便宜的なものである。
【0049】
・回数レジスタ (BURST_SEL)
000: k=1
001: k=2
〜
111: k=8
レジスタBURST_SELには、変換回数kを指定する値が格納される。変換回数kの最大値はnと等しい。すなわち、1≦k≦nである。
【0050】
つまり、1制御周期の間にk回のA/D変換が行われ、したがってk個(最大8個)の変換データDOUT0〜DOUTk-1が生成される。DOUTi-1はi回目の変換データを表し、
図4のDOUT[11:0]に相当する。最大n個の変換データDOUT0〜DOUTn-1を格納するために、n個のデータレジスタが設けられる。
【0051】
・データレジスタ (DATA0-DATAn-1)
データレジスタDATAの個数は、最大変換回数nと等しい。n個のデータレジスタ(DATA0-DATAn-1)は、n回分の変換データDOUT0〜DOUTn-1を格納する。変換データDOUT0〜DOUTn-1の格納は、上述したアクセス制御部92が行う。
【0052】
・ポート選択レジスタ (PORT_SEL0-PORT_SELn-1)
000: 1番目のポート PORT-0
001: 2番目のポート PORT-1
010: 3番目のポート PORT-2
〜
110: 7番目のポート PORT-6
111: 8番目のポート PORT-7
マルチプレクサ52の制御のために、ポート選択レジスタは、最大変換回数と等しいn個、設けられる。i番目のポート選択レジスタPORT_SELiの値Xi-1は、i回目のA/D変換において、マルチプレクサ52が選択すべきアナログポートを指定する。ポート選択レジスタPORT_SEL3の値X3が0であるとき、4回目のA/D変換において、1番目のアナログポートPORT-0が選択される。
【0053】
図5は、A/Dコンバータ50およびADCインタフェース46の1制御周期の動作波形図である。はじめに、1回目の変換に先立ち、マルチプレクサ52に対するポート選択信号PORT_SELとして、1番目のポート選択レジスタPORT_SEL0の値がセットされる。続いて、変換開始信号CONV_IHがアサートされると変換が開始し、変換が終了すると、変換終了信号TRIG_OUT_OHがアサートされ、1回目の変換データDOUT0が有効となる。続いて、2回目の変換に先立ち、マルチプレクサ52に対するポート選択信号PORT_SELとして、2番目のポート選択レジスタPORT_SEL1の値がセットされる。続いて、変換開始信号CONV_IHがアサートされると変換が開始し、変換が終了すると、変換終了信号TRIG_OUT_OHがアサートされ、2回目の変換データDOUT1が有効となる。同様の処理をk回繰り返すと1制御周期が終了する。
【0054】
(イベント)
続いて
図3に戻り、イベントについて説明する。制御回路10は、制御回路10の内部で発生するさまざまなイベントをトリガとして制御可能に構成される。制御回路10の内部において生成され、そのエッジ(あるいはレベル)がイベントの発生を表す信号を、内部信号と称する。
【0055】
本実施の形態において、制御回路10では、以下のイベントのうち、少なくともひとつ、好ましくは複数が利用可能となっている。
・ U相 ターンオンイベント
・ U相 ターンオフイベント
・ V相 ターンオンイベント
・ V相 ターンオフイベント
・ W相 ターンオンイベント
・ W相 ターンオフイベント
【0056】
たとえばU相のターンオン、ターンオフのイベントを用いたい場合、パルス幅変調器48において生成されるU相PWM信号PWM_Uを内部信号として用いればよく、そのポジティブエッジ、ネガティブエッジそれぞれが、U相のターンオン、ターンオフに対応する。あるいは反転信号#PWM_Uを内部信号として用いてもよく、そのネガティブエッジ、ポジティブエッジそれぞれが、U相のターンオン、ターンオフに対応する。本明細書において#は、論理反転を表す。
【0057】
同様に、V相のターンオン、ターンオフのイベントを用いたい場合、V相PWM信号PWM_V(もしくはその反転信号#PWM_V)を内部信号として用いればよく、W相のターンオン、ターンオフのイベントを用いたい場合、W相PWM信号PWM_W(もしくはその反転信号#PWM_W)を内部信号として用いればよい。
【0058】
また制御回路10では、イベントとして、パルス幅変調器48において使用される三角波のピーク(山)およびボトム(谷)が利用可能となっている。
・PWMの三角波のピークイベント、ボトムイベント
【0059】
ピーク、ボトムに対応する内部信号として、パルス幅変調器48からADCインタフェース46には、三角波のピークおよびボトムを表すピークボトム検出信号S
P/Bが供給される。たとえばピークボトム検出信号S
P/Bは、ピーク、ボトムそれぞれにおいて、システムクロックCLK_SYSの1サイクル、アサート(たとえばハイレベル)される。
【0060】
ピークボトムパルス発生器86は、ピークボトム検出信号S
P/Bを受け、ピーク、ボトムごとにレベルが遷移するピークボトムパルスP
P/Bを生成する。
【0061】
図6は、パルス幅変調器48およびピークボトムパルス発生器86の動作波形図である。パルス幅変調器48においてタイマカウンタは、PWM周期の三角波を生成し、ピーク、ボトムそれぞれにおいて、ピークボトム検出信号S
P/Bをアサート(たとえばハイレベル)する。ピークボトムパルス発生器86は、ピークボトム検出信号S
P/Bがアサートされるたびに、ピークボトムパルスP
P/Bのレベルを遷移させる。こうして生成されたピークボトムパルスP
P/Bは、そのほかの内部信号(PWM_U〜PWM_W)と同様に、PWM周期を有するパルス信号となり、それらを同等に扱うことが可能である。
【0062】
図3に戻る。イベントセレクタ84は、各チャンネルについて、複数の内部信号からひとつを選択し、イベント信号EVTとして、対応するインタフェースユニット82に供給する。イベント信号EVTに使用する内部信号は、レジスタ80の制御レジスタの値に応じてチャンネルごとに個別に選択可能である。
【0063】
各チャンネルにおいて、インタフェースユニット82は、イベントセレクタ84からのイベント信号EVTにもとづいて、タイミング信号TMGを生成し、タイミング信号TMGに応じてA/Dコンバータ50の動作を制御する。これをハードウェアモードという。なお後述するように、A/Dコンバータ50を、イベント信号EVTに依存せずに制御することも可能であり、これをソフトウェアモードと称する。
【0064】
図7は、内部信号とイベントを示す図である。
図3に示すように、ADCインタフェース46には、複数の内部信号PWM_U,PWM_V,PWM_W,ピークボトムパルスP
P/Bが入力される。したがって各PWM周期において、8個のイベント(i)〜(viii)を、タイミング制御(具体的には後述するスタート状態の制御や変換タイミング)に利用することができる。非特許文献1に記載の従来技術では、17ページに記載のように、A/D変換の動作タイミングが、ハードウェアとして構成されるトリガ発生器(Trigger generator)によって生成されており、したがって、A/Dコンバータのタイミング制御に、ソフトウェアを介在させることができず、柔軟性に欠けていた。これに対して本実施の形態によれば、内部信号(イベント)を利用して、自由にA/Dコンバータ50のタイミングを制御することができる。これは、プログラムの自由度を高め、あるいはモータの制御性を高めることに寄与する。
【0065】
(イベントセレクタ84およびインタフェースユニット82)
図8は、イベントセレクタ84およびインタフェースユニット82の構成例を示す図である。イベントセレクタ84は、チャンネルごとに設けられたセレクタ88_1〜88_3を含む。各セレクタ88は、対応する制御レジスタに格納された値に応じた内部信号を選択してイベント信号EVTを生成し、対応するインタフェースユニット82に出力する。
【0066】
続いてインタフェースユニット82の構成を説明する。ここでは第3チャンネルch2の構成のみを示すが、そのほかのチャンネルも同様に構成される。インタフェースユニット82は、タイミング信号生成回路90、アクセス制御部92、変換データバッファ94、エラー検出部96を備える。
【0067】
タイミング信号生成回路90は、イベントセレクタ84からのイベント信号EVTに応じて、タイミング信号TMGを生成する。たとえばタイミング信号生成回路90は、エッジセレクタ100、遅延回路102、遅延セレクタ104、非同期処理回路106を含む。
【0068】
上述のように、イベントセレクタ84から出力されるイベント信号EVTは、PWM周期を有するパルス信号である。エッジセレクタ100は、イベント信号EVTのポジティブエッジ、ネガティブエッジのうち、対応する制御レジスタの値に応じた一方を検出し、それを切り出す。つまり、ポジティブエッジ、ネガティブエッジそれぞれに対応する一方のイベントを選択する。遅延回路102は、カウンタを用いて構成され、切り出されたエッジ信号に、対応する制御レジスタの値に応じた遅延を与える。遅延セレクタ104は、それと対応する制御レジスタに応じて、遅延された、および遅延されない信号の一方を選択する。非同期処理回路106は、システムクロックCLK_SYSと同期した遅延セレクタ104の出力を、A/Dコンバータ側のクロックCLK_IRに同期処理し、タイミング信号TMGを生成する。
【0069】
アクセス制御部92は、主として2つの機能を担う。ひとつは、ハードウェアモードにおいて、タイミング信号TMGをトリガとして、A/Dコンバータ50の変換タイミングを制御する機能(アクセスタイミング生成)である。もうひとつは、A/Dコンバータ50から得られた変換データDOUTを、レジスタ80のデータレジスタDATAに格納する機能(ADC制御)である。
【0070】
変換データバッファ94は、A/Dコンバータ50が生成したデジタル値を一時的に格納する。エラー検出部96は、アクセス制御部92の状態にもとづいて、A/Dコンバータ50やインタフェースユニット82における異常の有無を判定する。エラー検出部96は、たとえば以下のエラーを検出する。エラー検出時においては、エラー通知用のレジスタに所定値(たとえば1)を書き込み、またCPUコア34に割り込みをかけてもよい。
【0071】
・イベントエラー
イベントエラーは、A/D変換中に、新たにA/D変換の開始のトリガとなるイベントが発生したときに、発生したものと判定される。
【0072】
モータ制御では、高電圧を扱う必要があるため、意図しない制御が行われている場合には、いち早く検知して、モータを停止するなどの適切な保護処理が求められる。エラー検出部96にイベントエラーの検知機能を実装することにより、ADCインタフェース46に入力するイベントの関係が正しく制御できていないことをハードウェアレベルで迅速に検知することができ、回路を保護するができる。また機器1の設計段階においては、イベントエラーの検知は、ソフトウェアあるいはハードウェア設計のデバッグに大いに有用である。
【0073】
続いて、A/Dコンバータ50のタイミング制御について説明する。本実施の形態においては、制御回路10の代表的な制御可能なタイミングとして
(1) 動作スタートのタイミング
(2) k回のA/D変換のタイミング
が存在する。
【0074】
図9は、A/Dコンバータ50の制御シーケンスを示す図である。動作スタートとは、あるモードにおいては、A/Dコンバータ50の1制御周期の開始に対応する。動作スタートに応じて、スタートフラグ(START)が立つと、A/Dコンバータ50がk回のA/D変換を実行可能な状態となる。実施の形態に係る制御回路10では、動作スタートのタイミングならびに複数のA/D変換のタイミングの少なくともひとつが、内部信号から得られるイベント信号(タイミング信号)によって制御可能となっている。
【0075】
制御回路10は、多様なモードが切り替え可能となっている。以下、制御回路10のモードについて説明する。なお、3チャンネルch0〜ch2は同様であるため、一個のチャンネルのみに着目して説明する。なお制御レジスタおよびデータレジスタは、チャンネルごとに設けられる。
【0076】
<バッファモードと通常モード>
実施の形態に係る制御回路10は、バッファモードと通常モードという2つのモードをサポートしており、レジスタMODE_BUFの値によって一方を指定可能となっている。2つのモードでは、変換データDOUT0〜DOUTn-1のデータレジスタDATA0〜DATAn-1への格納方法が異なる。
【0077】
・モードバッファレジスタ(MODE_BUF)
値0: 通常モード
値1: バッファモード
【0078】
図10(a)は、バッファモードにおけるアクセス制御部92の動作を説明する図である。
図10(a)には、ポート選択レジスタも併せて示される。バッファモードにおいて、i回目(i=1〜8)の変換データDOUTi-1は、i番目のデータレジスタ(DATAi-1)に格納される。このバッファモードにおいて、n個のデータレジスタには、変換の時系列の順序でデータが格納されることとなる。バッファモードでは、n回のうち複数回、同じアナログポートを指定し、そのデータを取得することが可能である。ユーザはこのことを念頭においてソフトウェアを設計すればよく、プログラミングが容易となる。
【0079】
図10(b)は、通常モードにおけるアクセス制御部92の動作を説明する図である。ポート選択レジスタの値は、
図10(a)と同じである。通常モードにおいて、アクセス制御部92は、ポート選択レジスタPORT_SEL0〜PORT_SEL7を参照して、変換データDOUT〜DOUT7の格納先を決定する。具体的にはアクセス制御部92は、i回目の変換データDOUTi-1を、対応するポート選択レジスタPORT_SELi-1値に応じたデータレジスタDATAjに格納する。たとえば
図10(b)において、1回目の変換データDOUT0に着目する。対応するポート選択レジスタPORT_SEL0の値は2であるから、変換データDOUT0は、データレジスタDATA2に格納される。同様に2回目の変換データDOUT1に着目すると、対応するポート選択レジスタPORT_SEL1の値は4であるから、変換データDOUT1は、データレジスタDATA4に格納される。
【0080】
つまり通常モードでは、i番目のアナログポートPORT-iの変換データが、i番目のデータレジスタDATAi-1に格納されることとなる。通常モードでは、1制御周期につき、ひとつのアナログポートのデータを、1回だけ取得することができる。制御回路10に必要な機能に応じて、通常モードとバッファモードを選択することができ、ソフトウェア制御の柔軟性が提供される。
【0081】
<ハードウェアモードとソフトウェアモード>
動作スタートに関して、以下で説明するハードウェアモードとソフトウェアモードが用意されている。これらのモードは、モードスタートレジスタ(MODE_START)の値で指定できる。
【0082】
・モードスタートレジスタ(MODE_START)
0:ソフトウェアモード
1:ハードウェアモード
【0083】
ソフトウェアモードは、動作スタートが、ハードウェアの状態(つまり内部信号やイベント信号)に依存せずに、ソフトウェアによって発生する。ソフトウェア的に動作スタートするために、ランレジスタが設けられる。
・ランレジスタ(RUN)
1: 1の書き込みで動作スタート
具体的にはソフトウェア制御にもとづいてCPUコア34が、ランレジスタRUNをアサートする(1を書き込み)と、それをトリガとして、A/Dコンバータ50の動作が開始する。
【0084】
ハードウェアモードでは、ランレジスタRUNがアサートされた後に、ハードウェアの所定の状態をトリガとして、動作スタートが発生する。具体的にはランレジスタRUNに1が書き込まれた後に、イベントセレクタ84からのスタートイベント信号EVT_STARTが入力されると、それをトリガとして、A/Dコンバータ50の動作がスタートする。スタートイベント信号EVT_STARTは、イベントセレクタ84が出力するイベント信号のひとつである。
【0085】
スタートイベント信号EVT_STARTの生成のために、以下の制御レジスタが用意される。
【0086】
・イベント選択レジスタ(EVENT_SEL)
0000: PWM_Uを選択
0001: PWM_Vを選択
0010: PWM_Wを選択
0011: #PWM_Uを選択
0100: #PWM_Vを選択
0101: #PWM_Wを選択
0110: P
P/Bを選択
0111: #P
P/Bを選択
スタートイベント信号EVT_STARTとなる内部信号を指定する。
図3のイベントセレクタ84(
図8のセレクタ88)を制御するために使用される。
【0087】
インタフェースユニット82は、スタートイベント信号EVT_STARTにもとづいて、スタートタイミング信号TMG_STARTを生成する。スタートタイミング信号TMG_STARTの生成に関して、以下の制御レジスタが用意される。
【0088】
・エッジ選択レジスタ(EVENT_EDGE)
0: ポジティブエッジ
1: ネガティブエッジ
内部信号のポジティブエッジ、ネガティブエッジのいずれを、スタートイベント信号EVT_STARTの生成に用いるかを指定する。
図8のエッジセレクタ100を制御するために使用される。
【0089】
イベント選択レジスタEVENT_SELとエッジ選択レジスタEVENT_EDGEの組み合わせによって、動作スタートのトリガとなるイベント(スタートイベント)が指定される。
【0090】
・遅延設定レジスタ(EVENT_DELAY)
スタートイベント信号EVT_STARTのアサートから、スタートタイミング信号TMG_STARTのアサートまでの遅延時間を指定。
図8の遅延回路102を制御するために使用される。
【0091】
・遅延イネーブルレジスタ(EVENT_DELAY_EN)
スタートタイミング信号TMG_STARTの遅延の有無を指定する。
図8の遅延セレクタ104を制御するために使用される。
【0092】
また、動作スタートを解除するために、ストップレジスタ(STOP)が設けられる。
・ストップレジスタ(STOP)
1: 1の書き込みで動作停止(スタート状態の解除)
以上が動作スタートに関する説明である。
【0093】
<オートモードとシーケンシャルモード>
続いて、変換タイミングについて説明する。変換タイミングに関連して、2つのモード、すなわちオートモードとシーケンシャルモードが用意され、その選択のために以下の制御レジスタが用意される。
【0094】
・モードシーケンスレジスタ(MODE_SEQ)
0:オートモード
1:シーケンシャルモード
【0095】
アクセス制御部92は、(i)オートモードにおいて、1制御周期に含まれるk回のA/D変換を自動的に実行する。すなわち、複数の変換タイミングCONV0〜CON7は、動作スタート後に、アクセス制御部92が自動生成する。
【0096】
アクセス制御部92は、(ii)シーケンシャルモードにおいて、1制御周期に含まれるk回のA/D変換それぞれを、A/D変換ごとにイベントが発生するごとに実行する。具体的には、シーケンシャルモードにおいて、
図8のイベントセレクタ84は、スタートイベント信号EVT_STARTに続いて、変換イベント信号EVT0〜EVT7を順に発生する。
【0097】
変換イベント信号EVT0〜EVT7に関して、以下の制御レジスタが用意される。
・個別イベント選択レジスタ(EVENT_SEL0-EVENT_SELn-1)
それぞれ、変換イベント信号EVT0〜EVT7となる内部信号を指定する。値についてはEVENT_SELと同様であり、
図3のイベントセレクタ84(
図8のセレクタ88)を制御するために使用される。
【0098】
・個別エッジ選択レジスタ(EVENT_EDGE0-EVENT_EDGE7)
0: ポジティブエッジ
1: ネガティブエッジ
内部信号のポジティブエッジ、ネガティブエッジのいずれを、変換イベント信号EVT_CONVの生成に用いるかを指定する。
図8のエッジセレクタ100を制御するために使用される。
【0099】
個別イベント選択レジスタEVENT_SELi-1と個別エッジ選択レジスタEVENT_EDGEi-1の組み合わせによって、i回目のA/D変換のトリガとなるイベント(変換イベント)が指定される。
【0100】
図8のタイミング信号生成回路90は、レジスタ80からの変換イベント信号EVT0〜EVT7にもとづいて、変換タイミング信号TMG0〜TMG7を生成する。変換タイミング信号TMG0〜TMG7の生成に関して、以下の制御レジスタが用意される。
【0101】
・遅延設定レジスタ(EVENT_DELAY0-EVENT_DELAY7)
各変換イベント信号EVTiのアサートから、変換タイミング信号TMGiのアサートまでの遅延時間を指定。値についてはEVENT_DELAYと同様であり、
図8の遅延回路102を制御するために使用される。
【0102】
・遅延イネーブルレジスタ(EVENT_DELAY_EN0-EVENT_DELAY_ENn-1)
各変換イベント信号TMGiの遅延の有無を指定する。値についてはEVENT_DELAY_EN0と同様であり、
図8の遅延セレクタ104を制御するために使用される。
【0103】
オートモードでは、n回のA/D変換を自動的に、インタフェースユニット82が生成するタイミングで行うことができ、A/D変換のタイミングがそれほどシビアでない状況において有用である。シーケンシャルモード(マニュアルモード)では、各A/D変換のタイミング(変換タイミング)を個別にマニュアルで指定することができ、シビアなタイミング制御に対応できる。
【0104】
<1回変換モードと連続変換モード>
アクセス制御部92は、以下で説明する1回変換モードと連続変換モードが選択可能となっている。これらのモードの切りかえのために、以下の制御レジスタが設けられる。
【0105】
・モードバーストレジスタ(MODE_BURST)
0: 1回変換モード
1: 連続変換モード
【0106】
アクセス制御部92は、(i)1回変換モードにおいて、k回の変換処理が終了すると、動作エンドとなり、
図9のスタートフラグ(START)が一旦ネゲートされ、次の動作スタートを待機する。ソフトウェアモードでは、次にRUNレジスタがライトされると、動作スタートとなり、ハードウェアモードでは、RUNレジスタのライト、スタートイベントの発生によって、動作スタートとなる。
【0107】
またアクセス制御部92は(ii)連続変換モードでは、1制御周期の変換処理が終了すると、次の動作スタートを待たずに、次の制御周期に移行する。つまり、1制御周期が終了しても、スタートフラグが立った状態が維持される。
【0108】
言い換えれば1回変換モードでは、制御周期毎に動作スタートが要求されるのに対して、連続変換モードでは、初回のみ、動作スタートが要求される。1回変換モードと連続変換モードを選択可能とすることで、さらなる柔軟性が提供される。
【0109】
以上が、制御回路10がサポートするモードの説明である。続いて、制御回路10の具体的な動作を説明する。
図11は、ハードウェアモード、シーケンシャルモードの組み合わせを示す波形図である。時刻t0にRUNレジスタに1がライトされると、回路がイネーブル状態となるが、ハードウェアモードではスタート状態にはならない。ここではPWMのボトム(PWM周期の先頭)が、スタートイベントとして指定される。つまりピークボトムパルスP
P/Bのポジティブエッジにもとづいて、スタートタイミング信号TMG_STARTが生成され、時刻t1にスタート状態となる。ボトムイベントを選択することで、A/Dコンバータの制御周期を、PWM動作に同期させることができる。
【0110】
1回目の変換は、W相PWM信号のネガティブエッジイベントを、2回目の変換は、V相PWM信号のネガティブエッジイベントを、3回目の変換は、U相PWM信号のネガティブエッジイベントを、トリガとしており、各イベントに応答して、変換タイミング信号TMG_CONV1〜TMG_CONV3が生成される。以降も同様である。そして設定した回数(k回)、の変換が完了すると、スタートフラグがネゲートされ、非スタート状態となる。そして、次のPWMの周期に移行すると、ボトムイベントに応答してスタートタイミング信号が生成され、再びスタート状態となる。
【0111】
以上、本発明について、実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。以下、こうした変形例について説明する。
【0112】
モータの相数は特に限定されない。またレゾルバやロータリエンコーダを用いてモータの機械的状態を直接モニタする方式にも、制御回路10を利用することが可能である。この場合、レゾルバからの検出信号(速度信号や位置信号)を、いずれかのアナログポートに入力すればよい。