Hari
2392 words
12 minutes
FOC电机控制
2024-07-17
WARNING

本文内含大量公式,可能导致头晕,请做好观前准备

电机数学建模#

对于一个三相PMSM,其电压方程为:

[vavbvc]=[RS000RS000RS][iaibic]+[Ψ˙aΨ˙bΨ˙c]\begin{bmatrix} v_a \\ v_b \\ v_c \end{bmatrix} = \begin{bmatrix} R_S & 0 & 0 \\ 0 & R_S & 0 \\ 0 & 0 & R_S \end{bmatrix} \begin{bmatrix} i_a \\ i_b \\ i_c \end{bmatrix} + \begin{bmatrix} \dot{\Psi}_a \\ \dot{\Psi}_b \\ \dot{\Psi}_c \end{bmatrix}

va,vb,vcv_a, v_b, v_c是相电压,RSR_S是相电阻,ia,ib,ici_a, i_b, i_c是相电流,Ψ˙a,Ψ˙b,Ψ˙c\dot{\Psi}_a, \dot{\Psi}_b, \dot{\Psi}_c是定子三相绕组的磁链变化率。通过定子的磁链可以使用以下等式表示:

[ΨaΨbΨc]=[LaaLabLacLbaLbbLbcLcaLcbLcc][iaibic]+[ΨamΨbmΨcm]\begin{bmatrix} \Psi_a \\ \Psi_b \\ \Psi_c \end{bmatrix} = \begin{bmatrix} L_{aa} & L_{ab} & L_{ac} \\ L_{ba} & L_{bb} & L_{bc} \\ L_{ca} & L_{cb} & L_{cc} \end{bmatrix} \begin{bmatrix} i_a \\ i_b \\ i_c \end{bmatrix} + \begin{bmatrix} \Psi_{am} \\ \Psi_{bm} \\ \Psi_{cm} \end{bmatrix}

其中L\mathbf{L}矩阵的对角项为自感,其余为互感,Ψam,Ψbm,Ψcm\Psi_{am}, \Psi_{bm}, \Psi_{cm}是永磁体在三相绕组上产生的磁链。定子电感与转子角度相关,有如下关系:

θe=NθrLaa=LS+Lmcos(2θe)Lbb=LS+Lmcos2(θe2π/3)Lcc=LS+Lmcos2(θe+2π/3)Lab=Lba=MSLmcos2(θe+π/6)Lbc=Lcb=MSLmcos2(θe+π/62π/3)Lca=Lac=MSLmcos2(θe+π/6+2π/3)\begin{aligned} \theta_e &= N*\theta_r \\ L_{aa} &= L_S + L_m \cos{(2\theta_e)} \\ L_{bb} &= L_S + L_m \cos{2(\theta_e - 2\pi/3)} \\ L_{cc} &= L_S + L_m \cos{2(\theta_e + 2\pi/3)} \\ L_{ab} &= L_{ba} = -M_S - L_m \cos{2(\theta_e + \pi/6)} \\ L_{bc} &= L_{cb} = -M_S - L_m \cos{2(\theta_e + \pi/6 - 2\pi/3)} \\ L_{ca} &= L_{ac} = -M_S - L_m \cos{2(\theta_e + \pi/6 + 2\pi/3)} \\ \end{aligned}

θr\theta_r是机械转角,θe\theta_e是电角度,NN是极对数,LSL_S是相定子自感,LmL_m是定子脉动电感,与自感、互感和转子角度变换相关,MSM_S是定子互感。永磁体在定子上产生的磁链也与电角度相关:

[ΨamΨbmΨcm]=[ΨmcosθeΨmcosθe2π/3Ψmcosθe+2π/3]\begin{bmatrix} \Psi_{am} \\ \Psi_{bm} \\ \Psi_{cm} \end{bmatrix} = \begin{bmatrix} \Psi_{m} \cos{\theta_e} \\ \Psi_{m} \cos{\theta_e - 2\pi/3} \\ \Psi_{m} \cos{\theta_e + 2\pi/3} \\ \end{bmatrix}

由于三相电压不便于计算,我们使用Clarke-Park变换将三相电压转换为d-q轴表示。Clarke-Park有等幅值和等功率两种变换方法,这里我们使用等幅值变换,

RP=23[cosθecosθe2π/3cosθe+2π/3sinθesinθe2π/3sinθe+2π/30.50.50.5]R_{P} = \frac23\begin{bmatrix} \cos{\theta_e} & \cos{\theta_e - 2\pi/3} & \cos{\theta_e + 2\pi/3} \\ -\sin{\theta_e} & -\sin{\theta_e - 2\pi/3} & -\sin{\theta_e + 2\pi/3} \\ 0.5 & 0.5 & 0.5 \end{bmatrix}

