Adaptive Motor Controller

Information

  • Patent Application
  • 20250096711
  • Publication Number
    20250096711
  • Date Filed
    September 15, 2023
    a year ago
  • Date Published
    March 20, 2025
    6 days ago
Abstract
A controller for a permanent magnet synchronous motor includes a first control loop having a first filter. The first filter has a back-EMF voltage vector input, a magnetic flux vector output with a constant phase shift that is independent of motor speed, and an amplitude response that is inversely proportional to rotor electrical frequency. The first control loop is configured to: generate an adjusted magnetic flux vector from the magnetic flux vector output by the first filter and compensate for the constant phase shift introduced by the first filter; estimate the rotor electrical frequency from the adjusted magnetic flux vector; and feedback a filtered version of the rotor electrical frequency estimate to the first filter as an estimation of the rotor electrical frequency.
Description
BACKGROUND

FOC (field oriented control) is highly desired in motor control applications because of advantageous characteristics such as improved performance especially for PMSM (permanent magnet synchronous motor) applications. PMSM applications include two motor types: SPM (surface permanent magnet) and IPM (interior permanent magnet) motors.


Observers, on the other hand, are control loops that are designed to estimate or ‘observe’ internal variables of the system without directly measuring the variables. For example, a position observer estimates the rotor angular position without using an actual position sensor.


Sensorless observers, which estimate rotor angular position and motor speed, are highly desired and are usually implemented together with FOC. Some advantages of sensorless observers include cost reduction by eliminating the position sensor, increased system reliability because the sensor can fail, and increases maximum operating temperature of the motor since position sensors are mounted on the motor and usually cannot operate at high temperatures. Another type of observer that is used in certain FOC controllers is a flux observer which estimates stator flux without using flux sensors.


There are two major FOC methods for PMSMs, namely SFO (stator frame orientation) controllers and RFO (rotor frame orientation) controllers. For sensorless control in RFO, a rotor position observer is required. For sensorless control in SFO, a rotor position observer and a stator flux observer are needed.


Conventional sensorless observers cannot achieve zero-phase-shift at all speeds. Non-zero phase-shift in an estimated position means the motor is not operating at MTPA (maximum torque per amp) which means less than optimal efficiency. Efficiency is particularly critical for battery power applications, where minimizing unnecessary losses is of utmost importance to maximize battery run time. Also, conventional sensorless observers are not adaptive which means the observer does not adapt based on the operating condition of the PMSM.


Conventional sensorless observers are not universal in that conventional sensorless observers are unable to support both PMSM types, namely SPM (surface permanent magnet) and IPM (interior permanent magnet) motors and at the same time support both FOC (field oriented control) methods, namely RFO (rotor frame orientation) control and SFO (stator frame orientation) control. Most conventional sensorless observers only work for SPM-type motors and not IPM-type motors. Most conventional sensorless observers work for RFO control type. No single conventional sensorless observer works for both IPM and SPM while also supporting both SFO and RFO control types at the same time.


Thus, there is a need for improved sensorless observer methodology.


SUMMARY

According to an embodiment of a controller for a permanent magnet synchronous motor, the controller comprises: a first control loop comprising a first filter, wherein the first filter has a back-EMF voltage vector input, a magnetic flux vector output with a constant phase shift that is independent of motor speed, and an amplitude response that is inversely proportional to rotor electrical frequency, wherein the first control loop is configured to: generate an adjusted magnetic flux vector from the magnetic flux vector output by the first filter and compensate for the constant phase shift introduced by the first filter; estimate the rotor electrical frequency from the adjusted magnetic flux vector; and feedback a filtered version of the rotor electrical frequency estimate to the first filter as an estimation of the rotor electrical frequency.


Those skilled in the art will recognize additional features and advantages upon reading the following detailed description, and upon viewing the accompanying drawings.





BRIEF DESCRIPTION OF THE FIGURES

The elements of the drawings are not necessarily to scale relative to each other. Like reference numerals designate corresponding similar parts. The features of the various illustrated embodiments can be combined unless they exclude each other. Embodiments are depicted in the drawings and are detailed in the description which follows.



FIG. 1 illustrates a schematic diagram of an adaptive motor controller.



FIG. 2 illustrates a schematic diagram of a zero-phase-shift observer (control loop) included in the adaptive motor controller, in RFO (rotor frame orientation) control.



FIG. 3 illustrates a rotation in SRF (stationary-reference-frame) coordinates and the corresponding effect on the phase-shift of signals in the time domain.



FIG. 4 illustrates a schematic diagram of the zero-phase-shift observer (control loop) included in the adaptive motor controller, in SFO (stator frame orientation) control.



FIG. 5 illustrates a schematic diagram of a first filter H(s) of the zero-phase-shift observer (control loop) included in the adaptive motor controller.



FIG. 6 illustrates a schematic diagram of a biquad filter of the zero-phase-shift observer (control loop) included in the adaptive motor controller.



FIG. 7 illustrates a schematic diagram of the adaptive motor controller configured for RFO control and for implementing motor current control.



FIG. 8 illustrates a schematic diagram of the adaptive motor controller configured for both RFO current and speed control.



FIG. 9 illustrates a schematic diagram of the adaptive motor controller configured for SFO torque control.



FIG. 10 illustrates a schematic diagram of the adaptive motor controller configured for both SFO torque and speed control.





DETAILED DESCRIPTION

Described herein are embodiments of a zero-phase-shift observer (control loop) that is universal in that both SPM and IPM motor types and both RFO and SFO control methods are supported. The zero-phase-shift observer also is adaptive in that control parameters are not constant and instead adapt to changes in the operating point and speed of the motor. The zero-phase-shift observer enables zero-phase-shift at all speeds, ensuring the motor operates at the MTPA condition which is important for battery powered applications where minimizing unnecessary losses is of utmost importance to maximize battery run time. The zero-phase-shift observer has the ability to observe both rotor position (for RFO and SFO) and stator flux (for SFO).


Described next, with reference to the figures, are exemplary embodiments of the zero-phase-shift observer (control loop).



FIG. 1 illustrates a block diagram of a controller 100 for a PMSM 102. The controller 100 generates a command duty cycle ‘d’ for each phase of the PMSM 102. In FIG. 1, the PMSM 102 is depicted as having three phases: u, v, and w. More generally, the PMSM 102 can have two of more phases. A voltage source inverter (VSI) 104 translates each phase command generated by the controller 100 into a corresponding motor phase voltage vn.


The controller 100 includes a zero-phase-shift observer (control loop) 106 having a first filter H(s). The first filter H(s) has a back-EMF voltage vector input eαβr), a magnetic flux vector output λαβrp′) with a constant phase shift θp′ that is independent of motor speed, and an amplitude response






1



"\[LeftBracketingBar]"


ω
r



"\[RightBracketingBar]"






that is inversely proportional to rotor electrical frequency ωr. The zero-phase-shift observer (control loop) 106 generates an adjusted magnetic flux vector λαβ′(θrp′) from the magnetic flux vector output λαβrp′) of the first filter H(s) to be able to extract the rotor angle, and compensates for the constant phase shift θp′ introduced by the first filter H(s). The zero-phase-shift observer (control loop) 106 estimates the rotor electrical frequency {circumflex over (ω)}r from the adjusted magnetic flux vector λαβ′(θrp′). The phase-shift observer (control loop) 106 feeds back a filtered version of the rotor electrical frequency estimate |{circumflex over (ω)}r,filt| to the first filter H(s).


