Main Content

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

パラメーターが変化する DC モーターの設定値追従

この例では、Simulink® モデルからの制御システムのプラントの変化を表す、LTI モデルの配列を生成する方法を説明します。このモデルの配列は、制御システム デザイナーで制御設計に使用されます。

DC モーター モデル

電機子制御の DC モーターでは、印加電圧 Va によってシャフトの角速度 $\omega$ が制御されます。DC モーターの簡易モデルを下に示します。

DC モーター用の Simulink モデルを開きます。

mdl = 'scdDCMotor';
open_system(mdl)

バッチ線形化の実行

コントローラーは、基準角速度でのステップ変化に追従することを目標としています。

この例では、以下のモーターの物理定数を使用します。

  • R = 2.0 +/- 10% オーム

  • L = 0.5 ヘンリー

  • Km = 0.1 トルク定数

  • Kb = 0.1 逆起電力定数

  • Kf = 0.2 Nms

  • J = 0.02 +/- .01 kg m^2

パラメーター RJ は値の範囲として指定されることに注意してください。

すべての物理パラメーター値で動作するコントローラーを設計するには、これらの値をサンプリングして代表的なプラント セットを作成します。

パラメーター RJ には、そのノミナル値、最小値、および最大値を使用します。

R = [2,1.8,2.2];
J = [.02,.03,.01];

プラント モデルの LTI 配列を作成するため、DC モーター プラントをバッチ線形化します。RJ のサンプル値の各組み合わせについて Simulink モデルを線形化します。これを行うには、モデルに示されているように、線形化入力ポイントをコントローラー ブロックの出力位置に指定し、ループ開始点のある線形化出力ポイントを負荷ブロックの出力位置に指定します。

モデルに指定された線形化解析ポイントを取得します。

io = getlinio(mdl);

プラント パラメーター RJ を変化させます。

[R_grid,J_grid] = ndgrid(R,J);
params(1).Name = 'R';
params(1).Value = R_grid;
params(2).Name = 'J';
params(2).Value = J_grid;

パラメーター値の各組み合わせについてモデルを線形化します。

sys = linearize(mdl,io,params);

制御システム デザイナーを開く

次のコマンドを使用して制御システム デザイナーを開き、プラント モデルの配列をインポートします。

controlSystemDesigner(sys)

制御システム デザイナーを使用して、以下に示すように、他のプラント モデル上での効果を可視化しながらノミナル プラント モデルのコントローラーを設計できます。

根軌跡エディターには、ノミナル モデルの根軌跡と、他のプラント モデルに関連付けられている閉ループの極配置が表示されます。

ボード エディターには、ノミナル モデル応答と他のプラント モデルの応答の両方が表示されます。

すべてのプラント モデルのステップ応答を表示するには、[ステップ応答] プロットを右クリックし、[マルチモデル表示]、[個別の応答] を選択します。ステップ応答は、いずれのプラント モデルでも設定値追従が達成されていないことを示しています。

コントローラーの設計

制御システム デザイナーのツールを使用して、設定値追従用に次の補償器を設計します。

$$ C(s) = 1.19 \frac{(s+2.1)}{s} $$

結果の設計を以下に示します。閉ループ ステップ応答が示すように、設定値追従の目標は、プラント セット内で定義されているすべてのモデルに対して定常偏差をゼロにすることです。ただし、ゼロ パーセント オーバーシュートの要件が必要な場合、すべての応答がこの要件を満たすわけではありません。

設計のエクスポートと Simulink モデルでの検証

設計したコントローラーを MATLAB® ワークスペースにエクスポートするには、[エクスポート] をクリックします。[モデルのエクスポート] ダイアログ ボックスで [C] を選択し、[エクスポート] をクリックします。Simulink モデルにコントローラーのパラメーターを書き込みます。

[Cnum,Cden] = tfdata(C,'v');
hws = get_param(mdl, 'modelworkspace');
assignin(hws,'Cnum',Cnum)
assignin(hws,'Cden',Cden)

詳細情報

制御システム デザイナーのマルチモデル機能の使用の詳細については、マルチモデルの制御設計を参照してください。

参考

関連するトピック