永磁同步电机控制系统——模型预测控制(MPC)

1 MPC原理

模型预测控制(Model Predictive Control, MPC)是近年来被广泛讨论的反馈控制策略。模型预测控制的机理可描述为:在每一采样时刻,根据获得的当前测量信息,在线求解一个有限时域开环优化问题,并将得到的控制序列的第一个元素作用于被控对象。在下一个采样时刻,重复上述过程,用新的测量值刷新优化问题并重新求解1

MPC与传统控制方法相比的几大优势

  1. MPC在线求解开环优化问题,获得最优控制律。而传统控制方法通常离线求解一个反馈控制律,并将其一直作用于系统。
  2. MPC在处理非线性、等式约束和不等式约束问题上具有较大优势。

2 MPC求解无约束问题步骤

为引入积分以减小或者消除静态误差,使用增量式状态空间模型:
Δ x ( k + 1 ) = A Δ x ( k ) + B u Δ u ( k ) + B d Δ d ( k ) (1) \Delta x(k+1)=A\Delta x(k)+B_u\Delta u(k)+B_d\Delta d(k) \tag {1} Δx(k+1)=AΔx(k)+BuΔu(k)+BdΔd(k)(1)

y c ( k ) = C c Δ x ( k ) + y c ( k − 1 ) (2) y_c(k)=C_c\Delta x(k)+y_c(k-1) \tag 2 yc(k)=CcΔx(k)+yc(k1)(2)

在当前时刻 k k k,测量值为 x ( k ) x(k) x(k),计算 Δ x ( k ) = x ( k ) − x ( k − 1 ) \Delta x(k)=x(k)-x(k-1) Δx(k)=x(k)x(k1),将其作为预测系统未来动态的起点,预测未来 p p p步的状态增量。
Δ x ( k + 1 ∣ k ) = A Δ x ( k ) + B u Δ u ( k ) + B d Δ d ( k ) Δ x ( k + 2 ∣ k ) = A Δ x ( k + 1 ∣ k ) + B u Δ u ( k + 1 ) + B d Δ d ( k + 1 ) = A 2 Δ x ( k ) + A B u Δ u ( k ) + B u Δ u ( k + 1 ) + A B d Δ d ( k ) ⋮ Δ x ( k + p ∣ k ) = A Δ x ( k + p − 1 ∣ k ) + B u Δ u ( k + p − 1 ) + B d Δ d ( k + p − 1 ) = A p Δ x ( k ) + A p − 1 B u Δ u ( k ) + A p − 2 B u Δ u ( k + 1 ) + . . . + A p − m B u Δ u ( k + m − 1 ) + A p − 1 B d Δ d ( k ) (3) \begin{aligned} \Delta x(k+1|k)=&A\Delta x(k)+B_u\Delta u(k)+B_d\Delta d(k)\\ \Delta x(k+2|k)=&A\Delta x(k+1|k)+B_u\Delta u(k+1)+B_d\Delta d(k+1)\\ =&A^2\Delta x(k)+AB_u\Delta u(k)+B_u\Delta u(k+1)+AB_d\Delta d(k)\\ &\vdots\\ \Delta x(k+p|k)=&A\Delta x(k+p-1|k)+B_u\Delta u(k+p-1)+B_d\Delta d(k+p-1)\\ =&A^p\Delta x(k)+A^{p-1}B_u\Delta u(k)+A^{p-2}B_u\Delta u(k+1)\\ &+...+A^{p-m}B_u\Delta u(k+m-1)+A^{p-1}B_d\Delta d(k) \end{aligned} \tag 3 Δx(k+1k)=Δx(k+2k)==Δx(k+pk)==AΔx(k)+BuΔu(k)+BdΔd(k)AΔx(k+1k)+BuΔu(k+1)+BdΔd(k+1)A2Δx(k)+ABuΔu(k)+BuΔu(k+1)+ABdΔd(k)AΔx(k+p1k)+BuΔu(k+p1)+BdΔd(k+p1)ApΔx(k)+Ap1BuΔu(k)+Ap2BuΔu(k+1)+...+ApmBuΔu(k+m1)+Ap1BdΔd(k)(3)
进一步,由输出方程可以预测未来 p p p步被控输出
y c ( k + 1 ∣ k ) = C c Δ x ( k + 1 ∣ k ) + y c ( k ) = C c A Δ x ( k ) + C c B u Δ u ( k ) + C c B d Δ d ( k ) + y c ( k ) ⋮ y c ( k + p ∣ k ) = C c Δ x ( k + p ∣ k ) + y c ( k + p − 1 ∣ k ) = ∑ i = 1 p C c A i Δ x ( k ) + ∑ i = 1 p C c A i − 1 B u Δ u ( k ) + ∑ i = 1 p − 1 C c A i − 1 B u Δ u ( k + 1 ) + . . . + ∑ i = 1 p − m + 1 C c A i − 1 B u Δ u ( k + m − 1 ) + ∑ i = 1 p C c A i − 1 B d Δ d ( k ) + y c ( k ) (4) \begin{aligned} y_c(k+1|k)=&C_c\Delta x(k+1|k)+y_c(k)\\ =&C_cA\Delta x(k)+C_cB_u\Delta u(k)+C_cB_d\Delta d(k)+y_c(k)\\ &\vdots\\ y_c(k+p|k)=&C_c\Delta x(k+p|k)+y_c(k+p-1|k)\\= &\sum_{i=1}^pC_cA^i\Delta x(k)+\sum_{i=1}^pC_cA^{i-1}B_u\Delta u(k)\\ &+\sum_{i=1}^{p-1}C_cA^{i-1}B_u\Delta u(k+1)+...\\ &+\sum_{i=1}^{p-m+1}C_cA^{i-1}B_u\Delta u(k+m-1)\\ &+\sum_{i=1}^{p}C_cA^{i-1}B_d\Delta d(k)+y_c(k) \end{aligned} \tag 4 yc(k+1k)==yc(k+pk)==CcΔx(k+1k)+yc(k)CcAΔx(k)+CcBuΔu(k)+CcBdΔd(k)+yc(k)CcΔx(k+pk)+yc(k+p1k)i=1pCcAiΔx(k)+i=1pCcAi1BuΔu(k)+i=1p1CcAi1BuΔu(k+1)+...+i=1pm+1CcAi1BuΔu(k+m1)+i=1pCcAi1BdΔd(k)+yc(k)(4)
定义 p p p步预测输出向量和 m m m步预测输入向量为:

