Example Code

NI MultisimとNI LabVIEWで、三相インバータの完全なシステムシミュレーションを実施

Overview

ナショナルインスツルメンツ(NI)のNI LabVIEWとNI Multisimを使用すれば、プロトタイプを開発する前に、アナログ回路とデジタル回路(FPGA)を含むシステム全体をデスクトップ上でシミュレーションすることができます。このチュートリアルでは、両ツールの連携を実現するコシミュレーション機能を利用して、FPGAベースの制御用ロジックを実装し、トランジスタレベルのパワーエレクトロニクスコンポーネントの閉ループシミュレーションを実行する方法を説明します。 具体的な例にとるのは、三相インバータのシステムシミュレーションです。Multisim 12.0を使用して大電力のアナログ回路を開発すれば、MOSFETなどのパワーエレクトロニクスコンポーネントや非理想状態(non-ideal)の抵抗とインダクタ、コンデンサなどの新たなSPICEモデルを利用できるというメリットが得られます。Multisimによって設計した回路を制御するロジック回路(FPGA)は、LabVIEWで開発します。 LabVIEWとMultisimのコシミュレーション機能を使用した場合、アナログ回路とFPGAベースのデジタル制御システムとの間のあらゆるダイナミクスを対象としてポイントバイポイントのシミュレーションを実行できます。シミュレーションの実行中には、2つのシミュレーションエンジンの間で、演算リソースのネゴシエーションが可変時間ステップ方式で行われます。この手法を用いれば、設計プロセスの初期段階に、デスクトップ上で正確かつ完全なシステムシミュレーションを実行できるようになります。
 

Hardware and Software Requirements

  • Multisim 12.0
  • LabVIEW 2011
  • LabVIEW 2011制御系設計・シミュレーションモジュール
  • LabVIEW 2011 FPGAモジュール

Steps to Implement or Execute Code

1. はじめに 

MultisimとLabVIEWによる完全なシステムシミュレーション

従来は、アナログ回路と制御ロジックを1つにまとめた状態でシミュレーションを行うのは困難でした。そのため、制御ロジックについては、アナログ回路とは独立した状態で組込コード(制御ロジック)の開発を行っていました。アナログ回路と制御ロジックの両方が出来上がってから最終的にシステムレベルで相互に作用させるという手法です。このように、シミュレーションを事前に実施することなく次の段階に進む手法は、電源回路などを含むアナログ回路の設計には適していません。結果として、システムを組み上げた後で、制御ロジックが原因となって、アナログ回路の性能が期待するレベル(仕様)に達しないことが判明するという事態が起こり得ます。そうなると、アルゴリズムの変更や、コードの再コンパイルが避けられないことになります。

MultisimとLabVIEWを組み合わせることにより、システム全体の協調設計が可能になります。LabVIEWを使用してFPGA向けにシミュレーションしたアルゴリズムとコードをアナログ回路とともに使用する場合でも、適切な性能を発揮できるかどうかを確認することができます。また、アルゴリズムとコードに対してほとんど変更を加えることなく、ハードウェアターゲットに実装することが可能です。この設計手法は、LabVIEWコシミュレーションと呼ばれます。このLabVIEWコシミュレーションは、Multisim 12.0に新機能として追加されたコシミュレーション機能を使用することにより利用可能になります。

コシミュレーションを実行する際には、2つのシミュレーションエンジンの間でタイムステップの独自ネゴシエーションが行われます。それにより、システムの完全な閉ループシミュレーションが可能になります。その結果、アナログ回路とデジタル回路の間のあらゆるシステムダイナミクスを含めて設計の評価を行うことができます。アナログやミックスドシグナル回路向けに最適化されたMultisimは、Analog Devices社やNXP Semiconductors社、ON Semiconductor社、Texas Instruments社などの大手半導体メーカーから提供された定義済みのSPICEモデルを多数備えています。一方のLabVIEWでは、グラフィカルなデータフロー表現を用いて、制御ロジックを効果的に設計と実装することができます。LabVIEWのシミュレーションエンジンは、電力システムや機械システム用の組込みデジタルコードに向けて最適化された高レベルのシミュレーションを実現します。その結果、プロトタイプ開発における反復作業の回数が減り(プリント回路基板の設計に当たって最大3回程度の削減が可能)、1回で最長4時間ほどもかかるコンパイルの回数を削減しつつ、適切なコードを作成することが可能になります。

 

