SAFETY-12: a minimum loop cadence - the loop thinks on a clock, not only when the number moves #7

Merged
admin merged 4 commits from safety-12-loop-floor into release/1.0 2026-08-28 21:18:21 +02:00
Showing only changes of commit 8cc9438aec - Show all commits
+12
View File
@@ -84,6 +84,18 @@ per-cycle gain the tuning was measured against are unchanged - asserted in
`cycle_floor_s` reproduces the old behaviour exactly) and comparing the
commanded values.
Observed over six real minutes on the same rig, one binary, meter held at a
literally constant 350.0 W: **before, 1 cycle** (at startup) and then nothing,
the command stuck at 220 W against a 350 W import for the rest of the window.
**After, 24 cycles**, worst gap 15.14 s, and the ordinary PI ramp doing its job -
220, 430, 650, 860, 1080, 1300, 1510, 1730, 1940, 2000 W, one step per cycle,
rail at t=136 s and flat after. Three minutes with the meter parked at the
target instead: **1 cycle before, 12 after, and 19 writes either way - the same
19**. Three minutes on a normally-changing meter: **36 cycles and 49 writes on
both sides, the same values in the same order.** The heartbeat write count never
moves; the only writes the fix adds are the ten the loop was supposed to be
making all along.
15 s is bracketed, not round. Below it: arrivals are ~5 s (NOTES.md measures
4.97 s), detected up to 1 s late by the 1 s poll, and one dropped poll is
retried on the next tick - about 11 s worst case on a meter that is merely