docs: revise pid_heat windup plan to pid_outer/pid_inner rename + Inner.Hold split
Supersedes the earlier flat yi_max clamp / FSM-gating ideas: same inner PID instance switches its active param set (Inner.Heat vs Inner.Hold) by state instead of freezing, giving bumpless transfer for free and a tight yi_max that only applies while HOLD is driving it. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KefnwbGDM8CGrhb4sFhVq9
This commit is contained in:
+12
-5
@@ -73,11 +73,18 @@ git history for `temp_controller.py`/`temp_controller_smith.py`).
|
||||
clamp was considered and rejected: sustaining a genuine 1.5 K/min ramp
|
||||
needs `y≈0.7-0.75` from `yi` alone at steady state, the same range the
|
||||
disturbance itself peaked at, so no single clamp value can suppress the
|
||||
windup without also capping legitimate ramps. Plan is instead to gate
|
||||
`pid_heat`'s activity by FSM state (frozen/offline while `HOLD`, engaged
|
||||
by command or a new `HoldHeatEngage` threshold) — see
|
||||
`docs/overshoot_hold_windup.md` for the full writeup, open design
|
||||
question (threshold relationship with `HoldHeat`), and test plan.
|
||||
windup without also capping legitimate ramps. An FSM-gating alternative
|
||||
(freeze the loop's output in `HOLD` unless engaged) was also superseded.
|
||||
Current plan: rename `pid_hold`/`pid_heat`/`pid_cool` to `pid_outer`/
|
||||
`pid_inner`/`pid_inner_cool` (matching what actually runs when), and
|
||||
split the inner loop's config into `Inner.Heat`/`Inner.Hold`/
|
||||
`Inner.Cool` so the *same* PID instance gets a tight `yi_max` only while
|
||||
`HOLD` is driving it and stays unclamped for real `HEAT` ramps — no
|
||||
freeze/thaw, bumpless transfer preserved for free. See
|
||||
`docs/overshoot_hold_windup.md` for the full writeup and test plan. This
|
||||
is also a breaking config change (`Hold`/`Heat`/`Cool` → `Outer`/
|
||||
`Inner.*`) — every deployed `config.json` needs migrating, not just the
|
||||
repo templates.
|
||||
|
||||
- [ ] **`kalman.py` is now dead code in production.** Neither
|
||||
`temp_controller.py` nor `temp_controller_smith.py` uses `Kalman`
|
||||
|
||||
Reference in New Issue
Block a user