Speed Control#
A speed controller is implemented in the motulator.drive.control.im.SpeedController
class, whose base class is motulator.common.control.PIController
. In the following, the tuning of the speed controller is discussed. The presented approach can be extended to many other control tasks as well.
2DOF PI Controller#
Even if controllers operate in the discrete-time domain, they are often designed and analyzed in the continuous-time domain. The state-space form of a simple 2DOF PI speed controller is given by [Hinkkanen et al., 2024]
where \(\omegaM\) is the measured (or estimated) mechanical angular speed of the rotor, \(\omegaMref\) is the reference angular speed, and \(\tau_\mathrm{i}\) is the integral state. Furthermore, \(\kt\) is the reference feedforward gain, \(\kp\) is the proportional gain, and \(\ki\) is the integral gain. Setting \(\kt = \kp\) results in the standard PI controller. This 2DOF PI controller can also be understood as a state feedback controller with integral action and reference feedforward [Franklin et al., 1997].
Closed-Loop System Analysis#
For simplicity, let us assume ideal torque control (\(\tauM = \tauMref\)) and a stiff mechanical system
where \(\tauM\) is the electromagnetic torque, \(\tauL\) is the load torque, and \(J\) is the total moment of inertia. In the Laplace domain, the closed-loop system resulting from (1) and (2) is given by
where it can be seen that the gain \(\kt\) allows to place the reference-tracking zero.
Gain Selection#
The gain selection [Harnefors et al., 2013]
results in
where \(\alphas\) is the closed-loop reference-tracking bandwidth and \(\alphai\) is the integral action bandwidth. An accurate inertia estimate \(\hat{J} = J\) is assumed in the above closed-loop system.