Translate

2015/07/30

作ってみようTRNSYSコンポーネント C/C++編(4) Simulation Studioで実行してみよう

さてと、前回まででコンポーネントが出来上がったので、実際に動かしてみます。
Simulation Studioを起動して。。。って思ったんですが、よく考えたらFORTRAN編とここは一緒です。
ここを参考にプロジェクトを用意して、実際に動けばオッケーです。
NewImage
Githubにサンプルを追加しておきます。

プロフォルマ

https://github.com/TRNSYSJP/TRNSYS.JP/tree/master/TRNSYS17.1/Studio/Proformas/My Components
C:¥TRNSYS17¥Studio¥Proformas¥My Components  へダウンロード、保存してください。

ソースコード

https://github.com/TRNSYSJP/TRNSYS.JP/tree/master/TRNSYS17.1/Compilers/My Components
「Step3」フォルダの内容をC:¥TRNSYS17¥Compilers¥My Components へダウンロード、保存してください。

実行用のサンプルプロジェクト

https://github.com/TRNSYSJP/TRNSYS.JP/tree/master/TRNSYS17.1/MyProjects/MyComponent201
C:¥TRNSYS17¥MyProjects¥MyComponent201 へダウンロード、保存してください。
ということで、次回へつづく。

----------------------------------------------------

以下、このシリーズの目次

作ってみようTRNSYSコンポーネント C/C++編
(1) 基本情報
(2) ソースコードの生成
(3) ソースコードを読んでみよう
(4) Simulation Studioで実行してみよう
(5) コンポーネントが呼び出されるタイミング
(6) ヘッダーファイル・基本編
(7) ヘッダーファイル・実践編

2015/07/24

作ってみようTRNSYSコンポーネント C/C++編(3) ソースコードを読んでみよう

前回はソースコードのスケルトン(雛形)の書き出しと、ひとまずビルドできたので、今回はソースコードを読みながら一部書き換えて計算式を記述していきます。

はじめる前にちょっとプロフォルマで設定した内容のおさらいです。プロフォルマでは以下の様な設定を行なっていました。
Parameters:

   Mult (デフォルト:1)

Inputs:

   Inp1

   Inp2

Outputs:

   Out1

パラメーターを1個、入力は2個で、出力は1個です。この設定に沿ってソースコードを見て行きます。

1. ソースコードの確認

まず、ソリューションエクスプローラーからType201.cppをダブルクリックしてソースコードを表示します。
NewImage

ソースコードを上から順に見ていくと110行目付近に変数の宣言箇所があります。(Ctrl+Gで直接指定行にジャンプできます。これ使うと探しやすいです)

NewImage 

プロフォルマの設定と見比べると分かりやすいですが、ここでParameters, Inputsの項目として登録したものが宣言されているのがわかります。

さらに下の方にPrameterとInputsに値を設定している箇所があります。この部分でSimulation Studioで設定した値や他のコンポーネントから受け取った値(Inputsの値)を変数に設定しています。

でもって、最後は270行目付近に前回、Outputの処理を書き加えた箇所があります。通常ここで計算した結果をOutputsの値して書き出します。

NewImage


2. 処理の追加

試しに簡単な計算を為てみます。Parameters、Inputsの値を使って処理を記述してみましょう。処理内容はInputsの値2つを足してPrameterの値を掛けるシンプルなものです。

xout[0] = (Inp1 + Inp2) * Mult;

NewImage

以上で、ソースコードの変更は終了です。

コンポーネントの処理は次のような流れで順番に処理されます。

     Parameters,Inputsの値を受け取る

            ↓

           計算する

            ↓

   出力する

これの繰り返しです。簡単ですよね?コンポーネントは基本的にはこのようにシンプルな仕組みで動作します。

3. ビルドする

ソースコードの変更が終わったらビルドして実際に動かしてみます。この時、メニューから[ビルド]-[構成マネージャー]を選択して、「アクテイブソリューションの構成」で「Release」を選択しておきます。(DebugモードだとTRNSYSが認識てくれないので必ずReleseでビルドしてください)

NewImage


[ビルド]-[ソリューションのビルド]を選択してビルドします。エラーにならずビルドができたらコンポーネントの完成です。
次回は、実際にSimulation Studioで動かしてみたいと思います。
つづく。

----------------------------------------------------

以下、このシリーズの目次

作ってみようTRNSYSコンポーネント C/C++編
(1) 基本情報
(2) ソースコードの生成
(3) ソースコードを読んでみよう
(4) Simulation Studioで実行してみよう
(5) コンポーネントが呼び出されるタイミング
(6) ヘッダーファイル・基本編
(7) ヘッダーファイル・実践編

2015/07/21

作ってみようTRNSYSコンポーネント C/C++編(2) ソースコードの生成

さて、今回は前回用意したプロフォルマからC/C++のソースコードの生成を行います。

1.開発環境の設定

コンポーネントのソースコードの生成を行う前に、使用する開発環境(VS2013)の設定を行います。これを設定しておくと、後述する作業でVisual Studioを自動起動してくれます。

まず、Simulation Studioのメニューから[File]-[Settings…]の順で選択します。

NewImage

次に表示される「Directories」ダイアログで「C++」のパスを設定します。使用する開発環境に合わせてパスの設定を行います。

例)Visual Studio 2013

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe

NewImage

2.ソースコード生成

いよいよソースコードの生成です。プロフォルマを開いていている状態で、メニューから[File]-[Export as]-[C++]の順で選択します。NewImage

ここで保存先はFORTRANの時と同じように"C:\Trnsys17\Compilers\”へ”My Components"というフォルダを作って保存します。

