TRNSYSとJavaを連成(3)

前回に続き、TRNSYS-Java Coupler(Type299)を試しています。

設定が済んで、実行したらエラーでうまく流れませんでしたが、その後いろいろ調べて原因が特定できました。

原因はJNIのライブラリ

このコンポーネントでは、JavaのJNI(Java Native Interface)を経由して外部にあるJavaのクラスを呼び出します。JNIを利用するためにはJVM.DLLというライブラリが必要なります。要は、このライブラリのパスが環境変数に無いとエラーになってしまいます。

JVM.DLLにはServer、Clientの2種類があるようですが、通常はClientのDLLのフォルダへパスを通せばOK

具体的には、環境変数Pathに以下のパスを追加すればOKです。

例)C:\Program Files (x86)\Java\jdk1.7.0_40\jre\bin\client;

※インストールしているJDKに合わせてパスを設定します。

実行してみる

環境変数を設定して、再度実行してみると。。。

おお、今度はちゃんと動いた。

さて、動いたものの、実用的かという、ちょっとなー、な感じです。

  • 良いところ

すべて無償のツールで賄える。コンポーネントは公開されたものですし、実行時に必要な環境はJDKだけ。

特にライセンスも必要ないので気軽に始められます。

  • 悪いところ

Javaを含め、いろいろと事前準備が必要。JDKのインストールから始まって、環境変数の設定、それにJavaのソースコードの作成とビルド。

TRNSYSの標準コンポーネントを使う場合に比べて、準備に手間がかかります。

加えて、クラスを配置するパスが固定なのもちょっと厄介。プロジェクトごとに分けて用意しようと思ってもできません。

ちょっと試すぐらいならともかく、今の仕様だと準備が手間な分、普段から使うのは難しそうですね。とはいえ、まだリリースされたばかりなので、設定項目など改良されてくれば十分使えるかな?どうだろうか?

TRNSYSとJavaを連成(2)

前回の続きです。

TRNSYS-Java Coupler(Type299)のファイルを試してみました。

Javaのダウンロードインストール

まずは、Javaの動作に必要なJDK(Java Development Kit)をOracleのサイトからダウンロードしてインストール。
JDKのインストールはパスの設定とかあって、ちょっと面倒です。でも、良くしたもので解説のページなどもあるので、それらを参考にしながら設定を行います。

↓このサイトが解りやすかった。
Java(JDK)ダウンロードとインストール
http://www.javadrive.jp/install/

ちょっと注意点ですがWindow版として64bit,32bitの2種類があります。TRNSYSは32bitアプリなので、32bit版(Windows x86)をダウンロードしてインストールと設定を行います。

TRNSYS-Java Couplerのダウンロードとインストール

sourceforgeからProformaとDLLをダウンロードして、フォルダに配置します。
インストーラーはないので、サイトの説明を見ながらダウンロード、配置していきます。

説明に記載されているファイル名が一か所間違っていて、TrnsysJavaCoupler.dll と書いていあるところは、実際にはType299.dllというファイルになります。

それと動作確認用にDEMOのデータをダウンロードしておきます。

Javaのビルド

DEMOに含まれているサンプルはJavaのソースコードだけなので、実行できるようにコンパイルしておきます。

次の2つのファイルを実行用のフォルダ、C:TrnsysJavaCoupler へコピーしておきます。

demoフォルダのTrnsysJavaCoupler.java
usageフォルダのITrnsysJavaCoupler.java

で、コンパイルはこんな感じ。

C:TrnsysJavaCoupler> javac TrnsysJavaCoupler.java

これで、TrnsysJavaCoupler.class、ITrnsysJavaCoupler.class の2つが出来上がっていればOK.

TRNSYSの実行

Simulation StudioからdemoフォルダのTrnsysJavaCouplerDemo.tpf を開いて実行してみると。。。

エラー発生。

*** Fatal Error at time   :         0.000000
    Generated by Unit     : Not applicable or not available
    Generated by Type     :   299
    TRNSYS Message    105 : A TYPE was called in the TRNSYS input file but was either not linked into trndll.dll or was not found in an external dll. A dummy subroutine was called in its place. Please link the TYPE or remove it from the input file
    Reported information  :  Type299 could not be located in either the trndll.dll or in an external dll. Please relink theTRNDll.dll including this Type or make sure that an external DLL in the UserLibDebugDLLs and UserLibReleaseDLLs folders contain the Type.

どうもType299.DLLが認識されていない雰囲気です。なんで???

つづく。

TRNSYSとJavaを連成?(1)

TRNSYSのメーリングリスト「TRNSYS-USERS」を眺めていたら、Java対応のコンポーネントの投稿が出ていました。

これ→   [TRNSYS-users] New bi-directional TRNSYS-Java coupling Type 299

Coupling(連成)ってありますが、コンポーネント経由でJavaで書いたプログラムを呼び出す形式のようです。まあ、確かに連成ですね。。。

sourceforgeの記載を見た感じだと、Input/Outputの処理を受け取って、Javaとやり取りしてくれるようです。つまり計算自体はJavaでコーディングできると。

Javaの開発環境はオープンソースで各種揃っているので、商用ツールなしで利用できます。これは、手軽に試せそうです。

本格的な計算もそうですが、ちょっとした判定処理に使うだけでも、便利そうですよね。

ちと時間のある時に試してみたいと思います。