**1. Introduction**

Matrix converters have simple and compact power circuits, which provide bidirectional power flow, sinusoidal input currents, sinusoidal output currents, a unity input power factor, and regeneration capabilities [1]. Recently, matrix converters have gained a lot of attention from researchers, and several have focused on improving the input currents for matrix converters. For example, Lei et al. proposed a damping control of matrix converter via modifying input reference currents by injecting damping signals. By using this method, the oscillations in input currents could be suppressed directly [2]. Sahoo et al. systematically designed an input filter for matrix converters by using an analytical estimation of root-mean-square current ripples. A step-by-step procedure was shown to determine the inductance parameter and capacitance parameter from the specifications of allowable total harmonic distortion in the input currents and voltages. In addition, a resistance parameter was determined to ensure that the filter had a minimum ohmic loss and a reasonable damping factor [3]. Orser et al. investigated using input filter capacitors as an energy storage device when the matrix converter was ridden through [4]. Dasgupta proposed a filter design for direct matrix converters, which focused on dynamic performance and reliable commutation [5]. Kume et al. studied an integrated filter, which reduced commonmode currents, and provided near sinusoidal output voltages. By using that integrated filter, the traditional R-L-C filter was eliminated [6]. Liu et al. investigated a modeling analysis and parameters design of an LC-filter. Those experimental results showed that the LC-filter-integrated quasi-Z-source network provided the necessary functions. As a result, the traditional input filter was eliminated [7].

In this paper, we propose two different approaches for designing the input R-L-C filter of a matrix converter. First, we use a step-by-step procedure to determine the inductance

**Citation:** Liu, T.-H.; Li, J.-H. Design and Implementation of Input AC Filters and Predictive Control for Matrix-Converter Based PMSM Drive Systems. *Energies* **2022**, *15*, 748. https://doi.org/10.3390/en15030748

Academic Editor: Athanasios Karlis

Received: 24 December 2021 Accepted: 18 January 2022 Published: 20 January 2022

**Publisher's Note:** MDPI stays neutral with regard to jurisdictional claims in published maps and institutional affiliations.