Before describing the zero-phase-shift observer (control loop) 106 in more detail, some mathematical conventions are explained next.


In general, three-phase variables (u, v, w) such as voltages, currents, fluxes, etc. can be expressed using a vector representation as follows.










x

u

v

w


=

[




x
u






x
v






x
w




]





(
1
)







The same vector definition can be used for the corresponding SRF (stationary-reference-frame) α, β, 0 and RRF (rotating-reference-frame) q, d, 0 representation of such variables, as follows:










x

α

β

0


=

[




x
α






x
β






x
0




]





(
2
)













x

qd

0


=

[




x
q






x
d






x
0




]





(
3
)







The transformation from three-phase to SRF can be done using the following matrix (also known as Clarke transformation matrix):










x

α

β

0


=


K

(
0
)



x

u

v

w







(
4
)














K

(
0
)

=


2
3

[



1



cos

(

-
α

)




cos

(
α
)





0



sin

(

-
α

)




sin

(
α
)






1
/
2




1
/
2




1
/
2




]


,

α
=


2

π

3






(
5
)







The transformation from SRF to RRF can be done using the following rotation matrix (also known as Park transformation matrix):










R

(
θ
)

=

[




cos

(
θ
)




-

sin

(
θ
)




0





sin

(
θ
)




cos

(
θ
)



0




0


0


1



]





(
6
)







It should be noted that the Park transform has certain properties that will be used later herein, namely:











R

-
1


(
θ
)

=


R

(

-
θ

)

=



R
T

(
θ
)

=

[




cos

(
θ
)




sin

(
θ
)



0





-

sin

(
θ
)





cos

(
θ
)



0




0


0


1



]







(
7
)








and









R

(


θ
1

+

θ
2


)

=



R

(

θ
1

)



R

(

θ
2

)


=


R

(

θ
2

)



R

(

θ
1

)







(
8
)







The Park and Clarke transformation matrices can be combined to go directly from three-phase to RRF as follows:










x
qdo

=



R

(
θ
)



x

α

β

0



=





R

(
θ
)


K


(
0
)





K

(
θ
)




x

u

v

w








(
9
)







where










K

(
θ
)

=


2
3

[




cos

(
θ
)




cos

(

θ
-
α

)




cos

(

θ
+
α

)






sin

(
θ
)




sin

(

θ
-
α

)




sin

(

θ
+
α

)






1
/
2




1
/
2




1
/
2




]





(
10
)







Motor windings are either star connected with no ground return or delta connected. Therefore, the zero component of the currents and voltages are always zero and the vector representations can be simplified by removing the zero component as follows:










x

α

β


=

[




x
α






x
β




]





(
11
)







With these mathematical conventions in mind, the zero-phase-shift observer (control loop) 106 is described next in more detail in the context of the RFO control method.



FIG. 2 illustrates a block diagram of the zero-phase-shift observer (control loop) 106 in RFO control. In FIG. 2, the zero-phase-shift observer (control loop) 106 generates the back-EMF voltage vector eαβr) from an applied motor voltage vector vαβr) and an applied motor current vector iαβr) in SRF (stationary reference frame). The motor back-EMF voltages, which are derivatives of the stator fluxes, can be expressed in terms of the applied inverter voltages and currents in SRF as follows:











e

α

β


(

θ
r

)

=



d



λ

α

β


(

θ
r

)



d

t


=



v

α

β


(

θ
r

)

-

r



i

α

β


(

θ
r

)








(
12
)







The back-EMF voltage vector eαβr) is then fed to the first filter H(s), which is modeled as a transfer function H(s)I in FIG. 2. Without loss of generality, the transfer function H(s)I is defined as any transfer function that can satisfy the following criteria:















"\[LeftBracketingBar]"


H


(



"\[LeftBracketingBar]"


ω
γ



"\[RightBracketingBar]"


)




"\[RightBracketingBar]"


=

1



"\[LeftBracketingBar]"


ω
r



"\[RightBracketingBar]"










H

(



"\[LeftBracketingBar]"


ω
r



"\[RightBracketingBar]"


)


=


-

π
2


+

θ
p










lim

ω





H


(
ω
)





1

j

ω








lim

ω

0



H


(
ω
)






(

j

ω

)

2








(
13
)







Such criteria ensures that H(s) acts as an integrator at high frequencies, has constant phase shift at the electrical frequency of the motor 102 no matter the speed, and has −40 dB/dec of attenuation at low frequencies to eliminate DC offset due to integration and/or ADC (analog-to-digital conversion) offset and noise.


The phase shift θp at positive electrical frequencies +ωr is positive as follows:










H

(



"\[LeftBracketingBar]"


ω
r



"\[RightBracketingBar]"


)

=


1

j




"\[LeftBracketingBar]"


ω
r



"\[RightBracketingBar]"




·


e

j


θ
p



(


θ
p

>
0

)






(
14
)







In addition, since the impulse response h(t) is always real (no imaginary component), H(s) must have complex conjugate symmetry. Therefore:










H

(

-



"\[LeftBracketingBar]"


ω
r



"\[RightBracketingBar]"



)

=



H
*

(



"\[LeftBracketingBar]"


ω
r



"\[RightBracketingBar]"


)

=


1


-
j





"\[LeftBracketingBar]"


ω
r



"\[RightBracketingBar]"




·


e


-
j



θ
p



(


θ
p

>
0

)







(
15
)







Combining equations (14) and (15), the following can be concluded:










H

(

ω
r

)

=


1

j


ω
r



·


e

j


θ
p



sgn
(

ω
r

)



(


θ
p

>
0

)






(
16
)







That is, the phase shift (θp) at positive electrical frequencies +ωr is always positive and the phase shift (−θp) at negative electrical frequencies (−ωr) is always negative.


Without loss of generalization, a scalar input to H(s) can be expressed as:










x

(

θ
r

)

=


X


cos

(

θ
r

)


=


X


cos

(



ω
r


t

+
φ

)


=


X
2



(



e

j


ω
r


t




e

j

φ



+


e


-
j



ω
r


t




e


-
j


φ




)








(
17
)







where θr, ωr, and φ are the rotor angle, rotor electrical frequency, and phase offset of x, respectively.


The Fourier transform of equation (17) yields:










x

(
ω
)

=


(

X
2

)



(

2

π

)



(



e

j

φ




δ

(

ω
-

ω
r


)


+


e


-
j


φ




δ

(

ω
+

ω
r


)



)






(
18
)







Therefore, the output of H(s) in the frequency domain can be represented as follows:










y

(
ω
)

=



x

(
ω
)



H

(
ω
)


=



(

X
2

)



(

2

π

)



(



e

j

φ




δ

(

ω
-

ω
r


)



H

(

ω
r

)


+


e


-
j


φ




δ

(

ω
+

ω
r


)



H

(

-

ω
r


)



)







(
19
)







Replacing H(ωr) and H(−ωr) according to equation (16) yields:










y

(
ω
)

=




X

π


j


ω
r





