  Practical implementations of active disturbance rejection control (ADRC) will
almost always take place in discretized form. Since applications may have quite
different needs regarding their discrete-time controllers, this article
summarizes and extends the available set of ADRC implementations to provide a
suitable variant for as many as possible use cases. In doing so, the gap
between quasi-continuous and discrete-time controller tuning is being closed
for applications with low sampling frequencies. The main contribution of this
article is the derivation of three different discrete-time implementations of
error-based ADRC. It is shown that these are almost one-to-one counterparts of
existing output-based implementations, to the point where transfer functions
and coefficients can be reused in unaltered form. In this way, error-based
implementations become firmly rooted in the established landscape of
discrete-time ADRC. Furthermore, it becomes possible to equip error-based
variants with windup protection abilities known from output-based ADRC.
