Main Content

開ループ制御での三相 AC モーターの駆動と ADC オフセットのキャリブレーション

この例では、開ループ制御 (スカラー制御またはボルト/ヘルツ制御とも呼ばれる) を使用してモーターを駆動します。この手法では、モーターからのいずれのフィードバックも使用せずに、固定子電圧と周波数を変えて回転子速度を制御します。この手法を使用してハードウェア接続の整合性を確認できます。開ループ制御の一定速度のアプリケーションでは、固定周波数のモーター電源を使用します。開ループ制御の可変速度のアプリケーションでは、回転子速度を制御するために可変周波数の電源が必要です。固定子の磁束を一定に保つために、電源電圧の振幅がその周波数と比例するように維持します。

開ループ モーター制御では、モーター速度に影響を与える可能性がある外部の条件については考慮できません。そのため、目的のモーター速度と実際のモーター速度の間の偏差を制御システムで自動的に補正することはできません。

このモデルでは、開ループ モーター制御アルゴリズムを使用してモーターを駆動します。このモデルは Motor Control Blockset™ を始めるのに役立ち、モーターを駆動してハードウェア セットアップを検証することができます。また、ターゲット モデルのアルゴリズムで電流センサーから ADC の値を読み取り、それらの値をシリアル通信を使用してホスト モデルに送信します。

このモデルを使用して次のことが可能です。

  • ターゲットとの接続を確認する。

  • ターゲットとのシリアル通信を確認する。

  • ハードウェアとソフトウェアの環境を検証する。

  • 電流センサーの ADC オフセットを確認する。

  • 新しいモーターをインバーターとターゲット セットアップで初めて駆動する。

モデル

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

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

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

必要な MathWorks 製品

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

1. 対象のモデル: "mcb_open_loop_control_f28069M_DRV8312" および "mcb_open_loop_control_f28069MLaunchPad"

  • Motor Control Blockset™

  • Fixed-Point Designer™

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

  • Motor Control Blockset™

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

1. 対象のモデル: "mcb_open_loop_control_f28069M_DRV8312" および "mcb_open_loop_control_f28069MLaunchPad"

  • Motor Control Blockset™

  • Embedded Coder®

  • C2000™ Microcontroller Blockset

  • Fixed-Point Designer™

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

  • Motor Control Blockset™

  • Embedded Coder®

  • C2000™ Microcontroller Blockset

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

前提条件

1. BOOSTXL-DRV8323 の場合、次の手順に従ってモデルを更新します。

  • モデル内のパス /Open Loop Control/Codegen/Hardware Initialization に移動します。

  • LAUNCHXL-F28379D: "DRV830x Enable ブロック" を GPIO124 から GPIO67 に更新します。

  • LAUNCHXL-F28069M: "DRV830x Enable ブロック" を GPIO50 から GPIO12 に更新します。

2. BOOSTXL-3PHGANINV の場合、次の手順に従ってモデルを更新します。

  • LAUNCHXL-F28379D: "mcb_open_loop_control_f28379d"[Configuration] パネルで、[Inverter Enable Logic][Active Low] に設定します。

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

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

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

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

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

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

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

このセクションでは、コードを生成し、開ループ制御を使用してモーターを駆動する手順を示します。

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

必要なハードウェア

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

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

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

モデル "mcb_open_loop_control_f28379d" を構成するには、[Inverter Enable Logic] フィールド (ターゲット モデルの [Configuration] パネル) を次のように設定します。

  • Active High: BOOSTXL-DRV8301、BOOSTXL-DRV8305、または BOOSTXL-DRV8323 インバーターでモデルを使用する場合。

  • Active Low: BOOSTXL-3PHGANINV インバーターでモデルを使用する場合。

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

メモ:

  • この例では、任意のタイプの三相 AC モーター (PMSM または誘導) とサポート対象ハードウェアに取り付けられた任意のタイプのインバーターをサポートしています。

  • 一部の PMSM は、特にシャフトに負荷がかかっているときは、あまり高い速度で動作しません。この問題を解決するには、与えられた周波数に対応する印加電圧を増やす必要があります。次の手順に従ってモデルにおける印加電圧を増やすことができます。

1. モデル内のパス /Open Loop Control/Control_System/VabcCalc/ に移動します。

