コンポーネントから外部プログラムを起動

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に配置(赤丸のコンポーネント)、実行してみます。(どこにも接続されていないので不思議な感じですが、これでちゃんと動作します)

Begin.tpfにコンポ-ネントを配置
Begin.tpfにコンポ-ネントを配置

これを実行すると、計算終了後にメモ帳が起動、無事に計算結果が表示されました。

計算終了後にメモ帳が起動する
計算終了後にメモ帳が起動する

計算終了後に外部プログラムを起動出来ることが分かったので、Excelや他のプログラムを使って計算結果の処理もできそうです。

使い方はアイディア次第ですが、条件を変えながらシミュレーションを繰り返すような状況で役に立ちそうです。

TypeStudioを使ったコンポーネントの開発については、以下の記事をご覧下さい。

動作環境

以下の環境で動作を確認しています。
Windows10 Pro(64bit, 1803)
TRNSYS18.01.0001(64bit)

Pocket

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です