手動と PID 制御の間のバンプレス制御移行
この例では、手動制御から比例-積分-微分 (PID) 制御へ切り替える際にバンプレス制御移行を行う方法を示します。このモデルでは Simulink® の PID Controller ブロックを使用してむだ時間を含む 1 次プロセスを制御します。
open_system('sldemo_bumpless');
PID Controller は、Simulink® Control Design™ で使用可能な PID 調整器を使用して、飽和を無視して調整されます。
制御対象のプラントは、次の式によって与えられるむだ時間を含む 1 次プロセスです。
.
この例は、飽和ランプ信号 Manual signal
で指定された開ループ制御から開始します。開ループ制御信号 Manual signal
がプラント ブロック First Order Process.
に入力されます。プラント ブロックの出力は、望ましい定常値 40
です。
この例では t = 150
で制御移行を実装します。
開ループ制御と閉ループ制御間のこの遷移には、2 つの制御フェーズが含まれています。
手動 — 起動時における t =
150
までのプラント ブロックへの飽和ランプ信号入力 (Control mode
=0
)。自動 — t = 150 より後の PID 制御 (
Control mode
=1
)。プラント入力時にバンプをもたらすことなくプロセスを引き継がなければなりません。
手動制御から自動制御への移行時に、移行によって制御信号のバンプが生じてはなりません。
PID コントローラーの構成
スムーズな制御遷移をサポートするために、PID Controller ブロックは、トラッキングと制御という 2 つの動作モードに対応しています。
制御モードでは、PID Controller ブロックは通常の PID コントローラーとして動作します。トラッキング モードでは、ブロックに特別な入力があるため、PID ブロックがその積分器出力を変更することで内部状態を調整できます。この変更により、ブロック出力では別の信号入力を追従できます。
バンプレス制御移行を達成するには、PID Controller ブロックは以下のモードでなければなりません。
トラッキング モード (プラントが手動制御 (開ループ) の場合)
制御モード (プラントが自動制御 (閉ループ PID 制御) の場合)
信号トラッキングを実行するには、[ブロック パラメーター] ダイアログ ボックスの [初期化] タブで [トラッキング モードを有効にする] を選択し、[トラッキング係数 (Kt)] を指定します。この値がゲインです。このゲインの逆数は、トラッキング ループの時定数です。ゲインを選択する方法の詳細については、[1] を参照してください。
トラッキング モードが有効になっていれば、ブロックは 2 番目の入力端子 TR
をもちます。
PID Controller ブロックのマスク内を表示して TR
端子がどのように機能するのかを確認するには、次のコマンドを使用します。
open_system('sldemo_bumpless/PID Controller','force');
切り替えメカニズムの設定
PID Controller ブロックのトラッキング モードを有効にするだけでなく、モデルは Switch ブロックを使用して制御移行を実装します。Switch ブロックは、プラントおよび PID Controller ブロックのトラッキング端子 TR
に入力する信号を決定します。
t = 0
の時点で、Switch ブロックは手動制御信号をプラント入力と、PID Controller ブロックのトラッキング端子に送ります。これにより、PID Controller ブロックの積分を調整することで、手動フェーズ中に PID Controller ブロックの出力が手動制御信号に追従できます。このため、制御移行の実行時に、PID Controller の出力が手動制御信号とほぼ同じになります。
t = 150
の時点で、Switch ブロックが切り替わり、PID Controller ブロックの出力をプラントと PID Controller ブロックのトラッキング端子に送るようになります。PID Controller ブロックは自身の出力に追従します。
モデルを閉じるには、以下のコマンドを使用します。
close_system('sldemo_bumpless/PID Controller'); close_system('sldemo_bumpless');
トラッキング モードをオンにしたシミュレーション
バンプレス制御移行をシミュレートします。この場合、トラッキング モードはオンです。
open_system('sldemo_bumpless'); sim('sldemo_bumpless');
Setpoint
信号とシステム応答のプロットでは、t=150
で制御が手動から自動に移行する際に出力バンプなしで Output
信号が Setpoint
プロファイルに追従していることが示されます。
clf; plot(logsoutBumpless{1}.Values); grid on; hold on; %draw on top of previous plot plot(logsoutBumpless{2}.Values); title('Comparison of Setpoint vs Measured Output: Tracking Mode on'); %add title to plot xticks(0:50:600); % set x-axis ticks ylim([0 50]); % set min and max of y-axis values legend('Output y(t) ','Setpoint r(t)'); %specify legend xline( 150, ':','HandleVisibility','off'); %draw a vertical line at 150s hold off;
トラッキング モードをオフにしたシミュレーション
モデル sldemo_bumplessno
では、トラッキング モードは無効になっています。PID Controller ブロックにはトラッキング入力端子はありません。
close_system('sldemo_bumpless'); open_system('sldemo_bumplessno'); sim('sldemo_bumplessno');
Setpoint
信号とシステム応答のプロットでは、t=150
で制御が手動から自動に切り替わる際に Output
信号に大きな過渡応答があることが示されます。
%Plot Results clf; plot(logsoutBumplessNo{1}.Values); grid on; hold on; plot(logsoutBumplessNo{2}.Values); title('Comparison of Setpoint vs Measured Output: Tracking Mode off'); xticks(0:50:600); ylim([0 600]); legend('Output y(t) ','Setpoint r(t)'); xline( 150, ':','HandleVisibility','off' ); hold off;
トラッキング モードがオンのときとオフのときに測定された出力の比較
下のプロットでは、手動から自動への制御遷移は、トラッキング モードがオンのときの方が滑らかであることが示されています。
clf; plot(logsoutBumplessNo{2}.Values(1),'r'); grid on; hold on; plot(logsoutBumplessNo{1}.Values(1),'b'); plot(logsoutBumpless{1}.Values(1),'g'); title('Comparison of Measured Outputs '); xticks(0:50:600); ylim([0 600]); legend('Setpoint r(t)','Output y(t), Tracking Mode:off', 'Output y(t), Tracking Mode:on'); yl= ylim; patch([125 125 200 200],[yl(1) yl(2) yl(2) yl(1)],'k',... 'facecolor',[0.4660 0.6740 0.5880],'edgecolor','none', ... 'facealpha',0.1, 'HandleVisibility','off') ; % draw transparent polygon to highlight a section of plot hold off;
PID Controller ブロックを使用したバンプレス制御では、トラッキングを有効にします。
参照
[1] Åström, Karl J., and Tore Hägglund. Advanced PID Control. Research Triangle Park, NC: International Society of Automation, 2006.