pid/timing_fault
A scenario of the PID controller, from tools/trace/scenarios/pid/timing_fault.cpp.
✓ pass
- The clang run (clang 18.1 optimized) matches the committed trace.
- The gcc run (gcc 13.3 optimized) matches the committed trace.
Shown on
These players show the same trace, with panels chosen to explain it:
- What does the controller do when its scheduler misbehaves? (PID Controller)
Every channel
response response
setpoint setpoint
command command
integral integral
dt_passed [s] dt_passed
t = 0.000 s / 0.250 s
Keys (with the player focused): Space play/pause · ← → one sample (Shift: ten) · Home/End · [ ] speed
0.25 s of the control/pid scenario timing_fault.cpp, 251 samples every 0.001 s. The panels plot every channel that changes: response, setpoint, command, integral, dt_passed. 5 events are marked. Pass criteria: BB-T1 output_and_integral_change_on_faulted_ticks <= 0.
- setpoint 0.5
- duplicated tick: dt = 0
- clock steps back: dt = −1 ms
- the controller misses 49 ticks
- it runs again, with dt = 50 ms
- ✓ passBB-T1 output_and_integral_change_on_faulted_ticks = 0 (<= 0), computed by the scenario harness