フリーソフトと市販シミュレーター

データドリブンな技術検討の流行や、熟練エンジニアの減少に伴い、近年プロセスシミュレーターの利用頻度が低下しつつあるようで、個人的に非常に残念に感じておりますが、まだまだプロセスシミュレーターの活用場面は多いと思っています。こちらのページでは様々なプロセスシミュレーターの概要と、個人的に面白いと思った活用案をご紹介しています。こちらのページで、少しでもプロセスシミュレーターに興味を持っていただければ幸いです。他にもこんな使い方はできるだろうか等ございましたら、ら、是非情報交換させていただければと思います。

フリーソフト

フリーソフトとしてCOCOを紹介していきます。また、若干取り扱いに難はありませんが、非定常計算が可能なOpenModelicaも非常に面白いソフトですので、まとめていきたいと思います。

COCO (CAPE-OPEN to CAPE-OPEN)

OpenModelica

市販シミュレーター

主にAVEVA社の製品の活用方法を紹介していきます。ただし、ソフトの使い方については、ソフトウェアベンダーが提供している有料のトレーニング等がございますので、そちらをご活用ください。また購入方法等についても、当HPで取り扱っているわけではありませんので、ソフトウェアベンダーに直接お問い合わせください。

定常状態プロセスシミュレーターPRO/II

多相流体ネットワークシミュレーターPIPEPHASE

非定常シミュレーターDYNSIM

次世代型統合プラットフォームSimCentral

COCO(CAPE-OPEN to CAPE-OPEN)/ChemSep,COFE

豊富な例題

COCOの魅力の一つは例題が豊富な点です。

こちらのリンクから様々なサンプルモデルをダウンロードすることができますし、ChemSepにも多数の蒸留塔モデルが元々入っています。

伊東先生の著書も非常に参考になります。

蒸留塔のオプション機能、グラフ表示機能

ChemSepにはデフォルトでグラフ作成機能、マッケーブシール作図、Ratingとコスト推算の機能がついています。

計算終了時に、タブの切り替えだけでこうした出力結果を確認できるのはフリーソフトとは思えない素晴らしさだと思います。

特にグラフ作成機能は素晴らしく、各相の組成プロファイルや温度、圧力、流量プロファイルはもちろん、輸送物性についてもクリック操作だけでププロファイルの出力が可能です。

pipdp

pipdp

pipdp

さらにプラグインを追加することで、ターナリ―プロットの作成も可能です。(ResidueMapの作成も可能)

ternary

CAPE-OPEN

CAPE-OEPNを使って他のソフトとの接続が可能です。

こちらの記事に少しまとめましたが、COCOのThermoデータをPythonで呼び出すことも可能です。

OpenModelica

OpenModelicaの魅力の一つは後述する市販シミュレーター:SimCentralと同様、自由にモデルをカスタマイズできる点です。

使い方についてはこちらの著書が大変参考になります。和書も出ています。

また、個人的に好きな言語なので、もう数点素晴らしい点を記載しますが、マルチドメインモデリングが可能となっており、電気、機械、制御、熱、流体力学といった様々な領域のモデリングが可能となっています。

また、OpenModelicaはFMI(Functional Mockup Interface)にも対応していますし、「Jupyter Notebookのように使えるOpenModelica Notebook」も使うことができます。

使い勝手は市販シミュレーターに劣る点があるものの、Matlab/Simulinkや後述のSimCentralが好きな私にとっては非常に親しみやすく、無料とは思えないほど、様々な検討を行うことができます。

GUIと結果出力

一例として、Exampleに入っている非圧縮性流体の偏流計算モデルの画面を以下ご紹介します。

Incomp

左側がフローシート、右側が計算終了後のグラフ出力になります。

ダイナミック計算中のイベントはStepやRamp、Pulse等様々な形で与えることができます。(Simulinkに近い操作感です)

上記の例は、StepでValve1~3の開度をステップ変化させ流量や圧力変化を見ています。

面白いのがGUI上から各ユニットをブロックとして接続して操作することができると同時に、スクリプト側から変更することも可能である点です。

GUI上で操作する方が楽なのですが、中身を確認したい際や、ちょっと変更したい時に有難い機能です

Script

また加速計算も10倍速まで対応しています。(ver1.14.1)