经过变换,可以将三相电压电流变换为dq轴电压电流,于是可以引出如下等式:

vd=RSid+LdidNωiqLqvq=RSiq+Lqiq+Nω(idLd+Ψm)v0=RSi0+L0i0T=32N(iq(idLd+Ψm)idiqLq)\begin{aligned} v_d &= R_S i_d + L_d \overline{i}_d - N\omega i_q L_q \\ v_q &= R_S i_q + L_q \overline{i}_q + N\omega (i_d L_d + \Psi_m) \\ v_0 &= R_S i_0 + L_0 \overline{i}_0 \\ T &= \frac32 N(i_q(i_d L_d + \Psi_m) - i_d i_q L_q) \end{aligned}

其中Ld=LS+MS+3/2LmL_d = L_S + M_S + 3/2 L_m,是d轴电感,Lq=LS+MS3/2LmL_q = L_S + M_S - 3/2 L_m是q轴电感,L0=LS2MSL_0 = L_S - 2M_S是零序电感,ω\omega是机械角速度,TT是产生的电磁转矩。

反电动势常数kek_e与永磁体磁链之间存在线性关系,

ke=NΨmk_e = N \Psi_m
NOTE

该部分参考Permanent magnet synchronous motor with sinusoidal flux distribution - MATLAB Documents编写

控制器设计#

电机模型转换#

首先将电机数学模型转换为状态空间方程,

[idiq]=[RSLdNωLqLdNωLdLqRSLq][idiq]+[1Ld001Lq][vdvq]+[0NωΨmLq]\begin{bmatrix} \overline{i}_d \\ \overline{i}_q \end{bmatrix} = \begin{bmatrix} -\frac{R_S}{L_d} & N \omega \frac{L_q}{L_d}\\ -N \omega \frac{L_d}{L_q} & -\frac{R_S}{L_q} \end{bmatrix} \begin{bmatrix} i_d \\ i_q \end{bmatrix} + \begin{bmatrix} \frac{1}{L_d} & 0 \\ 0 & \frac{1}{L_q} \end{bmatrix} \begin{bmatrix} v_d \\ v_q \end{bmatrix} + \begin{bmatrix} 0 \\ -N\omega \frac{\Psi_m}{L_q} \end{bmatrix}

根据机械运动方程,

Jω˙=TTLBωJ \dot{\omega} = T - T_L - B\omega

结合电磁转矩公式,可以得到转速与电流之间的关系:

ω˙=32JN((LdLq)idiq+Ψmiq)TLJBJω\dot{\omega} = \frac{3}{2J}N((L_d - L_q)i_d i_q + \Psi_m i_q) - \frac{T_L}{J} - \frac{B}{J} \omega

基于电压前馈的线性化方法#

为了实现dq轴电流的解耦控制,一般会使用电流前馈补偿实现电机系统的线性化:

vd0=NωLqiqvq0=Nω(Ldid+Ψm)\begin{aligned} v_{d0} &= N \omega L_q i_q \\ v_{q0} &= N \omega (L_d i_d + \Psi_m) \end{aligned}

其中vd0v_{d0}vq0v_{q0}将作为前馈项补偿电压的非线性项,补偿后的系统将变为一个线性系统:

[idiq]=[RSLd00RSLq][idiq]+[1Ld001Lq][vdvq]\begin{bmatrix} \overline{i}_d \\ \overline{i}_q \end{bmatrix} = \begin{bmatrix} -\frac{R_S}{L_d} & 0\\ 0 & -\frac{R_S}{L_q} \end{bmatrix} \begin{bmatrix} i_d \\ i_q \end{bmatrix} + \begin{bmatrix} \frac{1}{L_d} & 0 \\ 0 & \frac{1}{L_q} \end{bmatrix} \begin{bmatrix} v_d \\ v_q \end{bmatrix}

基于电流偏差前馈的线性化方法#

不难发现,使用前馈电压法要求对电机系统参数的精确建模,如果存在参数不匹配的情况,将无法完全消除电流间的耦合问题。此时,我们可以使用电流偏差来做解耦控制,电机的输入期望电流为idi_d^*iqi_q^*,电流偏差解耦的传递函数为Gd(s)G_d^{'}(s)Gq(s)G_q^{'}(s),电流环控制器使用PID控制,传递函数为Gd(s)G_d(s)Gq(s)G_q(s),控制框图如下图所示: 电流偏差解耦法

