Main Content

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

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

プラント モデル

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

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

rA=-kCA

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

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

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

VdCA1dt=F(CA0-CA1)-VkCA1

VdCA2dt=F(CA1-CA2)-VkCA2

定常状態では、

dCA1dt=0

dCA2dt=0

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

F*(CA0*-CA1*)-VkCA1*=0

F*(CA1*-CA2*)-VkCA2*=0

ここで、CA0*CA1*、および CA2* は定常値です。

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

  • F* = 0.085 mole/min

  • CA0* = 0.925 mol/min

  • V = 1.05 m3

  • k = 0.04 min-1

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

CA1*=KCA0*=0.6191mol/m3

CA2*=K2CA0*=0.4144mol/m3

ここで

K=F*F*+Vk=0.6693

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

線形プラント モデル

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

CA2(s)F(s)

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

CA0(s)CA2(s)

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

ここで

GA1=CA1(s)CA0(s)=0.66938.2677s+1

GF1=CA1(s)F(s)=2.40878.2677s+1

GA2=CA2(s)CA1(s)=0.66938.2677s+1

GF2=CA2(s)F(s)=1.61188.2677s+1

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

CA2(s)F(s)=GF1GA2+GF2=13.3259s+3.2239(8.2677s+1)2

CA2CA0=GA1GA2=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 構造の定義

"制御システム デザイナー" を開きます。そうするには、MATLAB デスクトップの [アプリ] タブで [制御システム デザイナー] を選択します。あるいは、MATLAB コマンド プロンプトで「controlSystemDesigner」と入力します。

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

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

[OK] をクリックします。

補償器の調整

[アーキテクチャの編集] ダイアログ ボックスでプラント モデルおよび外乱モデルを指定すると、[制御システム デザイナー] で表示されているプロットが更新され、指定したモデルが反映されます。右下のプロットに、システムの閉ループ ステップ応答が表示されます。

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

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

IMC 補償器を調整するには、"制御システム デザイナー"[調整法] をクリックし、[内部モデル コントロール (IMC) の調整] を選択します。

[主要な閉ループの時定数]2 を選択し、[望ましいコントローラー次数]2 を選択します。

コントローラーを更新するには、[補償器の更新] をクリックします。

閉ループ ステップ応答プロットで、調整後のコントローラーによる閉ループの整定時間は約 4.4 秒です。

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

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

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

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

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

アプリで次のコントローラーがエクスポートされます。

C = zpk([-0.121 -0.121],[-0.2419, -0.5],2.5647)
C =
 
  2.5647 (s+0.121)^2
  ------------------
  (s+0.2419) (s+0.5)
 
Continuous-time zero/pole/gain model.

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

C_new = feedback(C,G2,+1)
C_new =
 
               2.5647 (s+0.121)^4
  --------------------------------------------
  (s-0.0004396) (s+0.121) (s+0.1213) (s+0.242)
 
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  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')

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

参考

関連するトピック