保存先: C:\Trnsys17\Compilers\My Components

ファイル名:Type201.cpp

ファイルが保存されるとメッセージが表示されます。保存先などの情報を確認したら「OK」をクリックします。NewImage

つづいてVisual Studioが起動してメッセージが表示されます。これはSimulation Studioが書き出すプロジェクトファイル形式が以前のバージョンのため更新を促すメッセージです。ここは素直に「はい」をクリックして次へ進みます。

NewImage

ソースコードが生成が生成されたら、ひとまずすべてのファイルを保存します。メニューから[ファイル]-[すべてを保存]を選んで保存を行います。

NewImage

ここで、ソリューションファイルの名称はデフォルト(下図)で保存します。

NewImage

3.ビルド

ここでビルドしてみると。。。エラーになります。

NewImage

生成されたソースコードって必要最小限の内容になっています。出力の処理がちゃんと書かれていないので、それが原因でエラーになります。

エラーメッセージをダブルクリックすると、エラーの発生している箇所が表示されるので、修正を行います。次のように書き換えます。

・修正前

xout[0]=?;

・修正後

xout[0]=1.0;

そして再度ビルドしてエラーが出なければ、ソースコードの準備完了です。

次回は、ソースコードの解説と修正の予定です。

----------------------------------------------------

以下、このシリーズの目次

作ってみようTRNSYSコンポーネント C/C++編
(1) 基本情報
(2) ソースコードの生成
(3) ソースコードを読んでみよう
(4) Simulation Studioで実行してみよう
(5) コンポーネントが呼び出されるタイミング
(6) ヘッダーファイル・基本編
(7) ヘッダーファイル・実践編

2015/07/13

作ってみようTRNSYSコンポーネント C/C++編(1) 基本情報

The Evolution of Computer Programming Languages #C #Fortran #Java #Ruby
The Evolution of Computer Programming Languages #C #Fortran #Java #Ruby / dullhunk

以前にFORTRANを使ってTRNSYSコンポーネントを作成する話をまとめましたが、今回は他の言語、具体的にはC/C++で書いてみたいと思います。
(しかし、上の絵って面白いので貼ってみたけど、CとFORTRANは時系列としては逆だよね)

さて、TRNSYSのドキュメントによるとカスタムコンポーネントの開発にはC, C++, PASCAL, FORTRAN,その他の開発言語が使用できるとあります。

Windowsのプログラミングに詳しい方はご存じだと思いますが、基本的に引数の渡し方とか戻り値の処理が分かれば複数言語を組み合わせた開発が可能です。そういう意味で他の言語も使えるという意味で書かれているようです。

さて、とはいえ開発に関するドキュメントはFORTRANを前提に書かれています。そもそもTRNSYS自身がFORTRANで書かれているので、その流れでドキュメントもそうなっているようです。その他の言語について言えば、C/C++対応として、'Export as C++’という機能がSimulation Stuidioに用意されており、ドキュメントでもさらっと触れられています。(1.8.3.2. Types in C++)
サンプルも用意されているので、それを参考にすればできそうな雰囲気で書いてあります。が、実際にやってみると、あちこち落とし穴が待ち構えています。そのあたりも含めて書いてみたいと思います。

用意するもの

今回試すに当たって用意した環境は以下の通りです。

TRNSYS 17.01.0028
コンパイラ Microsoft Visual Stuido 2013 Professional

プロフォルマの準備

コンポーネントのインターフェースを定義するプロフォルマ。これに関してはFORTRANとまったく同じ方法で作成します。今回も同じプロフォルマを使うので、以前の記事そのままです。
(1) 準備編
(2) プロフォルマ
これで準備は整ったということで、次回へつづく。

----------------------------------------------------

以下、このシリーズの目次

作ってみようTRNSYSコンポーネント C/C++編
(1) 基本情報
(2) ソースコードの生成
(3) ソースコードを読んでみよう
(4) Simulation Studioで実行してみよう
(5) コンポーネントが呼び出されるタイミング
(6) ヘッダーファイル・基本編
(7) ヘッダーファイル・実践編

2015/07/06

外皮平均熱貫流率(Ua値)の計算方法の出典

ときどき外皮平均熱貫流率(Ua値)の計算方法を確認したい時があるのですが、ググるといっぱい出てきます。
断熱材メーカーのサイトとか個人で解説されているサイトとか、それはそれで分かりやすくて宜しいのですが、出典元として書きたいようなケースだと、ちょっと使いにくい。

おそらく建築研究所のサイトにあるだろうと調べると。。。

住宅・建築物の省エネルギー基準及び低炭素建築物の認定基準に関する技術情報

なんかそれっぽい項目はあるんですが、残年ながら準備中。。。


次に参考にしたのはこちら↓
一般社団法人日本サステナブル建築協会
HOME > FAQ 住宅 > 省エネルギー基準 > 外皮基準の計算

で、ここのFAQから再び建築研究所のサイトに戻ったここ↓にあります。
建築研究所
外皮の熱損失の計算方法

うーん、わかりにくい。でも建研に元があるのが分かったのでひとまずOK。


解説としては、こっちの方が分かりやすいかも。

一般社団法人日本サステナブル建築協会
省エネサポートセンター
外皮計算プログラム
HOME > 住宅 > 算定プログラム > 外皮計算プログラム

住宅の改正省エネルギー基準の建築主の判断基準と設計・施工指針の解説[第2章1(外皮基準)]

↑これの「1.2.外皮平均熱貫流率等の計算方法 」に記載。