TRNSYSでExcelを使う

TRNSYSには外部プログラムとデータをやり取りできるコンポーネントがいくつか用意されています。

換気計算のプログラムなど専門ツールとのやりとりもありますが、もっと一般的なプログラムとしてExcel用のコンポーネントも用意されています。

ちょっとした計算ぐらいだと、Excelで処理した方が楽なので試しに簡単なプロジェクトを作ってみました。

内容は時刻を基にサインカーブを描くだけのシンプルなものですが、以下の2通りの方法でExcelで計算してみます。

  • Excelの関数
  • VBA

まずは新規にプロジェクトを用意してコンポーネントをならべてつなぎます。Equation、Type62、Type65を配置して、つないで行きます。

Type62
Type62

完成するとこんな感じのシンプルなプロジェクト

コンポーネントの設定

  • Equa

0~360の値が欲しいので、変数”Degree”を用意して、mod()で値を生成します。

Equation
Equation
  • Type62

Special CardsでExcelのファイル名を指定します。

Type62
Type62
  • Excelのワークシート

順番逆になってしまいますけど、肝心のExcelのシートは予め用意されているワークシートをコピーして用意します。

このファイル→C:\Trnsys17\Examples\Data Files\Type62-CallingExcel.xls をプロジェクトのフォルダに”sample.xls”という名前でコピーします。

コピーしたら、ワークシートの”Output1″の項目に関数を入力します。

関数

=SIN(RADIANS(Inp1))

Excelのワークシートの設定
Excelのワークシートの設定

そしてVBAはワークシートに既存で含まれているTRNSYSという名前のサブルーチンを、がっさり以下のように書き換えます。

※最近のExcelだとデフォルトではVBAがインストールされていないようです。その場合はVBAの方は省略するか、別途VBAのインストールを行ってから作業を進めてください。

参考→ ヤスダ式仕事ブログ マクロを含んだ.XLSがExcel2010で開けない
開けない。。。

Sub TRNSYS(Optional Input1 As Variant, Optional Input2 As Variant, Optional Input3 As Variant)

    If IsMissing(Input1) Then Exit Sub

    Range("inp1") = Input1 'Type62のInput1をセルに書き込む
    Dim deg As Double
    deg = CDbl(Input1) ' VariantからDoubleへキャスト

    Range("Out2").Value = Sin(deg * 3.14 / 180) 'Sin値を計算してセルに書き込む
End Sub

ここまでできたら、あとはコンポーネントをつなぎます。

  • Equa —→ Type62
  •  Type62 —→ Type65

実行してサインカーブが表示されたら出来上がり。

関数で描いたカーブとVBAで描いたカーブが重なってしまって解りにくいですね。ちょっとずらせばよかったかな?

補足:

標準で”Examples\Calling_Excel”フォルダに2つ例が置いてあります。

一個はシートに含まれている、データを出力するデータリーダーのような使いかた、もう一つは入力データから図を作成(というかアニメーション)するサンプルです。

Pocket

コメントする

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