ドキュメンテーション

このページは前リリースの情報です。該当の英語のページはこのリリースで変更されています。最新情報を確認するには、ページ左下にある国リストで [United States] を選択し、英語ドキュメンテーションに切り替えてください。

化学反応器プラントの内部モデル コントローラーの設計

この例では、制御システム デザイナーを使用して直列化学反応器に対して IMC 構造内に補償器を設計する方法について説明します。プロセス制御アプリケーションでは、モデルベースの制御システムを使用して設定値追従し、負荷外乱を抑制することがよくあります。

プラント モデル

この例のプラントは 2 つのよく混合されたタンクで構成される化学反応器システムです。

反応器では一定温度が保持されており、各反応器内の反応は成分 A について 1 次です。

$$r_{A} = -kC_{A}$$

システムには物質収支が適用され、システムに対して動的なモデルが生成されます。タンク内の水位はオーバーフロー ノズルによって一定に保たれているため、水位制御は行われません。

このプラントの詳細は、Example 3.3 in Chapter 3 of "Process Control: Design Processes and Control systems for Dynamic Performance" by Thomas E. Marlin を参照してください。

次の微分方程式は成分の収支を記述します。

$$V\frac{dC_{A1}}{dt} = F(C_{A0} -C_{A1}) - VkC_{A1}$$

$$V\frac{dC_{A2}}{dt} = F(C_{A1} -C_{A2}) - VkC_{A2}$$

定常状態では、

$$ \frac{dC_{A1}}{dt} = 0 $$

$$ \frac{dC_{A2}}{dt} = 0 $$

その物質収支は次になります。

$$F^*(C_{A0}^* - C_{A1}^*) - VkC_{A1}^* = 0$$

$$F^*(C_{A1}^* - C_{A2}^*) - VkC_{A2}^* = 0$$

ここで、 $C_{A0}^*$ $C_{A1}*$ および $C_{A2}*$ は定常値を表します。

次の設計仕様と反応器のパラメーターを置換します。

$$F^*$$ = 0.085 $$mole/min$$

$$C_{A0}^*$$ = 0.925 $$mol/min$$

$$V$$ = 1.05 $$m^3$$

$$k$$ = 0.04 $$min^{-1}$$

結果として 2 つの反応器内に次の定常状態濃度値が得られます。

$$C_{A1}^* = KC_{A0}^* = 0.6191 mol/m^3$$

$$C_{A2}^* = K^2C_{A0}^* = 0.4144 mol/m^3$$

ここで、

$$K = \frac{F^{*}}{F*+Vk} = 0.6693$$

この例では、2 番目の反応器 $C_{A2}^*$ からの排出反応物濃度が、供給濃度 $C_{A0}$ に外乱がある場合も維持されるようにコントローラーを設計します。操作変数は、最初の反応器に入る反応物のモル流量 F です。

線形プラント モデル

この制御設計例では、プラント モデルは次のようになります。

$$ \frac{C_{A2}(s)}{ F(s)}$$

外乱モデルは次のようになります。

$$ \frac{C_{A0}(s)}{C_{A2}(s)}$$

この化学プロセスは、次のブロック線図で表すことができます。

ここで、

$$ G_{A1} = \frac{C_{A1}(s)}{C_{A0}(s)} = \frac{0.6693}{8.2677s+1}$$

$$ G_{F1} = \frac{C_{A1}(s)}{F(s)} = \frac{2.4087}{8.2677s+1}$$

$$ G_{A2} = \frac{C_{A2}(s)}{C_{A1}(s)} = \frac{0.6693}{8.2677s+1}$$

$$ G_{F2} = \frac{C_{A2}(s)}{F(s)} = \frac{1.6118}{8.2677s+1}$$

ブロック線図に基づき、次のようなプラント モデルと外乱モデルを取得します。

$$ \frac{C_{A2}(s)}{ F(s)} = G_{F1}G_{A2} + G_{F2} = \frac{13.3259s+3.2239}{(8.2677s+1)^2} $$

