メインコンテンツ

このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。

C2000 プロセッサを使用してデュアル モーター (Dyno) を搭載した PMSM を制御する

この例では、フィールド指向制御 (FOC) を使用して、ダイノ セットアップで結合された 2 つの 3 相永久磁石同期モーター (PMSM) を制御します。Motor 1 は閉ループ速度制御モードで動作します。Motor 2 は機械的に結合されているため、トルク制御モードで動作し、Motor 1 に負荷をかけます。この例を使用して、さまざまな負荷条件でモーターをテストできます。

この例では、背中合わせに接続された 2 つのモーターをシミュレートします。Motor 1 には異なる速度基準値を使用し、Motor 2 には異なるトルク基準値 (Motor 2 リファレンス ステータ電流の大きさと電気的位置から導出される) を使用できます。Motor 1 は、Motor 2 (異なるトルク基準) によって提供される負荷条件の基準速度で動作します。

この例は、コントローラー ハードウェアボードで実行されます。ホスト モデルを使用して、Motor 1 の速度基準値と Motor 2 の電流基準値を入力できます。ホスト モデルは、シリアル通信を使用してコントローラー ハードウェアボードと通信します。

Motor 1 および Motor 2制御アルゴリズムの電流制御ループは Ts/2 でオフセットされます。ここで、Ts は制御ループの実行速度です。

シングル CPU Dyno モデル

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

シミュレーションとコード生成の両方に、mcb_pmsm_foc_sensorless_dyno_f28379d モデルと mcb_pmsm_foc_qep_dyno_f28069m モデルを使用できます。open_system コマンドを使用して Simulink ® モデルを開くこともできます。これらのモデルは、タイマー 0 を基本レート トリガーとして使用します。たとえば、F28379D ベースのコントローラの場合は次のコマンドを使用します。

デュアルCPUダイノモデル

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

open_system コマンドを使用して Simulink ® モデルを開くこともできます。

メモ: デュアル コア CPU モデルはシミュレーションをサポートしません。

たとえば、F28379D ベースのコントローラの場合は次のコマンドを使用します。

デュアルコアプロセッサのIPC通信

CPU1 はIPCチャネルを介して次のデータを CPU2 に送信します。

  • トルク基準値

  • 信号選択

  • Motor2 を有効にする (EnMtr2Ctrl)

CPU2 は CPU1 の信号選択に従ってデバッグ信号を送信します。

Core1 は割り当てられたメモリ (Core1 から Core2 へのメッセージ RAM) にデータを送信し、Core2 の割り当てられたメモリ (Core2 から Core1 へのメッセージ RAM) からデータを受信します。同様に、Core2 は割り当てられたメモリ (Core2 から Core1 へのメッセージ RAM) にデータを送信し、Core1 の割り当てられたメモリ (Core1 から Core2 へのメッセージ RAM) からデータを受信します。詳細については、Inter-Processor Communication Using IPC Blocks を参照してください。

ダイノセットアップのペリフェラル ブロック構成

このモデルのペリフェラル ブロック構成を設定します。ブロックをダブルクリックして、ブロックパラメーター構成を開きます。この例を他のハードウェアボードで実行する場合には、同じパラメーター値を使用できます。

  • ePWMブロック構成 ePWM1/2/3 は、ePWM4/5/6 からePWM時間周期だけオフセットされます。これは、ePWM3 から ePWM4 に同期信号を送信し、ePWM4 の位相オフセット値を Target.PWM_counter_period に設定することによって実現されます。

  • ADCブロック構成

この例のアルゴリズムでは、非同期スケジューリングを使用します。パルス幅変調 (PWM) ブロックによって ADC 変換がトリガーされます。end of conversion 時に、 ADC はメインの FOC アルゴリズムをトリガーする割り込みを送信します。詳細については、ADC Interrupt Based Scheduling を参照してください。

シングル CPU モデルの場合:

  • インバータ1のADCチャネル

  • インバータ2のADCチャネル

デュアル CPU モデルの場合、インバータ 2 のADCチャネルはCPU1 モデルの初期化関数で定義されます。CPU2 モデルでは、Memory Copy ブロックを使用してADCレジスタの値にアクセスします。

モデルの構成

