目次 — 知りたいところから読む
固形物捕捉と窒素・リン負荷を分ける
濁った水と溶存硝酸を同じ負荷にしない
前の記事では、魚槽・生物ろ過・植物側を分けた。今回は魚槽から出る固形物と、溶存した窒素・リンを別々に追う。Cornellはアクアポニックスを魚槽、固形物を集める工程、植物側、戻りの循環として説明している。Cornell Small Farms
固形物をフィルタで捕捉すると、粒子として系外へ出る量と、後で分解・鉱化される量が変わる。溶存窒素は硝化や植物吸収を通る。リンは固形物側へ偏る場合があり、窒素の式から自動的に推定しない。
四つの経路を別帳簿にする
| 経路 | 記録 | 混同しないもの |
|---|---|---|
| 固形物捕捉 | 質量、含水率、時刻、処理先 | 溶存硝酸の濃度 |
| 溶存窒素 | アンモニア、亜硝酸、硝酸、流量 | 魚餌の全窒素 |
| リン | 溶存・粒子、捕捉・排出 | 窒素からの換算値 |
| 植物吸収・排水 | 収穫、排水、回収量 | ろ過前の負荷 |
フィルタの入口と出口を同時に測る。捕捉物を捨てるのか、別工程で鉱化するのか、植物側へ戻すのかで、次の系統の負荷が変わる。
合成負荷を計算する
1日あたり、餌由来の窒素10 g、リン1.2 gが系へ入るとする。固形物捕捉で窒素3 g・リン0.8 gを取り出し、植物が溶存窒素4 g・リン0.2 gを吸収した場合、未説明量はそれぞれ3 gと0.2 gである。
inputs = {"N": 10.0, "P": 1.2}
solids = {"N": 3.0, "P": 0.8}
plants = {"N": 4.0, "P": 0.2}
residual = {k: inputs[k] - solids[k] - plants[k] for k in inputs}
print(residual)
出力は{'N': 3.0, 'P': 0.2}となる。これは硝化、槽内蓄積、別の排水、測定誤差などを含む残差で、植物吸収量や安全な負荷を意味しない。
捕捉物の処理先を記録する
固形物を別容器へ移しても、養分が消えたわけではない。含水率、保管時間、処理方法、再投入・堆肥化・廃棄の区別を残す。処理後の液を戻す場合は、新しいロットとして衛生・養分の二つの帳簿へ登録する。
リンや微量元素を窒素と同じ割合で補うことはできない。餌、魚体、ろ過媒体、植物体、排水の境界を分け、未説明量を無理にゼロへ調整しない。
範囲
本記事は固形物・窒素・リンの収支境界を扱った。魚餌の組成、ろ過機器の設計、鉱化反応速度、魚種別の許容値、病原体と食品出荷判定は扱わない。次は水質負荷と魚・植物の容量を結ぶ設計変数を整理する。
水質負荷を魚・植物の容量へつなぐ設計変数
「魚一匹に植物何株」だけでは設計できない
前の記事では、固形物、窒素、リンを別の負荷として記録した。次は、その負荷を魚槽、生物ろ過、植物側の容量へ接続する。Oklahoma State University は、固形物除去、生物ろ過、植物ユニットを別コンポーネントとして扱い、設計後に余裕容量を加える考え方を示している。SRAC aquaponics guide
植物と魚の比率は、魚種、魚体の成長段階、給餌量、ろ過、流量、収穫周期で変わる。固定比率を安全限界や性能保証として使わず、同じ日次の時間窓で負荷と容量を照合する。
設計変数を五つの表に分ける
| 表 | 最低限の変数 | 容量と照合するもの |
|---|---|---|
| 魚槽 | 魚体量、給餌量、給餌回数、水温、DO | 魚の呼吸・排泄と槽内水量 |
| 固形物 | 入口質量、捕捉率、含水率、処理先 | フィルタの処理量と清掃間隔 |
| 生物ろ過 | アンモニア負荷、亜硝酸、硝酸、接触面、流量 | ピーク負荷と酸素供給 |
| 植物 | 栽培面積、作物段階、収穫量、吸収量 | 溶存養分の残差と光・水温 |
| 水力・余裕 | 循環流量、交換量、停止時間、予備容量 | 各区画の最小流量と復旧時間 |
「魚体量」を「給餌量」の代わりにしない。小魚から成魚への移行では、同じ尾数でも給餌と排泄の時間系列が変わる。植物面積も株数だけでなく、定植直後と収穫前を別段階として記録する。
合成の日次負荷を容量へ割り当てる
合成例として、1日給餌量を100 g、窒素負荷を10 g、固形物側の窒素を3 g、植物側の目標吸収を4 gとする。残差は3 gであり、生物ろ過・槽内蓄積・排水・測定誤差を含む。この残差をゼロにするため植物面積を増やすのではなく、次の容量欄へ分けて確認する。
load = {"feed_g": 100.0, "N_g": 10.0}
paths = {"solids_N_g": 3.0, "plant_target_N_g": 4.0,
"biofilter_or_other_N_g": 3.0}
assert sum(paths.values()) == load["N_g"]
capacity = {"fish_tank_feed_g": 120.0,
"biofilter_N_g": 3.5,
"plant_target_N_g": 5.0}
headroom = {"feed_g": capacity["fish_tank_feed_g"] - load["feed_g"],
"biofilter_N_g": capacity["biofilter_N_g"] - paths["biofilter_or_other_N_g"],
"plant_N_g": capacity["plant_target_N_g"] - paths["plant_target_N_g"]}
print(headroom)
出力は {'feed_g': 20.0, 'biofilter_N_g': 0.5, 'plant_N_g': 1.0} となる。これは合成容量との差分であり、魚種の許容値、食品安全、病原体管理を示さない。最小の余裕だけを見て、魚槽・ろ過・植物・ポンプのどれが先に制約になるかを特定する。
時間窓と停止時の境界を残す
日平均が容量内でも、給餌直後のピーク、夜間の酸素低下、ポンプ停止、フィルタ清掃中のバイパスで局所的な制約を超えることがある。記録には、給餌時刻、採水時刻、流量、DO、アンモニア・亜硝酸・硝酸、固形物処理状態を含める。停止時は「植物面積があるから安全」とせず、魚槽・生物ろ過・植物側を別の復旧手順として扱う。
範囲
本記事は負荷と容量をつなぐ変数・時間窓・余裕の記録方法を扱った。魚種別の閾値、フィルタの実機設計、飼料組成、流体計算、食品出荷判定は扱わない。次は、魚・微生物・植物の観測値から設計表を更新する運用を整理する。
観測値で負荷・容量表を更新する運用
観測値を一つの「健康スコア」に潰さない
前の記事では、給餌、魚体量、固形物、生物ろ過、植物面積、流量を容量表へ分けた。今回は、その表を魚、微生物、植物の観測で更新する。Oklahoma State University も、アンモニア、亜硝酸、硝酸、pH、温度、溶存酸素を監視し、魚・細菌・植物の状態を別々に確認するよう説明している。Nitrification and Maintenance
同じ時刻の観測を一行のスナップショットにまとめても、指標は混ぜない。魚槽のDO低下、生物ろ過の亜硝酸上昇、植物側の吸収低下は、異なる境界と対応手順を持つ。
一つのスナップショットに五つの境界を残す
| 境界 | 代表的な観測 | 更新する欄 |
|---|---|---|
| 魚槽 | 魚体量、給餌量、DO、温度、行動 | 入力負荷と魚槽余裕 |
| 固形物 | 捕捉質量、含水率、清掃時刻、処理先 | 固形物経路とフィルタ余裕 |
| 生物ろ過 | アンモニア、亜硝酸、硝酸、流量 | 変換負荷とろ過余裕 |
| 植物 | 面積、成長段階、収穫、葉の状態 | 吸収目標と植物余裕 |
| 水力・衛生 | 循環、停止時間、区画、ロット | 復旧・隔離状態 |
各行に observed_at、採取位置、単位、方法、欠測理由を付ける。記録が欠けたときは、前回値を新しい実測値として扱わず、状態を「要確認」にする。
余裕の変化を合成データで計算する
前回の容量表に対し、朝と夕方の観測を置く。ここでは魚槽の給餌余裕、生物ろ過の窒素余裕、植物の吸収余裕を計算する。
capacity = {"feed_g": 120.0, "biofilter_N_g": 3.5, "plant_N_g": 5.0}
morning = {"feed_g": 100.0, "biofilter_N_g": 3.0, "plant_N_g": 4.0}
evening = {"feed_g": 108.0, "biofilter_N_g": 3.2, "plant_N_g": 4.4}
headroom = {
slot: {k: capacity[k] - obs[k] for k in capacity}
for slot, obs in [("morning", morning), ("evening", evening)]
}
delta = {k: headroom["evening"][k] - headroom["morning"][k] for k in capacity}
print(headroom)
print(delta)
出力は朝の余裕 {'feed_g': 20.0, 'biofilter_N_g': 0.5, 'plant_N_g': 1.0}、夕方の余裕 {'feed_g': 12.0, 'biofilter_N_g': 0.3, 'plant_N_g': 0.6}、変化 {'feed_g': -8.0, 'biofilter_N_g': -0.2, 'plant_N_g': -0.4} となる。負の変化は容量が減ったという意味で、直ちに給餌量や流量を自動変更する指示ではない。
更新と停止を別の状態にする
観測後の状態を、normal、watch、hold、isolate のように分ける。watch は採水やセンサーを再確認する状態、hold は新しい給餌・移送・再投入を保留する状態、isolate はロットや区画を分離する状態と定義する。誰が解除し、どの観測が必要かも同じ行に残す。
センサーの欠測、校正期限切れ、採水位置の変更は水質値そのものとは別の品質フラグにする。異常な値を平均で隠したり、別区画の値で置き換えたりしない。
範囲
本記事は観測スナップショット、余裕の更新、状態遷移の記録方法を扱った。魚種別閾値、センサー校正手順、病原体判定、食品出荷、実機の自動制御は扱わない。次は、観測履歴から区画・ロット単位の隔離と復旧記録を整理する。
区画・ロットの隔離と段階的な復旧記録
区画を戻しても、ロットの保留は残る
観測から負荷・容量表を更新する記事の続きとして、異常発見から復旧までの記録を組み立てる。区画は設備と水の接続単位、ロットは魚群、植物の栽培・収穫単位、回収水などの追跡単位である。区画の流量が戻っても、その区画にいた魚や植物、回収水の保留を一括解除しない。
Oklahoma State Universityは、魚・細菌・植物を支える水質管理としてアンモニア、亜硝酸、硝酸、pH、温度、溶存酸素の監視を説明している。Nitrification and Maintenance。以下はその監視項目を参照した、本記事独自の記録例であり、同大学が定めた復旧手順ではない。
発見時刻だけで影響範囲を切らない
異常を見つけた時刻と、異常が始まった可能性のある期間を別欄にする。前回の有効な観測以後に共通タンクを通った水、魚群の移動、植物への給液を調べる。記録がない時間帯は「接触なし」と埋めず、調査中として残す。
| 記録 | 必須の内容 | 合成例 |
|---|---|---|
| 事象 | ID、発見時刻、観測ID、対象位置 | INC-01、09:00、OBS-17、魚槽A |
| 調査期間 | 開始根拠、終了時刻、不明区間 | 08:00の有効観測から09:10の分離確認まで |
| 接続履歴 | 供給・戻り・バイパス、状態変更時刻 | 08:40に戻り水W-01を共通槽へ移送 |
| 対象ロット | 魚群、植物、水、親子関係 | F-A、P-A、W-01、混合後W-02 |
| 隔離の確認 | 操作指示と実施結果、担当、証拠 | 09:05閉止指示、09:10に流路確認 |
混合ロットの祖先追跡は出所の調査に使える。一方、W-01の異常から影響先を調べるときは、W-01を親に持つ子・孫ロットと、その後の接触先を順方向に追う。現在の配管図だけでは、閉止前の移送を復元できない。
隔離中にも魚・微生物の維持条件を残す
循環の共有部分を切り離すと、魚槽と生物ろ過へ届く水や酸素の条件が変わる。単に全ポンプ停止を隔離と定義せず、区画別の経路ごとに維持する曝気・循環、代替経路、停電時の対応を現場手順へ結び付ける。切り離した植物区画の給液と排液先も記録する。
記録上は isolation_requested と isolation_verified を分ける。バルブへ閉止指示を送った事実だけでは、逆流やバイパスを含む物理的な分離を確認したことにならない。隔離によって利用できなくなった生物ろ過や植物面積は、容量表から外して再評価する。
一つの正常値から通常運転へ戻さない
復旧レビューには、原因への対応、設備経路の確認、観測の品質、予定負荷での応答、責任者の判断を結び付ける。観測期間や許容範囲は魚種、設備、運用条件に応じて別途定義する。無負荷時に水質が戻った結果だけで、元の給餌負荷を処理できるとは判断しない。
| 区画の記録状態 | 残す証拠 | まだ別に扱うもの |
|---|---|---|
| isolated | 分離確認、維持経路、対象ロット一覧 | 原因の確定 |
| recovery_review | 原因対応、校正・採水確認、負荷条件付き観測 | 再接続の承認 |
| limited_restart | 承認ID、限定負荷、監視頻度、中止条件 | 通常負荷への復帰 |
| normal | 再開後の観測、容量表、担当者判断 | 個々のロット保留・出荷判断 |
例えば10:00に区画Aの限定再開を承認しても、08:40に移送したW-01と、その混合先W-02は hold のままにできる。11:00に異常が再発したら、同じ事象IDに追記して限定再開を取り消し、再接続中に接触したロットを再調査する。古い正常記録や保留履歴を上書きしない。
復旧記録を一件作ってみる
合成事象INC-01について、区画Aの限定再開とW-02の保留を二行で作る。それぞれに event_id、object_type、object_id、previous_state、new_state、effective_at、recorded_at、evidence_ids、reviewer、next_review_at を付ける。時刻はタイムゾーン付きとし、遅れて入力した観測も実際の発生順へ戻せるようにする。
確認点は三つある。W-02からW-01へ出所をたどれるか。区画の再開承認が水ロットの保留解除へ流用されていないか。再発時に10:00以後の接触先まで追加できるか。空欄の証拠や未完了の調査は、完了として記録しない。
範囲と次の学習
扱ったのは事象・接続・ロット・復旧判断を結ぶ記録設計である。実機の隔離性能、魚種別の限界値、病原体検査、処理条件や食品出荷は検証していない。アクアポニックスの導入記事をここで区切り、次はキノコ栽培の菌類・培地・生育段階を整理する。光合成植物のモデルをそのまま転用せず、前提から組み立てる。

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