プロット作成の細かい設定はSetupから行うことが可能です。

Plot

OpenModelica Notebook

以下のような形でJupyter Notebookのように使うことができます。

Notebook

Pythonとの連成

Bernt Lieさんがこちらに、Pythonとの連成について記載されています。

Python

シミュレーターで大量のケーススタディを行い、その結果をPythonでハンドリングするといったアプローチは近年よく取り上げられますが、OpenModelicaはこうした検討が非常に行いやすい仕様です。

定常状態プロセスシミュレーターPRO/II

PRO/IIはAVEVA社が販売している定常シミュレーターです。

※一般的な内容については、ソフトウェアベンダーにお問い合わせください。以下は、私が個人的に面白いと思う機能についてのみ紹介しています。なお、常に最新の情報を掲載しているわけではありませんので、バージョンの違いによって以下の内容が陳腐化してしまうこともあるかもしれません。その場合はご容赦ください。

Microsoft Component Object Model (COM)からの操作

プロセスシミュレーターを用いる理由は様々あるかと思いますが、一つは設計時のケーススタディがあるかと思います。

PRO/IIにはもちろんケーススタディ機能が搭載されていますが、ケース数が増えてくると、GUIからの操作は億劫になってきます。

そうした際には、COMから操作することで、GUIを介さずに外部から操作条件を流し込むことが可能です。詳細な設定方法についてはユーザーマニュアル(COM Server Refrence Guid)に記載されていますのでご確認ください。

COM接続は、C++、C#、VBA、VB.NET、Python等で行うことができます。

特にPythonからの操作は便利で、複数の入力条件をcsvファイルで用意しておき、それをpandasでまとめて受け取り、for文の中で順次データを渡していきながら結果を受け取るといった使い方が考えられます。

一例としてこちらに物性データをまとめて取得する方法をまとめました。

Run Batch機能

PRO/IIには上記のCOM経由の他にDOSコマンドからPRO/IIを走らせる機能もあります。個人的には上述のCOM経由の方が計算が早く好みですが。

RunBatchの指定の仕方は以下のようにRunP2 ファイル名、あるいはRunP2 ファイル名 出力場所 workingディレクトリの指定等が可能になっています。

RunBatch

多相流体ネットワークシミュレーターPIPEPHASE

PIPEPHASEはAVEVA社が販売している多相流体の配管ネットワーク設計に用いられるシミュレーターです。

配管のネットワーク計算機能は徐々にSimCentralに移行しつつありますが、まだSimCentralではカバーされていない機能もあります。

※一般的な内容については、ソフトウェアベンダーにお問い合わせください。以下は、私が個人的に面白いと思う機能についてのみ紹介しています。なお、常に最新の情報を掲載しているわけではありませんので、バージョンの違いによって以下の内容が陳腐化してしまうこともあるかもしれません。その場合はご容赦ください。

Flow Pattern Mapの表示

PIPEPHASEでは、以下のようにエクセル上にFLow Pattern Mapを表示する機能があります。(テキスト出力でも表示可能ですが、エクセルに表示した方が見やすいです)

FM 豊富な圧力損失計算式

内部流体が2相流となった場合、圧力損失計算式の精度は各段に落ちます。多くのシミュレータではBeggs & Brillの式が使われますが、精度を求める場合は傾斜に応じて、また内部流体の性状に応じて適した式を選択する必要があります。

PIPEPHASEでは複数の圧力損失計算式が標準搭載されています。

非定常シミュレーターDYNSIM

DYNSIMはAVEVA社が販売している非定常シミュレーターになります。プラントのスタートアップやシャットダウン、異常時の特別運転の模擬が可能な運転訓練シミュレーターとしても有名です。最近ではデジタルツインの観点からも注目されているようです。

※一般的な内容については、ソフトウェアベンダーにお問い合わせください。以下は、私が個人的に面白いと思う機能についてのみ紹介しています。なお、常に最新の情報を掲載しているわけではありませんので、バージョンの違いによって以下の内容が陳腐化してしまうこともあるかもしれません。その場合はご容赦ください。

Excelとの連携

DYNSIMはExcelとの連携が可能です。この恩恵は非常に大きく、例えば経過時的な実機の入力データをExcelに入力しておき、DYNSIMに同じデータを経時的に与えるといったことが可能です。