図1. Multisim 12.0は、MultisimとLabVIEWを連携させるコシミュレーション機能を搭載している。

 

三相インバータの基本

ここで言うインバータとは、DC入力電圧を受け取ってAC出力電圧を生成する電力変換回路のことです。インバータでは、電力効率と、電子回路に含まれるデバイスのスイッチング速度が、システムの性能を決定する重要なパラメータとなります。高出力のインバータを使用するアプリケーションの例としては、太陽光発電システムや風力タービンシステムなどが挙げられます。

NIのグリーンエネルギーアプリケーションについては、こちらをご覧ください。

インバータの基本情報についてはWikipediaをご覧ください。(英語)

インバータは、周波数の高いPWM(パルス幅変調)信号によって駆動されるMOSFETのバイアス段としてDC入力電圧(電源)を使用することで動作します。MOSFETの出力段は、スイッチングによって生じる高周波数成分を減衰させるためのローパスフィルタに接続されます。インバータの出力をサンプリングし、PID(比例‐積分‐微分)制御ロジックを介してPWMジェネレータに送ることで、閉ループのフィードバック系が完成します。これにより、出力の振幅を安定させ、システム(その多くは送電網)の位相に確実にロックすることが可能になります。

追加資料

 

2. 設計フロー

このハードウェア設計において最初に行うのは、MultisimとLabVIEWによってデスクトップ上で実行するシミュレーションの準備をすることです。これが本チュートリアルの主題でもあります。図2は、システムの構成要素となる複数のブロックと、システムにおける信号フローを表しています。

 

図2. システムのブロックダイアグラムと信号フロー

 

3. Multisimでアナログ回路を設計

Multisimで設計するアナログ回路は、以下の3つのステージで構成されます。

  1. PWM信号に基づいたMOSFETのスイッチングによりDC入力電圧をサンプリングする三相・単一レベルのインバータステージ
  2. クリーンな単一周波数(60 Hzまたは50 Hz)の信号を得るためのフィルタステージ
  3. Multisim側でセンサを使用して電圧と電流をサンプリングし、LabVIEW側の制御ブロックに、その入力となる信号を送信する三相負荷出力ステージ

図3に示したのは、これらのステージで構成される回路です。Multisim 12.0では、ドラッグ&ドロップを行うだけでこの回路図を読み込むことができます。

 

 

図3. Multisimに読み込まれた三相インバータの回路図

 

このMultisim側の回路への入力は、MOSFETのゲート端子であるs1~s6だけです。それ以外の端子は、モニター用、もしくはフィードバックループの一部となる出力端子となります。

下に示す表は、Multisim・LabVIEWにおいてスプレッドシートビューからエクスポートした端子情報です。

 

LabVIEW端子

正の接続

負の接続

モード

タイプ

入力

 

 

 

 

s1

s1

0

入力

電圧

s2

s2

0

入力

電圧

s3

s3

0

入力

電圧

s4

s4

0

入力

電圧

s5

s5

0

入力

電圧

s6

s6

0

入力

電圧

出力

 

 

 

 

Va

Va

0

出力

電圧

Vb

Vb

0

出力

電圧

Vc

Vc

0

出力

電圧

Va_l

Va_l

0

出力

電圧

Vb_l

Vb_l

0

出力

電圧

Vc_l

Vc_l

0

出力

電圧

I_Lf1

I_Lf1

0

出力

電圧

I_Rload1

I_Rload1

0

出力

電圧

Vdc_link

Vdc_link

0

出力

電圧

Vneutral

Vneutral

0

出力

電圧

未使用

 

 

 

 

 

4. LabVIEWで制御ブロックを設計

LabVIEWの制御用VIには、複数のブロックが含まれています。それらのブロックは、いずれも500 kHzで動作する制御系設計とシミュレーションループ内に配置されます。それぞれのブロックは、設計フローのダイアグラムに含まれる動作のうち、いずれか1つを実行する役割を担います。