$$ \frac{C_{A2}}{C_{A0}} = G_{A1}G_{A2} = \frac{0.4480}{(8.2677s+1)^2}$$

コマンド ラインでプラント モデルを作成します。

s = tf('s');
G1 = (13.3259*s+3.2239)/(8.2677*s+1)^2;
G2 = G1;
Gd = 0.4480/(8.2677*s+1)^2;

G1 はコントローラーの評価で使用される実際のプラントです。G2 は実際のプラントの近似で、IMC 構造内の予測モデルとして使用されます。G2 = G1 は、モデルの不一致が存在していないことを意味します。Gd は外乱モデルです。

制御システム デザイナーでの IMC 構造の定義

制御システム デザイナーを開きます。

controlSystemDesigner

IMC 制御アーキテクチャを選択します。制御システム デザイナーで、[アーキテクチャの編集] をクリックします。[アーキテクチャの編集] ダイアログ ボックスで、[Configuration 5] を選択します。

システム データを読み込みます。G1G2Gd について、モデルの [値] を指定します。

補償器の調整

G1 の開ループ ステップ応答をプロットします。

step(G1)

プロットを右クリックし、[特性]、[立ち上がり時間] のサブメニューを選択します。青色の立ち上がり時間マーカーをクリックします。

立ち上がり時間は約 25 秒です。IMC 補償器を調整して、閉ループ応答時間を速くします。

IMC 補償器を調整するには、[調整法] をクリックし、[内部モデル コントロール (IMC) の調整] を選択します。

2 の閉ループ時定数を選択し、希望する補償器の次数として 2 を指定します。[補償器の更新] をクリックします。

閉ループ ステップ応答を表示するには、制御システム デザイナーで [IOTransfer_r2y:step] プロット タブをダブルクリックします。

モデルが不一致の場合の性能の制御

コントローラーの設計においては、G1 が G2 と等しくなると仮定しました。実際には、これらは異なることが多く、設定値に追従して外乱を抑制するにはコントローラーが十分にロバストである必要があります。

G1 と G2 の間にモデルの不一致を発生させ、設定点の変化と負荷外乱の両方が存在する状態で、MATLAB コマンド ラインで制御性能を調べます。

IMC 補償器を MATLAB ワークスペースにエクスポートします。[エクスポート] をクリックします。[モデルのエクスポート] ダイアログ ボックスで、補償器モデル C を選択します。

[エクスポート] をクリックします。

IMC 構造を、フィードフォワード パス内のコントローラーと単位フィードバックを備えた古典フィードバック制御構造に変換します。

C = zpk([-0.121 -0.121],[-0.242, -0.466],2.39);
C_new = feedback(C,G2,+1)
C_new =
 
                2.39 (s+0.121)^4
  ---------------------------------------------
  (s-0.0001594) (s+0.121) (s+0.1213) (s+0.2419)
 
Continuous-time zero/pole/gain model.

次のプラント モデルを定義します。

  • モデルの不一致なし:

G1p = (13.3259*s+3.2239)/(8.2677*s+1)^2;
  • G1 の時定数を 5% 変更:

G1t = (13.3259*s+3.2239)/(8.7*s+1)^2;
  • G1 のゲインを 3 倍に増加:

G1g = 3*(13.3259*s+3.2239)/(8.2677*s+1)^2;

設定点の追従性能を評価します。

step(feedback(G1p*C_new,1),feedback(G1t*C_new,1),feedback(G1g*C_new,1))
legend('No Model Mismatch','Mismatch in Time Constant','Mismatch in Gain')

外乱の抑制性能を評価します。

step(Gd*feedback(1,G1p*C_new),Gd*feedback(1,G1t*C_new),Gd*feedback(1,G1g*C_new))
legend('No Model Mismatch','Mismatch in Time Constant','Mismatch in Gain')

コントローラーがプラント パラメーターの不確かさに対して比較的ロバストになっています。

この情報は役に立ちましたか?