根据图示可以推导出控制方程:

vd=Gd(s)id+Gd(s)iqGd(s)idGd(s)iqvq=Gq(s)iq+Gq(s)idGq(s)iqGq(s)id+NωΨm\begin{aligned} v_d^* &= G_d(s)i_d^* + G_d^{'}(s)i_q - G_d(s)i_d - G_d^{'}(s)i_q^* \\ v_q^* &= G_q(s)i_q^* + G_q^{'}(s)i_d^* - G_q(s)i_q - G_q^{'}(s)i_d + N\omega \Psi_m \end{aligned}

带入系统状态方程,可以得到:

Gd(s)id+Gd(s)iqGd(s)idGd(s)iq=(RS+Lds)idNωLqiqGq(s)iq+Gq(s)idGq(s)iqGq(s)id=(RS+Lqs)iq+NωLdid\begin{aligned} G_d(s)i_d^* + G_d^{'}(s)i_q - G_d(s)i_d - G_d^{'}(s)i_q^* &= (R_S + L_d s) i_d - N\omega L_q i_q \\ G_q(s)i_q^* + G_q^{'}(s)i_d^* - G_q(s)i_q - G_q^{'}(s)i_d &= (R_S + L_q s) i_q + N\omega L_d i_d \end{aligned}

化简上式可以得到:

aid+biq=cid+diqmid+niq=pid+qiq\begin{aligned} ai_d^* + bi_q^* = ci_d + di_q \\ mi_d^* + ni_q^* = pi_d + qi_q \end{aligned}

