Main Content

ホール センサーを使用した PMSM のベクトル制御

この例では、三相永久磁石同期モーター (PMSM) の速度を制御するためのベクトル制御 (FOC) 手法を実装します。この FOC アルゴリズムには回転子の位置フィードバックが必要であり、それをホール センサーで取得します。FOC の詳細については、ベクトル制御 (FOC)を参照してください。

この例では、ホール センサーを使用して回転子の位置を測定します。ホール効果センサーは、適用される磁場の強さに基づいて出力電圧を変えます。PMSM は電気的に 120 度ずつ離れた 3 つのホール センサーで構成されています。この設定の PMSM では、6 つの有効なバイナリ状態の組み合わせ (たとえば 001、010、011、100、101、110) を提供できます。センサーは 60 度の倍数で回転子の角度位置を提供し、コントローラーはそれを使用して角速度を計算します。その後、コントローラーは角速度を使用して回転子の正確な角度位置を計算できます。

モデル

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

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

それぞれのハードウェア構成に使用できるモデルの名前については、「コードの生成とターゲット ハードウェアへのモデルの展開」セクションの「必要なハードウェア」のトピックを参照してください。

必要な MathWorks 製品

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

1. 対象のモデル: "mcb_pmsm_foc_hall_f28069m"

  • Motor Control Blockset™

  • Fixed-Point Designer™

2. 対象のモデル: "mcb_pmsm_foc_hall_f28379d"

  • Motor Control Blockset™

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

1. 対象のモデル: "mcb_pmsm_foc_hall_f28069m"

  • Motor Control Blockset™

  • Embedded Coder®

  • C2000™ Microcontroller Blockset

  • Fixed-Point Designer™

2. 対象のモデル: "mcb_pmsm_foc_hall_f28379d"

  • Motor Control Blockset™

  • Embedded Coder®

  • C2000™ Microcontroller Blockset

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

前提条件

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

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

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

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

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

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

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

1. この例に含まれているモデルを開きます。

2. モデルをシミュレートするには、[シミュレーション] タブの [実行] をクリックします。

3. シミュレーション結果を表示して解析するには、[シミュレーション] タブの [データ インスペクター] をクリックします。

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

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

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

必要なハードウェア

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

上記のハードウェア構成に関連する接続については、F28069 control card configurationを参照してください。

  • LAUNCHXL-F28379D コントローラー + (BOOSTXL-DRV8305 または BOOSTXL-3PHGANINV) インバーター: mcb_pmsm_foc_hall_f28379d

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

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

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

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

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

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

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

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

6. LAUNCHXL-F28379D の CPU2 にサンプル プログラムを読み込み、CPU2 が CPU1 用のボード周辺装置を使用するように誤って構成されていないことを確認します。たとえば、CPU2 の青色 LED を GPIO31 を使用して作動するプログラム (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. ホスト モデルで指令速度の値を更新します。

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

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

メモ: この例をハードウェアで実行するときに低い指令速度を使用すると、既知の問題により、PMSM が低い指令速度に追従しないことがあります。

13. ホスト モデルの時間スコープで RX サブシステムからのデバッグ信号を観測します。

メモ: F28379D ベースのコントローラーを使用している場合、監視するデバッグ信号を選択することもできます。