非定常シミュレーション

非定常シミュレーションの基本的な考え方、またDYNSIMの個人的に重要と思うTipsを少し紹介します。

非定常シミュレーションと定常シミュレーションを比較した場合、大きくは以下のような点が異なってきます。

・Flow-Driven⇒Pressure-Driven

・ホールドアップの考慮

・時間変化の考慮

・プロセス制御の考慮

詳細は各項で触れていきますが、必要となる情報量が各段に増えてきます。

下図はそれぞれ定常シミュレーターPRO/IIと非定常シミュレーターDYNSIMで同じ状態を表現しようとした場合の差異のイメージになります。

左側に記載した定常シミュレーションの世界では、指定した流量、温度、圧力、組成を断熱でフラッシュさせるだけの単純なモデルですが、右側に記載した非定常シミュレーションで同様の定常状態を作ろうとした場合は、流量、圧力、温度、液面制御や、バルブやドラムのGeometry等、入力項目が各段に代わることが見てとれるかと思います。

SteadyDynamic

実プラントのトラブルシューティングにおいては、非定常シミュレーションが役立つ場面は多々ありますが、上記のようなモデリングの手間が非定常シミュレーションを行う上での大きな障害となり敬遠されがちです。

また、実プラントを正確に表現しようとすると、細かい配管まで全部入れ込もうとして途中でいざ走らせようとした際に、収束が難しく計算が破綻してしまったり、計算が重すぎて使い物にならなかったりするケースもあります。

検討目的に応じたポイントを掴み、計算速度計算安定性計算精度のバランスを見ながらモデル構築を行っていくことが重要になります。以下の項では、非定常シミュレーションを行う上で重要なポイントについて整理していきます。

流量を境界条件とし、圧力を成り行きとする考え方をFlow-Driven、圧力を境界条件とし、流量を成り行きとする考え方をPressure-Drivenと言います。

前出の図で言うと、定常シミュレーションの場合では、通常流量バルブの圧力損失を指定して、下流の圧力は成り行きとするFlow-Drivenの考え方になります。

一方で、非定常シミュレーションの場合は、上下流の圧力を指定して、流量が成り行きとなるPressure-Drivenの考え方に基づいています。(非定常シミュレーションでも例えば制限オリフィス等で流量が固定できる場合や、定量ポンプの下流からモデリングする場合等は、流量を境界条件とすることもありますが、基本的には圧力を境界条件、流量を成り行きとします。)

下図はそれぞれ定常シミュレーターPRO/IIと非定常シミュレーターDYNSIMで同じ状態を表現しようとした場合の差異のイメージになりますが、上記の説明と合わせてみていただくとイメージが湧きやすいかと思います。

SteadyDynamic

蓄積項の効果

定常シミュレーションにおいては、常にユニットの入出の物質収支、熱収支が維持された状態となりますが、非定常シミュレーションにおいては入出がバランスせず、差異分が蓄積項となります。

逆流や反応項を除くと、以下のように記載できます。(物質収支は成分数の配列になります)

$$ \frac{dM}{dt} = In.F \cdot In.z - Out.F \cdot Out.z $$ $$ \frac{dE}{dt} = In.F \cdot In.H - Out.F \cdot Out.H $$

ここで、M:各成分毎のホールドアップ[kmol]、F:モル流量[kmol/s]、z:モル組成[mol fraction]、E:内部エネルギー[kJ]、H:エンタルピー[kJ/kmol]

上記の蓄積項が、系内の圧力変動や組成変化の時間遅れに効いてくる形になりますが、急激な変化となるか、鈍ました変化となるかは容器のサイズ情報によるため、非定常シミュレーションにおいてはホールドアップ(Geometry情報の入力)が重要な因子となります。

特に内部流体が気体の場合は、正確な容量を入力していないと、実機とかけ離れた圧力ピークを示したり(容量が小さすぎる)、あるいは逆に全く圧力が変化しない(容量が大きすぎる)といった問題が起こります。

また、シミュレーターによっては、内部流体が非圧縮性流体か、あるいは圧縮性流体かによって式を切り替えるケースがあります。(AVEVA社のDYNSIMの場合は、Solution Optionタブ内で設定が可能です)

非定常シミュレーターにおいては、通常ヘッドも圧力バランス計算に組み込まれていますので、液面を正確に表現するためにも容器の形状入力が重要になります。(また液ノズルがボトムではなく側面にある場合は、ノズル位置も重要な情報となります)

また忘れ勝ちなのが熱容量の情報です。金属比熱、密度等の情報はシミュレーターによってデフォルトで想定している金属があるため、場合によっては見直しが必要となるケースがあります。

特に、系内の物質量の少ない高新空圧条件においては、わずかな外部雰囲気との熱の授受が思わぬ温度変動、ひいてはモデルの不安定さに繋がるケースもあるので、機器の熱容量に関する条件も確認が必要です。

微分方程式の解法

