I am designing a proportional controller for a DC motor. I am expecting to get an error of $$\dfrac{K_p}{1+K_p}$$ but the step response of my closed loop system has practically no steady state error (< 1.0e-6).
The $A$ and $B$ matrices of my closed loop system are
$$ A = \begin{bmatrix} 0 & 1 & 0 \\\ 0 & 0 & 1 \\\ -b_0 k_1 & a_1 -b_0 k_2 & a_2 - b_0 k_3 \end{bmatrix}, \qquad B = \begin{bmatrix} 0 & 0 & 0 \\\ 0 & 0 & 0 \\\ b_0 k_1 & b_0 k_2 & b_0 k_3 \end{bmatrix} $$
For simulation using Python Control Systems Library's control.forced_response(), I use
$$ C = \begin{bmatrix} 1 & 0 & 0 \\\ 0 & 1 & 0 \\\ 0 & 0 & 1 \end{bmatrix}, \qquad D = \begin{bmatrix} 0 & 0 & 0 \\\ 0 & 0 & 0 \\\ 0 & 0 & 0\end{bmatrix} $$
Simulating the system with $ k_p = \begin{bmatrix} 1 & 0 & 0 \end{bmatrix}$.
- Re(Eigenvalues) all < 0 so system is stable.
- Responses shown in figure below.

I expect the position to have a steady state value of 0.5 radians since
$$\frac{k_1}{1 + k_1} = \frac{1}{1 + 1} = \frac12$$
Why am I not getting a steady state error in my position response, or if I am, why is it so small?
The process maps voltage to position.
$$ \dfrac{\Theta(s)}{E(s)} = \dfrac{b_0}{a_2s^3 + a_1s^2 + a_0s}$$
If your plant is,
$$P(s) = \frac{b_0}{a_2 s^3 + a_1 s^2 + a_0 s}$$
and your controller is,
$$C(s) = K_p$$
then the TF from the reference $R(s)$ to the error $E(s)$ is,
$$\frac{E(s)}{R(s)} = \frac{1}{1 + P(s) C(s)} = \frac{a_2 s^3 + a_1 s^2 + a_0 s}{a_2 s^3 + a_1 s^2 + a_0 s + K_p}$$
Assuming closed-loop stability, we can see the DC gain of this TF is $0$, implying no error in the steady-state response to a step reference. This principle generalizes in a way that is known as the Internal Model Principle: usually it is used to figure out what poles to put in the controller, but it applies just as well to analysis when the plant has the right poles.