Y p ( k + 1 ∣ k ) = [ y c ( k + 1 ∣ k ) y c ( k + 2 ∣ k ) ⋮ y c ( k + p ∣ k ) ] p × 1 , Δ U ( k ) = [ Δ u ( k ) Δ u ( k + 1 ) ⋮ Δ u ( k + m − 1 ) ] m × 1 (5) Y_p(k+1|k)=\begin{bmatrix} y_c(k+1|k) \\ y_c(k+2|k)\\\vdots\\y_c(k+p|k) \\ \end{bmatrix}_{p\times1}, \Delta U(k)=\begin{bmatrix}\Delta u(k) \\ \Delta u(k+1)\\\vdots\\\Delta u(k+m-1) \\ \end{bmatrix}_{m\times1} \tag 5 Yp(k+1k)=yc(k+1k)yc(k+2k)yc(k+pk)p×1,ΔU(k)=Δu(k)Δu(k+1)Δu(k+m1)m×1(5)
注:矩阵的下标表示矩阵中向量或标量的个数。例如,上式中, p × 1 p\times1 p×1仅表示 Y c ( k + 1 ∣ k ) Y_c(k+1|k) Yc(k+1k)矩阵中 y c y_c yc的个数。

系统未来 p p p步预测输出为:

Y p ( k + 1 ∣ k ) = S x Δ x ( k ) + I y c ( k ) + S d Δ d ( k ) + S u Δ U ( k ) (6) Y_p(k+1|k)=S_x\Delta x(k)+\Iota y_c(k)+S_d\Delta d(k)+S_u\Delta U(k) \tag 6 Yp(k+1k)=SxΔx(k)+Iyc(k)+SdΔd(k)+SuΔU(k)(6)
其中,

