メインコンテンツ

Simscape Electrical を使用したインバーターのスイッチング ダイナミクスのモデル化

この例では、ベクトル制御 (FOC) を使用して三相永久磁石同期モーター (PMSM) の角速度を制御します。Motor Control Blockset™ の Average Value Inverter ブロックの代わりに次の Simscape™ Electrical™ ブロックを使用するオプションが用意されています。

  • Converter (Three-Phase)

  • Ideal Semiconductor Switch

この例では、Motor Control Blockset の Surface Mount PMSM ブロックの代わりに Simscape Electrical の PMSM ブロックを使用するオプションも用意されています。これらの Simscape Electrical ブロックを使用すると、高忠実度のシミュレーションを生成できます。

ベクトル制御 (FOC) には、回転子位置のリアルタイムのフィードバックが必要になります。この例では、直交エンコーダー センサーを使用して回転子の位置を測定します。FOC の詳細については、ベクトル制御 (FOC)を参照してください。

この例を使用して、さまざまなインバーターを使用してターゲット モデルをシミュレーションし、各インバーターのフィードバック電流を監視できます。コードを生成し、ホスト モデルをターゲット モデルと一緒に使用することもできます。

モデル

この例にはモデル mcb_ee_pmsm_foc が含まれています。

このモデルはシミュレーションとコード生成の両方に使用できます。

必要な MathWorks 製品

モデルをシミュレートする場合:

  • Motor Control Blockset

  • Simscape Electrical

コードを生成してモデルを展開する場合:

  • Motor Control Blockset

  • Embedded Coder®

  • C2000™ Microcontroller Blockset

  • Fixed-Point Designer™ (コード生成を最適化する場合のみ必要)

前提条件

1. モーター パラメーターを取得します。Simulink® モデルには既定のモーター パラメーターが設定されており、それらをモーターのデータシートまたは他のソースから得られる値に置き換えることができます。

ただし、モーター制御ハードウェアがある場合は、使用するモーターのパラメーターを Motor Control Blockset のパラメーター推定ツールを使用して推定できます。手順については、を参照してください。

パラメーター推定ツールは、推定されたモーター パラメーターで "motorParam" 変数 (MATLAB® ワークスペース内) を更新します。

2. モーター パラメーターをデータシートまたは他のソースから取得した場合は、Simulink モデルに関連付けられたモデル初期化スクリプトでモーターのパラメーターとインバーターのパラメーターを更新します。手順については、Estimate Control Gains and Use Utility Functionsを参照してください。

パラメーター推定ツールを使用する場合は、インバーターのパラメーターは更新してかまいませんが、モーターのパラメーターはモデル初期化スクリプトで更新しないでください。モーターのパラメーターは、更新された "motorParam" ワークスペース変数からスクリプトで自動的に抽出されます。

モデルのシミュレーション

この例はシミュレーションをサポートしています。次の手順に従ってモデルをシミュレートします。

1. ターゲット モデル "mcb_ee_pmsm_foc" を開きます。

2. インバーター バリアントをシミュレーションするために、ターゲット モデルの InverterSelected ラジオ グループで次のいずれかのオプションを選択します。

  • Motor Control Blockset average inverter - Average Inverter ブロックと Surface Mount PMSM ブロックを使用するには、このオプションを選択します。

  • Simscape Electrical 3 phase converter - Converter (Three-Phase) ブロックと PMSM ブロックを使用するには、このオプションを選択します。

  • Simscape Electrical Modular Multilevel converter - Ideal Semiconductor Switch ブロックと PMSM ブロックを使用するには、このオプションを選択します。このオプションは、低電圧を使用して Simscape Electrical モジュラー マルチレベル コンバーターをシミュレーションします。

3. InverterSelected ラジオ グループからオプションを選択し、[シミュレーション] タブの [実行] をクリックして、ターゲット モデルをシミュレーションします。

4. ターゲット モデルで、[シミュレーション] タブの [データ インスペクター] をクリックして、3 回のシミュレーション実行の結果を表示します。

次のイメージは、相電流 ${I_a}$ のシミュレーション結果を示しています。

次のイメージは、3 つのインバーター タイプの回転子の速度、電流 ${I_q}$、相電流 ${I_{ab}}$、および回転子の位置の比較を示しています。

次のイメージは、3 つのインバーター タイプの PWM 変調波形の比較を示しています。

