ドキュメンテーション

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

複数操作点用の PID コントローラー群の設計

この例では、幅広い操作点上で動作する非線形プラント用の PID コントローラーの配列を Simulink で設計する方法を説明します。

プラント モデルを開く

プラントは、幅広い操作点上で動作する連続攪拌タンク反応器 (CSTR) です。単一の PID コントローラーの場合、冷却水温度を効果的に使用して、その PID コントローラーの設計にある小規模な操作範囲付近の出力濃度を調整できます。ただし、プラントが強度な非線形システムであるため、操作点が大きく変化する場合、制御性能が低下します。閉ループ システムでは、不安定になる可能性もあります。

以下のコマンドで CSTR プラント モデルを開きます。

mdl = 'scdcstrctrlplant';
open_system(mdl)

詳細は、Seborg, D.E. et al., "Process Dynamics and Control", 2nd Ed., 2004, Wiley, pp.34-36 を参照してください。

ゲイン スケジュールの紹介

非線形制御問題を解決するための一般的な方法として、線形コントローラーでゲイン スケジュールを使用する方法が挙げられます。ゲイン スケジュール制御システムの設計には、一般的に以下の 4 つの手順があります。

  1. 各動作領域のプラント モデルを取得します。通常行われるのは、いくつかの平衡操作点でプラントを線形化することです。

  2. 前の手順で取得したプラント モデルの PID など、線形コントローラーのファミリを設計します。

  3. PID ゲインなどのコントローラー係数がスケジューリング変数の値に基づいて変更されるように、スケジュール メカニズムを実装します。プラント操作への外乱を最小化するには、コントローラー間の滑らかな (バンプレス) 切り替えが必要です。

  4. 制御性能をシミュレーションで評価します。

ゲイン スケジュールでのバックグラウンドの読み取りについての詳細は、W. J. Rugh と J. S. Shamma の調査論文"Research on gain scheduling", Automatica, Issue 36, 2000, pp.1401-1425 を参照してください。

この例では、手順 1 および 2 にある CSTR プラントの PID コントローラー群の設計について説明します。

複数操作点用の線形プラント モデルの取得

出力濃度 C は、異なる動作領域を識別するために使用されます。CSTR プラントは、低変換率 (C=9) と高変換率 (C=2) の間の任意の変換率で操作できます。この例では、全操作範囲を C = 2、3、4、5、6、7、8 および 9 で表現される 8 つの領域に分割します。

以下のループでは、まず、findop コマンドを使用して平衡操作点を計算します。その後、linearize コマンドを使用して各操作点でプラントを線形化します。

% Obtain default operating point
op = operspec(mdl);
% Set the value of output concentration C to be known
op.Outputs.Known = true;
% Specify operating regions
C = [2 3 4 5 6 7 8 9];
% Initialize an array of state space systems
Plants = rss(1,1,1,8);
for ct = 1:length(C)
    % Compute equilibrium operating point corresponding to the value of C
    op.Outputs.y = C(ct);
    opoint = findop(mdl,op,findopOptions('DisplayReport','off'));
    % Linearize plant at this operating point
    Plants(:,:,ct) = linearize(mdl, opoint);
end

CSTR プラントが非線形であるため、複数の線形モデルで異なる特性が期待されます。たとえば、高変換率と低変換率を使用するプラント モデルは安定していますが、それ以外は安定しません。

isstable(Plants,'elem')'
ans =

     1     1     0     0     0     0     1     1

プラント モデル用の PID コントローラーの設計

複数の PID コントローラーをバッチで設計するには、pidtune コマンドを使用します。次のコマンドでは、並列形式で PID コントローラーの配列が生成されます。必要な開ループ交差周波数は 1 ラジアン/秒、および位相余裕は既定値の 60°です。

% Design controllers
Controllers = pidtune(Plants,'pidf',pidtuneOptions('Crossover',1));
% Display controller for C=4
Controllers(:,:,4)
ans =
 
             1            s    
  Kp + Ki * --- + Kd * --------
             s          Tf*s+1 

  with Kp = -12.4, Ki = -1.74, Kd = -16, Tf = 0.00875
 
Continuous-time PIDF controller in parallel form.

ステップ設定値追従用の閉ループ応答を以下のようにプロットします。

% Construct closed-loop systems
clsys = feedback(Plants*Controllers,1);
% Plot closed-loop responses
figure;
hold on
for ct = 1:length(C)
    % Select a system from the LTI array
    sys = clsys(:,:,ct);
    sys.Name = ['C=',num2str(C(ct))];
    sys.InputName = 'Reference';
    % Plot step response
    stepplot(sys,20);
end
legend('show','location','southeast')

すべての閉ループは安定していますが、不安定なプラント (C=4、5、6 および 7) のあるループのオーバーシュートが大きすぎます。結果を改善するには、ターゲットの開ループ帯域幅を 10 ラジアン/秒まで引き上げます。

% Design controllers for unstable plant models
Controllers = pidtune(Plants,'pidf',10);
% Display controller for C=4
Controllers(:,:,4)
ans =
 
             1            s    
  Kp + Ki * --- + Kd * --------
             s          Tf*s+1 

  with Kp = -283, Ki = -151, Kd = -128, Tf = 0.0183
 
Continuous-time PIDF controller in parallel form.

新しいコントローラーの閉ループのステップ応答をプロットします。

% Construct closed-loop systems
clsys = feedback(Plants*Controllers,1);
% Plot closed-loop responses
figure;
hold on
for ct = 1:length(C)
    % Select a system from the LTI array
    sys = clsys(:,:,ct);
    set(sys,'Name',['C=',num2str(C(ct))],'InputName','Reference');
    % Plot step response
    stepplot(sys,20);
end
legend('show','location','southeast')

これで、すべての閉ループ応答が満足のいく応答となります。比較のため、すべての操作点で同じコントローラーを使用した場合の応答を調べます。閉ループ システムの別のセットを作成し、各システムで C = 2 のコントローラーが使用されるようにします。

clsys_flat = feedback(Plants*Controllers(:,:,1),1);

figure;
stepplot(clsys,clsys_flat,20)
legend('C-dependent Controllers','Single Controller')

濃度に合わせて別々に設計された PID コントローラーの配列は、単一のコントローラーよりも大幅に高い性能を示します。

ただし、前掲の閉ループ応答は、完全な非線形システムの線形近似に基づいて計算されています。設計を検証するには、PID Controller ブロックを使用してモデルにスケジュール メカニズムを実装します。

モデルを閉じます。

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