TRNSYSのEquationで条件判定
2013年3月6日
2019年8月23日
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)
6件のピンバック
TRNSYSにIF文が欲しい – 建築環境工学系日記
TRNSYSでJavaScriptを使ってみる(試作です) | 建築環境工学系日記
夏の間はポンプを止めたい(TRNSYS-USERSより) | 建築環境工学系日記
TRNSYS INCLUDEステートメント | 建築環境工学系日記
TRNSYS, Equationの使い方 | 建築環境工学系日記
How to use Equation | 建築環境工学系日記 Environmental Engineering Diary