2. ゲイン Correction_Factor_sinePWM を 20% に更新します。

3. 安全のために、モーター シャフト、モーター電流、モーター温度を定期的に監視します。

開ループ制御を実装するためのコードの生成とモデルの実行

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

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

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

4. ターゲット モデルの [Configuration] パネルで次のモーター パラメーターを更新します。

  • Number of Pole Pairs

  • PWM Frequency [Hz]

  • Base Speed [RPM]

  • Data type for control algorithm

  • Inverter Enable Logic ("mcb_open_loop_control_f28379d" ターゲット モデルでのみ使用可能)

5. 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)」セクションを参照してください。

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

メモ: モデル アドバイザーで表示される "[コンフィギュレーション パラメーター] ダイアログの [診断] ページの [マルチタスク データ ストア] オプションは、"none" です" という警告メッセージについては、[常に無視] ボタンをクリックして無視します。これは目的のワークフローの一部です。

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

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

8. ホスト モデルの [Target Selection] 領域でターゲット ([TI F28069M][TI F28379D]、または [Other] のいずれか) を選択します。

メモ: [Other] を選択する場合は、使用しているターゲット ハードウェアの [ボー レート] を Host Serial Setup ブロック パラメーター ダイアログ ボックスで入力できます。

9. ホスト モデルで Host Serial Setup、Host Serial Receive、および Host Serial Transmit の各ブロックを開き、端子を選択します。

10. ホスト モデルで指令速度の値を入力します。

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

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

13. モーターが作動したら、時間スコープで ${I_a}$${I_b}$ の電流の ADC カウントを観測します。

メモ: この例では、モーターが最大能力では動作しないことがあります。最初は速度を小さくしてモーターを駆動します。また、速度指令は少しずつ変更することをお勧めします (たとえば、ベース速度が 3000 rpm のモーターの場合、500 rpm でモーターの運転を開始し、その後 200 rpm ずつ速度を増減させます)。

モーターが動作しない場合は、モーターの始動と停止のスイッチをオフの位置に切り替えてモーターを停止し、ホスト モデルで指令速度を変更します。その後、モーターの始動と停止のスイッチをオンの位置に切り替えて、モーターをもう一度駆動します。

ADC オフセットをキャリブレートするためのコードの生成とモデルの実行

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

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

3. 三相のモーターのワイヤーをハードウェア ボードの端子から取り外します。

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

5. LAUNCHXL-F28379D の CPU2 にサンプル プログラム (たとえば CPU2 の青色 LED を GPIO31 を使用して作動するプログラム) を読み込み、CPU2 が CPU1 用のボード周辺装置を使用するように誤って構成されていないことを確認します。

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

メモ: モデル アドバイザーで表示される "[コンフィギュレーション パラメーター] ダイアログの [診断] ページの [マルチタスク データ ストア] オプションは、"none" です" という警告メッセージについては、[常に無視] ボタンをクリックして無視します。これは目的のワークフローの一部です。

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

8. ホスト モデルで Host Serial Setup、Host Serial Receive、および Host Serial Transmit の各ブロックを開き、端子を選択します。

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

10. 時間スコープで ${I_a}$${I_b}$ の電流の ADC カウントを観測します。ADC カウントの平均値が電流 ${I_a}$${I_b}$ の ADC オフセット補正です。ADC カウントの平均値 (中央値) を取得するには次のようにします。

  • [スコープ] ウィンドウで [ツール][測定値] に移動して [信号の統計] を選択します。[トレース選択] 領域と [信号の統計] 領域が表示されます。

  • [トレース選択] で信号 (${I_a}$ または ${I_b}$) を選択します。選択した信号の特性が [信号の統計] ペインに表示されます。選択した信号の中央値は [中央値] フィールドで確認できます。

Motor Control Blockset の例では、例に関連付けられているモデル初期化スクリプトの変数 inverter.CtSensAOffsetinverter.CtSensBOffset で、計算された ADC (または電流) のオフセット値を更新します。手順については、Estimate Control Gains and Use Utility Functionsを参照してください。

メモ: ADC のオフセットの計算は、モデル初期化スクリプトで構成する ADC のゲイン値 inverter.SPI_Gain_Setting に依存します。ADC のゲインを変更すると ADC のオフセットも変わります。