TRNSYSでExcelを使う
TRNSYSには外部プログラムとデータをやり取りできるコンポーネントがいくつか用意されています。
換気計算のプログラムなど専門ツールとのやりとりもありますが、もっと一般的なプログラムとしてExcel用のコンポーネントも用意されています。
ちょっとした計算ぐらいだと、Excelで処理した方が楽なので試しに簡単なプロジェクトを作ってみました。
内容は時刻を基にサインカーブを描くだけのシンプルなものですが、以下の2通りの方法でExcelで計算してみます。
- Excelの関数
- VBA
まずは新規にプロジェクトを用意してコンポーネントをならべてつなぎます。Equation、Type62、Type65を配置して、つないで行きます。
完成するとこんな感じのシンプルなプロジェクト
コンポーネントの設定
- Equa
0~360の値が欲しいので、変数”Degree”を用意して、mod()で値を生成します。
- Type62
Special CardsでExcelのファイル名を指定します。
- Excelのワークシート
順番逆になってしまいますけど、肝心のExcelのシートは予め用意されているワークシートをコピーして用意します。
このファイル→C:\Trnsys17\Examples\Data Files\Type62-CallingExcel.xls をプロジェクトのフォルダに”sample.xls”という名前でコピーします。
コピーしたら、ワークシートの”Output1″の項目に関数を入力します。
関数
=SIN(RADIANS(Inp1))
そして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つ例が置いてあります。
一個はシートに含まれている、データを出力するデータリーダーのような使いかた、もう一つは入力データから図を作成(というかアニメーション)するサンプルです。