Contents
PRO/II COM接続
こちらに記載したようにPRO/IIは、外部からCOM接続を行うことでデータの授受を行うことができ非常に便利です。
例えば、PythonでCOM接続を行う場合は、以下のようにwin32.comをimportすることで接続が可能。
import win32com.client as win32
具体的な使い方は、「PRO/IITM Process Engineering COM Server Programmer’s Guide and Tutorial」に記載されていますが、大まかな流れは以下の通り。(マニュアルのBasic Operations参照)
- Start the PRO/II COM Server
- Open a database
- Load a data object into memory
- Read/write attributes (performing Units-of-Measure conversion if required)
- Save the data object back to the database (if it was modified) and free the object
- Close the database
- Shut down the PRO/II COM Server
サーバーやデータベース、オブジェクトに対して行えるコマンド類は、「PRO/IITM Process Engineering COM Server Reference Guide」にまとめられています。
オブジェクト名、Attributeの確認
PRO/IIをインストールした際、同時にインストールされるPRO/II Viewerを使うことで、接続しているPRO/IIファイル内のオブジェクト名、Attributeを簡単に確認することができます。
例えば、以下では登録されている成分名がCompInというオブジェクト内にあることが分かります。また、各成分名をクリックすると、各成分に登録されている物性情報を確認することができます。
温度依存物性の係数を一括取得する場合
シミュレーターの計算がおかしいと感じた場合、手計算と一致するか確認したい場合があるかと思います。
各物性情報を一つずつ手動で取り出すのは手間がかかるので、COM接続で一括取得してみます。
例えば、Idealgasのエンタルピーの係数は、CompInオブジェクトのCorrrelCoefxLib(xは1~9の数字)の中の2番目に保存されています。
このため、HIGの係数をまとめて取得し、CSV形式で出力したいという場合は、例えば以下のように記載できます。
for i in range(0, NOC):
compnames.append(pro2db.GetObjectNames("CompIn", i))
comps.append(pro2db.ActivateObject("CompIn", compnames[i]))
for j in range(0,6):
if j == 0:
coeff = comps[i].GetAttribute("CorrelCoeff1Lib", -1)
elif j == 1:
coeff = comps[i].GetAttribute("CorrelCoeff2Lib", -1)
elif j == 2:
coeff = comps[i].GetAttribute("CorrelCoeff3Lib", -1)
elif j == 3:
coeff = comps[i].GetAttribute("CorrelCoeff4Lib", -1)
elif j == 4:
coeff = comps[i].GetAttribute("CorrelCoeff5Lib", -1)
elif j == 5:
coeff = comps[i].GetAttribute("CorrelCoeff6Lib", -1)
else:
print("error")
coef_HIG[i, j] = coeff[1]
np.savetxt('out.csv',coef_HIG,delimiter=',')