コンポーネントから外部プログラムを起動
TRNSYSのコンポーネントから他のプログラムを起動できないか試してみました。シミュレーション後に何か処理を実行したいケースを想定しています。計算結果を分析するとか、グラフにまとめるといったシナリオです。
TRNSYSにはシミュレーション終了を判定する関数、getIsLastCallofSimulation()が用意されています。この関数を使ってシミュレーションが終わったタイミングで外部プログラムを起動します。
例として、新しいコンポーネントを用意して、シミュレーションで書き出されたファイル「Begin.out」をメモ帳で開く処理を行います。
実際にコンポーネントに記述したの以下のコードです。”CALL execute_command_line(‘notepad.exe Begin.out’) “の部分が外部プログラムの起動処理です。
!------------------------------------------------------------
!Do Any Last Call Manipulations Here
If(getIsLastCallofSimulation()) Then
CALL execute_command_line('notepad.exe Begin.out')
Return
EndIf
!------------------------------------------------------------
注:この部分以外はSimulation StudioからExportされたソースコードをそのまま使用しています。
このコンポーネントをTypeStudioでビルドして、サンプルのBegin.tpfに配置(赤丸のコンポーネント)、実行してみます。(どこにも接続されていないので不思議な感じですが、これでちゃんと動作します)
これを実行すると、計算終了後にメモ帳が起動、無事に計算結果が表示されました。
計算終了後に外部プログラムを起動出来ることが分かったので、Excelや他のプログラムを使って計算結果の処理もできそうです。
使い方はアイディア次第ですが、条件を変えながらシミュレーションを繰り返すような状況で役に立ちそうです。
TypeStudioを使ったコンポーネントの開発については、以下の記事をご覧下さい。
動作環境
以下の環境で動作を確認しています。
Windows10 Pro(64bit, 1803)
TRNSYS18.01.0001(64bit)