Main Content

永久磁石同期モーターの周波数応答の推定

この例では、Motor Control Blockset™ のコンポーネントを使用してモデル化したベクトル制御 (FOC) の三相永久磁石同期モーター (PMSM) の周波数応答推定ワークフローを示します。この例では、Simulink® Control Design™ ソフトウェアのモデル線形化器を使用して、モーターのパラメトリック モデルの推定に使用できる周波数応答モデル (frd) オブジェクトを取得します。

PMSM モデル

PMSM モデルは Motor Control Blockset™ の mcb_pmsm_foc_sim モデルに基づいています。モデルには以下が含まれています。

  • インバーターと PMSM のダイナミクスをモデル化するサブシステム

  • モーター速度の制御用のベクトル制御アルゴリズムを実装する内側のループ (電流) と外側のループ (速度) の PI コントローラー

このモデルを調べて詳細を確認できます。この例では、シミュレーションを必ず定常状態から開始するように元のモデルを変更しています。定常状態は、周波数応答推定ワークフローで使用する操作点として機能します。

Simulink® モデルを開きます。

model = 'scd_fre_mcb_pmsm_foc_sim';
open_system(model)

シミュレーションを定常状態から開始するためのモデルの変更

シミュレーションを必ず定常状態から開始するようにするには、元のモデルの初期条件を変更します。それらの初期条件を取得するには、速度フィードバック信号の信号のログを有効にし、モデルを定常状態 (速度 0.5 p.u.) になるまでシミュレートします。速度が目的の定常状態に達していることを確認するには、シミュレーション後にシミュレーション データ インスペクターでシミュレーション結果を調べます。

前の図の速度の応答から、0.6 秒後のシミュレーション結果を使用すれば、周波数応答の推定に使用するブロックの初期条件を取得できます。初期条件に加えて、速度の設定値追従を高速化するために速度制御ループに関連付けられたフィルターの設定を変更します。この変更の目的は、シミュレーションを定常状態から開始し、モーター プラント モデルには影響しないようにすることです。モデルに次の変更を加えます。

  • SpeedRef ブロックで、[ステップ時間]0 秒、[初期値] を定常状態の基本設定値 0.5 p.u に設定します。

  • Speed Control サブシステムの Zero_Cancellation ブロックで、追従を高速化するために [フィルター係数]1 に設定します。

  • Speed Control、PI_Controller_Speed サブシステムの Ki2 ブロックで、[定数値]0.01725 に設定します。つまり、速度コントローラーの初期値 y0 です。

  • Current Control、Input Scaling、Calculate Position and Speed サブシステムの Speed Measurement ブロックで、速度の測定を高速化するために [Delays for speed calculation]1 に設定します。

  • Current Control、Control_System、Closed Loop Control、Current_Controllers、PI_Controller_Id サブシステムの Ki1 ブロックで、[定数値]0.025 に設定します。つまり、d 軸コントローラーの初期値 y0 です。

  • Current Control、Control_System、Closed Loop Control、Current_Controllers、PI_Controller_Iq サブシステムの Kp1 ブロックで、[定数値]0.435 に設定します。つまり、q 軸コントローラーの初期値 y0 です。

  • Inverter and Motor - Plant Model サブシステムの Surface Mount PMSM ブロックで、[d 軸および q 軸の初期電流 (idq0)][-0.4 0.55][回転子の初期機械角速度 (omega_init)]215 に設定します。

あるいは、次のコマンドを使用してブロック パラメーターを設定できます。

set_param([model,'/SpeedRef'],'Time','0','Before','0.5')
set_param([model,'/Speed Control/Zero_Cancellation'],'Filter_constant','1')
set_param([model,'/Speed Control/PI_Controller_Speed/Ki2'],'Value','0.01725')
set_param([model,...
    '/Current Control/Input Scaling/ Calculate Position and Speed/Speed Measurement'],...
    'DelayLength','1')
currCtrlsPath = '/Current Control/Control_System/Closed Loop Control/Current_Controllers/';
set_param([model,currCtrlsPath,'PI_Controller_Id/Ki1'],'Value','0.025')
set_param([model,currCtrlsPath,'PI_Controller_Iq/Kp1'],'Value','0.435')
set_param([model,'/Inverter and Motor - Plant Model/Surface Mount PMSM'], ...
    'idq0','[-0.4 0.55]','omega_init','215')

固定サンプル sinestream 信号を使用した周波数応答の推定

必要な変更が完了すると、モーター速度約 0.5 p.u の定常状態からシミュレーションが始まります。これで、モデル線形化器を使用して周波数応答の推定を実行できます。モデル線形化器を開くには、Simulink モデル ウィンドウの [アプリ] ギャラリーで [モデル線形化器] をクリックします。

周波数応答データを収集するには、最初に推定するモデルの部分を指定しなければなりません。既定では、モデル線形化器はモデルに定義されている線形化解析ポイント ("モデル I/O") を使用して、テスト信号を挿入する位置および周波数応答を測定する位置を決定します。モデル scd_fre_mcb_pmsm_foc_sim には事前定義された線形解析ポイントが含まれています。

  • d 軸および q 軸の電流 PI コントローラーの出力における開ループの入力ポイント

  • 速度、d 軸電流、および q 軸電流のフィードバック信号における開ループの出力ポイント

これらの解析ポイントを表示または編集するには、モデル線形化器[推定] タブにある [解析 I/O] リストで [Edit Model I/Os] をクリックします。推定のための解析ポイントは、線形化の解析ポイントと同じように機能します。線形解析ポイントの詳細については、モデルの一部を線形化するよう指定を参照してください。