非定常シミュレーションを行う際に、境界条件を決める必要がありますが、経時的に一定と考えて良い場合と、常に変動しており境界条件を決めることが難しい場合があります。

経時的な変動がsin波等、なんらかの時間の関数で表現できる場合はDYNSIMの標準機能のみで表現できますが、実機の波形をそのまま境界条件として与えたいといった場合はこの機能が非常に助かります。

またExcelのマクロも使用できるため、Excel側で作成したオリジナルモデルとDYNSIMを繋げるといった使い方も考えられます。

Excelとの連携の例として、トレイの性能曲線と現状の運転点をExcel上で表示し、フラッディング、ウィーピングラインに当たった場合にFlooding, Weepingといったポップアップを表示させています。

DYNSIMにはFloodingやWeepingの推算式も搭載されていますが、やはりベンダーの性能曲線で比較した方が確実ですので、精度を求めたい場合はこうした手法も考えられます。

もう一例として、例えば組成変動を時間ごとにExcelから与えて、結果をまたExcelに返して保存するという例をご紹介します。

上記はマクロとExcelのLookup関数を組み合わせて表現しています。少しExcelのマクロを活用するだけで、経時的にエクセルのデータをアップデートできるので、計算結果をまとめ直す必要がありません。

また、他にも活量例として、DYNSIMの標準ユニットでは表現の難しい複雑な反応器モデルや吸着モデル、非平衡モデル、制御ユニット等をExcelで表現してDYNSIMと接続するといった使い方も可能です。

OPC serverを介した連携

DYNSIMは運転訓練シミュレーター(OTS)用途の機能が充実しており、その中にOPC serverとの連携機能があります。

OPC serverとの接続はいくつか方法がありますが、例えばPythonやMatlabのOPC clientツールを使うことで接続が可能です。

Matlabは当HPでもご紹介している通り、制御モデルの検証に有用なソフトですので、Matlabで作成した制御モデルの検証をDYNSIMで行うといった使い方が考えられます。

例えば、以下はMathworks社のOPC Toolboxを使って、PIDのManual⇔Autoを切り替えています。

上記の例だけではMatlabとの連携の恩恵があまり感じられないかもしれませんので、もう一例としてSimulinkとの連携(上記の同様にOPC Server経由で可能です)の例をご紹介します。以下の例ではPID部分をSimulinkで表現しています。

Miscellneousユニット、Streamsetユニットの活用

こちらのページに膜分離モデルの簡易表現についてまとめています。

また、例えば脈動表現のように、周期的な流量変動を表現したいという場合に、Streamsetの境界条件を流量とし、サイン波で表現するといった使い方も可能です。

例えば、重量流量を周期的に変動したいという場合は、WBの欄にW*(1+a*sin(b*2*3.14*t))と記載すれば、中央値W、振動幅a、変動周期bのサイン波で重量流量を変化させることができます。

DYNSIMモデルの設定変更、確認

DYNSIMのデータタイプには大きくStaticとDynamicがあります。

例えば配管径や長さといった計算中に変更しないパラメーターはStatic、境界条件以外の温度や圧力、流量といった変数がDynamicとなっています

※ただし、StaticとDynamicのタイプ変更はEdit画面からも可能ですので、Staticで設定されているパラメーターをDynamicに変更することも可能です。

上述のStaticなパラメーターはデータベースに保存されており、ver5.3.2まではSQL、ver6.0以降はJSON形式で保存されています。

DYNSIMのファイル(s4mあるいはjs4m)は圧縮ファイル形式となっており、モデルを開いた際、C:\SimSci\DSSxxx\Simulationsフォルダ下に(xxxはDYNSIMのバージョン名。例えばバージョン6.0であれば60)中身が展開されます。

ここで、直に上述のデータベースに接続すれば、直接データの確認、編集を行うことが可能です。

例えば配管の設定条件を一覧で確認し、変更したいといった場合に非常に便利です。

なお、上記はDYNSIMに標準搭載されているBulk Configuratorでも可能ですが、Excelのバージョン制約等もあるのと起動が遅いので、個人的には直接データベースにアクセスする方法が楽だと感じています。