**Copyright:** © 2022 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (https:// creativecommons.org/licenses/by/ 4.0/).

parameter, capacitance parameter, and resistance parameter. This proposed method has some advantages when it is compared to previous papers [3,4]. In the previously published paper [3], three equations with three coupling coefficients were used. As a result, a numeric solution obtained by using a computer simulation was required. To solve this problem, in this paper, we propose three equations in the first method. Each equation is related to only one or two parameters. As a result, the capacitance parameter, inductance parameter, and resistance can be directly solved by using the three equations and simple algebra. In addition, we use a transfer function to determine the required parameters of the R-L-C filter in the second method. After that, we compare the advantages and disadvantages of these two methods. Finally, experimental results demonstrate the effectiveness of the two different filter designs.

Besides dealing with input harmonic currents, the performance of the motor is important as well. Several researchers have concentrated on modulation methods and controller design of matrix converter-based permanent magne<sup>t</sup> synchronous motor (PMSM) drive systems. For example, Deng et al. proposed a direct torque control for matrix converterbased PMSM drive systems with minimized common-mode voltages [8]. Zhang et al. proposed a modified PI controller and a proportional resonant (PR) controller for matrix converters and then compared their steady-state tracking performance. However, the output of the matrix converter was connected to a three-phase resistor but not a three-phase AC motor [9]. Mubarok et al. implemented a matrix-converter-based IPMSM position control system, in which a model-free predictive current controller was used [10]. Siami et al. proposed a simplified finite control for matrix converter-based PMSM drive systems. By using that simplified method, the computation of the digital signal processor (DSP) was reduced [11]. Xia et al. investigated direct torque control of matrix converter-based PMSM drives by using duty cycles to reduce 30% of torque pulsations [12]. Khiem et al. proposed improving matrix converter-based PMSM drive systems by using an online detection and fault-tolerant switching strategy [13]. Friedli et al. compared the detailed performance of a three-phase AC-AC matrix converter-based PMM drive system and a DC-link voltage back-to-back converter-based PMSM drive system [14]. Furthermore, Di et al. investigated a novel predictive control method with an optimal switching sequence for a two-stage matrix converter [15]. Li et al. implemented a finite set model predictive control strategy for an indirect matrix converter [16]. Di et al. proposed a continuous control (predictive model control) strategy for an indirect matrix converter [17]. Dendouga designed second-order sliding-mode controllers for a direct matrix converter-based PMSM drive system [18]. Bu et al. designed output filters for a GaN-based matrix converter drive system [19]. Feng et al. investigated an improved model predictive control for matrix converters [20]. Orcioni et al. proposed a driving technique for a direct matrix converter based on a sigma-delta modulation technique [21]. Tuyen et al. implemented the space-vector modulation for an indirect matrix converter [22]. He et al. proposed a step-by-step design for a low-pass input filter for a single-stage converter [23].

However, these previous papers, which focused on matrix converter-based PMSM drive systems, only investigated one-step predictive control [10–13]. The main reason is that the DSP of a matrix converter-based drive system has to execute a four-step commutation, current-loop control, speed-loop control, and coordinate transformation. To fill this research gap, in our paper, an FPGA is used to execute the four-step commutation. In addition, a DSP is used to execute predictive current-control, one-step predictive speed-control, as well as two-step speed-control. Compared to traditional one-step predictive speed-control, the proposed two-step predictive speed-control provides more flexibility in determining the control input of the PMSM drive system and also has fewer steady-state errors than the one-step predictive control. To the authors' best knowledge, this comparison of the two methods to design the three-phase input filter of the matrix converter and the comparison of the two-step predictive speed-loop control and one-step predictive speed-loop control for a matrix converter PMSM drive system are original and have not been investigated by previously published papers [1–23]. These two methods and their comparison are the main contributions of this paper.

### **2. Indirect Matrix-Converter Control**

Figure 1a shows the main circuit of the matrix converter. The indirect control of the matrix converter in this paper includes a three-phase input current control and a virtual inverter voltage control, which is shown in Figure 1b. The details are discussed as follows:

**Figure 1.** Matrix converter. (**a**) Main circuit, (**b**) equivalent circuit.

The relationship between input voltage and output voltage of the matrix converter in Figure 1a can be shown as the following:

$$
\begin{bmatrix} \upsilon\_a \\ \upsilon\_b \\ \upsilon\_c \end{bmatrix} = \begin{bmatrix} S\_{Aa} & S\_{Ab} & S\_{Ac} \\ S\_{Ba} & S\_{Bb} & S\_{Bc} \\ S\_{Ca} & S\_{Cb} & S\_{Cc} \end{bmatrix} \begin{bmatrix} V\_{AN} \\ V\_{BN} \\ V\_{CN} \end{bmatrix} \tag{1}
$$

In addition, the switching states of the nine switches in Figure 1a and the equivalent switching states of the relative switches of the virtual AC/DC converter and inverter in Figure 1b are shown as follows:

$$
\begin{bmatrix} S\_{Aa} & S\_{Ab} & S\_{Ac} \\ S\_{Ba} & S\_{Bb} & S\_{Bc} \\ S\_{Ca} & S\_{Cb} & S\_{Cc} \end{bmatrix} = \begin{bmatrix} E\_1 & E\_2 \\ E\_3 & E\_4 \\ E\_5 & E\_6 \end{bmatrix} \begin{bmatrix} R\_1 & R\_3 & R\_5 \\ R\_2 & R\_4 & R\_6 \end{bmatrix} \tag{2}
$$

### *2.1. Three-Phase Input Current Control*

⎡

⎣

The desired three-phase input currents are shown as follows:

$$i\_A = I\_m \cos(\omega\_\tilde{\chi} t) \tag{3}$$

$$\dot{q}\_B = I\_m \cos(\omega\_\mathcal{J} t - \frac{2\pi}{3})\tag{4}$$

and,

$$\dot{a}\_{\mathbb{C}} = I\_m \cos(\omega\_{\mathbb{S}}t + \frac{2\pi}{3})\tag{5}$$

where *iA*, *iB*, and *iC* are input three-phase currents from the input three-phase voltage source, *Im* is the amplitude of the input three-phase currents, and *<sup>ω</sup>g* is the angular frequency of the input three-phase voltages or currents. Figure 2 illustrates the space vector of the input current vector, which includes six sections based on the *α*-axis and *β*-axis coordinates. First, we assume the input current vector is *Iref* and is between *I*1 and *I*6, which is shown in Figure 2. Then, the input current vector *Iref* is expressed as follows:

$$\begin{array}{l} I\_{ref} = \frac{t\_{\mu}}{T\_{s}} I\_{1} + \frac{t\_{\text{F}}}{T\_{s}} I\_{6} + \frac{t\_{\text{O}}}{T\_{s}} I\_{0} \\ = d\_{\mu} I\_{1} + d\_{v} I\_{6} + d\_{0} I\_{0} \end{array} \tag{6}$$

and,

$$d\_0 = \frac{t\_0}{T\_\mathcal{s}} = 1 - (d\_\mu + d\_\nu) \tag{7}$$

where *I*0 is the zero current vector; *I*1 and *I*6 are the active current vectors; *<sup>t</sup>μ*, *tv*, and *t*0 are the time intervals of *I*1,, and *I*0 individually; and *du*, *dv*, and *d*0 are the duty cycles of the current vectors *I*1, *I*6, and *I*0 individually. In Figure 2, we can see that when the switches *R*1 and *R*6 from Figure 1 are turned on, the switching state of *I*1(A, C) is created. The other switching states can be expressed in the same way. Table 1 shows the relationship between the input current vectors and the switching states of the virtual AC/DC converter.

**Figure 2.** Input current vector.


**Table 1.** Relationship between input current vectors and switches.

### *2.2. Output Voltage Control of Virtual Inverter*

The desired three-phase output voltages are shown as follows:

$$
\omega\_a = V\_{om} \cos(\omega\_o t) \tag{8}
$$

$$
\omega\_b = V\_{om} \cos(\omega\_o t - \frac{2\pi}{3})\tag{9}
$$

and

$$v\_{\varepsilon} = V\_{om} \cos(\omega\_0 t + \frac{2\pi}{3})\tag{10}$$

where *va*, *vb*, and *vc* are output three-phase voltages, and *ωo* is the angular frequency of the output three-phase voltages of the virtual inverter. Figure 3 shows the eight space vectors of the output voltage vectors based on the *α*-axis and *β*-axis coordinates. In Figure 3, when the output voltage vector is *vref* and is located between *V*1 and *V*2, then the output voltage vector *vref* is shown as follows:

$$\begin{array}{l} \upsilon\_{ref} = \frac{t\_1}{T\_s}V\_1 + \frac{t\_2}{T\_s}V\_2 + \frac{t\_0}{T\_s}V\_0\\ = d\_1V\_1 + d\_2V\_2 + d\_0V\_0 \end{array} \tag{11}$$

where *V*0 is the zero voltage vector; *V*1 and *V*2 are the active voltage vectors; *t*1, *t*2, and *t*0 are the time intervals of *V*1, *V*2, and *V*0; and *d*1, *d*2, and *d*0 are the duty cycles of the voltage vectors *V*1, *V*2, and *V*0. The duty cycle of the zero vector is as follows:

$$d\_0 = \frac{t\_0}{T\_s} = 1 - (d\_1 + d\_2) \tag{12}$$

**Figure 3.** Output voltage vectors of virtual inverter.

The switching state of *V*1 (1, 0, 0) means that when the switch of the virtual inverter *E*1 turns on, *E*2 turns off, and when *E*4 turns on, *E*3 turns off, and when *E*6 turns on, *E*5 turns off, all of which can be seen in Figure 1b. The other switching states can be expressed in the same way.

### **3. Input Filter Design**

A systematic design procedure of the input filter for a matrix converter is described below.

### *3.1. Method 1*

Several papers have investigated the optimal design method of input filters for AC/AC matrix converters [24]. In this paper, by using this systematic design procedure, the parameter *λ*1 is used to determine the ratio of the input harmonic currents to the input fundamental currents. Then, the parameter *λ*2 is used to determine the ratio of the input harmonic voltages to the input rms voltages. Finally, the *λ*3 is used to determine the ratio of the power loss of the R-L-C filter to the rated output power of the matrix converter. The details are discussed as follows.

### *Step 1: Determine the input current harmonics*

In the first step, the input harmonic currents are determined. Then, the input rms value of the fundamental currents of the matrix converter, which also includes *iA*, *iB*, and *iC*, shown in Figure 1a, can be calculated as follows [3]:

$$I\_{in1\\_RMS} = \frac{3}{2} m\_I \cdot m\_V \cdot I\_{o1\\_RMS} \cdot \cos\phi\_o \tag{13}$$

where *Iin*1\_*RMS* is the input rms value of the fundamental currents of the matrix converter, *mI* is the modulation index of the input current vectors of the matrix converter, *mV* is the voltage modulation index of the virtual inverter, *Io*1\_*RMS* is the output rms value of the fundamental current of the matrix converter that includes *ia*, *ib*, and *ic* shown in Figure 2a, and *φo* is the phase angle between the output voltages and output currents. In Equation (13), the output rms currents of the fundamental currents of the matrix converter, *Io*1\_*RMS*, can be expressed as follows:

$$I\_{o1\\_RMS} = \frac{P\_o}{\Im V\_{\%\\_RMS} \cos \phi\_o} \tag{14}$$

where *Po* is the rated output power of the matrix converter and *Vg*\_*RMS* is the rms value of the fundamental voltages of the input voltage sources. After that, the value of parameter *λ*1 can be determined by the designer and is shown as follows:

$$
\lambda\_1 = \frac{I\_{\text{gsw\\_RMS}}}{I\_{in1\\_RMS}} \tag{15}
$$

where *IgSW*\_*RMS* is the rms value of the switching harmonic currents of the input currents, which includes *iA*, *iB*, and *iC*, and *Iin*1\_*RMS* is the input rms value of the fundamental currents of the input currents of the matrix converter. From Equation (15), we can obtain:

$$I\_{\mathbb{R}^{\text{sw}}\text{-}\mathbb{R}MS} = \lambda\_1 I\_{\text{in1\\_RMS}} \tag{16}$$

The ratio of the rms value of the switching harmonic currents of the input currents to the switching harmonic currents of the matrix converter, *Iinsw*\_*RMS*, which is related to *Iin*1\_*RMS*, can be determined by the designer. Finally, the relationship between the input harmonic currents and output harmonic currents of the R-L-C filter can be shown as follows [6]:

$$\frac{I\_{\text{S-SW\\_RMS}}}{I\_{\text{insw\\_RMS}}} = \frac{1}{\sqrt{1 + \frac{\left(1 - \omega\_s^2 L\_f C\_f\right)^2 - 1}{\left(1 + \frac{\omega\_s^2 L\_f^2}{R\_d^2}\right)^2}}}\tag{17}$$

where *ωs* is the switching frequency, and *Lf* , *Cf* , and *Rd* are the inductance, capacitance, and resistance of the R-L-C filter. In this paper, the parameters of *Lf* and *Rd* are directly obtained from Equations (17) and (21) by using an analytic method without a computer.

*Step 2: Determine the input harmonic voltages*

In the second step, the input harmonic voltages are determined. First, the ratio between the input harmonic voltages, *Vin*\_*ripple*, and the input rms line voltages, *Vin*\_*line*\_*rms*, is described as follows:

$$
\lambda\_2 = \frac{V\_{in\\_ripple}}{V\_{in\\_lim\\_rms}} \tag{18}
$$

where *Vin*\_*ripple* is the input harmonic voltages and *Vin*\_*line*\_*rms* is the input rms line voltages. After that, the capacitance of the input R-L-C filter, *Cf* , is shown as follows [7]:

$$C\_f = \frac{I\_o}{\pi \omega\_s V\_{ripple}} \sin \pi D \tag{19}$$

where *D* is the turned-on duty cycles of each switch in the matrix converter.

*Step 3: Determine the ratio of the filter power loss to the rated output power*

First, the *λ*3 is determined by the designer to obtain the ratio of the filter power loss to the rated output power as follows:

$$
\lambda\_3 = \frac{P\_{\text{loss}}}{P\_\mathcal{o}} \tag{20}
$$

After doing some mathematical processes, one can obtain the following equation [6]:

$$
\lambda\_3 = \frac{I\_{in1\\_RMS}}{V\_{\mathcal{S}\\_RMS}} (\frac{\omega\_{\mathcal{S}}^{\ast 2} L\_f^{\ast 2} R\_d}{\omega\_{\mathcal{S}}^{\ast 2} L\_f^{\ast 2} + R\_d}) \tag{21}
$$

As a result, from Equations (16) and (21), one can obtain the unique solution of the *Lf* , which is the inductance of the R-L-C filter and the *Rd*, which is the resistance of the R-L-C filter. The single-phase equivalent R-L-C filter is shown in Figure 4, which includes the switching RMS voltages, the fundamental RMS voltages, the switching RMS currents, and the fundamental RMS currents.

**Figure 4.** The single-phase equivalent circuit of the input filter for the matrix converter.

### *3.2. Method 2*

The second method uses a frequency domain to design the R-L-C filter. The details are described below.

Generally speaking, the R-L-C filter resonant frequency is less than 1/3 of the switching frequency of the matrix converter, and over 20 times greater than the fundamental frequency. The relationship is as follows:

$$20f\_{\mathcal{S}} \le f\_{res} \le \frac{1}{3}f\_s \tag{22}$$

where *fg* is the frequency of the input voltage source, *fres* is the resonant frequency of the filter, and *fs* is the switching frequency of the matrix converter. The capacitor *Cf* of the filter causes a phase shift between the input currents and input voltages. Therefore, the capacitor *Cf* has to be smaller than the allowed maximum capacitor that causes the allowed maximum phase angle *θ*max. This relationship is expressed as follows [24]:

$$\mathbb{C}\_f < \mathbb{C}\_f^{\text{max}} \tag{23}$$

and,

$$\mathbb{C}\_f^{\text{max}} = \frac{I\_{\text{in1\\_RMS}}}{V\_{\text{\\_RMS}} \omega\_{\text{\\_}}} \tan \theta\_{\text{max}} \tag{24}$$

where *Cf* max is the allowed maximum capacitor, and *θ*max is the allowed maximum phase angle. The resonant frequency is then defined as:

$$f\_{res} = \frac{1}{2\pi\sqrt{L\_f C\_f}}\tag{25}$$

From Equation (25), one can derive the following equation:

$$L\_f = \frac{1}{C\_f \cdot (2\pi f\_{res})^2} \tag{26}$$

In this paper, the resistance is in parallel with the inductance. The transfer function of the second-order system is shown in Figure 5a and is as follows:

$$\begin{array}{c} I\_{\underline{\mathcal{S}}\text{-}RMS}(\text{s}) = \frac{\mathbf{s}\frac{L\_f}{R\_d} + 1}{\mathbf{s}^2 L\_f \mathbf{C}\_f + \mathbf{s}\frac{L\_f}{R\_d} + 1} \\ = \frac{\mathbf{s}\frac{\omega\_{\text{res}}}{Q\_{\text{res}}} + \omega\_{\text{res}}^2}{\mathbf{s}^2 + 2\mathbf{\tilde{s}}\omega\_{\text{res}}\mathbf{s} + \omega\_{\text{res}}^2} \end{array} \tag{27}$$

In Equation (27), the related parameters are as follows:

$$
\omega\_{\rm res} = \frac{1}{\sqrt{\mathcal{L}\_f \mathcal{C}\_f}} \tag{28}
$$

$$Q\_{\rm res} = R\_d \sqrt{\frac{C\_f}{L\_f}} \tag{29}$$

and,

$$\xi = \frac{1}{2R\_d} \sqrt{\frac{L\_f}{\mathbb{C}\_f}} \tag{30}$$

where *ωres* is the resonant frequency in rad/s, *Qres* is the quality factor, and *ξ* is the damping ratio. Figure 5b illustrates the relationship of magnitude and frequency in a Bode diagram, and Figure 5c illustrates the relationship of the phase angle and frequency in a Bode diagram for a typical R-L-C filter.

Although the first method requires more complicated computation processes, it obtains the parameters of the R-L-C filter via the THD of the real currents and voltages. The second method quickly determines the parameters of the R-L-C filter; however, it is difficult to estimate the THD of the input current. The major reason is that the second method focuses on frequency-domain responses but not harmonic current or voltage constraints.

**Figure 5.** Three-phase R-L-C filter using method 2. (**a**) Equivalent diagram, (**b**) amplitude response, (**c**) phase response.

### **4. Predictive Controller Design**

*4.1. One-Step Predictive Speed Controller Design*

> The discrete form of the dynamic speed equation for a PMSM is shown as follows [25]:

$$
\omega\_m(k+1) = e^{-\frac{\text{Re}\mathcal{L}t}{\hbar m}} \omega\_m(k) + \frac{1}{B\_m} (1 - e^{-\frac{\text{Re}\mathcal{L}t}{\hbar m}}) T\_c(k) \tag{31}
$$

where *ω*<sup>ˆ</sup> *m*(*k* + 1) is the predictive speed at the (*k* + 1)th sampling interval, *Ts* is the sampling interval of the speed-loop control, *Jm* is the inertia, *Bm* is the viscous coefficient, and *Te* is the electromagnetic torque. The electromagnetic torque is calculated as follows:

$$T\_{\mathfrak{e}}(k) = \frac{3}{2} \frac{P}{2} \lambda\_m i\_{\mathfrak{q}}(k) = K\_T i\_{\mathfrak{q}}(k) \tag{32}$$

where *P* is the pole number, *λm* is the flux linkage from the permanent magne<sup>t</sup> of each pole on the rotor, *KT* is the torque constant, and *iq*(*k*) is the *q*-axis current. To simplify the dynamic speed equation of the PMSM, Equation (31) can be rewritten as follows:

$$
\hat{\omega}\_m(k+1) = a\_m \omega\_m(k) + b\_m i\_q(k) \tag{33}
$$

The parameters *am* and *bm* in Equation (33) are expressed as follows:

$$a\_m = e^{-\frac{\delta\_m r\_s}{\bar{l}m}} \tag{34}$$

and,

$$b\_{m} = \frac{K\_{T}}{B\_{m}} (1 - e^{-\frac{B\_{m}T\_{s}}{f\_{m}}}) \tag{35}$$

From Equation (33), one can derive the following equation:

$$
\omega\_m(k) = a\_m \omega\_m(k-1) + b\_m i\_q(k-1) \tag{36}
$$

Subtracting (36) from (33), one can obtain:

$$
\Delta\omega\_m(k+1) = a\_m \Delta\omega\_m\left(k\right) + b\_m \Delta i\_q(k) \tag{37}
$$

and then the estimated speed of the (*k* + 1)th interval is:

$$\begin{array}{rcl}\omega\_{\mathfrak{m}}(k+1) &= \omega\_{\mathfrak{m}}(k) + \Delta\omega\_{\mathfrak{m}}(k+1) \\ &= \omega\_{\mathfrak{m}}(k) + a\_{\mathfrak{m}}\Delta\omega\_{\mathfrak{m}}(k) + b\_{\mathfrak{m}}\Delta i\_{\mathfrak{q}}(k)\end{array} \tag{38}$$

Then the performance index is defined as follows [25]:

$$J\_s = \left(\omega\_m^\*(k+1) - \hat{\omega}\_m(k+1)\right)^2 + q\Delta i\_q^{\;2}(k)\tag{39}$$

where - *<sup>ω</sup>m*(*k* + 1) is the predictive speed at the (*k* + 1)th sampling interval and *q* is the weighting factor. By taking *∂Jp*(*k*) *∂iq*(*k*) = 0, one can obtain the following:

$$
\Delta i\_q \, ^\ast (k) = \frac{b\_s \omega\_m^\ast (k+1) - a\_s b\_s \Delta \omega\_m (k) - b\_s \omega\_m (k)}{b\_s^2 + q} \tag{40}
$$

Finally, the *q*-axis current command can be shown as follows:

$$i\_q^\*(k) = i\_q(k-1) + \Delta i\_q^\*(k)\tag{41}$$

From Equations (40) and (41), one can obtain the block diagram of the one-step predictive speed control which is shown in Figure 6. In this paper, a more complicated two-step predictive speed control has been investigated and compared to the one-step predictive speed control, which is discussed in Equation (31) to (41). The particulars of the two-step predictive speed controller are as follows:

**Figure 6.** Block diagram of one-step predictive speed control.

### *4.2. Two-Step Predictive Speed Controller Design*

For a deeper investigation, a two-step predictive speed controller is also investigated in this paper. When we discuss the two-step predictive speed controller, the predictive speed *ω*<sup>ˆ</sup> *m*(*k* + 1) and the predictive speed *ω*<sup>ˆ</sup> *m*(*k* + 2) are both considered.

First, from Equation (38), the predictive speed *ω*<sup>ˆ</sup> *m*(*k* + 1) is developed. Then, one can develop the predictive speed *ω*<sup>ˆ</sup> *m*(*k* + 2) as follows:

$$\begin{array}{l} \Delta\omega\_{m}(k+2) = a\_{m}\Delta\omega\_{m}(k+1) + b\_{m}\Delta i\_{q}(k+1) \\ \quad = a\_{m}[a\_{m}\Delta\omega\_{m}(k) + b\_{m}\Delta i\_{q}(k)] + b\_{m}\Delta i\_{q}(k+1) \\ \quad = a\_{m}^{\,2}\Delta\omega\_{m}(k) + a\_{m}b\_{m}\Delta i\_{q}(k) + b\_{m}\Delta i\_{q}(k+1) \end{array} \tag{42}$$

Then, the estimated (*k* + 2)th speed is as follows:

$$\begin{split} \stackrel{\frown}{\omega\_{\mathfrak{M}}}(k+2) &= \stackrel{\frown}{\omega\_{\mathfrak{M}}}(k+1) + \Delta\omega\_{\mathfrak{M}}(k+2) \\ &= \stackrel{\frown}{\omega\_{\mathfrak{M}}}(k+1) + a\_{\mathfrak{m}}^{\uparrow}\Delta\omega\_{\mathfrak{M}}(k) + a\_{\mathfrak{m}}b\_{\mathfrak{m}}\Delta i\_{\mathfrak{q}}(k) + b\_{\mathfrak{m}}\Delta i\_{\mathfrak{q}}(k+1) \\ &= \omega\_{\mathfrak{M}}(k) + a\_{\mathfrak{m}}\Delta\omega\_{\mathfrak{M}}(k) + b\_{\mathfrak{m}}\Delta i\_{\mathfrak{q}}(k) + a\_{\mathfrak{m}}^{\uparrow}\Delta\omega\_{\mathfrak{M}}(k) + a\_{\mathfrak{m}}b\_{\mathfrak{m}}\Delta i\_{\mathfrak{q}}(k) + b\_{\mathfrak{m}}\Delta i\_{\mathfrak{q}}(k+1) \end{split} \tag{43}$$

Combing Equations (42) and (43), we can derive the following equation:

$$\mathbf{Y}\_{sm} = \begin{bmatrix} \hat{\boldsymbol{\omega}}\_{m}(k+1) \\\\ \hat{\boldsymbol{\omega}}\_{m}(k+2) \\\\ \boldsymbol{a}\_{m} + \boldsymbol{a}\_{m}^{2} & \mathbf{1} \end{bmatrix} \begin{bmatrix} \Delta \boldsymbol{\omega}\_{m}(k) \\\\ \boldsymbol{\omega}\_{m}(k+2) \\\\ \boldsymbol{\omega}\_{m}(k) \\\\ \end{bmatrix} + \begin{bmatrix} \boldsymbol{b}\_{m} & \mathbf{0} \\\\ \boldsymbol{b}\_{m}(1+\boldsymbol{a}\_{m}) & \mathbf{b}\_{m} \\\\ \end{bmatrix} \begin{bmatrix} \Delta \boldsymbol{i}\_{q}(k) \\\\ \Delta \boldsymbol{i}\_{q}(k+1) \\\\ \end{bmatrix} \tag{44}$$

with,

$$F\_{\rm SM} = \begin{bmatrix} a\_{\rm m} & & 1 \\ & & \\ & a\_{\rm m} + a\_{\rm m}^{-2} & & 1 \end{bmatrix} \tag{45}$$

and,

$$\theta\_{sm} = \begin{bmatrix} b\_m & & 0 \\ & & \\ & b\_m(1+a\_m) & b\_m \end{bmatrix} \tag{46}$$

Next, the performance index is defined as follows:

$$J\_{sp} = \left[\mathbf{Y}\_{sm}\,^\* - \mathbf{Y}\_{sm}\right]^T \left[\mathbf{Y}\_{sm}\,^\* - \mathbf{Y}\_{sm}\right] + \Delta t I\_{sm}\,^T \eta \Delta t I\_{sm} \tag{47}$$

where *Ysm*<sup>∗</sup>, *η*, and Δ*Usm* are defined as follows:

$$\mathcal{Y}\_{\rm sur} ^\ast = \begin{bmatrix} \ \omega\_m \, ^\ast(k+1) \\\\ \omega\_m \, ^\ast(k+2) \end{bmatrix} \tag{48}$$

In Equation (48), *Ysm*∗ is the vector that includes the first-step speed command and the second-step speed command. The weighting matrix *η* is:

$$
\eta = \begin{bmatrix}
\eta\_{\nu} & & 0 \\
& & \\
0 & & \eta\_{\nu}
\end{bmatrix} \tag{49}
$$

where *η* is the weighting matrix and *ηw* is the weighting factor for the first and second *q*-axis predictive difference-currents. The control input currents at sampling intervals *k* and *k* + 1 are: 

Δ

$$
\delta L\_{\rm snr} = \begin{bmatrix}
\Delta \dot{i}\_q(k) \\
\\ \Delta \dot{i}\_q(k+1)
\end{bmatrix} \tag{50}
$$

where Δ *Usm* are the control input currents at sampling intervals *k* and *k* + 1. After that, by taking the partial difference, one can obtain the following equation:

$$\frac{\partial f\_{sp}}{\partial \Delta L\_{sm}} = \left(-2\theta\_{sm}{}^T(Y\_m{}^\* - F\_{sm}X\_{sm}(k)) + 2(\theta\_{sm}{}^T\theta\_{sm} + \eta)\Delta L l\_{sm}(k)\right) = 0\tag{51}$$

From (51), the optimal predictive control input can be expressed as follows:

$$
\Delta l I\_{\rm SM} = \left(\theta\_{\rm smr}{}^{T}\theta\_{\rm smr} + \eta\right)^{-1} \left(\theta\_{\rm smr}{}^{T}Y\_{\rm smr}{}^{\*}\left(k\right) - \theta\_{\rm smr}{}^{T}F\_{\rm sm}X\_{\rm smr}(k)\right) \tag{52}
$$

The relative results are as follows:

$$\theta\_{sm}{}^T \theta\_{sm} + \eta = \begin{bmatrix} a\_m^2 b\_m^2 + 2a\_m b\_m^2 + 2b\_m^2 + \eta\_{\mathcal{V}} & a\_m b\_m^2 + b\_m^2 \\\\ a\_m b\_m^2 + b\_m^2 & b\_m^2 + \eta\_{\mathcal{V}} \end{bmatrix} \tag{53}$$

$$\begin{aligned} \left. \theta\_{\text{sm}} \, ^T \mathbf{Y}\_m \, ^\* &= \left[ \begin{array}{cc} b\_{\text{m}} & b\_{\text{m}} (1 + a\_{\text{m}}) \\ & & b\_{\text{m}} \\ 0 & b\_{\text{m}} & \\ & & \omega\_{\text{m}} \, ^\* (k + 1) + b\_{\text{m}} (1 + a\_{\text{m}}) \omega\_{\text{m}} \, ^\* (k + 2) \\ & & b\_{\text{m}} \omega\_{\text{m}} \, ^\* (k + 2) \end{array} \right] \end{aligned} \tag{54}$$

and,

$$\begin{aligned} \left[\theta\_{\text{sm}}\,^T F\_{\text{sm}} X\_{\text{sm}}(k) = \begin{bmatrix} b\_m & b\_m(1+a\_m) \\ & \\ 0 & b\_m \end{bmatrix} \begin{bmatrix} a\_m & 1 \\ a\_m + a\_m^2 & 1 \end{bmatrix} \begin{bmatrix} \Delta \omega\_m(k) \\\\ \omega\_m(k) \end{bmatrix} \\ = \left[ \begin{bmatrix} 2(a\_m b\_m + a\_m^2 b\_m) \Delta \omega\_m(k) + [b\_m + b\_m(1+a\_m)] \omega\_m(k) \\\\ b\_m (a\_m + a\_m^2) \Delta \omega\_m(k) + b\_m \omega\_m(k) \end{bmatrix} \end{aligned} \tag{55}$$

Substituting (53), (54), and (55) into (52), one can derive the following equations:

$$
\Delta l l\_{\mathfrak{M}}(\mathbf{k}) = \begin{bmatrix}
\Delta i\_q(k) \\
\Delta i\_q(k+1) \\
\Delta i\_q(k+1)
\end{bmatrix} = \frac{\begin{bmatrix}
2b\_m^{-2} + \eta\_w & -a\_mb\_m^{-2} - b\_m^2 \\
\end{bmatrix}}{\begin{bmatrix}
b\_m\omega\omega\_n^\*(k+1) + b\_m(1+a\_m)\omega\omega\_n^\*(k+2) - 2\left(a\_mb\_m + a\_m^2b\_m\right)\Delta\omega\_m(k) - \left[b\_m + b\_m(1+a\_m)\right]\omega\omega\_n(k) \\
b\_m\omega\omega\_n^\*(k+2) - \left[b\_m(a\_m + a\_m^2)\right]\Delta\omega\_m(k) - b\_m\omega\omega\_n(k)
\end{bmatrix}}
\tag{56}
$$

$$
=\frac{1}{2}\begin{bmatrix}
\Psi + \Theta \\
\Phi + N
\end{bmatrix}
$$

and,

$$Z = b\_m^{\ 4} + \eta\_w{}^2 + b\_m^2 \eta\_w \left(a\_m^2 + 2a\_m + 3\right) \tag{57}$$

$$\begin{array}{l} \Psi \quad = \left(2b\_{\text{m}}^{2} + \eta\_{\text{w}}\right) \left\{ b\_{\text{m}}\omega\_{\text{m}}\,^{\ast}(k+1) + b\_{\text{m}}(1+a\_{\text{m}})\omega\_{\text{m}}\,^{\ast}(k+2) \right. \\\ \left. -2\left(b\_{\text{m}}a\_{\text{m}} + b\_{\text{m}}a\_{\text{m}}^{\text{2}}\right)\Delta\omega\_{\text{m}}(k) - [b\_{\text{m}} + b\_{\text{m}}(1+a\_{\text{m}})]\omega\_{\text{m}}(k) \right\} \end{array} \tag{58}$$

$$\Theta = \left[ -a\_m b\_m^{\ \ 2} - b\_m^2 \right] \left\{ b\_m \omega\_m^{\ \ \*} (k+2) - b\_m (a\_m + a\_m^{\ \ \*}) \Delta \omega\_m (k) - b\_m \omega\_m (k) \right\} \tag{59}$$

$$\begin{array}{lcl}\Phi &= \left[ -a\_m b\_m^{-2} - b\_m^2 \right] \left\{ b\_m \omega\_m^\*(k+1) + b\_m (1+a\_m) \omega\_m^\*(k+2) \\ &- 2 \left( b\_m a\_m + b\_m a\_m^{-2} \right) \Delta \omega\_m(k) - \left[ b\_m + b\_m (1+a\_m) \right] \omega\_m(k) \right\} \end{array} \tag{60}$$

and, 
$$N = \left[a\_m \,^2 b\_m \,^2 + 2b\_m^2 + 2a\_m b\_m \,^2 + \eta\_w\right] \left\{ b\_m \omega\_m \,^\*(k+2) \, -b\_m (a\_m + a\_m \,^2) \Delta \omega\_m(k) - b\_m \omega\_m(k) \right\} \tag{61}$$

Next, the *q*-axis current command at the *k*-th sampling interval is as follows:

$$
\dot{i}\_q^\*(k) = \dot{i}\_q^\*(k-1) + \Delta \dot{i}\_q(k) \tag{62}
$$

By using the same method, the (*k* + 1)th *q*-axis current command is shown in the following equation:

$$i\_q^\*(k+1) = i\_q^\*(k) + \Delta i\_q(k+1) \tag{63}$$

The output *q*-axis current command sends out only one value for each sampling interval. As a result, we can combine Equations (62) and (63). Then, the final *q*-axis current using the two-step predictive speed controller is defined as follows:

$$i\_q "\left(k\right)\_{-2step} = \rho i\_q "\left(k\right) + (1 - \rho) i\_q "\left(k + 1\right) \tag{64}$$

From Equation (56) to (64), we can obtain the block diagram of the two-step predictive speed control. Figure 7 shows the block diagram of two-step predictive speed control system.

**Figure 7.** Block diagram of two-step predictive speed control.

### **5. Predictive Current Controller Design**

The predictive current controller is developed by using a similar method as the predictive speed controller. First, the differential equations of the *d*-axis and *q*-axis currents are as follows:

$$\frac{d}{dt}\dot{i}\_d = \frac{1}{L\_d}(v\_d - r\_s\dot{i}\_d + \omega\_d L\_q \dot{i}\_q) \tag{65}$$

and,

$$\frac{d}{dt}i\_q = \frac{1}{L\_q}(v\_q - r\_s i\_q + \omega\_t (L\_d i\_d + \lambda\_m))\tag{66}$$

By inserting these two zero-order hold devices into the *d*-*q* axis currents and then taking the z-transformation, we obtain the following equation:

$$
\begin{bmatrix} i\_d(k+1) \\ i\_q(k+1) \end{bmatrix} = \begin{bmatrix} a\_d & 0 \\ 0 & a\_q \end{bmatrix} \begin{bmatrix} i\_d(k) \\ i\_q(k) \end{bmatrix} + \begin{bmatrix} b\_d & 0 \\ 0 & b\_q \end{bmatrix} \begin{bmatrix} v\_d(k) + \omega\_\ell(k) L\_q i\_q(k) \\ v\_q(k) - \omega\_\ell(k) (L\_d i\_d(k) + \lambda\_\mathcal{m}) \end{bmatrix} \tag{67}$$

The parameters *ad*, *aq*, *bd*, and *bq* are as follows:

$$a\_d = \varepsilon^{-\frac{r\_s \eta\_c}{L\_d}} \tag{68}$$

$$b\_d = \frac{1}{r\_s} (1 - e^{-\frac{r\_d}{L\_d}T\_c}) \tag{69}$$

$$n\_{\emptyset} = \varepsilon^{-\frac{r\_{\emptyset}T\_{\emptyset}}{L\_{\emptyset}}} \tag{70}$$

and,

$$b\_{\emptyset} = \frac{1}{r\_s} (1 - e^{-\frac{r\_s}{L\_q}T\_\varepsilon}) \tag{71}$$

Next, we can define the control input *ud*(*k*) and *uq*(*k*) as the following two equations:

$$
\mu\_d(k) = \upsilon\_d(k) + \omega\_c(k) L\_q i\_q(k) \tag{72}
$$

and,

$$
\mu\_q(k) = v\_q(k) - \omega\_\varepsilon(k) \left( L\_d i\_d(k) + \lambda\_m(k) \right) \tag{73}
$$

Substituting Equations (72) and (73) into (67), we can obtain a new and simplified state-variable presentation equation as follows:

$$
\begin{bmatrix}
\mathbf{x}\_d(k+1) \\
\mathbf{x}\_q(k+1)
\end{bmatrix} = \begin{bmatrix}
a\_d & 0 \\
0 & a\_q
\end{bmatrix} \begin{bmatrix}
\mathbf{x}\_d(k) \\
\mathbf{x}\_q(k)
\end{bmatrix} + \begin{bmatrix}
b\_d & 0 \\
0 & b\_q
\end{bmatrix} \begin{bmatrix}
u\_d(k) \\
u\_q(k)
\end{bmatrix} \tag{74}
$$

where *xd*(*k*) is the new state variable of *id*(*k*), and *xq*(*k*) is the new state variable of *iq*(*k*). Equation (74) can then be rewritten as the new state-variable vector presentation as the following equations:

$$X\_{cm}(k+1) = A\_{cm}X\_{cm}(k) + B\_{cm} \mathcal{U}\_{cm}(k) \tag{75}$$

and,

$$X\_{\rm cm}(k) = \begin{bmatrix} x\_d(k) \\ x\_q(k) \end{bmatrix} \tag{76}$$

$$A\_{cm} = \begin{bmatrix} a\_d & 0 \\ 0 & a\_q \end{bmatrix} \tag{77}$$

$$B\_{\rm cm} = \begin{bmatrix} b\_d & 0 \\ 0 & b\_q \end{bmatrix} \tag{78}$$

and,

$$\mathcal{U}\_{\rm cll}(k) = \begin{bmatrix} \boldsymbol{\mu}\_d(k) \\ \boldsymbol{\mu}\_q(k) \end{bmatrix} \tag{79}$$

The new output equation of the state-variable vector presentation is as follows:

$$\mathcal{Y}\_{cm} = \begin{bmatrix} y\_d(k) \\ y\_q(k) \end{bmatrix} = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} \begin{bmatrix} \mathbf{x}\_d(k) \\ \mathbf{x}\_q(k) \end{bmatrix} \tag{80}$$

Then, we can define the difference of the state variable as follows:

$$\begin{array}{rcl} \Delta X\_{\rm cm}(k+1) &= X\_{\rm cm}(k+1) - X\_{\rm cm}(k) \\ &= A\_{\rm cm} \Delta X\_{\rm cm}(k) + B\_{\rm cm} \Delta l I\_{\rm cm}(k) \end{array} \tag{81}$$

where Δ*Xcm*(*k*) is the difference of the state variables, and Δ*Ucm*(*k*) is the difference of the output variables. After that, we can define the augmented state variables as follows:

$$X\_{\mathfrak{M}}(k+1) = \begin{bmatrix} \Delta X\_{\mathfrak{c}\mathfrak{m}}(k+1) \\ Y\_{\mathfrak{c}\mathfrak{m}}(k+1) \end{bmatrix} = A\_{\mathfrak{M}} X\_{\mathfrak{m}}(k) + B\_{\mathfrak{m}} \Delta l L\_{\mathfrak{c}\mathfrak{m}}(k) \tag{82}$$

with:

$$A\_{\rm nl} = \begin{bmatrix} A\_{\rm cm} & \mathbf{0}\_{\rm cm}^T \\ A\_{\rm cm} & \mathbf{1} \end{bmatrix} \tag{83}$$

$$X\_{\mathcal{W}}(k) = \begin{bmatrix} \Delta X\_{\mathcal{cm}}(k) \\ \mathcal{Y}\_{\mathcal{cm}}(k) \end{bmatrix} \tag{84}$$

and,

$$B\_{m} = \begin{bmatrix} B\_{cm} \\ B\_{cm} \end{bmatrix} \tag{85}$$

Next, we can define the output *Ym*(*k* + 1) of the augmented model as follows:

$$\begin{array}{rcl} \mathcal{Y}\_{\mathfrak{m}}(k+1) &=& \begin{bmatrix} 0\_{\mathrm{cw}}^T & 1 \end{bmatrix} X\_{\mathfrak{m}}(k+1) \\ &=& \mathcal{C}\_{\mathfrak{m}} X\_{\mathfrak{m}}(k+1) \end{array} \tag{86}$$

The performance index of the current-loop controllers is defined as follows [26]:

$$J\_c = \left(X\_{cm}^\*(k+1) - \chi\_m(k+1)\right)^2 + q\Delta l I\_{cm}^2(k)\tag{87}$$

where *q* is the weighting factor. By taking the differential of the performance index to <sup>Δ</sup>*Ucm*(*k*), and then by assuming the result to be zero, one can derive the following optimal difference control input <sup>Δ</sup>*U*<sup>∗</sup>*cm*(*k*) as follows:

$$\begin{array}{l} \Delta L\_{cm}^\*(k) = \left(B\_{cm}^2 + q\right)^{-1} \left[B\_{cm}X\_{cm}^\*(k+1) \\ -A\_{cm}B\_{cm}\Delta X\_{cm}(k) - B\_{cm}Y\_{cm}(k)\right] \end{array} \tag{88}$$

From Equation (88), the <sup>Δ</sup>*v*<sup>∗</sup>*d*(*k*) and <sup>Δ</sup>*v*<sup>∗</sup>*q* (*k*) can be expressed as the following equations:

$$
\Delta \upsilon\_d^\*(k) \quad = \frac{b\_d \left( i\_d^\*(k+1) - i\_d(k) \right) - a\_d b\_d \Delta i\_d(k)}{b\_d^2 + \eta} \tag{89}
$$

$$
$$

and,

$$\begin{array}{rcl}\Delta v\_q^\*(k) &=& \frac{b\_q \left(i\_q^\*(k+1) - i\_q(k)\right) - a\_q b\_q \Delta i\_q(k)}{b\_q^2 + q} \\ &- \Delta \omega\_\varepsilon(k) (L\_d \Delta i\_d(k) + \lambda\_{\text{int}}) \end{array} \tag{90}$$

Finally, from Equations (89) and (90), we can develop the block diagrams of the *d*-axis current controller and the *q*-axis current controller as in Figure 8a,b.

**Figure 8.** *Cont*.

**Figure 8.** Block diagram of the predictive current control. (**a**) *d*-axis current control, (**b**) *q*-axis current control.
