Current Control#

Synchronous-frame two-degrees-of-freedom (2DOF) proportional-integral (PI) current control can be used in grid converters [Harnefors et al., 2015]. This control structure allows to compensate for the cross-coupling originating from rotating coordinates as well as to improve disturbance rejection. A 2DOF PI current controller is available in the motulator.grid.control.CurrentController class, whose base class is motulator.common.control.ComplexPIController.

Note

This controller design assumes an L filter, but it can also be applied with LCL filters (see the 10-kVA, LCL filter, GFL example). If LCL-resonance damping and very low sampling frequencies are needed, the controller could be designed directly in the discrete-time domain taking the LCL filter dynamics into account [Rahman et al., 2021].

2DOF PI Controller#

The design of synchronous-frame 2DOF PI current control is considered in the continuous-time domain, even though the actual implementation is discrete. Two typical gain selections for this control type are known as the internal-model-control (IMC) design [Harnefors and Nee, 1998] and the complex-vector design [del Blanco et al., 1999]. Here, only the complex-vector design is considered, see Complex-Vector 2DOF PI Controller, which is compatible with the motulator.common.control.ComplexPIController base class. The controller can be expressed in a state-space form as

(1)#\[\begin{split} \frac{\D \mathbf{u}_\mathrm{i}}{\D t} &= (\kI + \jj\omegac\kT )\left(\icref - \ic\right) \\ \ucref &= \kT\icref - \kP\ic + \mathbf{u}_\mathrm{i}\end{split}\]

where \(\ucref\) is the output of the controller, i.e., the converter voltage reference, \(\ic\) is the measured converter current, \(\icref\) is the converter current reference, \(\mathbf{u}_\mathrm{i}\) is the integral state, and \(\omegac = \hatomegag\) is the angular speed of the coordinate system. Furthermore, \(\kT\) is the reference-feedforward gain, \(\kP\) is the proportional gain, and \(\kI\) is the integral gain.

Closed-Loop System Analysis#

Consider the grid model in synchronous coordinates

(2)#\[ L\frac{\D\ic}{\D t} = \uc - \ug - \jj \omegac L \ic\]

where \(\uc\) is the converter output voltage, \(\ug\) is the grid (or PCC) voltage, and \(L\) is the inductance. Ideal converter voltage production \(\uc = \ucref\) and accurate parameter estimates are assumed. Using (1) and (2), the closed-loop system in the Laplace domain becomes

(3)#\[ \ic(s) = \mathbf{G}_\mathrm{c}(s)\icref(s) - \mathbf{Y}_\mathrm{c}(s)\ug(s)\]

The reference-tracking transfer function is

(4)#\[ \mathbf{G}_\mathrm{c}(s) = \frac{(s + \jj\omegag) \kT + \kI }{L s^2 + (\kP + \jj\omegag L) s + \kI + \jj\omegag \kT}\]

where the closed-loop poles can be arbitrarily placed by means of the gains. The zero can be placed by means of the reference-feedforward gain \(\kT\). The disturbance rejection depends on the closed-loop admittance

(5)#\[ \mathbf{Y}_\mathrm{c}(s) = \frac{s}{L s^2 + (\kP + \jj\omegag L) s + \kI + \jj\omegag \kT}\]

Gain Selection#

Consider the gains

(6)#\[ \kP = (\alphac + \alphai) \hat L \qquad \kI = \alphac \alphai \hat L \qquad \kT = \alphac \hat L\]

where \(\alpha_\mathrm{s}\) is the closed-loop reference-tracking bandwidth, \(\alphai\) is the integral action bandwidth, and \(\hat L\) is the inductance estimate. Assuming accurate parameter estimates, the closed-loop transfer functions (4) and (5) reduce to

(7)#\[ \mathbf{G}_\mathrm{c}(s) = \frac{\alphac}{s + \alphac} \qquad \mathbf{Y}_\mathrm{c}(s) = \frac{s}{L (s + \alphac)(s + \alphai + \jj\omegag)}\]

It can be seen that this design results in the first-order reference-tracking dynamics. Furthermore, one pole is placed at the real axis at \(s = -\alphac\) and another pole at \(s= -\alphai - \jj\omegag\). This gain selection is used in the motulator.grid.control.CurrentController class.

The converter output voltage is limited in practice due to the limited DC-bus voltage of the converter. Consequently, the realized (limited) voltage reference is

(8)#\[ \ucreflim = \mathrm{sat}(\ucref)\]

where \(\mathrm{sat}(\cdot)\) is the saturation function. The limited voltage can be obtained from a pulse-width modulation (PWM) algorithm (see the motulator.common.control.PWM class). The anti-windup of the integrator is included in the implementation of the motulator.common.control.ComplexPIController base class.