A web offset press prints cyan, magenta, yellow and key(black) from four separate plate cylinders as the paper web races underneath at up to a few hundred m/min. Each unit's impression must land within a few microns of the others, or the print shows visible color fringing. Web tension and speed fluctuations constantly push each unit's phase off target:
de/dt = w(t) − K_p · e(t)
w(t) = random tension disturbance (µm/s)
e(t) = registration error of that color vs. the key plate
K_p = servo controller gain (0 = open loop)
Optical registration-mark sensors read each color's mark position relative to the key plate thousands of times per second. A servo motor then advances or retards that cylinder's rotational phase by a proportional amount, cancelling the drift — this is the closed-loop feedback loop this simulator animates for cyan, magenta and yellow against a fixed black reference.
- Web speed — faster webs need faster correction cycles to hold the same tolerance, and spin the cylinder icons faster.
- Tension disturbance — models mechanical noise from splices, roller eccentricity and tension-zone coupling.
- Kp and the Closed-loop toggle — the higher the gain, the harder the servo pulls error back to zero; with the loop off, error random-walks unchecked.
- The top-down conveyor view stamps each color's mark only once it passes under its own cylinder — misalignment between the four colors on a given mark is the registration error, exactly as it appears on a real printed sheet. Drag the view left/right to scrub through older or upcoming marks; use the zoom slider to widen or narrow the visible span.
- The strip chart below plots each color's registration error against time, so you can watch a proportional controller pull an exponential-decay trace back to zero, or watch an unbounded random walk when the loop is off.
Note on this 2D build: the original 3D simulator's on-page theory states de/dt = w(t) − K_p·e(t) but its code actually integrates de/dt = w(t) − 3·K_p·e(t) (an unexplained ×3 gain multiplier baked into the animation loop). This 2D engine implements the equation exactly as documented, with no hidden multiplier, so the Kp slider value here is the real closed-loop decay rate.