1. 「mcb_pmsm_foc_dual_cpu1_f28379d」および「mcb_pmsm_foc_dual_cpu2_f28379d」モデルを開きます。このモデルは、TI Delfino F28379D Launchpad 用に構成されています。

2. 他の TI C2000™ プロセッサでモデルを実行するには、まず Ctrl+E を押して [構成パラメーター]ダイアログ ボックスを開きます。次に、[ハードウェア実行][ハードウェア ボード] に移動して、必要なハードウェア ボードを選択します。

3. 次のスクリーンショットは、デュアル CPU モデルで実行されたスケジューラ構成を示しています。

メモ:

  • シングル CPU モデルの場合は、ベース レート トリガーTimer0 であることを確認します。

  • デフォルトのパラメーター動作インラインに設定されていることを確認します (構成パラメーター > コード生成 > 最適化)。

4. ボーレートが 12e6 ビット/秒に設定されていることを確認します。

必要な MathWorks 製品

モデルをシミュレートするには:

  • Motor Control Blockset™

コードを生成してモデルをデプロイするには:

  • Motor Control Blockset

  • Embedded Coder®

  • C2000™ Microcontroller Blockset

  • Fixed-Point Designer ™ (最適化されたコード生成にのみ必要)

前提条件

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

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

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

この例では、モデル初期化スクリプトで両方のモーターのモーターパラメーターを更新します。

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

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

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

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

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

4. Motor 1 に異なる速度基準値を入力し、Motor 2 に異なる電流基準値 (負荷) を入力します。データ インスペクターで測定された速度やその他の記録された信号を観察します。

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

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

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

必要なハードウェア

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

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

コードを生成し、ターゲットハードウェアでモデルを実行する

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

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

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

あるいは、ADC のオフセット値を計算し、モデル初期化スクリプトで値を手動で更新できます。手順については、Open-Loop Control of 3-Phase AC Motors Using C2000 Processorsを参照してください。

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

この例では、初期化スクリプトの pmsm_motor1.PositionOffset 変数と pmsm_motor2.PositionOffset 変数の QEP オフセット値を更新します。

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

6. CPU2 が誤って CPU1 用のボード ペリフェラルを使用するように設定されないようにするには、LAUNCHXL-F28379D の CPU2 にサンプル プログラム (たとえば、GPIO31 を使用して CPU2 の青色 LED を操作するプログラム (c28379D_cpu2_blink.slx)) をロードします。

メモ:

  • デュアル CPU モデルの場合、CPU1 モデルと CPU2 モデルをビルドしてプロセッサのそれぞれのコアにダウンロードする必要があります。各コアは、デュアルモーター制御キット上の 1 つのモーターを制御します。2 つのコアはIPCを使用して相互に通信します。CPU1 モデルは CPU2 に負荷トルク要求を送信します。CPU2 は記録するデータを CPU1 に送信します。

  • コードを展開した後、コードが適切に実行されるように、Launchpad で完全な電源リセットを実行する必要があります。

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

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

open_system コマンドを使用してホスト モデルを開くこともできます。

9. mcb_pmsm_foc_host_model_dyno_f28379d モデル内の次のブロックのパラメーターPort を、ホスト コンピューターの COM ポートと一致するように設定します。同様に、この例の他のホスト モデルに対しても同じ構成を実行できます。

  • mcb_pmsm_foc_host_model_dyno_f28379d > ホストシリアルセットアップ。

  • mcb_pmsm_foc_host_model_dyno_f28379d > シリアル通信> ホストシリアル受信。

  • mcb_pmsm_foc_host_model_dyno_f28379d > シリアル通信> SCI_TX > ホストシリアル送信。

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

11.モーターを動作させるには、Motor 1 スイッチの位置を Start に変更します。

12.ホスト モデルで Motor 1 - Reference Speed (RPM)Motor 2 - Iq Ref (A) を更新します。

13.監視するデバッグ信号を選択して、ホスト モデルの Time Scope ブロックで観察します。

その他の試行

また、SoC Blockset ™ を使用すると、複数のプロセッサ コアを活用して設計のモジュール化、コントローラのパフォーマンスの向上、その他の設計目標を達成するデュアル モーター セットアップ用のリアルタイムモーター制御アプリケーションを開発することもできます。詳細については、Integrate MCU Scheduling and Peripherals in Motor Control Application を参照してください。