ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

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

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

DC モーター モデル

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

モデルを開いてバッチ線形化を実行

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

scdDCMotor
mdl = 'scdDCMotor';

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

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

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

  • L = 0.5 ヘンリー

  • Km = 0.1 トルク定数

  • Kb = 0.1 逆起電力定数

  • Kf = 0.2; % Nms

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

パラメーター R およびパラメーター J は、値範囲として指定されることに注意してください。

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

R と J の値は、ノミナル値、最小値および最大値です。

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

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

% Get the linearization I/O specified in the model.
io = getlinio(mdl);
ct = 1;

% Vary the plant parameters R and J.
[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;

% Linearize the model
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)

詳細情報

制御システム デザイナーのマルチモデル機能の使用に関する追加情報: 「プラント モデル セットに対する補償器の設計」

bdclose('scdDCMotor');
この情報は役に立ちましたか?