TRNSYSのEquationで条件判定

TRNSYS-Usersを読んでいると、if-then-else処理の話題が出てました。

以下、メーリングリストからの抜粋ですが、TRNSYSで条件判定をやる場合、Equationを使って処理することになります。EquationにはGT(), LT()など、FORTRANでいう比較演算子に相当する関数が用意されています。これらを組み合わせて。。。

'For example, let's assume you would like to use the following "if-then-else"
statement:

if (Z>0) then
X=Y1
else
X=Y2
endif

The following equation will do the same:
X=GT(Z,0)*Y1+(1-GT(Z,0))*Y2

だいたいこんな感じで式を組み立てて判定します。で、これを何に使うかというと、特定の条件でパラメータを変えたい時などです。

例えば、暖冷房機器の運転を冷房、暖房期間できっちり切り換えたい場合に使用します。Equationを使って暖冷房期間を判定、冷房機に暖房が入ったり、逆に暖房機に冷房が入ったりといったことを避ける事ができます。

例)暖房期以外は冷房期 として処理する
暖房期 1/1-4/25, 10/21-12/31(1-2760, 7056-)
冷房期  4/26-10/20(暖房期以外)

これをEquationで表現すると、次のようになります。

HEATING = or(le(time,2760 ),ge(time,7056)) 
COOLING = not(HEATING)

これでHEATING,COOLINGで、それぞれ暖房、冷房のOn/Off状態がつくれます。あとはType56のHeating TypeやCooling Typeで受け取って、暖房、冷房のPowerに渡してあげれば、暖房期間は暖房だけ、冷房期間は冷房だけというようなコントロールができます。   ちょっと慣れがいりますが、これを覚えると、いろんな場面で使えて重宝します。

2016/1/23 追記
1年以上の期間を計算すると、上記のやり方だと2年目はすべて暖房期間として判定されます。こまりますよね。そういう場合は、mod()関数を使って、剰余として扱えば幸せになれます。

HOUR=mod(time,8760) 
HEATING = or(le(HOUR,2760 ),ge(HOUR,7056)) 
COOLING = not(HEATING) 
Pocket

4件のピンバック

コメントする

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