例えば、以下はPythonのJsonモジュールを使って、Applibフォルダ下にあるG2_Deethanizerモデルのフィード条件を書き換えています。他にもトレンドやデータヒストリアン、クロスリファレンス等の情報をJSONからまとめて一括変更することができます。

カスタムモデルの作成

DYNSIMではC++でオリジナルユニットを作成することが可能です。

ver5.3.2以下ではvisual studio 2008でdllを作成する必要がありましたが、ver6.0以降では2020年4月現在で最新版となっているvs2019でも作成することが可能です。

特殊な制御ユニットモデルを作成する際等に重宝する機能です。

以下のフォルダにサンプルが入っており、簡単な演算ユニットであれば比較的容易に作成することが可能です。

C:\SimSci\DSSxxx\ExampleUAM(xxxはDYNSIMのバージョン名。例えばバージョン6.0であれば60)

豊富な論理ユニット、PIDアルゴリズム

制御のページでもいくつかDYNSIMを使った場合のシーケンスの作成例を記載していますが、非定常計算において重要な論理ユニットやPIDアルゴリズムが実装されているため、実機に近いモデリングが可能な点が素晴らしいです。

また、IntouchでDCSパネルを模擬し、DYNSIMと接続することも可能となっています。

以下の例はIntouchを使うまでも無いですが、IntouchからDYNSIMのFCをマニュアルモードで操作、あるいは逆にDYNSIMのGUIで操作した開度がIntouch側に正しく表示されることを確認しています。

以下の例では絵心のかけらもない操作パネルになっていますが、少し真面目に書けば、実機に近い操作パネルを作ることもできますし、データヒストリアンを用意することもできます。

また、Intouchまでは使わなくとも、DYNSIMの描画機能やロジック機能を使うことで、以下のような簡単なロジック図を作成することも可能です。

エンジン分割

DYNSIMはOTS(運転訓練シミュレーター)用途で開発されたこともあり、大型のフローシート計算用に様々な工夫がなされています。

その中の一つが計算エンジンの分割です。

大型のフローシートを複数の計算エンジンに分割することで、フローシート数十枚に及ぶような大型のモデルでも計算速度をある程度維持して計算させることができます。

(マルチコアの恩恵を受けるには、計算エンジンの分割時にできるだけ各フローシートの計算負荷が均一となるように調整することが望ましいです)

次世代型統合プラットフォームSimCentral

SimCentralはAVEVA社が次世代型シミュレーターとして販売しているソフトウェアで、1つのプラットフォーム上で様々な検討が行えるように工夫されています。

※一般的な内容については、ソフトウェアベンダーにお問い合わせください。以下は、私が個人的に面白いと思う機能についてのみ紹介しています。なお、常に最新の情報を掲載しているわけではありませんので、バージョンの違いによって以下の内容が陳腐化してしまうこともあるかもしれません。その場合はご容赦ください。

SimCentralの概要については、こちらのユーチューブビデオが面白いです。

定常計算からサイジング、非定常計算までを一つのプラットフォーム上で検討

SimCentralではボタン一つで定常計算からサイジング、非定常計算までを行うことができるようになっています。

以下の例は非常にシンプルな例で、ストリームにバルブを挿入し、非定常計算に移行後、バルブ開度を変更した際の流量変化を確認しています。

ビデオを見ていただくと、Process⇒Fluid Flowに移行する際に、バルブのDPのチェックボックスからチェックが外れ、CVのチェックボックスがチェックされていることが確認できます。

これは、SimCentralがProcessモードでスペックした圧力損失:DPから推算したCV値を、Fluid Flowモードでスペックして使用していることを示しています。

モード移行が1clickで可能となっているのはこのスペックの付け替えにあります。

非定常シミュレーションの一つのハードルはこうしたサイジングの手間にありますが、サイジングを定常計算時に自動で行っておくことにより、非定常シミュレーションにスムーズに移行できる点が非常に便利です。特に、各機器サイズがキチンと決まっていない粗検討段階でラフな非定常計算を行う際には助かる機能です。

各単位操作ユニットの計算式の確認・編集

SimCentralでは各単位操作ユニットの中身が確認・編集できるようになっています。

これは個人的にSimCentralに惚れ込んだ一番の要因です。