さらに、線形化出力の信号パスで時変信号を生成するすべてのソース ブロックを検出します。このような時変信号は、線形化出力ポイントでの信号を妨げ、推定結果が不正確になる可能性があります。時変ソース ブロックを無効にするには、[追加オプション] をクリックします。[周波数応答の推定のオプション] ダイアログ ボックスで、[時変ソース] タブの [時変ソース ブロックを自動的に検出して追加] をクリックします。

ソフトウェアによる周波数応答の推定時、これらのブロックの値が対応する初期条件で保持されます。

この例では、推定用に固定サンプル時間の sinestream 入力信号を作成します。1 rad/s から 2000 rad/s までの 20 個の周波数点をもつ振幅 0.05 の信号を作成します。sinestream の入力信号の定義の詳細については、sinestream 入力信号を参照してください。

信号を作成するには、モデル線形化器の [推定] タブにある [入力信号] リストで [Fixed Sample Time Sinestream] を選択します。

[固定サンプル時間の指定] ダイアログ ボックスで、[サンプル時間]5e-5 秒に指定します。

[OK] をクリックします。[固定サンプル時間をもつ sinestream の入力を作成] ダイアログ ボックスが開きます。

推定の周波数単位を指定します。[周波数単位] リストで [rad/s] を選択します。

プラント応答を推定する周波数を指定するには、[周波数の追加] アイコンをクリックします。

[周波数の追加] ダイアログ ボックスで、1 rad/s から 2000 rad/s までの対数的に等間隔な 20 個の周波数を指定します。

[OK] をクリックします。追加された点が、[固定サンプル時間をもつ sinestream の入力を作成] ダイアログ ボックスの周波数成分ビューアーに表示されます。

入力信号の振幅を指定するには、最初にプロット領域内のすべての周波数を選択します。その後、[振幅] フィールドに「0.05」と入力します。残りのパラメーターについては既定値を使用します。

[OK] をクリックして固定サンプル時間の sinestream 信号を作成します。

周波数応答を推定してプロットするには、[推定] タブで [ボード線図] をクリックします。推定された周波数応答が [線形解析ワークスペース]frd モデル estsys1 として表示され、応答が [ボード線図 1] に追加されます。

PRBS 入力信号を使用した周波数応答の推定

周波数応答の推定では、sinestream 入力信号に加え、PRBS 入力信号も使用できます。この例では、周期 1、次数 18、振幅 0.1 の入力信号を作成します。

信号を作成するには、モデル線形化器[推定] タブにある [入力信号] リストで [PRBS Pseudorandom Binary Sequence] をクリックします。

[PRBS 入力の作成] ダイアログ ボックスで、PRBS 信号のパラメーターを構成します。この入力ダイアログ ボックスでは、目的の周波数範囲に基づいて信号の次数と周期数を設定できるようになっています。まず、[サンプル時間]5e-5 秒に設定します。次に、1 rad/s から 2000 rad/s の周波数範囲を入力し、[パラメーターの計算] をクリックします。信号の [周期数] パラメーターと [信号の順序] パラメーターがソフトウェアで計算されます。システムが確実に正しく励起されるようにするため、[振幅] パラメーターを使用して摂動の振幅を 0.1 に設定します。残りのパラメーターについては既定値を使用します。

[OK] をクリックして入力信号を作成します。

周波数応答を推定してプロットするには、[推定] タブで [ボード線図] をクリックします。推定された周波数応答が [線形解析ワークスペース]frd モデル estsys2 として表示されます。PRBS 入力信号を使用した周波数応答の推定では、多数の周波数点を含む結果が得られます。結果の間引き機能を使用して、推定された周波数応答モデルから目的の周波数範囲と周波数点の数を指定して、内挿された結果を抽出できます。

推定結果に間引きを適用するには、[線形解析ワークスペース]estsys2 を選択し、[プロットと結果] タブで [結果の間引き] をクリックします。

[周波数の指定] ダイアログ ボックスで、1 rad/s から 2000 rad/s までの対数的に等間隔な 30 個の周波数を指定します。

[OK] をクリックします。間引きされた推定結果のシステム estsys2_thinned[線形解析ワークスペース] に表示されます。結果を estsys1 と比較するには、[ボード線図 1] をクリックします。

入力信号による周波数応答の推定の最終シミュレーション時間を調べるには、[線形解析ワークスペース] で入力信号を選択し、モデル線形化器[変数プレビュー] 領域でシミュレーション時間を確認します。あるいは、入力信号を MATLAB® ワークスペースにエクスポートして関数 getSimulationTime を使用することもできます。前に保存したセッションを読み込み、シミュレーション時間を表示します。

load pmsm_fre_comparison.mat
tfinal_sinestream = in_sine1.getSimulationTime
tfinal_prbs = in_prbs1.getSimulationTime
tfinal_sinestream =

   76.2012


tfinal_prbs =

   13.1071

周波数応答の推定における性能は、どちらの入力信号でもほぼ同じです。PRBS 入力信号を使用すると、sinestream 信号を使用した推定に比べて、短いシミュレーション時間で正確な周波数応答の推定が得られます。ただし、PRBS の推定結果には多数の周波数点が含まれるため、正確なパラメトリック推定を得るには間引きしなければなりません。

周波数応答の結果からのパラメトリック モデルの推定

制御設定のワークフローでは、伝達関数モデルや状態空間モデルなどのパラメトリック モデルが広く使用されます。周波数応答推定の結果からパラメトリック モデルを推定できます。

PMSM モーターのパラメトリック モデルを推定するには、最初に estsys1 または estsys2_thinned を MATLAB ワークスペースにエクスポートしてから、伝達関数モデルと状態空間モデルのどちらを推定するかに応じて System Identification Toolbox™ ソフトウェアの関数 tfest または ssest を使用します。

モデルを閉じます。

close_system(model,0)

参考

関連するトピック