このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
Closed-Loop PID Autotuner ブロックを使用した PMSM モデルのゲイン スケジュール コントローラーの調整
この例では、Closed-Loop PID Autotuner ブロックを使用して、永久磁石同期モーター (PMSM) のゲイン スケジュール コントローラーを 1 回のシミュレーションのみで調整する方法を説明します。
PMSM モデル
PMSM モデルは Motor Control Blockset™ の mcb_pmsm_foc_sim
モデルに基づいています。モデルには以下が含まれています。
インバーターと PMSM のダイナミクスをモデル化するサブシステム
モーター速度の制御用のベクトル制御アルゴリズムを実装する内側のループ (電流) と外側のループ (速度) の PI コントローラー
このモデルを調べて詳細を確認できます。
この例では、ゲイン スケジュール コントローラーを使用してモーターの回転速度を制御するように元のモデルを変更しています。ゲイン スケジュール コントローラーのゲインはダイナミック ルックアップ テーブルを使用してリアルタイムで更新されます。モーター プラントの速度は元々、mcb_pmsm_foc_sim
Simulink® モデルの単一の PI コントローラーによって制御されています。
以下の節では、mcb_pmsm_foc_sim
モデルを変更してゲイン スケジュール PI コントローラーを調整および実装する方法について説明します。あるいは、この例で用意されている事前設定された scd_pid_gs_mcb_pmsm_foc_sim
モデルを使用します。
ゲイン スケジューリングと Closed-Loop PID Autotuner を使用した PI コントローラーの速度制御
Speed Control サブシステムは、比例ゲインと積分ゲイン、積分器のリセット、積分器の初期条件に対する外部入力をもつ単一の PI コントローラーで構成されています。PI コントローラーは積分ゲイン "I" ではなく、積分ゲインにサンプル時間を乗算した "I*Ts" を使用するよう設定されています。
Closed-Loop PID Autotunerブロックは Autotuning サブシステム内にあります。ブロックはコントローラー ゲインの調整に必要なプラントの推定に使用される摂動を出力します。Closed-Loop PID Autotuner ブロックは "P" と "I" のゲインを調整しますが、"I*Ts" のゲインは調整しません。PI コントローラーで使用されるゲインを適切に更新するには、この例のゲイン更新を使用する Closed-Loop PID Autotuner の節に示すように、積分ゲインをサンプル時間で乗算します。
Gain Scheduling サブシステムには、比例ゲインと積分ゲインの両方に対するLookup Table Dynamicブロックが含まれています。詳細については、シミュレーション時における PI コントローラー ゲイン スケジュールのゲインの更新の節を参照してください。Speed Breakpoints Constant ブロックはゲイン スケジューリング ルックアップ テーブルで使用される 3 つのブレークポイントを含むベクトルです。このベクトルは、この例では [0.2 0.5 0.8] に設定されます。Data Store Memory ブロックは、ゲイン スケジュール コントローラーのゲインを更新してそれらをダイナミック ルックアップ テーブルに渡してから、コントローラーに渡すために使用されます。
ゲイン更新を使用する Closed-Loop PID Autotuner
Autotuning サブシステムには、Closed-Loop PID Autotuner ブロック、調整されたゲインを更新して保存するサブシステム、スケジュールされたゲインを適切に更新するように調整するブレークポイントを判別するサブシステムが含まれます。
Closed-Loop PID Autotuner ブロックの構成
この例で使用される設計要件の形式は、閉ループ ステップ応答の特性です。
オーバーシュートが 5% 未満
立ち上がり時間が 0.01 秒未満
PI コントローラーを調整して前述の設計要件を満たすために、Closed-Loop PID Autotuner ブロックのパラメーターが事前に入力されます。[調整] タブには 3 つの主要な調整設定があります。
ターゲットの帯域幅 - コントローラーの望ましい応答速度を指定します。ターゲットの帯域幅は約 2/目的の立ち上がり時間です。目的の立ち上がり時間である 0.01 秒に対して、ターゲットの帯域幅を 2/0.01 = 200 rad/s に設定します。
ターゲットの位相余裕 - コントローラーの望ましいロバスト性を指定します。この例では、既定値の 60 度から開始します。
実験のサンプル時間 - Autotuner ブロックによって実行される実験のサンプル時間。値 –1 を使用して速度コントローラーのサンプル時間を継承します。
[実験] タブには 3 つの主要な実験設定があります。
プラント タイプ - プラントが漸近的に安定か、または積分であるかを指定します。この例では、インバーターとモーター プラントは安定です。
プラントの符号 - プラントが正と負のどちらの符号をもつかを指定します。定格操作点でのプラント入力における正の変化によって、プラントが新しい定常状態に達したときにプラント出力に正の変化が生じる場合、プラントの符号は正になります。この例では、インバーターとモーター プラントの符号は正になります。
正弦波振幅 - 挿入される正弦波摂動の振幅を指定します。この例では、設定点からの摂動の振幅が必ず 15% 未満になるように、0.01 の正弦波振幅を指定します。
これらのターゲットの帯域幅と位相余裕は、元のモデルにおける既定のゲインのセットと同等の値に設定されます。この例の Closed-Loop PID Autotuner は、これらの設定で事前構成されています。
ゲインの更新に使用される Data Store Memory ブロックは、個別の設定値を調整してそれらをゲイン スケジュール コントローラーで更新するために、一度に 1 つの要素のみを更新するように構成されています。
現在の操作点がゲイン スケジュール ルックアップ テーブルのブレークポイントと一致するかどうかを判別するには、現在の指定された速度指令 N_ref
をゲイン スケジュール ルックアップ テーブルで使用されるブレークポイントのベクトルと比較します。現在の速度がいずれか 1 つのブレークポイントと等しい場合に自動調整が行われると、そのブレークポイントのゲインが更新されます。
シミュレーション時における PI コントローラー ゲイン スケジュールのゲインの更新
通常、ゲイン スケジューリング ワークフローには、システムを実行し、ゲインを調整し、ゲインを更新してから、システムを再実行して、ゲイン スケジュール コントローラーの調整方法を示すために複数のシミュレーションが必要です。この例では、これらすべての手順をダイナミック ルックアップ テーブルを使用して 1 回のシミュレーションで実行します。
この例では、2 秒より前に、静的なゲインのセットが使用されます。これらのゲインはゲイン スケジュール ルックアップ テーブル 0.5 N_ref
の中央のブレークポイントで調整され、ゲイン スケジューリングを使用しない場合に一般的なシステム応答を示すために使用されます。2 秒後に、ゲイン スケジュール コントローラーのゲインは 3 つの異なるブレークポイント 0.2、0.5、0.8 N_ref
で使用され、調整されます。すべてのブレークポイントは、Closed-Loop PID Autotuner ブロックで同じ設定を使用して調整されます。
インバーターとモーター プラント モデルへの非線形負荷トルクの追加
非線形性が存在する場合にゲイン スケジューリングを使用して性能を向上させる方法を示すため、負荷トルク プロファイルには静的な負荷トルクの代わりに非線形負荷トルクが含まれています。
この例では、非線形負荷は です。ここで、 は負荷トルク、 は と等しい負荷トルク定数、 はモーターの機械速度です。この方程式から、このシステムの負荷トルクと減衰が機械速度の 2 乗で増加することがわかります。この関係は、低速時には減衰がほとんどないことを意味します。したがって、同じレベルの性能を達成するには非常に高い減衰が必要な高速時と比べて、低速時に必要なコントローラー ゲインは小さくなります。
複数の操作点でのゲイン スケジュール コントローラーの調整
モデル設定を使用すれば、複数の操作点で調整を実行し、ゲイン スケジュール コントローラーを作成して、これらのゲインの性能を 0.5 N_ref
で調整されたゲインに対して 1 回のシミュレーションでテストできるようになります。モデルはシミュレーションの開始時にステップ変化を実行し、3 つの操作点 (2、0.5、0.8 N_ref
) でコントローラーを調整してから、同じステップ変化を最後に実行するように設定されます。次の図は速度の基準信号のプロファイルを示しています。
モデルをシミュレートして 3 つの操作点でゲインを調整し、ルックアップ テーブルでゲインを更新し、調整されたゲインの性能をテストします。
mdl = 'scd_pid_gs_mcb_pmsm_foc_sim';
simOut = sim(mdl);
次に、0.5 N_ref
で調整されたゲインで実行された初期ステップ応答と、ゲイン スケジューリングで実行されたシミュレーション終了時の応答との比較をプロットします。
idx = [0.5 0.75 9.5 9.75]./Ts; Time_noGS = simOut.tout(idx(1):idx(2))-simOut.tout(idx(1)); SpeedFdbk_noGS = simOut.logsout{2}.Values.Data(idx(1):idx(2)); Time_wGS = simOut.tout(idx(3):idx(4))-simOut.tout(idx(3)); SpeedFdbk_wGS = simOut.logsout{2}.Values.Data(idx(3):idx(4)); figure; plot(Time_noGS,SpeedFdbk_noGS,Time_wGS,SpeedFdbk_wGS) legend('No GS', 'With GS','Location','southeast') grid on title({'Step Response Comparison of Speed Controller'; 'with and without Gain Scheduling'}) xlabel('Time [sec]') ylabel('Speed Feedback [-]')
ゲイン スケジュール コントローラーでは、1 つの操作点で調整された単一のゲインのセットと比べて、より小さい立ち上がり時間と整定時間のオーバーシュートが大きくなります。
操作範囲に対して調整されたゲイン スケジュール コントローラーの性能
0.5 N_ref
ではなく 0.8 N_ref
で取得した静的なゲインのセットを使用して、特定のステップ変化に対して同様の性能を達成できます。
ただし、0 から 0.5 N_ref
にステップするこの単一のゲインのセットを使用すると、ゲイン スケジュール コントローラーを使用した場合に比べて性能が低下します。
ゲイン スケジューリングでは、静的なゲインのセットのみを使用した場合と比べて、操作範囲に対して一貫性が高くなり、全体的な性能が向上します。
このワークフローは、Closed-Loop PID Autotuner ブロックを使ってゲイン スケジュール コントローラーを調整する場合に便利です。
モデルを閉じます。
close_system(mdl,0);
参考
Closed-Loop PID Autotuner | Discrete PID Controller | Lookup Table Dynamic | Signal Editor