メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

STM32 プロセッサ ベースのボードを使用した PMSM のセンサーレス ベクトル制御

この例では、三相永久磁石同期モーター (PMSM) の速度を制御するためのベクトル制御 (FOC) 手法を実装します。FOC の詳細については、ベクトル制御 (FOC) (Motor Control Blockset)を参照してください。

この例ではセンサーレス位置推定手法を使用します。この例で使用する FOC アルゴリズムでは、スライディング モード オブサーバーまたは磁束オブザーバーのいずれかを選択して位置フィードバックを推定できます。

閉ループ FOC アルゴリズムを使用して三相 PMSM の速度とトルクが制御されます。この例では、Embedded Coder® Support Package for STMicroelectronics® STM32 Processors の STM32 周辺装置ブロックと Motor Control Blockset の MCB ライブラリ ブロックを使用します。MATLAB® コマンド ウィンドウで slLibraryBrowser を実行して Simulink Library Browser を開きます。開いた Simulink ライブラリ ブラウザーで、Embedded Coder® Support Package for STMicroelectronics® STM32 Processors にある STM32 プロセッサ ベースのボードのドライバー ライブラリを確認できます。

Sliding Mode Observer (SMO) ブロックは、測定位置と推定位置の間の誤差に対する滑り運動を生成します。このブロックによる推定値は測定位置に厳密に比例します。このブロックは、固定子の電圧 $({V_\alpha },{V_\beta })$ と電流 $({I_\alpha },{I_\beta })$ を入力として使用してモーター モデルの起電力 (EMF) を推定します。さらに、その EMF を使用して回転子位置と回転子速度を推定します。Flux Observer ブロックは、同じ入力 $({V_\alpha },{V_\beta },{I_\alpha },{I_\beta })$ を使用して固定子磁束、生成トルク、回転子位置を推定します。

前提条件

以下のチュートリアルを完了します。

メモ: STM32 プロセッサ ベースのボードを使用した三相 AC モーターの開ループ制御を完了すると、すべてのハードウェアの接続が完了し、$({I_\alpha },{I_\beta })$ の ADC オフセット値が得られます。

必要なハードウェア

利用可能なモデル

X-NUCLEO-IHM07M1 拡張ボードをもつ mcb_pmsm_foc_sensorless_nucleo_f401re モデルまたは mcb_pmsm_foc_sensorless_nucleo_g474re モデルをシミュレーションとコード生成の両方に使用できます。Simulink® モデルは open_system コマンドを使用して開くこともできます。たとえば、STM32 プロセッサ ベースのボードの場合は次のコマンドを使用します。

open_system('mcb_pmsm_foc_sensorless_nucleo_f401re.slx');

モデルで [Edit motor & inverter parameters] をクリックし、特定のモーターに合わせてモデル パラメーターを変更します。モーターの電圧と出力の特性をコントローラーと一致させます。この例では、電流モーター パラメーターは BLY172S-24V-4000 ブラシレス DC モーター向けの構成になっています。

モーターは従来型の電圧源インバーターで駆動されます。コントローラーのアルゴリズムにより、6 つの電力スイッチング デバイス用のベクトル PWM 手法を使用して 3 つのパルス幅変調 (PWM) 信号が生成されます。インバーターは、アナログ デジタル コンバーター (ADC) のインジェクト グループの 2 つのチャネルを使用して 2 つのモーター入力の電流 (ia と ib) を測定し、測定値をトルク制御アルゴリズムに送ります。

周辺装置の構成

STM32CubeMX の構成

  • ADC の構成

  • ADC インジェクト グループ変換がタイマー 1 の更新イベントに基づいて開始されるように ADC と PWM の同期が行われます。

  • ADC チャネルは、"ADC 1" のインジェクト グループ変換からの電流フィードバックとレギュラー グループ変換からの指令速度を読み取るように構成されています。

  • PWM の構成

  • PWM 周波数と PWM チャネルが構成されています。Timer1 は、ADC を PWM と同期するための更新イベントを生成するように構成されています。この同期は適切なタイミングで電流フィードバックを読み取るうえで重要です。

  • 反復カウンターは、更新イベントが周期ごとに必ず 1 回発生するように 1 に設定されています。

周辺装置ブロックの構成

ブロックをダブルクリックしてブロック パラメーターの構成を開きます。この例を別のハードウェア ボードで実行する場合は、指定されたパラメーターの値が同じであることを確認してください。

  • Analog to Digital Converter ブロックの構成

この例のアルゴリズムでは非同期スケジューリングを使用しています。パルス幅変調 (PWM) ブロックによって ADC 変換がトリガーされます。ADC 変換の終了時に、開ループ アルゴリズムをトリガーする割り込みがポストされます。

  • PWM Output ブロックの構成

タイマーのカウンターがオーバーフローしたときにイベントを更新するために、[Set the repetition counter after counter is enabled] パラメーターを選択します。

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

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

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

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

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

コードを生成し、ターゲット ハードウェアに展開して実行

このセクションでは、コードを生成してモーターを駆動する方法を示します。

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

2. ハードウェアの接続を完了します。詳細については、STM32 プロセッサ ベースのボードを使用した三相 AC モーターの開ループ制御を参照してください。

3. Open-Loop Control of 3-Phase AC Motors Using STM32 Processor Based Boards から取得される ADC オフセット値を計算します。手順については、STM32 プロセッサ ベースのボードを使用した三相 AC モーターの開ループ制御を参照してください。

4. [ハードウェア] タブで [監視と調整] をクリックします。診断ビューアーから、モデルのコードが生成され、生成された実行可能ファイルの読み込み後にホストがターゲットに接続されることを確認できます。Simulink データ インスペクターを確認します。

5. モーターを回転させるには、ハードウェア ボード上の"プッシュ ボタン (青いプッシュ ボタン)"をクリックします。

メモ:

  • モーターを始動する前に、ポテンショメーターを反時計回りの方向に回転させて、ポテンショメーターが "0" の位置になっていることを確認します。

  • モーターを始動するには"プッシュ ボタン"をクリックします。その後、ポテンショメーターを時計回りの方向に徐々に回転させて速度を上げます。指令速度が 0.1 x pmsm.N_base を超えると閉ループが始まります (ここで、pmsm.N_base はモーターのベース速度の MATLAB™ ワークスペース変数です)。

  • 指令速度が 0 から 0.1 x pmsm.N_base までの間は、開ループでモーターの運転が始まります。

6. "プッシュ ボタン"をもう一度クリックして、開ループ条件でモーターの運転を開始します。

メモ: モーターを (この例を使用して) 開ループ条件で長時間駆動しないでください。モーターから高電流が流れて過熱状態になることがあります。

開ループ制御は、ベース速度の 10% 以下の指令速度でモーターを駆動するように設計されています。

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

7. モーターの指令速度をベース速度の 10% を超える値に上げて、制御を開ループから閉ループに切り替えます。

メモ: この例では、モーターは一方向でのみ駆動するように構成されています。

8. [監視と調整] (エクスターナル モード) を実行してデバッグ信号を観測します。

その他の試行

  • この例を SoC Blockset™ を使用して実行し、結果を分析できます。

  • この例を STM32G4xx Based ハードウェア ボードで mcb_pmsm_foc_sensorless_nucleo_g474re モデルを使用して実行してみます。

  • スライディング モード オブサーバー (SMO) の代わりに磁束オブザーバー アルゴリズムを使用することもできます。

詳細