目次 — 知りたいところから読む
入力を変えて確かめる
実験パネルを開き、実行を押すとPythonを読み込みます。停止と初期値へのリセットができます。結果はこの端末内で計算します。Pythonのインストールは不要です。
下にあるローカル実行の手順は、配布ソースを再現するための任意の手順です。ブラウザ実験には不要です。
三つのブラウザ実験
上のパネルは熱収支です。LED負荷、冷房の除熱能力、平均外気温、換気流量、設定温度を変更できます。湿度とCO₂は別のモデルとして下のパネルで計算します。Pythonのインストールは不要で、本文のローカル手順は任意です。
三つとも元の合成入力と60秒刻みの陽解法を使い、0時から24時間を計算します。照明は08–24時で固定。上図は初期値と毎時の標本を結んだもので、スイッチングや極値の全履歴ではありません。最小・最大の指標は毎分の値を使います。熱モデルの外気標本は元コードに合わせ、各時刻の1分前の値を表示します。下図は一日の積算項です。換気の正値は外への正味流出、負値は流入です。A/B比較・数値表・条件共有で結果を確認できます。
熱モデルは熱容量12 MJ/K、壁UA 450 W/K、その他発熱800 W、初期22°C、外気振幅6°C・ピーク15時。冷房は設定温度±0.5°Cで切り替えます。LED電力を全量熱へ変換します。除熱kWhは冷房の電気使用量ではありません。
湿度モデルは300 m³・24°C、初期RH65%、除湿ON75%/OFF65%で固定。飽和を超える水は凝縮として別に集計します。蒸散は指定入力で、RHから植物の応答を推定しません。潜熱量は電気使用量ではありません。外気にも同じ24°Cを仮定します。
CO₂モデルは300 m³・24°C・101325 Pa、初期600 ppm、供給ON700/OFF900 ppm。吸収は明期のみ、呼吸は暗期のみという元の簡略化を保ちます。ブラウザの換気下限0.03 m³/s・吸収上限0.08 kg/hは、指定範囲内でCO₂量が負にならないための教材上の制限です。栽培・換気・安全基準ではありません。
三つのモデルは相互に結合していません。湿度やCO₂の室温は熱モデルから受け取りません。機器選定・実施設性能・作物収量を予測するものではありません。元のZIPと基準結果は変更していません。ブラウザ用の実行コード、カーネル、設定をそれぞれ同じフォルダへ保存すれば初期値をローカル再現できます。
thermal: experiment.py · thermal_kernel.py · config.json
moisture: experiment.py · moisture_kernel.py · config.json
co2: experiment.py · co2_kernel.py · config.json
栽培室の熱収支Lab — LED・換気・壁・冷房を分けて計算する
結果から見る
合成した24時間では、室温は 18.884–24.547°C、LEDから室内へ入る熱は 192.0 kWh、冷房が取り除く熱は 184.333 kWhになった。これは実際の植物工場を測定・同定した値ではない。熱の入口、出口、蓄積を同じ単位で追えるかを確かめる教材である。
| 変更 | 予想する変化 | 変えていないもの |
|---|---|---|
| LED電力を半分 | 点灯中の発熱が半分、冷房負荷が減る | 外気と壁の条件 |
| 熱容量を2倍 | 温度変化が遅くなる | 定常時の熱収支 |
| 換気量を増やす | 外気との差に応じた熱移動が増える | 壁のUA値 |
| 冷房能力を0へ | 室温上昇を設備が抑えない | LED発熱量 |
CEA入門では植物・環境・設備の境界を、VPD・DLI Labでは観測時系列から派生量を計算した。今回はその次として、設備が室温を変える最小の動的モデルを扱う。
図: Duskcoil作成。一室集中定数モデルの計算境界を示す模式図。植物体、湿度、CO₂、潜熱、室内の温度分布は含まない。
温度ではなく、まず熱流を足し引きする
完全混合の一室を仮定し、室内の有効熱容量を C [J/K]、室温を T [°C] とする。各熱流をW(J/s)でそろえると、保存式は次になる。
ここで K=UA+\rho c_p\dot V [W/K] とし、壁・天井などの総合熱通過を UA、換気による顕熱移動を \rho c_p\dot V で表す。外気の方が高温なら T-T_{out} は負になり、この項は室内への熱流になる。符号を固定的な「損失」と覚えず、温度差の向きを見る。
Oklahoma State University Extensionの温室資料も、必要暖房能力が被覆面積・断熱性・内外温度差に依存し、換気が温湿度制御に関わることを説明している。米国DOEのBuilding Energy Modeling解説では、外皮、照明、HVAC、運用スケジュール、気象を物理式で組み合わせ、相互作用を計算することを建物エネルギーモデルの基本としている。
この教材で固定した境界
| 量 | 合成値 | モデル内での意味 |
|---|---|---|
| 熱容量 C | 12 MJ/K | 空気だけでなく室内物体をまとめた仮想値 |
| 外皮 UA | 450 W/K | 壁・天井等を一つに集約 |
| 換気量 \dot V | 0.08 m³/s | 外気と同じ温度の空気が入る顕熱項 |
| LED電力 | 12 kW、08–24時 | 一室境界内で最終的に熱になると仮定 |
| その他発熱 | 0.8 kW | pump・fan等をまとめた一定値 |
| 冷房能力 | 14 kW | ON時に除去する熱。消費電力ではない |
| 外気温 | 21±6°C | 15時最大の正弦波 |
LEDの光は一度植物や壁へ吸収されてから熱へ移るが、このモデルは放射・対流・植物体を分割しないため、室内境界へ入った電力の割合を1.0とした。DOEの照明資料も、照明が室内へ熱を加え冷房負荷へ影響することを扱っている。ただし実施設では、室外へ逃げる放射、driverの設置場所、水の蒸発に使われる潜熱などに応じて境界を引き直す必要がある。
冷房の 14 kW は熱除去能力であり、compressorの電力ではない。COPを仮定していないので、この結果から電気料金を計算しない。
1分刻みで積分する
時刻 n から n+1 への更新は明示Euler法で行う。
冷房は設定値24°C、ヒステリシス0.5°Cとした。室温が24.5°C以上でON、23.5°C以下でOFFになる。これはPIDやMPCではなく、頻繁なON/OFFを避ける最小の規則である。刻み幅を大きくすると切替時刻と温度振幅が変わるため、数値解が妥当かは刻み幅を変えて確認する。
コードと入力を動かす
実験一式ZIPを展開し、そのディレクトリで実行する。Python 3.10以降の標準ライブラリだけを使い、通信は不要である。
python3 experiment.py config.json > result.json
python3 -m unittest -v
入力はconfig.json、基準結果はexpected.json、完全な計算はexperiment.pyにある。manifest.jsonには入力契約とSHA-256を記録する。
conductance = envelope_ua + air_density * air_cp * ventilation
net_heat = led_heat + other_heat - conductance * (indoor - outside) - cooling
indoor_next = indoor + net_heat * dt / thermal_capacitance
変えて、壊して、検算する
led_power_wを6000へ変える。LED熱は96 kWhになり、冷房除去熱も減るか確認する。thermal_capacitance_j_per_kを2倍にする。短時間の温度変化は遅くなるが、熱源そのもののkWhは変わらない。- 外気温と室温を20°Cにそろえ、発熱・冷房・換気・UAを0にする。1時間後も20°Cでなければ保存式か単位が壊れている。
time_step_secondsを大きくし、最大・最小温度がどれだけ変わるか比較する。結果が刻み幅へ強く依存するなら、その設定で制御性能を論じない。- キーを消す、未知のキーを足す、NaNや負の能力を入れる。プログラムが推測せず拒否することを確かめる。
付属の10テストは、基準値、無熱流での温度保存、一次遅れの解析解、LED発熱の比例、energy residual、入力異常を検査する。テスト成功は施設への適合を意味しない。
このモデルで答えられないこと
- 葉温、蒸散、除湿の潜熱、湿度とVPD
- CO₂濃度と換気の物質収支
- 棚段ごとの温度差、気流の短絡、sensor設置位置
- HVACの部分負荷効率、除霜、fan・pump電力
- 作物の生育、品質、収量、最適温度
次に湿度を結合するときは、水蒸気の保存式と潜熱を追加し、温度モデルのenergy residualを保ったまま拡張する。制御方法を比べる前に、どの係数を測定し、どの出力で同定するかを決める必要がある。
参考資料
- About Building Energy Modeling(U.S. Department of Energy)
- Chapter 5: Lighting, HVAC, and Plumbing(U.S. Department of Energy)
- The Hobby Greenhouse(Oklahoma State University Extension)
湿度収支Lab — RHではなく水蒸気質量を保存する
結果から見る
固定24°C、容積300 m³の合成室を24時間計算すると、RHは 64.817–75.269%、植物由来と仮定した水蒸気源は 34.8 kg、換気による正味排出は 12.793 kg、除湿回収は 21.542 kgになった。水分収支残差は 10^{-12} kg未満である。これは実作物の蒸散量や施設性能ではなく、保存則を検算する教材値である。
図: Duskcoil作成。完全混合・固定温度の合成モデル。RH自体を保存量として積分しない。
RHを直接足し引きしない
相対湿度は「その温度での飽和水蒸気圧に対する割合」で、温度が変われば水蒸気質量が同じでも変化する。そこで室内状態には水蒸気質量 m_v [kg]を使う。
水蒸気密度は \rho_v=e/(R_vT_K)、実水蒸気圧は e=RH\,e_s(T)/100 とする。飽和水蒸気圧にはFAO-56式11を用いた。室内質量が飽和値を超えた分だけ凝縮へ移し、無言でRHを100%へclipしない。
合成した入力境界
| 入力 | 値 | 注意 |
|---|---|---|
| 室温・外気温 | 24°C固定 | 熱モデルとの動的結合はしない |
| 初期/外気RH | 65%/60% | 同じ24°Cで密度へ変換 |
| 換気量 | 0.08 m³/s | 完全混合の正味交換 |
| 蒸散源 | 点灯2.0、消灯0.35 kg/h | 測定値でなく prescribed source |
| 除湿能力 | 2.5 kg/h | 回収水量。消費電力ではない |
| ON/OFF | 75%/65% | 単純なヒステリシス |
Penn State Extensionは温室の結露、湿度、換気、空気循環を一体の管理項目として挙げる。ただし本Labは病害リスクを予測しない。
潜熱を水量から読む
FAO資料の20°C付近の近似 \lambda=2.45 MJ/kgを使うと、合成蒸散34.8 kgに対応する相変化熱は 23.683 kWhである。これは蒸発に必要な熱負荷で、LED熱や冷房顕熱と同じものではない。除湿水量から求めた潜熱負荷もcompressor電力ではなく、COPや除湿機の排熱を含まない。
実行と検算
ZIPを展開し、Python 3.10以降で実行する。
python3 experiment.py config.json > result.json
python3 -m unittest -v
config.json、expected.json、experiment.pyを公開している。10テストは密度↔RH往復、閉室での質量保存、既知source、潜熱換算、入力拒否を確認する。
変更実験では、換気を0、除湿を0、蒸散を半分へそれぞれ独立に変える。温度を変えたとき、水蒸気質量を変えずRHだけが変わることも確認する。このモデルは葉面結露、局所気流、蒸散応答、病害、生育、CO₂を答えない。次の結合制御へ進む前に、温湿度sensorの位置と蒸散・回収水の測定方法を決める。
参考資料
CO₂収支Lab — 換気・吸収・呼吸・供給をmolで追う
結果から見る
固定24°C・101325 Pa、容積300 m³の合成室を24時間計算すると、CO₂は 600–906.209 ppm、合成吸収は 1.28 kg、呼吸sourceは 0.16 kg、供給は 2.967 kg、換気による正味排出は 1.756 kgとなった。mol収支残差は10^{-10} mol未満。実作物や実設備の性能値ではない。
図: Duskcoil作成。完全混合・固定温度圧力の理想気体モデル。
ppmを直接保存しない
室内空気の全物質量をn_{air}=PV/(RT)、CO₂物質量をnとし、ppm=10^6n/n_{air}へ変換する。保存式は
である。換気は内外濃度差と空気のmol流量から計算する。温度・圧力・容積を変えると同じCO₂ molでもppmとの対応が変わる。
Oklahoma State University Extensionは、光合成による昼間のCO₂消費、夜間の呼吸、換気と補給の関係を説明している。USDA ARSも、温室容積と仮定した吸収量からCO₂低下を収支計算する例を示す。本Labの吸収・呼吸速度は検算用の合成入力であり、収量効果や推奨設定を再現しない。
実行する
ZIPを展開し、Python 3.10以降で実行する。
python3 experiment.py config.json > result.json
python3 -m unittest -v
config.json、expected.json、experiment.pyを公開する。供給は700 ppm以下でON、900 ppm以上でOFF。8テストは閉室保存、既知1 mol source、収支残差、入力拒否を検査する。
換気、吸収、供給を一つずつ0にして結果を比較する。実施設ではcanopy gas exchange、漏気、sensor位置・校正、供給流量を独立に測る必要がある。このモデルは安全濃度、作物反応、燃焼副生成物、CO₂費用、温湿度との結合制御を答えない。

コメント
コメントの投稿にはログインが必要です
まだコメントはありません。