S x = [ C c A ∑ i = 1 2 C c A i ⋮ ∑ i = 1 p C c A i ] p × 1 , I = [ I n c × n c I n c × n c ⋮ I n c × n c ] p × 1 , S d = [ C c B d ∑ i = 1 2 C c A i − 1 B d ⋮ ∑ i = 1 p C c A i − 1 B d ] p × 1 , S u = [ C c B u 0 0 ⋯ 0 ∑ i = 1 2 C c A i − 1 B u C c B u 0 ⋯ 0 ⋮ ⋮ ⋮ ⋱ ⋮ ∑ i = 1 m C c A i − 1 B u ∑ i = 1 m − 1 C c A i − 1 B u ⋯ ⋯ C c B u ⋮ ⋮ ⋮ ⋱ ⋮ ∑ i = 1 p C c A i − 1 B u ∑ i = 1 p − 1 C c A i − 1 B u ⋯ ⋯ ∑ i = 1 p − m + 1 C c A i − 1 B u ] p × m (7) S_x=\begin{bmatrix}C_cA \\ \sum_{i=1}^2C_cA^i\\\vdots\\\sum_{i=1}^pC_cA^i\end{bmatrix}_{p\times1}, \Iota=\begin{bmatrix}I_{n_c\times n_c} \\ I_{n_c\times n_c}\\\vdots\\I_{n_c\times n_c}\end{bmatrix}_{p\times1}, S_d=\begin{bmatrix}C_cB_d \\ \sum_{i=1}^2C_cA^{i-1}B_d\\\vdots\\\sum_{i=1}^pC_cA^{i-1}B_d\end{bmatrix}_{p\times1},\\ S_u=\begin{bmatrix}C_cB_u & 0 & 0 &\cdots&0\\ \sum_{i=1}^2C_cA^{i-1}B_u & C_cB_u & 0 & \cdots & 0\\\vdots&\vdots&\vdots&\ddots&\vdots\\\sum_{i=1}^mC_cA^{i-1}B_u & \sum_{i=1}^{m-1}C_cA^{i-1}B_u&\cdots&\cdots&C_cB_u\\\vdots&\vdots&\vdots&\ddots&\vdots\\\sum_{i=1}^pC_cA^{i-1}B_u & \sum_{i=1}^{p-1}C_cA^{i-1}B_u&\cdots&\cdots&\sum_{i=1}^{p-m+1}C_cA^{i-1}B_u\end{bmatrix}_{p\times m} \tag {7} Sx=CcAi=12CcAii=1pCcAip×1,I=Inc×ncInc×ncInc×ncp×1,Sd=CcBdi=12CcAi1Bdi=1pCcAi1Bdp×1,Su=CcBui=12CcAi1Bui=1mCcAi1Bui=1pCcAi1Bu0CcBui=1m1CcAi1Bui=1p1CcAi1Bu0000CcBui=1pm+1CcAi1Bup×m(7)
接下来,要明确优化问题的数学描述。我们希望被控输出接近参考输入,同时希望控制变化不要太大,建立如下目标函数:
J = ∑ i = 1 p ∥ Γ y , i y c ( k + i ∣ k ) − r ( k + 1 ) ∥ 2 + ∑ i = 1 m ∥ Γ u , i Δ u ( k + i − 1 ) ∥ 2 (8) J=\sum_{i=1}^p\begin{Vmatrix}\Gamma_{y,i}y_c(k+i|k)-r(k+1)\end{Vmatrix}^2 +\sum_{i=1}^m\begin{Vmatrix}\Gamma_{u,i}\Delta u(k+i-1)\end{Vmatrix}^2 \tag 8 J=i=1pΓy,iyc(k+ik)r(k+1)2+i=1mΓu,iΔu(k+i1)2(8)
其中, Γ y , i = d i a g ( Γ y 1 , i , Γ y 2 , i , ⋯   , Γ y n c , i ) , Γ u , i = d i a g ( Γ u 1 , i , Γ u 2 , i , ⋯   , Γ u n u , i ) \Gamma_{y,i}=diag(\Gamma_{y_{1},i},\Gamma_{y_{2},i},\cdots,\Gamma_{y_{nc},i}),\Gamma_{u,i}=diag(\Gamma_{u_{1},i},\Gamma_{u_{2},i},\cdots,\Gamma_{u_{nu},i}) Γy,i=diag(Γy1,i,Γy2,i,,Γync,i),Γu,i=diag(Γu1,i,Γu2,i,,Γunu,i) Γ y j , i \Gamma_{y_{j},i} Γyj,i是在预测时刻 i i i对预测控制输出第 j j j个分量误差的加权因子,加权因子越大,表明期望控制输出越接近给定的参考输入; Γ u j , i \Gamma_{u_{j},i} Γuj,i是在预测时刻 i i i对控制增量第 j j j个分量的加权因子,控制加权因子越大,表明期望的控制动作变化越小。

优化问题1:
min ⁡ Δ U ( k ) J ( x ( k ) , Δ U ( k ) , m , p ) (9) \min\limits_{\Delta U(k)}J(x(k),\Delta U(k),m,p) \tag 9 ΔU(k)minJ(x(k),ΔU(k),m,p)(9)
满足动力学方程 ( i = 0 , 1 , ⋯   , p ) (i=0,1,\cdots,p) (i=0,1,,p)
Δ x ( k + i + 1 ∣ k ) = A Δ x ( k + i ∣ k ) + B u Δ u ( k + i ) + B d Δ d ( k + i ) , Δ x ( k ∣ k ) = Δ x ( k ) , y c ( k + i ∣ k ) = C c Δ x ( k + i ∣ k ) + y c ( k + i − 1 ∣ k ) (10) \begin{aligned} \Delta x(k+i+1|k)&=A\Delta x(k+i|k)+B_u\Delta u(k+i)+B_d\Delta d(k+i),\\ \Delta x(k|k) &= \Delta x(k),\\ y_c(k+i|k)&=C_c\Delta x(k+i|k)+y_c(k+i-1|k) \end{aligned} \tag {10} Δx(k+i+1k)Δx(kk)yc(k+ik)=AΔx(k+ik)+BuΔu(k+i)+BdΔd(k+i),=Δx(k),=CcΔx(k+ik)+yc(k+i1k)(10)
其中,

