Main Content

直交エンコーダーを使用した PMSM のベクトル制御

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

この例では、直交エンコーダー センサーを使用して回転子の位置を測定します。直交エンコーダー センサーは、電気位相角が 90 度ずれるようにコード化された 2 つのトラックまたはチャネルをもつディスクで構成されています。これにより、位相差が 90 度の 2 つのパルス (A と B) とインデックス パルス (I) が作成されます。したがって、チャネル A と B の間の位相関係とチャネル状態の遷移を使用して、コントローラーでモーターの回転の方向を特定します。

モデル

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

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

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

必要な MathWorks 製品

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

1. 対象のモデル: "mcb_pmsm_foc_qep_f28069m""mcb_pmsm_foc_qep_f28069LaunchPad"、および "mcb_pmsm_foc_system"

  • Motor Control Blockset™

  • Fixed-Point Designer™

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

  • Motor Control Blockset™

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

1. 対象のモデル: "mcb_pmsm_foc_qep_f28069m""mcb_pmsm_foc_qep_f28069LaunchPad"、および "mcb_pmsm_foc_system"

  • Motor Control Blockset™

  • Embedded Coder®

  • C2000™ Microcontroller Blockset

  • Fixed-Point Designer™

2. 対象のモデル: "mcb_pmsm_foc_qep_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_qep_f28379d

メモ: BOOSTXL-3PHGANINV インバーターを使用する場合は、BOOSTXL-3PHGANINV の最下層と LAUNCHXL ボードの間に適切な断熱材があることを確認してください。

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

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

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

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

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

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

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

メモ: モーターに取り付けられた直交エンコーダー センサーで使用できるスリットの数を検証します。モデル初期化スクリプトにある変数 pmsm.QEPSlits を確認および更新します。この変数は、直交エンコーダー ブロックの [エンコーダー スリット] パラメーターに対応します。[エンコーダー スリット] パラメーターと [スリットあたりのエンコーダーのカウント数] パラメーターの詳細については、Quadrature Decoderを参照してください。

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. モーターの始動と停止のスイッチをオンの位置に切り替えて、モーターの運転を開始します。

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

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