例えば、以下はpipeの圧力損失計算モデルの式の一部ですが、層流域、遷移域、乱流域でどのような式が使われているのかが一目で分かります。

pipdp

また式の中身を編集することができるため、例えばスチーム系では異なる圧力損失計算式を用いたいといった場合も簡単に変えることができます。

面白いのはユニットの見た目も変更することができる点です。

SimCentralのアイコンはxamlファイルとなっており、ユーザーがxamlファイルを用意すれば、プロセス値に応じてアイコンの見た目を変えるといったことが可能となっています。

例えば、以下の例では配管内のFlow Regimeの情報を元に配管のアイコンを変えています。

twophase

xamlファイルはイベントを発生させることが可能ですので、上図のように簡単な動画を作成してフローシート上に表示させることも可能です。

また圧力損失のページで紹介しましたが、GUI上で、特定のXY関係を作成することができる機能も今までに無い面白い機能です。

こちらのユーチューブビデオでは、複雑な反応モデルを如何に簡単にモデリングすることができるかが説明されています。

また、こちらで紹介されているPSAモデルなどは、非定常シミュレーターでもなかなか標準ユニットとして使い勝手の良いものが少ないため、面白い取り組みだと思います。

Object Oriented

SimCentralではObject Orientedの考え方でモデルを作成することが可能となっています。

「ライブラリ」でモデルの定義を行い、「シミュレーションファイル」上にそのライブラリ内のユニットを置くことでモデリングが可能となりますが、考え方としてはライブラリ=クラス、シミュレーションファイル上のユニット=インスタンスと見ていただくと良いかと思います。

メインモデル中に複数のサブモデルを組み合わせることが可能であるため、例えば、以下はプレートフィン熱交ユニットの中に入っているサブモデルですが、HotPath、ColdPath、WallEというモデルが入っており、お恐らくHot側とCold側のモデルがメタルを介して熱交換をしているのだろうということが予測できます。

また、面白いのはサブモデルにdimensionを設定できる点で、dimensionを設定することで長手方向のプロファイルを表現することが可能となっています。

pfhe

こうしたアプローチは押出流れモデルの表現にも活用できますし、例えば複数のフラッシュモデルを高さ方向に積み上げる蒸留塔モデルの作成にも活用されています。

データベースとの連携

SimCentralは、OSI PIとの連携が可能です。

OSIPIリボンバーのExternalから、接続タグの編集を行うことができ、OSI PIとのデータの授受を行うことができます。

残念ながらダイナミックでの連携ができないのが難点ですが、今後の開発に期待したいところです。

ただ、定常ベースでもOSI PIとの連携は非常に強力です。OSI PIのデータはエクセルで簡単に一括取得することもできるので、エクセルを媒体としてSimCentralとの連携を考えるのも面白いと思います。(PythonにもOSI PIのデータとの連携が可能なライブラリがあるので、他にも様々な形態が考えられます)

運転コストの試算機能

SimCentralは、ver5.0以降、運転コストの試算機能が追加されています。

フローシートレベルでの積算機能が追加されたことで、各温度レベルのスチーム、冷却水、電気等の使用量をフローシート全体で積算し、コスト合計を求めることができます。

またコストモデルの編集が可能となっているので、単位通貨の変更や年度毎の用役単価を簡単に反映させることができます。原単位解析には非常に便利な機能です。

起業単価と原単位単価は異なっているケースもありますし、為替や原油単価は

サブモデルの挿入機能

バージョン5.0からはユーザーの任意のサブモデルを、既存モデルに自由に挿入することができるようになりました。

例えば、機器コスト算出モデルを作成すれば、フローシート全体の運転コスト、機器コストを合算することで、TACを考慮した最適化検討を行うことが可能です。

以下の例ではM&S indexを使った蒸留塔のコスト算出モデルをサブモデル:Equipmentで作成し、蒸留塔モデルに適用しています。

エレベーションの自動算出機能

定常計算から非定常計算の移行において、新たに考慮が必要となるのがヘッドです。

SimCentralではバージョン4.3から各機器のエレベーション差を自動で計算する機能が追加されました。

これにより、ポンプのNPSH計算やサーモサイフォンリボイラーの循環流量計算等が容易になっています。

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

Page Top