Board Reference

    Flight Controller
    Field Oriented Controller

    Motor Drive

    PMSM

    Motion Control

    Attitude Control

    Tutorial

    Mathematics
    Classical Control
    State Estimation
    Feedforward Control
    Disturbance Observer
    Motion Control

Field Oriented Control

System model

The governing equation of a salient-pole permanent magnet synchronous motor is expressed as
vdq=Ridq+ddtϕi+ωreJϕi+ωreJϕmωm=P1ωreτm=P(Φiq+(LdLq)idiq),\begin{align} \bm{v}_{\rm dq}&=\bm{R}\bm{i}_{\rm dq}+\frac{d}{dt}\bm{\phi}_{\rm i}+\omega_{\rm re}\bm{J}\bm{\phi}_{\rm i}+\omega_{\rm re}\bm{J}\bm{\phi}_{\rm m}\\ \omega_{\rm m}&=P^{-1}\omega_{\rm re}\\ \tau_{\rm m}&=P\left(\Phi i_{\rm q}+ (L_{\rm d}-L_{\rm q })i_{\rm d}i_{\rm q}\right), \end{align}
where R\bm{R}, Ldq\bm{L}_{\rm dq}, vdq\bm{v}_{\rm dq}, idq\bm{i}_{\rm dq}, ϕi\bm{\phi}_{\rm i}, ϕm\bm{\phi}_{\rm m}, ωre\omega_{\rm re}, ωm\omega_{\rm m}, τm\tau_{\rm m}, and PP stand for an armature resistance, inductance on the dq-axis, voltage and current on dq-axis, armature reaction flux, rotor flux, electric and mechanical angular speed of a motor, motor torque, and the number of motor poles, expressed as
R=RI, Ldq=diag(Ld, Lq),vdq=[vdvq], idq=[idiq], ϕi=Ldqidq, ϕm=[Φ0].\begin{align} \bm{R}&=R\bm{I},\ \bm{L}_{\rm dq}={\rm diag}(L_{\rm d},\ L_{\rm q}), \notag\\ \bm{v}_{\rm dq}&=\begin{bmatrix} v_{\rm d} \\ v_{\rm q} \end{bmatrix},\ \bm{i}_{\rm dq}=\begin{bmatrix} i_{\rm d} \\ i_{\rm q} \end{bmatrix},\ \bm{\phi}_{\rm i}=\bm{L}_{\rm dq}\bm{i}_{\rm dq},\ \bm{\phi}_{\rm m}=\begin{bmatrix} \Phi \\ 0\end{bmatrix}. \notag \end{align}
A magnetic flux Φ\Phi is generated by a permanent magnet and gets constant value. The matrices I\bm{I} and J\bm{J} denote an identity matrix and rotation operator expressed as
J=[0110].\begin{align} \bm{J}&=\begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix}. \end{align}

Field-oriented control

Assuming that the initial values of all the state are zero, we get an equation in a Laplace domain
sLdqidq=RidqωreJ(ϕi+ϕm)+vdq,\begin{align} s\bm{L}_{\rm dq}\bm{i}_{\rm dq} &= -\bm{R}\bm{i}_{\rm dq}-\omega_{\rm re}\bm{J}(\bm{\phi}_{\rm i}+\bm{\phi}_{\rm m})+\bm{v}_{\rm dq}, \end{align}
where ss stands for a complex value. Here, let us design an input reference vdqref\bm{v}^{\rm ref}_{\rm dq} as
vdqref=Ci(idqcmdidq)+ω^reJ(ϕ^i+ϕ^m)Ci(L^dq+s1R^)ωcωcdiag(ωc,d, ωc,q),\begin{align} \bm{v}^{\rm ref}_{\rm dq}&=\bm{C}_{\rm i}(\bm{i}_{\rm dq}^{\rm cmd}-\bm{i}_{\rm dq})+\hat{\omega}_{\rm re}\bm{J}(\hat{\bm{\phi}}_{\rm i}+\hat{\bm{\phi}}_{\rm m})\\ \bm{C}_{\rm i}&\equiv (\hat{\bm{L}}_{\rm dq}+s^{-1}\hat{\bm{R}})\bm{\omega}_{\rm c}\\ \bm{\omega}_{\rm c}&\equiv{\rm diag}(\omega_{\rm c,d},\ \omega_{\rm c,q}), \end{align}
where Ci\bm{C}_{\rm i} and ωc\bm{\omega}_{\rm c} are a PI controller and controller gain that determines the natural frequency of a current controller, and the superscript cmd^{\rm cmd}, ref^{\rm ref} and ^\hat{} stand for a command, reference, and estimated values. If a modeling error is sufficiently small, this feedback system controls the current idq\bm{i}_{\rm dq} as it gets
idq=(sI+ωc)1ωcidqcmd.\begin{align} \bm{i}_{\rm dq}=(s\bm{I}+\bm{\omega}_{\rm c})^{-1}\bm{\omega}_{\rm c}\bm{i}_{\rm dq}^{\rm cmd}. \end{align}
By setting idqcmd=[0Φ1P1τmcmd]T\bm{i}^{\rm cmd}_{\rm dq}=\begin{bmatrix}0&\Phi^{-1}P^{-1}\tau_{\rm m}^{\rm cmd}\end{bmatrix}^{\mathrm T}, a motor torque τm\tau_{\rm m} is controlled as
τm=Gcτmcmd,\begin{align} \tau_{\rm m}&=G_{\rm c}\tau_{\rm m}^{\rm cmd}, \end{align}
where GcG_{\rm c} represents first-order lag characteristics
Gc=(s+ωc,q)1ωc,q.\begin{align} G_{\rm c}&=(s+\omega_{\rm c,q})^{-1}\omega_{\rm c,q}. \end{align}
Thus, current control on the dq-axis enables torque control.

© DigitalServo