J ( x ( k ) , Δ U ( k ) , m , p ) = ∥ Γ y Y p ( k + 1 ∣ k ) − R ( k + 1 ) ∥ 2 + ∥ Γ u Δ U ( k ) ∥ 2 (11) \begin{aligned} J(x(k),\Delta U(k),m,p)=&\begin{Vmatrix}\Gamma_{y}Y_p(k+1|k)-R(k+1)\end{Vmatrix}^2 +\begin{Vmatrix}\Gamma_{u}\Delta U(k)\end{Vmatrix}^2 \end{aligned} \tag {11} J(x(k),ΔU(k),m,p)=ΓyYp(k+1k)R(k+1)2+ΓuΔU(k)2(11)
其中, Y p ( k + 1 ∣ k ) Y_p(k+1|k) Yp(k+1k)由式 ( 5 ) \href{#eq5}{(5)} (5)给出,加权矩阵为:
Γ y = d i a g ( Γ y , 1 , Γ y , 2 , ⋯   , Γ y , p ) , Γ u = d i a g ( Γ u , 1 , Γ u , 2 , ⋯   , Γ u , m ) (12) \Gamma_{y}=diag(\Gamma_{y,1},\Gamma_{y,2},\cdots,\Gamma_{y,p}),\\ \Gamma_{u}=diag(\Gamma_{u,1},\Gamma_{u,2},\cdots,\Gamma_{u,m}) \tag {12} Γy=diag(Γy,1,Γy,2,,Γy,p),Γu=diag(Γu,1,Γu,2,,Γu,m)(12)
参考输入序列为:
R ( k + 1 ) = [ r ( k + 1 ) r ( k + 2 ) ⋮ r ( k + p ) ] (13) R(k+1)=\begin{bmatrix}r(k+1)\\r(k+2)\\\vdots\\r(k+p)\end{bmatrix} \tag {13} R(k+1)=r(k+1)r(k+2)r(k+p)(13)
求解1:

为方便求解,定义辅助变量:

ρ = [ Γ y Y p ( k + 1 ∣ k ) − R ( k + 1 ) Γ u Δ U ( k ) ] (14) \rho = \begin{bmatrix}\Gamma_{y}Y_p(k+1|k)-R(k+1)\\ \Gamma_{u}\Delta U(k) \end{bmatrix} \tag{14} ρ=[ΓyYp(k+1k)R(k+1)ΓuΔU(k)](14)
则目标函数 ( 11 ) \href{#eq11}{(11)} (11)改写为:
J ( x ( k ) , Δ U ( k ) , m , p ) = ρ T ρ (15) J(x(k),\Delta U(k),m,p)=\rho^T\rho \tag {15} J(x(k),ΔU(k),m,p)=ρTρ(15)
将预测方程 ( 6 ) \href{#eq6}{(6)} (6)代入 ( 14 ) \href{#eq14}{(14)} (14)
ρ = [ Γ y ( S x Δ x ( k ) + I y c ( k ) + S d Δ d ( k ) + S u Δ U ( k ) ) − R ( k + 1 ) Γ u Δ U ( k ) ] = [ Γ y S u Γ u ] Δ U ( k ) − [ Γ y ( R ( k + 1 ) − S x Δ x ( k ) − I y c ( k ) − S d Δ d ( k ) ⏞ E p ( k + 1 ∣ k ) ) 0 ] = [ Γ y S u Γ u ] Δ U ( k ) ⏟ A z − [ E p ( k + 1 ∣ k ) 0 ] ⏟ b = A z − b (16) \begin{aligned} \rho = & \begin{bmatrix} \Gamma_{y}(S_x\Delta x(k)+\Iota y_c(k)+S_d\Delta d(k)+S_u\Delta U(k))-R(k+1)\\ \Gamma_{u}\Delta U(k) \end{bmatrix}\\ =&\begin{bmatrix}\Gamma_{y}S_u\\\Gamma_{u}\end{bmatrix}\Delta U(k)-\begin{bmatrix}\Gamma_{y}(\overbrace{R(k+1)-S_x\Delta x(k)-\Iota y_c(k)-S_d\Delta d(k)}^{E_p(k+1|k)})\\0\end{bmatrix}\\ =&\underbrace{\begin{bmatrix}\Gamma_{y}S_u\\\Gamma_{u}\end{bmatrix}\Delta U(k)}_{Az}-\underbrace{\begin{bmatrix}E_p(k+1|k)\\0\end{bmatrix}}_b\\ =&Az-b \end{aligned} \tag {16} ρ====[Γy(SxΔx(k)+Iyc(k)+SdΔd(k)+SuΔU(k))R(k+1)ΓuΔU(k)][ΓySuΓu]ΔU(k)Γy(R(k+1)SxΔx(k)Iyc(k)SdΔd(k) Ep(k+1k))0Az [ΓySuΓu]ΔU(k)b [Ep(k+1k)0]Azb(16)

其中,

z = Δ U ( k ) , A = [ Γ y S u Γ u ] , b = [ E p ( k + 1 ∣ k ) 0 ] (17) z=\Delta U(k), A=\begin{bmatrix}\Gamma_{y}S_u\\\Gamma_{u}\end{bmatrix}, b=\begin{bmatrix}E_p(k+1|k)\\0\end{bmatrix} \tag {17} z=ΔU(k)A=[ΓySuΓu],b=[Ep(k+1k)0](17)

E p ( k + 1 ∣ k ) = R ( k + 1 ) − S x Δ x ( k ) − I y c ( k ) − S d Δ d ( k ) (18) E_p(k+1|k)=R(k+1)-S_x\Delta x(k)-\Iota y_c(k)-S_d\Delta d(k) \tag {18} Ep(k+1k)=R(k+1)SxΔx(k)Iyc(k)SdΔd(k)(18)

因此优化问题1变为:
min ⁡ z ρ T ρ , 其 中 ρ = A z − b (19) \min\limits_{z}\rho^T\rho,其中\rho=Az-b \tag {19} zminρTρ,ρ=Azb(19)
极值条件为:
d ρ T ρ d z = 2 ( d ρ d z ) T , ρ = 2 A T ( A z − b ) = 0 (20) \frac{{\rm d}\rho^T\rho}{{\rm d}z}=2(\frac{{\rm d}\rho}{{\rm d}z})^T,\rho=2A^T(Az-b)=0 \tag {20} dzdρTρ=2(dzdρ)T,ρ=2AT(Azb)=0(20)
得极值解为

z ∗ = ( A T A ) − 1 A T b (21) z^*=(A^TA)^{-1}A^Tb \tag {21} z=(ATA)1ATb(21)
又由于
d 2 ( ρ T ρ ) d z 2 = 2 A T A > 0 (22) \frac{{\rm d}^2(\rho^T\rho)}{{\rm d}z^2}=2A^TA>0 \tag {22} dz2d2(ρTρ)=2ATA>0(22)
则式 ( 21 ) \href{#eq21}{(21)} (21)是取得最小值的解。将式 ( 17 ) \href{#eq17}{(17)} (17)代入式 ( 21 ) \href{#eq21}{(21)} (21),得到优化问题1的最优解,即 k k k时刻的最优控制序列为
Δ U ∗ ( k ) = ( S u T Γ y T Γ y S u + Γ u T Γ u ) − 1 S u T Γ y T Γ y E p ( k + 1 ∣ k ) (23) \Delta U^*(k)=(S_u^T\Gamma_y^T\Gamma_yS_u+\Gamma_u^T\Gamma_u)^{-1}S_u^T\Gamma_y^T\Gamma_yE_p(k+1|k) \tag {23} ΔU(k)=(SuTΓyTΓySu+ΓuTΓu)1SuTΓyTΓyEp(k+1k)(23)
其中 E p ( k + 1 ∣ k ) E_p(k+1|k) Ep(k+1k)由式 ( 18 ) \href{#eq18}{(18)} (18)计算。

将最优控制序列的第一个元素将作用于系统,即
Δ u ( k ) = [ I n c × n c 0 ⋯ 0 ] 1 × m Δ U ∗ ( k ) = [ I n c × n c 0 ⋯ 0 ] 1 × m ( S u T Γ y T Γ y S u + Γ u T Γ u ) − 1 S u T Γ y T Γ y E p ( k + 1 ∣ k ) (24) \begin{aligned} \Delta u(k) =&\begin{bmatrix}I_{n_c\times n_c}& 0 & \cdots & 0\end{bmatrix}_{1\times m}\Delta U*(k)\\ =&\begin{bmatrix}I_{n_c\times n_c}& 0 & \cdots & 0\end{bmatrix}_{1\times m}(S_u^T\Gamma_y^T\Gamma_yS_u+\Gamma_u^T\Gamma_u)^{-1}S_u^T\Gamma_y^T\Gamma_yE_p(k+1|k) \end{aligned} \tag {24} Δu(k)==[Inc×nc00]1×mΔU(k)[Inc×nc00]1×m(SuTΓyTΓySu+ΓuTΓu)1SuTΓyTΓyEp(k+1k)(24)
定义预测控制增益

K m p c = [ I n c × n c 0 ⋯ 0 ] 1 × m ( S u T Γ y T Γ y S u + Γ u T Γ u ) − 1 S u T Γ y T Γ y (25) K_{mpc}=\begin{bmatrix}I_{n_c\times n_c}& 0 & \cdots & 0\end{bmatrix}_{1\times m}(S_u^T\Gamma_y^T\Gamma_yS_u+\Gamma_u^T\Gamma_u)^{-1}S_u^T\Gamma_y^T\Gamma_y \tag {25} Kmpc=[Inc×nc00]1×m(SuTΓyTΓySu+ΓuTΓu)1SuTΓyTΓy(25)
那么控制增量可由下式计算

Δ u ( k ) = K m p c E p ( k + 1 ∣ k ) (26) \Delta u(k)=K_{mpc}E_p(k+1|k) \tag {26} Δu(k)=KmpcEp(k+1k)(26)
算法总结:

  1. 初始化:设定预测时域p和控制时域m,初始值 u ( − 1 ) = 0 u(-1)=0 u(1)=0 x ( − 1 ) = 0 x(-1)=0 x(1)=0,由式 ( 7 ) \href{#eq7}{(7)} (7)计算 S x S_x Sx I I I S d S_d Sd S u S_u Su,由式 ( 25 ) \href{#eq25}{(25)} (25)计算 K m p c K_{mpc} Kmpc
  2. k ≥ 0 k≥0 k0时刻,得到测量值 x ( k ) x(k) x(k) d ( k ) d(k) d(k)。由式 ( 2 ) \href{#eq2}{(2)} (2)计算 y c ( k ) y_c(k) yc(k),计算 Δ x ( k ) = x ( k ) − x ( k − 1 ) \Delta x(k)=x(k)-x(k-1) Δx(k)=x(k)x(k1)
  3. 由式 ( 18 ) \href{#eq18}{(18)} (18)计算误差 E p ( k + 1 ∣ k ) E_p(k+1|k) Ep(k+1k)
  4. 由式 ( 26 ) \href{#eq26}{(26)} (26)计算控制变量增量 Δ u ( k ) \Delta u(k) Δu(k)
  5. u ( k ) = u ( k − 1 ) + Δ u ( k ) u(k)=u(k-1)+\Delta u(k) u(k)=u(k1)+Δu(k)作用于系统。
  6. k + 1 k+1 k+1时刻,测量 x ( k + 1 ) x(k+1) x(k+1) d ( k + 1 ) d(k+1) d(k+1)的值,并且令 k = k + 1 k=k+1 k=k+1,返回第2步。
  • 注:如果采用时不变加权因子,则 K m p c K_{mpc} Kmpc可离线计算,否则 K m p c K_{mpc} Kmpc需在循环内进行,即在线计算

3 基于MPC的电流环设计

永磁同步电机电压方程如下:
d i d d t = − R s L d i d + ω e L q L d i q + u d L d d i q d t = − ω e L d L q i d − R s L q i q + u q L q − ω e ψ m L q (27) \begin{aligned} \frac {{\rm d}i_d}{{\rm d}t}=& -\frac {R_s} {L_d}i_d+\frac {\omega_eL_q}{L_d}i_q+\frac {u_d}{L_d}\\ \frac {{\rm d}i_q}{{\rm d}t}=& -\frac {\omega_eL_d}{L_q}i_d -\frac {R_s} {L_q}i_q+\frac {u_q}{L_q}-\frac {\omega_e\psi_m}{L_q} \end{aligned} \tag {27} dtdid=dtdiq=LdRsid+LdωeLqiq+LdudLqωeLdidLqRsiq+LquqLqωeψm(27)

离散化并改写成增量式
Δ x ( k + 1 ) = A Δ x ( k ) + B u Δ u ( k ) (28) \Delta x(k+1)=A\Delta x(k)+B_u\Delta u(k) \tag {28} Δx(k+1)=AΔx(k)+BuΔu(k)(28)
其中,
x = [ i d i q ] , u = [ u d u q ] A = [ 1 − R s T s L d ω e L q T s L d − ω e L d T s L q 1 − R s T s L q ] , B u = [ T s L d T s L q ] (29) x=\begin{bmatrix}i_d & i_q\end{bmatrix},u=\begin{bmatrix}u_d & u_q\end{bmatrix}\\ A=\begin{bmatrix}1-\frac {R_sT_s}{L_d} & \frac {\omega_eL_qT_s}{L_d} \\ -\frac {\omega_eL_dT_s}{L_q} & 1-\frac {R_sT_s}{L_q}\end{bmatrix}, B_u=\begin{bmatrix}\frac {T_s}{L_d} & \frac {T_s}{L_q}\end{bmatrix} \tag {29} x=[idiq],u=[uduq]A=[1LdRsTsLqωeLdTsLdωeLqTs1LqRsTs],Bu=[LdTsLqTs](29)
控制输出
y c ( k ) = C Δ x ( k ) + y c ( k − 1 ) , C = [ 1 0 0 1 ] (30) y_c(k)=C\Delta x(k)+y_c(k-1),C=\begin{bmatrix}1 & 0 \\ 0 & 1\end{bmatrix} \tag {30} yc(k)=CΔx(k)+yc(k1),C=[1001](30)
d轴电流给定为0,给定参考速度为100rad/s,负载转矩0.25Nm,matlab仿真结果如下。稳定时,d轴电流为0,q轴电流为7.3369A,机械角速度为100rad/s。
图1 电流环MPC仿真结果

4 基于MPC的电流环和速度环设计

结合永磁同步电机电气方程和机械方程:
d i d d t = − R s L d i d + p n ω m L q L d i q + u d L d d i q d t = − p n ω m L d L q i d − R s L q i q + u q L q − p n ω m ψ m L q d ω m d t = 3 p n ψ m 2 J i q + 3 p n 2 J ( L d − L q ) i d i q − B J ω m − T l J (31) \begin{aligned} \frac {{\rm d}i_d}{{\rm d}t}=& -\frac {R_s} {L_d}i_d+\frac {p_n\omega_mL_q}{L_d}i_q+\frac {u_d}{L_d}\\ \frac {{\rm d}i_q}{{\rm d}t}=& -\frac {p_n\omega_mL_d}{L_q}i_d -\frac {R_s} {L_q}i_q+\frac {u_q}{L_q}-\frac {p_n\omega_m\psi_m}{L_q}\\ \frac{{\rm d}\omega_m}{{\rm d}t}=&\frac{3p_n\psi_m}{2J}i_q+\frac{3p_n}{2J}(L_d-L_q)i_di_q-\frac{B}{J}\omega_m-\frac{T_l}{J} \end{aligned} \tag {31} dtdid=dtdiq=dtdωm=LdRsid+LdpnωmLqiq+LdudLqpnωmLdidLqRsiq+LquqLqpnωmψm2J3pnψmiq+2J3pn(LdLq)idiqJBωmJTl(31)
这里讨论表贴式永磁同步电机,即 L d = L q = L s L_d=L_q=L_s Ld=Lq=Ls
d i d d t = − R s L s i d + p n ω m i q + u d L s d i q d t = − p n ω m i d − R s L s i q + u q L s − p n ω m ψ m L s d ω m d t = 3 p n ψ m 2 J i q − B J ω m − T l J (32) \begin{aligned} \frac {{\rm d}i_d}{{\rm d}t}=& -\frac {R_s} {L_s}i_d+p_n\omega_mi_q+\frac {u_d}{L_s}\\ \frac {{\rm d}i_q}{{\rm d}t}=& -{p_n\omega_m}i_d -\frac {R_s} {L_s}i_q+\frac {u_q}{L_s}-\frac {p_n\omega_m\psi_m}{L_s}\\ \frac{{\rm d}\omega_m}{{\rm d}t}=&\frac{3p_n\psi_m}{2J}i_q-\frac{B}{J}\omega_m-\frac{T_l}{J} \end{aligned} \tag {32} dtdid=dtdiq=dtdωm=LsRsid+pnωmiq+LsudpnωmidLsRsiq+LsuqLspnωmψm2J3pnψmiqJBωmJTl(32)
x = [ i d i q ω m ] , u = [ u d u q ] x=\begin{bmatrix}i_d & i_q & \omega_m\end{bmatrix},u=\begin{bmatrix}u_d & u_q \end{bmatrix} x=[idiqωm],u=[uduq],则
x ˙ = [ − R s L s 0 0 0 − R s L s − p n ψ m L s 0 3 p n ψ m 2 J − B J ] x + [ − 1 L s 0 0 − 1 L s 0 0 ] u + [ p n ω m i q − p n ω m i d 0 ] ⏟ 非 线 性 项 + [ 0 0 − T l J ] (33) \dot x=\begin{bmatrix}-\frac{R_s}{L_s} & 0 & 0\\0 & -\frac{R_s}{L_s}&-\frac{p_n\psi_m}{L_s}\\0&\frac{3p_n\psi_m}{2J}&-\frac{B}{J}\end{bmatrix}x +\begin{bmatrix}-\frac{1}{L_s} & 0 \\0 & -\frac{1}{L_s}\\0&0\end{bmatrix}u +\underbrace{\begin{bmatrix}p_n\omega_mi_q\\-p_n\omega_mi_d\\0\end{bmatrix}}_{非线性项} +\begin{bmatrix}0\\0\\-\frac{T_l}{J}\end{bmatrix} \tag {33} x˙=LsRs000LsRs2J3pnψm0LspnψmJBx+Ls1000Ls10u+线 pnωmiqpnωmid0+00JTl(33)
假设 x ˙ = f ( x , u ) \dot x=f(x,u) x˙=f(x,u),根据全微分方程 Δ x ˙ = ∂ f ∂ x Δ x + ∂ f ∂ u Δ u \Delta \dot x=\frac{\partial f}{\partial x}\Delta x+\frac{\partial f}{\partial u}\Delta u Δx˙=xfΔx+ufΔu,将上式线性化:

Δ x ˙ = [ − R s L s p n ω m , t p n i q , t − p n ω m , t − R s L s − p n ψ m L s − p n i d , t 0 3 p n ψ m 2 J − B J ] Δ x + [ − 1 L s 0 0 − 1 L s 0 0 ] Δ u (34) \Delta \dot x=\begin{bmatrix}-\frac{R_s}{L_s} & p_n\omega_{m,t} & p_ni_{q,t}\\-p_n\omega_{m,t} & -\frac{R_s}{L_s}&-\frac{p_n\psi_m}{L_s}-p_ni_{d,t}\\0&\frac{3p_n\psi_m}{2J}&-\frac{B}{J}\end{bmatrix}\Delta x +\begin{bmatrix}-\frac{1}{L_s} & 0 \\0 & -\frac{1}{L_s}\\0&0\end{bmatrix}\Delta u \tag {34} Δx˙=LsRspnωm,t0pnωm,tLsRs2J3pnψmpniq,tLspnψmpnid,tJBΔx+Ls1000Ls10Δu(34)
对式 ( 34 ) \href{#eq34}{(34)} (34)离散化得到:
Δ x ( k + 1 ) = A Δ x ( k ) + B u Δ u ( k ) (35) \Delta x(k+1)=A\Delta x(k)+B_u\Delta u(k) \tag {35} Δx(k+1)=AΔx(k)+BuΔu(k)(35)
其中
A = [ 1 − R s L s T s p n ω m , t T s p n i q , t T s − p n ω m , t T s 1 − R s L s T s − p n ψ m L s T s − p n i d , t T s 0 3 p n ψ m 2 J T s 1 − B J T s ] , B u = [ − T s L s 0 0 − T s L s 0 0 ] (36) A=\begin{bmatrix}1-\frac{R_s}{L_s}T_s & p_n\omega_{m,t}T_s& p_ni_{q,t}T_s\\-p_n\omega_{m,t}T_s& 1-\frac{R_s}{L_s}T_s&-\frac{p_n\psi_m}{L_s}T_s-p_ni_{d,t}T_s\\0&\frac{3p_n\psi_m}{2J}T_s&1-\frac{B}{J}T_s\end{bmatrix}, B_u=\begin{bmatrix}-\frac{T_s}{L_s} & 0 \\0 & -\frac{T_s}{L_s}\\0&0\end{bmatrix} \tag {36} A=1LsRsTspnωm,tTs0pnωm,tTs1LsRsTs2J3pnψmTspniq,tTsLspnψmTspnid,tTs1JBTs,Bu=LsTs000LsTs0(36)
控制输出
y c ( k ) = C Δ x ( k ) + y c ( k − 1 ) , C = [ 1 0 0 1 ] (37) y_c(k)=C\Delta x(k)+y_c(k-1),C=\begin{bmatrix}1 & 0 \\ 0 & 1\end{bmatrix} \tag {37} yc(k)=CΔx(k)+yc(k1),C=[1001](37)
根据第2节中的算法步骤求解,得到控制变量
u ( k ) = Δ u ( k ) + u ( k − 1 ) (38) u(k)=\Delta u(k)+u(k-1) \tag {38} u(k)=Δu(k)+u(k1)(38)
d轴电流给定为0,给定参考速度为100rad/s,负载转矩0.25Nm,matlab仿真结果如下。稳定时,d轴电流为0,q轴电流为7.3366A,机械角速度为99.8453rad/s。
速度环和电流环MPC仿真结果
matlab仿真参考代码

5 参考文献


  1. 陈虹. 模型预测控制[M]. 北京:科学出版社, 2013. ↩︎

  • 14
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一大岐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值