コードの生成とターゲット ハードウェアへのモデルの展開

このセクションでは、コードを生成し、ターゲット ハードウェアで FOC アルゴリズムを実行する手順を示します。

この例ではホストとターゲット モデルを使用します。ホスト モデルはコントローラー ハードウェア ボードへのユーザー インターフェイスです。ホスト モデルはホスト コンピューターで実行できます。ホスト モデルを使用するための前提条件として、コントローラー ハードウェア ボードにターゲット モデルを展開します。ホスト モデルは、シリアル通信を使用してターゲット Simulink モデルに指令を送り、閉ループ制御でモーターを駆動します。

必要なハードウェア

この例では、次のハードウェア構成をサポートしています。ターゲット モデルの名前を使用して、MATLAB コマンド プロンプトから対応するハードウェア構成のモデルを開くこともできます。

  • LAUNCHXL-F28379D コントローラー + BOOSTXL-DRV8305 インバーター: mcb_ee_pmsm_foc

上記のハードウェア構成に関連する接続については、LAUNCHXL-F28069M and LAUNCHXL-F28379D Configurationsを参照してください。

コードの生成とターゲット ハードウェアでのモデルの実行

1. ターゲット モデルをシミュレートし、シミュレーション結果を確認します。

2. ハードウェアの接続を完了します。

3. ADC (または電流) のオフセット値がモデルで自動的に計算されます。この機能を無効にするには (既定では有効)、モデル初期化スクリプトで変数 inverter.ADCOffsetCalibEnable の値を 0 に更新します。

あるいは、ADC のオフセット値を計算し、モデル初期化スクリプトで値を手動で更新できます。手順については、開ループ制御での三相 AC モーターの駆動と ADC オフセットのキャリブレーションを参照してください。

4. 直交エンコーダーのインデックスのオフセット値を計算し、ターゲット モデルに関連付けられているモデル初期化スクリプトで値を更新します。手順については、Quadrature Encoder Offset Calibration for PMSMを参照してください。

5. ターゲット モデルを開きます。モデルの既定のハードウェア構成設定を変更する場合は、モデル コンフィギュレーション パラメーターを参照してください。

6. CPU2 が CPU1 用のボード周辺装置を使用するように誤って構成されていないことを確認するために、LAUNCHXL-F28379D の CPU2 にサンプル プログラムを読み込みます。たとえば、GPIO31 を使用して CPU2 の青色 LED を作動するプログラム (c28379D_cpu2_blink.slx) を読み込みます。サンプル プログラムまたはモデルの詳細については、Getting Started with Texas Instruments C2000 Microcontroller Blockset (C2000 Microcontroller Blockset)の「Task 2 - Create, Configure and Run the Model for TI Delfino F28379D LaunchPad (Dual Core)」セクションを参照してください。

7. [ハードウェア] タブの [ビルド、展開、起動] をクリックして、ハードウェアにターゲット モデルを展開します。

8. ターゲット モデルで host model のハイパーリンクをクリックして、関連付けられているホスト モデルを開きます。

ホストとターゲット モデルの間のシリアル通信の詳細については、Host-Target Communicationを参照してください。

9. ターゲット モデルに関連付けられているモデル初期化スクリプトで、変数 "target.comport" を使用して通信ポートを指定します。この例では、この変数を使用して、ホスト モデルで使用可能な Host Serial Setup、Host Serial Receive、および Host Serial Transmit の各ブロックの [Port] パラメーターを更新します。

10. ホスト モデルで [Reference Speed] の値を更新します。

11. [シミュレーション] タブの [実行] をクリックして、ホスト モデルを実行します。

12. モーターの始動と停止のスイッチをオンの位置に切り替えて、モーターの運転を開始します。

13. ホスト モデルの Time Scope ブロックと Display ブロックで RX サブシステムからのデバッグ信号を観測します。

メモ: ホスト モデルで、監視するデバッグ信号を選択することもできます。

その他の試行

SoC Blockset™ を使用して、ADC-PWM 同期、コントローラーの応答、およびさまざまな PWM 設定の調査に関連する課題に対処する閉ループ モーター制御アプリケーションを実装することもできます。Simscape Electrical を使用して、高忠実度のインバーター シミュレーションを実装できます。詳細については、Integrate MCU Scheduling and Peripherals in Motor Control Applicationを参照してください。