時間変化を考えるには微分方程式を解いていく必要があります。

微分方程式の解法についてはこちらにまとめていますが、解法によって特徴が異なるため、検討用途に応じた選択が重要になります。

水撃計算等、非常に短い時間で変動するプロセス検討においては、時間刻みや配管のセグメント数によっては誤った解法を選択してしまうと、変動が増幅されてしまう、あるいは早期に収束してしまうといった問題があります。

AVEVA社のSimCentralでは、複数のソルバーが用意されていますが、水撃計算においてはtrapezoidalを用いることが推奨されています。

制御の基本については、こちらにまとめておりますので、ご参照ください。また、PIDのチューングパラメーターについては、こちらの本が素晴らしいです。

DYNSIMを使ったシンプルな制御検討

以前作成した簡単な制御の雰囲気を掴むためのモデルをご紹介します。

PIDsimple

上図は、Transmitterに意図的に無駄時間と遅れ時間を設定し、Proportional項を調整して限界発振の状態を作り出しています。

通常のプラントでこのような状態を作り出すのは許されませんが、シミュレーション上であればこうした乱暴な操作も問題ありませんので、限界発振に必要なKp値を手探りで探すことができます。

限界発振の状態が分かればZiegler&Nicols限界感度法で適切なパラメーターを求めることができます。(限界感度法については制御のページをご参照ください)

以下は限界感度法でPIDパラメーターを決めた場合の制御過程を示しています。

Ziegler

また、別のモデルですが、簡単なステップ応答テストをDYNSIM上で行い、Ziegler&Nicols過渡応答法を試してみたのが以下になります。

Ziegler2

実機でステップ応答を見る場合には、大きな影響を与えない範囲を予め決めて、張り付きで状況を見ながら、なにかあればすぐにテストを中断しなければなりませんが、シミュレーターであれば、どんな外乱を与えても良いので、気楽に様々なテストを行うことができます。

DYNSIMとMatlabを使ったシンプルな制御検討

DYNSIMで簡単なステップ応答テストを行い、結果をMatlabのSystem Identification Toolboxでシステム同定し、Control System toolboxで最適な制御パラメーターを決めた上で、DYNSIM上の挙動を見ていきます。

まず、DYNSIMの計算結果をデータヒストリアンからCSV形式で出力し、Matlabで読み込みます。

DYNSIMdata

1点、注意点としてバイアスについてはシステム同定の前に除去しておく必要があります。

Bias

続いて、System Identification Toolboxを使ってシステム同定をします。

SystemIdentification

制御パラメーターをControl System Toolboxで決めていきます。

SystemIdentification

ドラム満液時の取り扱い

非定常シミュレーターで発散しやすい場面の一つに、ドラムやセパレーターユニットの液面が上昇していき、満液となるタイミングがあります。気相が無くなることから、圧縮性流体の取り扱いから、非圧縮性流体への取り扱いに切り変わり、フラッシュ計算のアルゴリズムが変わるため収束がし辛くなります。DYNSIMでは、この境界域を変更するパラメーターが用意されています。

ホールドアップの取り扱い

DYNSIMでは、ホールドアップを有する殆どの機器(一部熱交換器等を除く)において、Holdupオプションとして、「No Holdup」、「Incompressible」、「Compressible」の選択が可能です。コンプレッサーのコーストダウン検討等、系内の圧縮性流体のホールドアップ量が重要なケースについて、IncompressibleやNoHoldupを選択してしまうと有意な検討結果が得られないので注意が必要です。

PIDのアルゴリズム

こちらでも記載しましたが、DYNSIMでは複数のPIDアルゴリズムを使うことができます。デフォルトではLegacyタイプというちょっと癖のあるアルゴリズムとなっているので、シミュレーションを開始する前に必ず見直すことをお勧めします。

線形化オプション、計算時間刻み

DYNSIMは、運転訓練シミュレーターのように、非常に大型のフローシート計算を高速で行うことができるよう、様々な工夫がなされています。その一つとしてフラッシュ計算の線形化オプションがあります。エンジン設定から線形化のON、OFFを切り替えることができるようになっています。スタートアップ検討等、非線形性の強いシミュレーションを行う必要がある場合は、線形化オプションをOFFにする必要があるケースもあります。また、計算時間刻みもこちらで記載したように安定性、計算速度に効いてくる部分になりますので、変更が必要となるケースがあります。

UAM(User Added Model)のコンパイル時注意点

DYNSIMではユーザーがオリジナルのユニット(User Added Model)をC++で作ることができます。その際、次の環境変数が重要になります。DYNSIMのインストール時、システム環境変数のDSUAM_ROOTにインストールするDYNSIMのバージョンに応じたUAMフォルダの場所が書き込まれます。

異なるバージョンのUAMを作成する場合は、上記環境変数の書き換えが必要になるので、注意が必要です。

当サイトに不具合、ご意見等ございましたらCEsolutionにお知らせください。

Page Top