RMSブロック

RMS IPコアを利用した制御ブロックは負荷電圧を集録し、50 Hz/60 Hzの線間電圧のRMS値(実効値)を算出します。RMS演算は1回目の動作サイクルでは無効となっています。

図4. RMSブロックのVIとブロックダイアグラム

 

PID制御ブロック

PID制御ブロック(コントローラ)は、ユーザが定義した振幅入力値とPID制御パラメータKp、Ki、Kdに基づいて、三相出力線間電圧の振幅を調節する役割を担います。

図5. PID制御ブロックのVIとブロックダイアグラム

PLLブロック

アナログ回路が備えるフィルタは、出力線間電圧に位相遅延を生じさせます。PLL(位相ロックループ)ブロックは、送電網の位相情報を読み取り、生成されたPWM信号の位相をロックする役割を果たします。その結果、線間電圧の位相が送電網に関連付けられます。この送電網は、アプリケーション全体を表すブロックダイアグラムでは、仮想関数ブロックとして表示されます(本稿の後半で示します)。

図6. PLL Express VI

三角波ジェネレータとPWM回路

図7に示したFPGA用のIPコアにより、PWM回路用の10 kHzの三角波が生成されます。PWM回路は、PID制御ブロックから受け取った振幅情報に基づいて生成された正弦波と、送電網から受信した位相情報を比較することで動作します。この比較結果が出力されてMultisimにフィードバックされることで、スイッチのオン・オフ制御が行われます。

Figure 7. Triangular Wave Generator VI and Block Diagram

 

5. 完全なシステムシミュレーション

システムシミュレーション用のグラフィカルインタフェースには、ユーザが定義したPID制御用のパラメータと、可変RMS出力設定値、出力フィルタの位相オフセット、PLLのゲインの各項目が設けられています。出力線間電圧と送電電圧の比較結果がリアルタイムで視覚化されて表示されます。

図8. LabVIEWで表示した完全なシステムのブロックダイアグラム

図9. 0.02 sのシステムシミュレーションを実行した結果(VIの表示)

図10. 0.12 sのシステムシミュレーションを実行した結果(VIの表示)

これらのシミュレーション結果から、システムが起動して0.02 s後の段階では、三相インバータの出力電圧が送電電圧と同調していないことが分かります。これはフィードバックシステムが、まだ初期状態に近い段階にとどまっているためです。また、シミュレーションの結果から、インバータの出力が送電電圧と同調するまでには約0.1 sかかることも分かりました。

この手法では、アナログ回路とFPGAベースの制御ロジックとの間に存在するあらゆるダイナミクスがシステムシミュレーションの対象となります。この点が、従来の手法とはまったく異なります。この手法を導入すれば、設計の初期段階でシステム性能を評価することができます。また、シミュレーション時間の短縮や、プロトタイプ開発にかかるコストの削減を実現可能です。

 

6. ハードウェアの実装

次の段階では、アナログ回路のプロトタイプをハードウェアとして実装します。また、IPのコンパイルを行い、ターゲットとするFPGAに読み込みます。これで、FPGAベースのリアルタイムHIL(Hardware-in-the-Loop)シミュレーションとRCP(Rapid Control Prototyping)シミュレーションの実行が可能になります。

このシステムシミュレーションの完全なリファレンス設計とラピッドプロトタイピングについては、こちらをご覧ください(英語)。このページでは、RLCフィルタと負荷を伴う三相・単一レベルのインバータをリアルタイムでシミュレーションしたデモもご覧いただけます。そのリアルタイムHILシミュレーションは、LabVIEWを用い、FPGAによって1 MHzのループレートで実行されたものです。また、正弦波を利用する基本的なPWM制御システムは、FPGAによって500 kHzのレートで実行されます。HILループとRCPループとの間で行われる情報のやり取りには、CシリーズのデジタルI/OモジュールであるNI 9401を使用しています。

NI Ultiboard(英語)を使用すれば、プロトタイプ用のプリント回路基板を迅速かつ容易に開発することができます。

 

Example code from the Example Code Exchange in the NI Community is licensed with the MIT license.

Contributors