(



e

j

φ




δ

(

ω
-

ω
r


)



e

j


θ
p



sgn
(

ω
r

)




-


e


-
j


φ




δ

(

ω
+

ω
r


)



e


-
j



θ
p



sgn
(

ω
r

)





)


=



X

π


j


ω
r





(



e

j

(

φ
+


θ
p



sgn
(

ω
r

)



)




δ

(

ω
-

ω
r


)


-


e

-

j

(

φ
+


θ
p



sgn
(

ω
r

)



)





δ

(

ω
+

ω
r


)



)







(
20
)







The output can then be transformed from the frequency domain back to the time domain as follows:










y

(
t
)

=




1

j


ω
r



·

X
2




(



e

j

(

φ
+


θ
p



sgn
(

ω
r

)



)




e

j


ω
r


t



-


e

-

j

(

φ
+


θ
p



sgn
(

ω
r

)



)





e


-
j



ω
r


t




)


=



X

ω
r


·

1

2

j





(


e

j

(



ω
r


t

+
φ
+


θ
p



sgn
(

ω
r

)



)


-

e

-

j

(



ω
r


t

+
φ
+


θ
p



sgn
(

ω
r

)



)




)







(
21
)







Using Euler's formula, equation (21) can be simplified as follows:










y

(
t
)

=




1

ω
r


·
X



sin

(



ω
r


t

+
φ
+


θ
p



sgn

(

ω
r

)



)


=





X


cos

(



ω
r


t

+
φ
+


θ
p



sgn

(

ω
r

)



)


dt


+
c

=





x

(


θ
r

+


θ
p



sgn

(

ω
r

)



)


dt


+
c







(
22
)







The constant phase shift θp′ introduced by the first H(s) can be defined as follows:










θ
p


=


θ
p



sgn

(

ω
r

)






(
23
)







According to equation (22), when eαβr) is applied as the input of H(s), the output becomes:














e
αβ

(


θ
r

+


θ
p



sgn

(

ω
r

)



)


dt


=



λ
αβ

(


θ
r

+


θ
p



sgn

(

ω
r

)



)

=


λ
αβ

(


θ
r

+

θ
p



)






(
24
)







Equation (24) indicates that there is always a constant positive or negative phase shift θp′ at positive or negative rotor electrical frequencies ωr, respectively.


The zero-phase-shift observer (control loop) 106 includes a block 200 that applies a phase shift matrix R(−θp) to the applied current vector iαβr) to generate a phase-shifted version iαβrp′) of the applied current vector iαβr) that has the same phase shift θp′ as the magnetic flux vector output λαβrp′) of the first filter H(s).


For example, a Park transform of angle −θp′, can be applied to the SRF currents as follows:











R

(

-

θ
p



)




i
αβ

(

θ
r

)


=



[




cos

(

θ
p


)




sin

(

θ
p


)






-

sin

(

θ
p


)





cos

(

θ
p


)




]

[




I


cos

(


θ
r

+
φ

)








-
I



sin

(


θ
r

+
φ

)





]

=



[




I


cos

(


θ
r

+
φ
+

θ
p



)








-
I



sin

(


θ
r

+
φ
+

θ
p



)





]

=


i
αβ

(


θ
r

+

θ
p



)







(
25
)







Equation (25) indicates that by using the phase shift rotation matrix R(−θp′), the phase shift θp′ in the current iαβrp′) will match that of the magnetic flux vector output λαβrp′) of the first filter H(s).


The zero-phase-shift observer (control loop) 106 generates the adjusted magnetic flux vector λαβ′(θrp′) from the magnetic flux vector output λα62 (or +θp′) of the first filter H(s) and the phase-shifted version iαβrp′) of the applied current vector iαβr).


For example, the zero-phase-shift observer (control loop) 106 can generate the adjusted magnetic flux vector λαβ′(θrp′) from the magnetic flux vector output λαβrp′) of the first filter H(s) and the phase-shifted version iαβrp′) of the applied current vector iαβr) by scaling Lq the phase-shifted version iαβrp′) of the applied current vector iαβr) and subtracting (Block 202 in FIG. 2) the scaled and phase-shifted version of the applied current vector from the magnetic flux vector output λαβrp′) of the first filter H(s). Block 202 ensures that the adjusted magnetic flux vector λαβ′(θrp′) (as a vector) is pointing to the direction of the rotor electrical angle θr. If the adjusted magnetic flux vector λαβ′(θrp′) is not calculated and instead if the magnetic flux vector output λαβrp′) of the first filter H(s) is used, the magnetic flux vector output λαβrp′) of the first filter H(s) is not aligned with the rotor electrical angle θr but instead is aligned with the stator electrical angle θe. Accordingly, the magnetic flux vector output λαβ(or +θp′) of the first filter H(s) is used in SFO for extracting the stator angle θe and the adjusted magnetic flux vector λαβ′(θrp′) is used in both RFO and SFO for extracting the rotor angle θr.


The SRF fluxes and currents can be combined as follows:











λ
αβ


(


θ
r

+

θ
p



)

=




λ
αβ

(


θ
r

+

θ
p



)

-


L
q



R

(

-

θ
p



)




i
αβ

(

θ
r

)



=




λ
αβ

(


θ
r

+

θ
p



)

-


L
q




i
αβ

(


θ
r

+

θ
p



)



=


R

(


-

θ
r


-

θ
p



)



(


λ
qd
r

-


L
q



i
qd
r



)








(
26
)







where xqdr are the corresponding RRF variables in the rotor reference frame, where d-axis is aligned with the permanent magnet flux of the motor 102.


Expanding λqdr-Lqiqdr in equation (26) yields:











λ
qd
r

-


L
q



i
qd
r



=



[





L
q



i
q
r








λ
m

+


L
d



i
d
r






]

-

[





L
q



i
q
r








L
q



i
d
r





]


=

[



0






λ
m

+


(


L
d

-

L
q


)



i
d
r






]






(
27
)







Equation (27) indicates that λqdr-Lqiqdr has no vector component along the q-axis, since the adjusted magnetic flux vector λαβ′(θrp′) is in the same direction as the rotor electrical angle θr (used in SFO and RFO) but the magnetic flux vector output hag (θrp′) of the first filter H(s) is in the same direction as stator electrical angle θe (used in SFO). Accordingly:











λ
αβ


(


θ
r

+

θ
p



)

=



R

(


-

θ
r


-

θ
p



)



(


λ
qd
r

-


L
q



i
qd
r



)


=




[




cos

(


θ
r

+

θ
p



)




sin

(


θ
r

+

θ
p



)






-

sin

(


θ
r

+

θ
p



)





cos

(


θ
r

+

θ
p



)




]

[



0






λ
m

+


(


L
d

-

L
q


)



i
d
r






]

=


(


λ
m

+


(


L
d

-

L
q


)



i
d
r



)

[




sin

(


θ
r

+

θ
p



)






cos

(


θ
r

+

θ
p



)




]







(
28
)







Using equation (28), the rotor angle can be extracted as follows.











θ
r

+

θ
p



=


tan

-
1


(


λ
α



λ
β



)





(
29
)







As a byproduct, the magnitude of the adjusted magnetic flux vector λββ′(θrp′) is as follows:












"\[LeftBracketingBar]"



λ
αβ


(


θ
r

+

θ
p



)



"\[RightBracketingBar]"


=

(


λ
m

+


(


L
d

-

L
q


)



i
d
r



)





(
30
)







This magnitude can be used to estimate the motor torque, as described later herein. The tan−1(⋅) function in equation (29) can be implemented using a PLL (phase lock loop) 204 as shown in FIG. 2. Accordingly, the zero-phase-shift observer (control loop) 106 can transform the adjusted magnetic flux vector λαβ′(θrp′) using the PLL 204.


The PLL 204 includes a biquad filter 206 which low pass filters the rotor electrical frequency estimate {circumflex over (ω)}r. A sign operation block 208 of the PLL 204 identifies the sign (+ or −) of the filtered version of the rotor electrical frequency estimate {circumflex over (ω)}r,filt output by the biquad filter 206. An angle change block 210 of the PLL 204 implements+/−angle change, depending on the sign of the filtered version of the rotor electrical frequency estimate {circumflex over (ω)}r,filt, as indicated by the sign operation 208.


The zero-phase-shift observer (control loop) 106 can estimate the rotor electrical angle {circumflex over (θ)}r from the adjusted magnetic flux vector λαβ′(θrp′). In an embodiment, a transformation block 212 of the zero-phase-shift observer (control loop) 106 transforms the adjusted magnetic flux vector λαβ′(θrp′) by the estimated rotor electrical angle or plus the constant phase shift θp′ introduced by the first filter H(s).


For example, the transformation block 212 can implement a Park transform of the adjusted magnetic flux vector λαβ′(θrp′) using the estimated rotor electrical angle {circumflex over (θ)}r and apply the same offset θp′ which yields the following:










λ
qd

r




=



R

(



θ
^

r

+

θ
p



)




λ
αβ


(


θ
r

+

θ
p



)


=





[


λ
m

+


(


L
d

-

L
q


)



i
d
r



]

[




cos

(



θ
^

r

+

θ
p



)




-

sin

(



θ
^

r

+

θ
p



)







sin

(



θ
^

r

+

θ
p



)




cos

(



θ
^

r

+

θ
p



)




]

[




sin

(


θ
r

+

θ
p



)






cos

(


θ
r

+

θ
p



)




]

=



[


λ
m

+


(


L
d

-

L
q


)



i
d
r



]

[




sin

(


θ
r

-


θ
^

r


)






cos

(


θ
r

-


θ
^

r


)




]







(
31
)







The transformation block 212 can generate an error vector λqr′ from quadrature axis (q) components of the transformed vector and a magnitude vector λdr′ from direct axis (d) components of the transformed vector as follows:










λ
q

r




=


[


λ
m

+


(


L
d

-

L
q


)



i
d
r



]


sin




(


θ
r

-


θ
^

r


)




θ

r
,
error








(
32
)













λ
d

r




=


[


λ
m

+


(


L
d

-

L
q


)



i
d
r



]


cos




(


θ
r

-


θ
^

r


)




θ

r
,
error








(
33
)








FIG. 3 illustrates a rotation in SRF coordinates and the corresponding effect on the phase-shift of the signals in the time domain. FIG. 3 shows how λαβ′(θrp′) in the α′β′ frame has identical vector components to those of λαβ′(θr) in the αβ frame. Accordingly, the zero-phase-shift observer (control loop) 106 can compensate for the phase-shift in the time domain by adding θp′ to the rotation angle {circumflex over (θ)}r (Block 214) in the Park transform R(θrp′) as shown in FIG. 2 and as mathematically shown in equation (31), as well. If the PLL 204 is stable, the steady state error is always zero, i.e., θr,error=0. Therefore, the d-axis component converges to [λm+(Ld−Lq)idr] and {circumflex over (θ)}r converges to θr.


The torque of the PMSM 102, whether IPM or SPM, can be expressed as:









T
=




3
2

·

P
2




(



λ
d
r



i
q
r


-


λ
q
r



i
d
r



)


=




3
2

·

P
2




(


λ
m

+


(


L
d

-

L
q


)



i
d
r



)



i
q
r


=






(
34
)







A torque estimation block 216 of the zero-phase-shift observer (control loop) 106 can estimate the motor torque {circumflex over (T)} from the magnitude vector λdr′ estimated by the PLL 204 in steady state as follows:










T
^

=



3
2

·

P
2




λ
d

r






i
q
r






(
35
)







A PI (proportional integral) controller block 218 of the PLL 204 has a proportional term kp and an integral term ki/s for estimating the rotor electrical frequency {circumflex over (ω)}r based on the error λqr′ generated by the transformation block 212 from the quadrature axis (q) components of the transformed vector. The rotor electrical frequency estimate {circumflex over (ω)}r is input to the biquad filter 206 and to an integration block 220 that generates an estimate of the rotor electrical angle {circumflex over (θ)}r. The biquad filter 206 generates a filtered version of the rotor electrical frequency estimate {circumflex over (ω)}r,filt the absolute value of which is provided to the first filter H(s) via block 222 which ignores the sign (+/−) of the filtered version of the rotor electrical frequency estimate {circumflex over (ω)}r,filt.



FIG. 4 illustrates a block diagram of the zero-phase-shift observer (control loop) 106 in SFO control. In SFO control, and in addition to the rotor electrical angle ωr, the stator electrical angle θe, stator flux magnitude λds, and load angle δ are used to control the system. In FIG. 4, the zero-phase-shift observer (control loop) 106 is configured for SFO control and estimates each of the rotor electrical angle {circumflex over (θ)}r, stator electrical angle {circumflex over (θ)}e, stator flux magnitude λds′, and load angle {circumflex over (δ)} from the magnetic flux vector λαβrp′) and adjusted magnetic flux vector λαβ′(or +θp′). The zero-phase-shift observer (control loop) 106 estimates the rotor electrical angle {circumflex over (θ)}r as explained above in connection with the RFO implementation illustrated in FIG. 2.


The zero-phase-shift observer (control loop) 106 estimates the stator electrical angle {circumflex over (θ)}e and the stator flux magnitude λds′ by transforming the magnetic flux vector output λαβrp′) of the first filter H(s) by an angle equal to the positive stator electrical angle plus the constant phase shift introduced by the first filter H(s).


In more detail, the stator electrical angle and the corresponding SFO are defined such that:










λ
q
s

=

0
@

θ
e






(
36
)







That is, in SFO control, all of the stator flux is aligned with the d-axis.


With a change of variable from θr to θe, a deductive reasoning similar to equations (17)-(24) can be used to derive λαβ in terms of the stator electrical angle θe as follows:











λ
αβ

(


θ
e

+

θ
p



)

=


λ
αβ

(


θ
r

+

θ
p



)





(
37
)







A second transformation block 400 of the zero-phase-shift observer (control loop) 106 applies a Park transform with angle θe∓θp′ to the fluxes in equation (37) to obtain the following:











λ
αβ

(


θ
e

+

θ
p



)

=



R

(


-

θ
e


-

θ
p



)



λ
qd
s


=




[




cos

(


θ
e

+

θ
p



)




sin

(


θ
e

+

θ
p



)






-

sin

(


θ
e

+

θ
p



)





cos


(


θ
e

+

θ
p



)





]