其中:

  • a=Gd(s)a = G_d(s)
  • b=Gd(s)b = - G_d^{'}(s)
  • c=(RS+Lds+Gd(s))c = (R_S + L_d s + G_d(s))
  • d=(Gd(s)+NωLq)d = - (G_d^{'}(s) + N\omega L_q)
  • m=Gq(s)m = G_q^{'}(s)
  • n=Gq(s)n = G_q(s)
  • p=(Gq(s)+NωLd)p = (G_q^{'}(s) + N\omega L_d)
  • q=(RS+Lqs+Gq(s))q = (R_S + L_q s + G_q(s))

写为矩阵形式,可以得到:

[idiq]=[AddAdqAqdAqq][idiq]\begin{bmatrix} i_d \\ i_q \end{bmatrix} = \begin{bmatrix} A_{dd} & A_{dq} \\ A_{qd} & A_{qq} \end{bmatrix} \begin{bmatrix} i_d^* \\ i_q^* \end{bmatrix}

其中,

  • Add=aqdmcqdpA_{dd} = \frac{aq-dm}{cq-dp}
  • Adq=bqdncqdpA_{dq} = \frac{bq-dn}{cq-dp}
  • Aqd=apcmdpcqA_{qd} = \frac{ap-cm}{dp-cq}
  • Aqq=bpcndpcqA_{qq} = \frac{bp-cn}{dp-cq}

Adq=Aqd=0A_{dq} = A_{qd} = 0时,系统完全解耦。可以解得传递函数Gd(s)G_d^{'}(s)Gq(s)G_q^{'}(s)

Gd(s)=NωLqRS+LqsGq(s)Gq(s)=NωLdRS+LdsGd(s)\begin{aligned} G_d^{'}(s) &= \frac{N\omega L_q}{R_S + L_q s}G_q(s) \\ G_q^{'}(s) &= \frac{N\omega L_d}{R_S + L_d s}G_d(s) \end{aligned}

修改控制框图,使用电流偏差法解耦后的控制框图如下图: 电流偏差法化简

滑模观测器设计#

当估计值L^q\hat{L}_qL^d\hat{L}_d与真实值Lq,LdL_q, L_d之间不匹配时,Adq,Aqd0A_{dq}, A_{qd} \neq 0,系统中仍然存在耦合项。为了获取准确的电流,这里设计一个滑模观测器。

根据上面的电流状态方程,可以给出滑模观测器的估计方程:

i^˙d=RSLdi^d+vdLd+NωLqLdi^q+f1i^˙q=RSLqi^q+vqLqNωLdLqi^dNωΨmLq+f2\begin{aligned} \dot{\hat{i}}_d &= -\frac{R_S}{L_d}\hat{i}_d + \frac{v_d}{L_d} + N \omega \frac{L_q}{L_d}\hat{i}_q + f_1 \\ \dot{\hat{i}}_q &= -\frac{R_S}{L_q}\hat{i}_q + \frac{v_q}{L_q} - N \omega \frac{L_d}{L_q}\hat{i}_d - N\omega \frac{\Psi_m}{L_q} + f_2 \end{aligned}

给出滑模观测器的控制律:

[f1f2]=[RSLdsd+LqLdNωsq+Kdsign(sd)RSLdsqLqLdNωsd+Kqsign(sq)]\begin{bmatrix} f_1 \\ f_2 \end{bmatrix} = \begin{bmatrix} -\frac{R_S}{L_d}s_d + \frac{L_q}{L_d}N\omega s_q + K_d \mathrm{sign}(s_d) \\ -\frac{R_S}{L_d}s_q - \frac{L_q}{L_d}N\omega s_d + K_q \mathrm{sign}(s_q) \end{bmatrix}

其中KdK_dKqK_q分别为dq轴滑模增益,滑模面为:

s=[sdsq]=[i~di~q]=[idi^diqi^q]\mathbf{s} = \begin{bmatrix} s_d \\ s_q \end{bmatrix} = \begin{bmatrix} \tilde{i}_d \\ \tilde{i}_q \end{bmatrix} = \begin{bmatrix} i_d - \hat{i}_d \\ i_q - \hat{i}_q \end{bmatrix}

使用指数趋近律,有:

s˙=[s˙ds˙q]=[RSLdsd+LqLdNωsq+Kdsign(sd)RSLdsqLqLdNωsd+Kqsign(sq)]\dot{\mathbf{s}} = \begin{bmatrix} \dot{s}_d \\ \dot{s}_q \end{bmatrix} = \begin{bmatrix} -\frac{R_S}{L_d}s_d + \frac{L_q}{L_d}N\omega s_q + K_d \mathrm{sign}(s_d) \\ -\frac{R_S}{L_d}s_q - \frac{L_q}{L_d}N\omega s_d + K_q \mathrm{sign}(s_q) \end{bmatrix}

根据李雅普诺夫稳定性,V˙(x)=ss˙0\dot{V}(x) = \mathbf{s}\dot{\mathbf{s}} \leq 0,即:

sds˙d=sd(RSLdsd+LqLdNωsq+Kdsign(sd))0sqs˙q=sq(RSLdsqLqLdNωsd+Kqsign(sq))0\begin{aligned} s_d \dot{s}_d &= s_d (-\frac{R_S}{L_d}s_d + \frac{L_q}{L_d}N\omega s_q + K_d \mathrm{sign}(s_d)) \leqslant 0 \\ s_q \dot{s}_q &= s_q (-\frac{R_S}{L_d}s_q - \frac{L_q}{L_d}N\omega s_d + K_q \mathrm{sign}(s_q)) \leqslant 0 \end{aligned}

为了满足稳定性条件,可以得出KdK_dKqK_q的取值范围:

KdRSLdsdLqLdNωsqKqRSLqsqLdLqNωsd\begin{aligned} K_d \leqslant \frac{R_S}{L_d}s_d - \frac{L_q}{L_d}N\omega s_q \\ K_q \leqslant \frac{R_S}{L_q}s_q - \frac{L_d}{L_q}N\omega s_d \end{aligned}

根据滑模观测器的电流方程可以得到估计电流,

i^˙d=RSLdi^d+vdLd+NωLqLdi^q+f1i^˙q=RSLqi^q+vqLqNωLdLqi^dNωΨmLq+f2\begin{aligned} \dot{\hat{i}}_d &= -\frac{R_S}{L_d}\hat{i}_d + \frac{v_d}{L_d} + N \omega \frac{L_q}{L_d}\hat{i}_q + f_1 \\ \dot{\hat{i}}_q &= -\frac{R_S}{L_q}\hat{i}_q + \frac{v_q}{L_q} - N \omega \frac{L_d}{L_q}\hat{i}_d - N\omega \frac{\Psi_m}{L_q} + f_2 \end{aligned}

化简上式可得:

i^˙d=vdLdRSLdid+LqLdNωiq+Kdsign(sd)i^˙q=vqLqRSLqiq+LdLqNωidNωΨmLq+Kqsign(sq)\begin{aligned} \dot{\hat{i}}_d &= \frac{v_d}{L_d} - \frac{R_S}{L_d}i_d + \frac{L_q}{L_d}N\omega i_q + K_d \mathrm{sign}(s_d) \\ \dot{\hat{i}}_q &= \frac{v_q}{L_q} - \frac{R_S}{L_q}i_q + \frac{L_d}{L_q}N\omega i_d - N \omega \frac{\Psi_m}{L_q} + K_q \mathrm{sign}(s_q) \end{aligned}
CAUTION

此处未能推导出论文中提及的滑模观测器公式,可能是推导错误或者论文中的错误,直接使用论文中的结论进行实验,结果尚未验证。论文中,原传递函数为:

Gd(s)=L^qNω+β1L^qNωsL^dRS+L^qs+β2RSsL^qGq(s)Gq(s)=L^dNω+β2L^dNωsL^qRS+L^ds+β1RSsL^dGd(s)\begin{aligned} G_d^{'}(s) &= \frac{\hat{L}_q N \omega + \frac{\beta_1 \hat{L}_q N \omega}{s\hat{L}_d}}{R_S + \hat{L}_q s + \frac{\beta_2 R_S}{s\hat{L}_q}} G_q(s) \\ G_q^{'}(s) &= \frac{\hat{L}_d N \omega + \frac{\beta_2 \hat{L}_d N \omega}{s\hat{L}_q}}{R_S + \hat{L}_d s + \frac{\beta_1 R_S}{s\hat{L}_d}} G_d(s) \\ \end{aligned}
NOTE

本部分解耦控制与滑模观测器参考基于滑模观测器的永磁同步电机电流偏差解耦控制

力反馈实现#

我们设计完电流的闭环控制以后,可以将电流环路作为一个有一阶延迟的理想系统,通过改变电流可以实现更改电机的输出力矩,让我们回到电机的力矩与电流的方程:

T=32N(iq(idLd+Ψm)idiqLq)=32N(LdLq)idiq+32NΨmiq\begin{aligned} T &= \frac32 N(i_q(i_d L_d + \Psi_m) - i_d i_q L_q) \\ &= \frac32 N(L_d - L_q)i_d i_q + \frac32 N\Psi_m i_q \end{aligned}

让我们分两种情况分析,当Ld=LqL_d = L_q时,id=0i_d = 0即可实现最大转矩电流比,此时有:

T=32NΨmiqT = \frac32 N\Psi_m i_q

转矩和q轴电流呈线性关系,即我们通过读取电机的电流可以估计电机的输出转矩。再根据机械转动平衡方程,可以得到以下公式:

T=Jω˙+Bω+TL+TdT = J \dot{\omega} + B \omega + T_L + T_d

其中TLT_L为负载转矩,TdT_d为未建模的干扰转矩。为了消除干扰转矩的影响,我们可以通过设计鲁棒速度控制器来对干扰转矩进行反向建模。

首先,给出状态空间方程:

ω˙=BJω+1J(TTLTd)\dot{\omega} = -\frac{B}{J} \omega + \frac{1}{J}(T - T_L - T_d)

在电机空载时,TL=0T_L = 0,此时我们可以先忽略干扰项进行控制器设计:

T=KωT = -K\omega

使用LQR离线求解状态反馈矩阵KK,定义滑模面s=Gω+zs = G\omega + z,对滑模面求导得到趋近律:

s˙=Gω˙+z˙\dot{s} = G\dot{\omega} + \dot{z}

配置滑模面和趋近律使其初始位置为0,于是有:

z˙=Gω˙=G(BJω+1J(TTd))\dot{z} = -G\dot{\omega} = -G(-\frac{B}{J}\omega + \frac{1}{J}(T - T_d))

由于TdT_d是未知项,这里使用近似法直接去除TdT_d项来保持z˙\dot{z}全程已知。

z˙=Gω˙G(BJω+1JT)\dot{z} = -G\dot{\omega} \approx -G(-\frac{B}{J}\omega + \frac{1}{J}T)

z˙\dot{z}带入滑模面,可得:

s=Gω+0inf(G(BJω+1JT))dt+(Gω˙0)s = G\omega + \int_0^{\inf} (-G(-\frac{B}{J}\omega + \frac{1}{J}T))dt + (-G\dot{\omega}_0)

对于趋近律,有:

s˙=Gω˙G(BJω+1JT)=GJTd\begin{aligned} \dot{s} &= G\dot{\omega} - G(-\frac{B}{J}\omega + \frac{1}{J}T) \\ &= \frac{G}{J}T_d \end{aligned}

G=JG = J时,s˙=Td\dot{s} = T_d,为了消除该干扰项,我们可以修改控制率:

T=Kωρss+0.001T = -K\omega -\rho \frac{s}{|s| + 0.001}

ρ\rho为干扰上界,这里不再证明控制器的稳定性。控制电机保持低速旋转,通过读取输出力矩可以得到近似干扰力矩TdT_d,使用数值法对该干扰力矩进行建模并通过前馈补偿消除干扰力矩。

FOC电机控制
https://uon-hari.github.io/posts/foc/
Author
Zihao Zheng
Published at
2024-07-17