The car is a cyber-physical system that evolves continuously in time. The controller is software: it wakes up periodically, reads the speed, computes a force and writes it to the actuator. The control law is already tuned, but you can see the impact of changing its parameters (as well as those of the car, the road, and the reference speed set by the driver). In a separate box, you can change the implementation and performance characteristics of the digital controller independently of the control law.
dv/dt = (f − b·v)/m, with f = Kp·e + Ki·∫e dt and e = reference − speed.
Sample-to-actuation delay, as a share of the period.
Random variation added to the delay, run to run.
Share of jobs that never complete. The actuator holds its last value.
The driver asks for the reference speed at t = 2 s.
Held constant between actuations. Ticks below mark each controller job; orange ticks are jobs that missed their deadline.
Leave the car, the road and the two gains alone: that is somebody else's design, and on an infinitely fast computer it produces the grey dashed curve every time. Your job is to find out what your implementation does to it.
Simplifications worth knowing about: the engine can produce any force the control law asks for, there is no gravity, no gear, no measurement noise and no quantisation, and the plant is integrated exactly between events, so every difference you see between the two curves comes from the timing of the software and from nothing else.