[



0





λ
d
s




]

=


λ
d
s

[




sin

(


θ
e

+

θ
p



)






cos


(


θ
e

+

θ
p



)





]







(
38
)







The angle used in the second transformation block 400 is positive but in equation (38), the input vector is expressed in terms of the output vector of the second transformation block 400, so the angle is negative of what is applied.


Therefore, the stator electrical angle θe and the stator flux magnitude λds can be extracted as follows:











θ
e

+

θ
p



=


tan

-
1


(


λ
α


λ
β


)





(
39
)















"\[LeftBracketingBar]"



λ
αβ

(


θ
e

+

θ
p



)



"\[RightBracketingBar]"


=

λ
d
s





(
40
)







To realize the tan−1(⋅) function in equation (39), the zero-phase-shift observer (control loop) 106 includes a second PLL 402 to extract the stator electrical angle estimate {circumflex over (θ)}e. The second PLL 402 includes a second PI controller block 404 that has a proportional term kp and an integral term ki/s for estimating the stator electrical frequency {circumflex over (ω)}e based on the error λqs′ generated by the second transformation block 400 from the quadrature axis (q) components of the transformed vector λαβep′). The stator electrical frequency estimate {circumflex over (ω)}e is input to another integration block 406 that generates an estimate of the stator electrical angle {circumflex over (θ)}e.


As seen in FIG. 4, the magnetic flux vector output λαβrp′) of the first filter H(s) is fed to the second PLL 402 with a Park transform 400 as follows:










λ
qd

s




=



R

(



θ
^

e

+

θ
p



)




λ
αβ

(


θ
e

+

θ
p



)


=





λ
ds
s

[




cos

(



θ
^

e

+

θ
p



)




-

sin

(



θ
^

e

+

θ
p



)







sin

(



θ
^

e

+

θ
p



)




cos

(



θ
^

e

+

θ
p



)




]

[




sin

(


θ
e

+

θ
p



)






cos


(


θ
e

+

θ
p



)





]

=


λ
d
s

[




sin

(


θ
e

-


θ
^

e


)






cos

(


θ
e

-


θ
^

e


)




]







(
41
)







As seen in equation (41), the q-axis and d-axis components of the Park transform are the error and magnitude signals, respectively, as given by:










λ
q

s




=


λ
d
s


sin




(


θ
e

-


θ
^

e


)




θ

e
,
error








(
42
)













λ
d

s




=


λ
d
s


cos




(


θ
e

-


θ
^

e


)




θ

e
,
error








(
43
)







If the second PLL 402 is stable, the error (θe,error) is zero in steady state. Accordingly, the stator electrical angle estimate θe and the stator flux magnitude estimate λds′ converge to the stator electrical angle θe and the stator flux magnitude λds, respectively.


The torque in SFO control can be expressed as:









T
=




3
2

·

P
2




(



λ
d
s



i
q
s


-


λ
q
s



i
d
s



)


=



3
2

·

P
2




λ
d
s



i
q
s







(
44
)







Therefore, the second PLL 402 can estimate the motor torque {circumflex over (T)} from the stator flux magnitude estimate λds and the quadrature axis (q) components of the motor current vector iqs, as a byproduct of the stator electrical angle {circumflex over (θ)}e estimation as follows:










T
^

=



3
2

·

P
2




λ
d

s






i
q
s






(
45
)







In addition, the zero-phase-shift observer (control loop) 106 can estimate the load angle {circumflex over (δ)} by subtracting (Block 408) the rotor electrical angle estimate {circumflex over (θ)}r from the stator electrical angle estimate {circumflex over (θ)}e as follows:










δ
^

=



θ
^

e

-


θ
^

r






(
46
)







The first filter H(s) of the zero-phase-shift observer (control loop) 106 is an adaptive flux extraction filter and described next in more detail with reference to FIG. 5. The first filter H(s) has a plurality of coefficients c1, c2, c3. The zero-phase-shift observer (control loop) 106 adjusts one or more of the coefficients c1, c2, c3 of the first filter H(s) based on the rotor electrical frequency estimate {circumflex over (ω)}r such that the constant phase shift θp′ introduced by the first filter H(s) remains independent of motor speed.


Without loss of generality, the transfer function H(s)I that represent the first filter H(s) may be represented as any transfer function that satisfies the criteria defined in equation (13). Since the phase shift θp′ of the first filter H(s) is always constant at |ωr|, this indicates that the first filter H(s) is an adaptive transfer function whose coefficients c1, c2, c3 change according to the operating point of the system. Without loss of generality, a specific realization of such an adaptive transfer function is as follows:













H

(
s
)

=


1
A



G

(
s
)






A
=



"\[LeftBracketingBar]"



ω
r



G

(

ω
r

)




"\[RightBracketingBar]"








lim

ω







"\[LeftBracketingBar]"


j

ω


G

(
ω
)




"\[RightBracketingBar]"



=
1







(
47
)













G

(
s
)

=



1
s


1
+


1
s



(


c
1

+


1
s



(


c
2

+


c
3

s


)



)




=


s
2



s
3

+


c
1



s
2


+


c
2


s

+

c
3









(
48
)








The third-degree polynomial in the denominator of equation (48) can be factored such that each root is proportional to the absolute electrical frequency of the rotor |ωr| as follows:










G

(
s
)

=



s
2



(

s
+


k
1





"\[LeftBracketingBar]"


ω
r



"\[RightBracketingBar]"




)



(

s
+


k
2





"\[LeftBracketingBar]"


ω
r



"\[RightBracketingBar]"




)



(

s
+


k
3





"\[LeftBracketingBar]"


ω
r



"\[RightBracketingBar]"




)



=


s
2






s
3

+


(


k
1

+

k
2

+

k
3


)





"\[LeftBracketingBar]"


ω
r



"\[RightBracketingBar]"




s
2


+








(



k
1



k
2


+


k
2



k
3


+


k
1



k
3



)






"\[LeftBracketingBar]"


ω
r



"\[RightBracketingBar]"


2


s

+


(


k
1



k
2



k
3


)






"\[LeftBracketingBar]"


ω
r



"\[RightBracketingBar]"


3












(
49
)







By equating equations (48) and (49), the filter coefficients {c1, c2, c3} can be determined as follows:









{





c
1

=





(


k
1

+

k
2

+

k
3


)




c
1







"\[LeftBracketingBar]"


ω
r



"\[RightBracketingBar]"



=


c
1






"\[LeftBracketingBar]"


ω
r



"\[RightBracketingBar]"











c
2

=





(



k
1



k
2


+


k
2



k
3


+


k
1



k
3



)




c
2








"\[LeftBracketingBar]"


ω
r



"\[RightBracketingBar]"


2


=


c
2







"\[LeftBracketingBar]"


ω
r



"\[RightBracketingBar]"


2










c
3

=





(


k
1



k
2



k
3


)




c
3








"\[LeftBracketingBar]"


ω
r



"\[RightBracketingBar]"


3


=


c
3







"\[LeftBracketingBar]"


ω
r



"\[RightBracketingBar]"


3











(
50
)







The first filter H(s) can be evaluated at s=jωr to see if the criteria in equation (13) are satisfied, as follows:










G

(

ω
r

)

=




(

j


ω
r


)

2




(

j


ω
r


)

3

+


c
1






"\[LeftBracketingBar]"


ω
r



"\[RightBracketingBar]"





(

j


ω
r


)

2


+


c
2







"\[LeftBracketingBar]"


ω
r



"\[RightBracketingBar]"


2



(

j


ω
r


)


+


c
3







"\[LeftBracketingBar]"


ω
r



"\[RightBracketingBar]"


3




=



1

j


ω
r



·


j
3



j
3

+


j
2



c
1




sgn

(

ω
r

)


+

jc
2


+


c
3




sgn

(

ω
r

)





=



1

j


ω
r



·

1

1
-


jc
1




sgn

(

ω
r

)


-

c
2


+


jc
3




sgn

(

ω
r

)





=



1

j


ω
r



·

1


(

1
-

c
2



)

-

j


sgn

(

ω
r

)



(


c
1


-

c
3



)





=


1

j


ω
r



·



(

1
-

c
2



)

+

j


sgn

(

ω
r

)



(


c
1


-

c
3



)






(

1
-

c
2



)

2

+


(


c
1


-

c
3



)

2












(
51
)







If A is selected such that:











1
A

=





(

1
-

c
2



)

2

+


(


c
1


-

c
3



)

2



=




(

1
-

(



k
1



k
2


+


k
2



k
3


+


k
1



k
3



)


)

2

+


(


(


k
1

+

k
2

+

k
3


)

-

(


k
1



k
2



k
3


)


)

2





,




(
52
)







then |H(|ωr|)|=1/ωr. Accordingly, the first criteria in equation (13) is satisfied.


Also, the phase shift at ωr can be found by examining equation (51) as follows:










θ
p


=



tan

-
1


(



sgn

(

ω
r

)



(


c
1


-

c
3



)



(

1
-

c
2



)


)

=



sgn

(

ω
r

)




tan

-
1


(



c
1


-

c
3




1
-

c
2




)


=


sgn

(

ω
r

)



θ
p








(
53
)







where:










θ
p

=



tan

-
1


(



c
1


-

c
3




1
-

c
2




)

=


tan

-
1


(



(


k
1

+

k
2

+

k
3


)

-

(


k
1



k
2



k
3


)



1
-

(



k
1



k
2


+


k
2



k
3


+


k
1



k
3



)



)






(
54
)







Accordingly, the second criteria in equation (13) is also satisfied.


In addition, since the nominator and denominator of H(s) are second-degree and third-degree polynomials, then







lim

ω








H

(
ω
)

~
1

/
j


ω


and




lim

ω

0





H

(
ω
)

~


(

j

ω

)

2


.







Accordingly, the third and fourth criteria in equation (13) are also satisfied.


In FIG. 5, a discrete-time accumulator equivalent to 1/s is used since the system will be implemented in the discrete-time domain inside a microcontroller as follows:










G

(
z
)

=




z

-
1




T
s



1
-

z

-
1






1
s






(
55
)







The biquad filter 206 of the zero-phase-shift observer (control loop) 106 is described next in more detail with reference to FIG. 6. As seen in the block diagrams for SFO and RFO observer embodiments in FIGS. 2 and 4, respectively, the estimated rotor electrical frequency {circumflex over (ω)}r is fed back from the first PLL 204 to the first filter H(s) and to the transformation block 212. The biquad filter 206 applies enough attenuation at high frequencies to the estimated rotor electrical frequency {circumflex over (ω)}r to reject high frequency noise and stabilize the system. Any stabilizing low pass filter can be employed here. Without loss of generalization, a biquad filter 206 is used.


In continuous-time, the biquad filter 206 can be expressed as:










H

(
s
)

=




a
0

+


a
1


s

+


a
2



s
2





b
0

+


b
1


s

+


b
2



s
2




=


K




(


s
/

ω

z

1



+
1

)



(


s
/

ω

z

2



+
1

)




(


s
/

ω

p

1



+
1

)



(


s
/

ω

p

2



+
1

)




=

K



1
+


(


1
/

ω

z

1



+

1
/

ω

z

2




)


s

+


s
2

/

(


ω

z

1




ω

z

2



)




1
+


(


1
/

ω

p

1



+

1
/

ω

p

2




)


s

+


s
2

/

(


ω

p

1




ω

p

2



)











(
56
)







where









{






a
0

=
K







a
1

=

K

(


1
/

ω

z

1



+

1
/

ω

z

2




)








a
2

=

K
/

(


ω

z

1




ω

z

2



)








{





b
0

=
1







b
1

=


1
/

ω

p

1



+

1
/

ω

p

2











b
2

=

1
/

(


ω

p

1




ω

p

2



)












(
57
)







and K, ωzi, and ωpi are the de gain, zeros, and poles of the system, respectively.


If the sampling frequency fs is high enough compared to the bandwidth of the system, a simple forward Euler discretization can be used to go from continuous-time to discrete-time domain as follows:









s
=


(

1
-

z

-
1



)



f
s






(
58
)







Applying equation (58) to equation (56), yields:










H

(
z
)

=




a
0

+


a
1




f
s

(

1
-

z

-
1



)


+


a
2





f
s
2

(

1
-

z

-
1



)

2





b
0

+


b
1




f
s

(

1
-

z

-
1



)


+


b
2





f
s
2

(

1
-

z

-
1



)

2




=



m
0

+


m
1



z

-
1



+


m
2



z

-
2






n
0

+


n
1



z

-
1



+


n
2



z

-
2










(
59
)







where









{






m
0

=


a
0

+


a
1



f
s


+


a
2



f
s
2










m
1

=

-

(



a
1



f
s


+

2


a
2



f
s
2



)









m
2

=


a
2



f
s
2









{





n
0

=


b
0

+


b
1



f
s


+


b
2



f
s
2










n
1

=

-

(



b
1



f
s


+

2


b
2



f
s
2



)









n
2

=


b
2



f
s
2












(
60
)







To simplify the computations inside the microcontroller, the discrete-time coefficients can be scaled as follows:









{






m
0




m
0

/

n
0









m
1




m
1

/

n
0









m
2




m
2

/

n
0









{






n
0




n
0

/

n
0



=
1







n
1




n
1

/

n
0









n
2




n
2

/

n
0












(
61
)







A Direct-Form-II realization of the digital filter expressed in equation (59) can be used as follows:










Y

(
z
)

=





m
0

+


m
1



z

-
1



+


m
2



z

-
2





1
+


n
1



z

-
1



+


n
2



z

-
2







X

(
z
)


=




(


X

(
z
)


1
+


n
1



z

-
1



+


n
2



z

-
2





)




D

(
z
)




(


m
0

+


m
1



z

-
1



+


m
2



z

-
2




)







(
62
)







where









{





D

(
z
)

=


X

(
z
)


1
+


n
1



z

-
1



+


n
2



z

-
2












Y

(
z
)

=


D

(
z
)



(


m
0

+


m
1



z

-
1



+


m
2



z

-
2




)










(
63
)







Accordingly, the time-domain equivalent of equation (63) is:









{





d
n

=


x
n

-


n
1



d

n
-
1



-


n
2



d

n
-
2











y
n

=



m
0



d
n


-


m
1



d

n
-
1



-


m
2



d

n
-
2












(
64
)







The block diagram of the biquad filter 206 illustrated in FIG. 6 represents the time-domain realization in equation (64).


Without loss of generality, a critically-damped second-order low-pass-filter can be used as the low pass filter 206 of the zero-phase-shift observer (control loop) 106 as follows:









{





K
=
1







ω

z

1


=


ω

z

2


=









ω

p

1



=


ω

p

2


=

ω
p








{






a
0

=


b
0

=
1








a
1

=


a
2

=
0









b
1

=

2
/

ω
p



,


b
2

=

1
/

ω
p
2















(
65
)












{






m
0

=


ω
p
2



ω
p
2

+

2


ω
p



f
s


+

f
s
2










m
1

=
0







m
2

=
0







{





n
0

=
1







n
1

=


2


(



ω
p



f
s


+

f
s
2


)




ω
p
2

+

2


ω
p



f
s


+

f
s
2










n
2

=


f
s
2



ω
p
2

+

2


ω
p



f
s


+

f
s
2













(
66
)








FIG. 7 illustrates a schematic diagram of the motor controller 100 configured for RFO control and for implementing motor current control based on the rotor electrical angle estimate {circumflex over (θ)}r and electrical speed estimate {circumflex over (ω)}r generated by the zero-phase-shift observer (control loop) 106. A current control loop 700 implements RRF control based on the estimated rotor angular position {circumflex over (θ)}r and electrical speed estimate {circumflex over (ω)}r generated by the zero-phase-shift observer (control loop) 106 and a current command is*. Accordingly, the estimated rotor angular position {circumflex over (θ)}r can be used not only for transforming the currents from SRF to RRF but also transforming the resulting voltage commands from RRF back to SRF for the inverter 104. The motor controller 100 also includes a transformation block 702 that generates the current RRF variable iqdr in the rotor reference frame based on the applied current vector iαβ which is provided by a current reconstruction circuit 704.



FIG. 8 illustrates a schematic diagram of the motor controller 100 configured for both RFO current and speed control. In FIG. 8, the motor controller 100 utilizes both a current control loop 700 and a speed control loop 800 when speed control is desired in RFO. The speed control loop 800, which can include, e.g., one or more PI controllers, filters, etc., generates the current command is* for the current control loop 700 based on the rotor electrical frequency estimate {circumflex over (ω)}r generated by the zero-phase-shift observer (control loop) 106 and a reference motor speed ωm*. Feed forward terms can be used to improve the dynamic response of the system in FIG. 8.



FIG. 9 illustrates a schematic diagram of the motor controller 100 configured for SFO torque control. In FIG. 9, the motor controller 10 includes an SFO-based torque control loop 900 that implements motor torque control based on the rotor electrical angle estimate {circumflex over (θ)}r, the stator electrical angle estimate {circumflex over (θ)}e, the stator flux magnitude estimate λds, and the load angle estimate {circumflex over (δ)} generated by the zero-phase-shift observer (control loop) 106. All of these variables are used in different parts of the SFO-based torque control loop 900 and enable the SFO-based torque control loop 900 to control the motor torque in response to a torque command Tcmd, which can include, e.g., one or more PI controllers, filters, etc.



FIG. 10 illustrates a schematic diagram of the motor controller 100 configured for both SFO torque and speed control. In FIG. 10, the motor controller 100 utilizes both a torque control loop 900 and a speed control loop 1000 when speed control is desired in SFO. The speed control loop 1000, which can include, e.g., one or more PI controllers, filters, etc., generates the torque command Tcmd for the torque control loop 900 based on the rotor electrical frequency estimate {circumflex over (ω)}r generated by the zero-phase-shift observer (control loop) 106 and a reference motor speed ωm*. Feed forward terms can be used to improve the dynamic response of the system in FIG. 10.


Although the zero-phase-shift observer (control loop) 106 is described herein in the context of PMSM applications, the flux observer part of the SFO observer architecture can also be used for observing the stator flux of induction motors, as well, and without loss of generalization.


Although the present disclosure is not so limited, the following numbered examples demonstrate one or more aspects of the disclosure.


Example 1. A controller for a permanent magnet synchronous motor, the controller comprising: a first control loop comprising a first filter, wherein the first filter has a back-EMF voltage vector input, a magnetic flux vector output with a constant phase shift that is independent of motor speed, and an amplitude response that is inversely proportional to rotor electrical frequency, wherein the first control loop is configured to: generate an adjusted magnetic flux vector from the magnetic flux vector output by the first filter and compensate for the constant phase shift introduced by the first filter; estimate the rotor electrical frequency from the adjusted magnetic flux vector; and feedback a filtered version of the rotor electrical frequency estimate to the first filter as an estimation of the rotor electrical frequency.


Example 2. The controller of example 1, wherein the first control loop is further configured to: generate the back-EMF voltage vector from an applied motor voltage vector and an applied motor current vector in a stationary reference frame; apply a phase shift to the applied current vector to generate a phase-shifted version of the applied current vector that has the same phase shift as the magnetic flux vector output by the first filter; and generate the adjusted magnetic flux vector from the magnetic flux vector output by the first filter and the phase-shifted version of the applied current vector.


Example 3. The controller of example 2, wherein the first control loop is configured to generate the adjusted magnetic flux vector by scaling the phase-shifted version of the applied current vector and subtracting the scaled and phase-shifted version of the applied current vector from the magnetic flux vector output by the first filter.


Example 4. The controller of example 2 or 3, wherein the first control loop is configured to apply a phase shift to the applied current vector by using a rotation matrix with fixed angle.


Example 5. The controller of any of examples 1 through 4, wherein the first control loop is further configured to estimate rotor electrical angle from the adjusted magnetic flux vector.


Example 6. The controller of example 5, wherein the first control loop is configured to estimate the rotor electrical frequency from the adjusted magnetic flux vector by transforming the adjusted magnetic flux vector by the estimated rotor electrical angle plus the constant phase shift introduced by the first filter.


Example 7. The controller of example 6, wherein the first control loop is configured to transform the adjusted magnetic flux vector using a phase-locked loop.


Example 8. The controller of example 6 or 7, wherein the first control loop is further configured to generate an error vector from quadrature axis components of the transformed vector and a magnitude vector from direct axis components of the transformed vector.


Example 9. The controller of example 8, wherein the first control loop is further configured to estimate motor torque from the magnitude vector.


Example 10. The controller of example 9, wherein the first control loop is configured to estimate the motor torque using a phase-locked loop.


Example 11. The controller of any of examples 5 through 9, wherein the controller is configured for rotor frame orientation (RFO) control and comprises a second control loop configured to implement motor current control based on the rotor electrical angle estimate generated by the first control loop.


Example 12. The controller of example 11, wherein the second control loop is further configured to implement motor speed control based on the rotor electrical frequency estimate generated by the first control loop.


Example 13. The controller of any of examples 1 through 12, wherein the controller is configured for stator frame orientation (SFO) control, and wherein the first control loop is further configured to estimate each of rotor electrical angle, stator electrical angle, stator flux magnitude, and load angle from the magnetic flux vector output by the first filter and the adjusted magnetic flux vector.


Example 14. The controller of example 13, wherein the first control loop is configured to estimate the stator electrical angle and the stator flux magnitude by transforming the magnetic flux vector by an angle equal to the positive stator electrical angle plus the constant phase shift introduced by the first filter.


Example 15. The controller of example 13 or 14, wherein the first control loop is configured to transform the magnetic flux vector using a phase-locked loop.


Example 16. The controller of any of examples 13 through 15, wherein the first control loop is configured to estimate the load angle by subtracting the rotor electrical angle estimate from the stator electrical angle estimate.


Example 17. The controller of any of examples 13 through 16, wherein the first control loop is further configured to estimate motor torque from the stator flux magnitude estimate and quadrature axis components of a motor current vector.


Example 18. The controller of example 17, wherein the first control loop is configured to estimate the motor torque using a phase-locked loop.


Example 19. The controller of any of examples 13 through 18, further comprising a second control loop configured to implement motor torque control based on the rotor electrical angle estimate, the stator electrical angle estimate, the stator flux magnitude estimate, and the load angle estimate generated by the first control loop.


Example 20. The controller of example 19, wherein the second control loop is further configured to implement motor speed control based on the rotor electrical angle estimate.


Example 21. The controller of any of examples 1 through 20, wherein the first filter has a plurality of coefficients, and wherein the first control loop is configured to adjust one or more of the coefficients of the first filter based on the rotor electrical frequency estimate such that the constant phase shift introduced by the first filter remains independent of motor speed.


Terms such as “first”, “second”, and the like, are used to describe various elements, regions, sections, etc. and are also not intended to be limiting. Like terms refer to like elements throughout the description.


As used herein, the terms “having”, “containing”, “including”, “comprising” and the like are open ended terms that indicate the presence of stated elements or features, but do not preclude additional elements or features. The articles “a”, “an” and “the” are intended to include the plural as well as the singular, unless the context clearly indicates otherwise.


The expression “and/or” should be interpreted to include all possible conjunctive and disjunctive combinations, unless expressly noted otherwise. For example, the expression “A and/or B” should be interpreted to mean only A, only B, or both A and B. The expression “at least one of” should be interpreted in the same manner as “and/or”, unless expressly noted otherwise. For example, the expression “at least one of A and B” should be interpreted to mean only A, only B, or both A and B.


It is to be understood that the features of the various embodiments described herein can be combined with each other, unless specifically noted otherwise.


Although specific embodiments have been illustrated and described herein, it will be appreciated by those of ordinary skill in the art that a variety of alternate and/or equivalent implementations can be substituted for the specific embodiments shown and described without departing from the scope of the present invention. This application is intended to cover any adaptations or variations of the specific embodiments discussed herein. Therefore, it is intended that this invention be limited only by the claims and the equivalents thereof.

Claims
  • 1. A controller for a permanent magnet synchronous motor, the controller comprising: a first control loop comprising a first filter,wherein the first filter has a back-EMF voltage vector input, a magnetic flux vector output with a constant phase shift that is independent of motor speed, and an amplitude response that is inversely proportional to rotor electrical frequency,wherein the first control loop is configured to: generate an adjusted magnetic flux vector from the magnetic flux vector output by the first filter and compensate for the constant phase shift introduced by the first filter;estimate the rotor electrical frequency from the adjusted magnetic flux vector; andfeedback a filtered version of the rotor electrical frequency estimate to the first filter as an estimation of the rotor electrical frequency.
  • 2. The controller of claim 1, wherein the first control loop is further configured to: generate the back-EMF voltage vector from an applied motor voltage vector and an applied motor current vector in a stationary reference frame;apply a phase shift to the applied current vector to generate a phase-shifted version of the applied current vector that has the same phase shift as the magnetic flux vector output by the first filter; andgenerate the adjusted magnetic flux vector from the magnetic flux vector output by the first filter and the phase-shifted version of the applied current vector.
  • 3. The controller of claim 2, wherein the first control loop is configured to generate the adjusted magnetic flux vector by scaling the phase-shifted version of the applied current vector and subtracting the scaled and phase-shifted version of the applied current vector from the magnetic flux vector output by the first filter.
  • 4. The controller of claim 2, wherein the first control loop is configured to apply a phase shift to the applied current vector by using a rotation matrix with fixed angle.
  • 5. The controller of claim 1, wherein the first control loop is further configured to estimate rotor electrical angle from the adjusted magnetic flux vector.
  • 6. The controller of claim 5, wherein the first control loop is configured to estimate the rotor electrical frequency from the adjusted magnetic flux vector by transforming the adjusted magnetic flux vector by the estimated rotor electrical angle plus the constant phase shift introduced by the first filter.
  • 7. The controller of claim 6, wherein the first control loop is configured to transform the adjusted magnetic flux vector using a phase-locked loop.
  • 8. The controller of claim 6, wherein the first control loop is further configured to generate an error vector from quadrature axis components of the transformed vector and a magnitude vector from direct axis components of the transformed vector.
  • 9. The controller of claim 8, wherein the first control loop is further configured to estimate motor torque from the magnitude vector.
  • 10. The controller of claim 9, wherein the first control loop is configured to estimate the motor torque using a phase-locked loop.
  • 11. The controller of claim 5, wherein the controller is configured for rotor frame orientation (RFO) control and comprises a second control loop configured to implement motor current control based on the rotor electrical angle estimate generated by the first control loop.
  • 12. The controller of claim 11, wherein the second control loop is further configured to implement motor speed control based on the rotor electrical frequency estimate generated by the first control loop.
  • 13. The controller of claim 1, wherein the controller is configured for stator frame orientation (SFO) control, and wherein the first control loop is further configured to estimate each of rotor electrical angle, stator electrical angle, stator flux magnitude, and load angle from the magnetic flux vector output by the first filter and the adjusted magnetic flux vector.
  • 14. The controller of claim 13, wherein the first control loop is configured to estimate the stator electrical angle and the stator flux magnitude by transforming the magnetic flux vector by an angle equal to the positive stator electrical angle plus the constant phase shift introduced by the first filter.
  • 15. The controller of claim 13, wherein the first control loop is configured to transform the magnetic flux vector using a phase-locked loop.
  • 16. The controller of claim 13, wherein the first control loop is configured to estimate the load angle by subtracting the rotor electrical angle estimate from the stator electrical angle estimate.
  • 17. The controller of claim 13, wherein the first control loop is further configured to estimate motor torque from the stator flux magnitude estimate and quadrature axis components of a motor current vector.
  • 18. The controller of claim 17, wherein the first control loop is configured to estimate the motor torque using a phase-locked loop.
  • 19. The controller of claim 13, further comprising a second control loop configured to implement motor torque control based on the rotor electrical angle estimate, the stator electrical angle estimate, the stator flux magnitude estimate, and the load angle estimate generated by the first control loop.
  • 20. The controller of claim 19, wherein the second control loop is further configured to implement motor speed control based on the rotor electrical angle estimate.
  • 21. The controller of claim 1, wherein the first filter has a plurality of coefficients, and wherein the first control loop is configured to adjust one or more of the coefficients of the first filter based on the rotor electrical frequency estimate such that the constant phase shift introduced by the first filter remains independent of motor speed.