1 MPC原理
模型预测控制(Model Predictive Control, MPC)是近年来被广泛讨论的反馈控制策略。模型预测控制的机理可描述为:在每一采样时刻,根据获得的当前测量信息,在线求解一个有限时域开环优化问题,并将得到的控制序列的第一个元素作用于被控对象。在下一个采样时刻,重复上述过程,用新的测量值刷新优化问题并重新求解1。
MPC与传统控制方法相比的几大优势
- MPC在线求解开环优化问题,获得最优控制律。而传统控制方法通常离线求解一个反馈控制律,并将其一直作用于系统。
- 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(k−1)(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(k−1),将其作为预测系统未来动态的起点,预测未来
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+1∣k)=Δx(k+2∣k)==Δx(k+p∣k)==AΔx(k)+BuΔu(k)+BdΔd(k)AΔx(k+1∣k)+BuΔu(k+1)+BdΔd(k+1)A2Δx(k)+ABuΔu(k)+BuΔu(k+1)+ABdΔd(k)⋮AΔx(k+p−1∣k)+BuΔu(k+p−1)+BdΔd(k+p−1)ApΔx(k)+Ap−1BuΔu(k)+Ap−2BuΔu(k+1)+...+Ap−mBuΔu(k+m−1)+Ap−1BdΔ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+1∣k)==yc(k+p∣k)==CcΔx(k+1∣k)+yc(k)CcAΔx(k)+CcBuΔu(k)+CcBdΔd(k)+yc(k)⋮CcΔx(k+p∣k)+yc(k+p−1∣k)i=1∑pCcAiΔx(k)+i=1∑pCcAi−1BuΔu(k)+i=1∑p−1CcAi−1BuΔu(k+1)+...+i=1∑p−m+1CcAi−1BuΔu(k+m−1)+i=1∑pCcAi−1BdΔ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+1∣k)=⎣⎢⎢⎢⎡yc(k+1∣k)yc(k+2∣k)⋮yc(k+p∣k)⎦⎥⎥⎥⎤p×1,ΔU(k)=⎣⎢⎢⎢⎡Δu(k)Δu(k+1)⋮Δu(k+m−1)⎦⎥⎥⎥⎤m×1(5)
注:矩阵的下标表示矩阵中向量或标量的个数。例如,上式中,
p
×
1
p\times1
p×1仅表示
Y
c
(
k
+
1
∣
k
)
Y_c(k+1|k)
Yc(k+1∣k)矩阵中
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+1∣k)=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=⎣⎢⎢⎢⎡CcA∑i=12CcAi⋮∑i=1pCcAi⎦⎥⎥⎥⎤p×1,I=⎣⎢⎢⎢⎡Inc×ncInc×nc⋮Inc×nc⎦⎥⎥⎥⎤p×1,Sd=⎣⎢⎢⎢⎡CcBd∑i=12CcAi−1Bd⋮∑i=1pCcAi−1Bd⎦⎥⎥⎥⎤p×1,Su=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡CcBu∑i=12CcAi−1Bu⋮∑i=1mCcAi−1Bu⋮∑i=1pCcAi−1Bu0CcBu⋮∑i=1m−1CcAi−1Bu⋮∑i=1p−1CcAi−1Bu00⋮⋯⋮⋯⋯⋯⋱⋯⋱⋯00⋮CcBu⋮∑i=1p−m+1CcAi−1Bu⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤p×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=1∑p∥∥Γy,iyc(k+i∣k)−r(k+1)∥∥2+i=1∑m∥∥Γu,iΔu(k+i−1)∥∥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+1∣k)Δx(k∣k)yc(k+i∣k)=AΔx(k+i∣k)+BuΔu(k+i)+BdΔd(k+i),=Δx(k),=CcΔx(k+i∣k)+yc(k+i−1∣k)(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+1∣k)−R(k+1)∥∥2+∥∥ΓuΔU(k)∥∥2(11)
其中,
Y
p
(
k
+
1
∣
k
)
Y_p(k+1|k)
Yp(k+1∣k)由式
(
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+1∣k)−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+1∣k))0⎦⎤Az
[ΓySuΓu]ΔU(k)−b
[Ep(k+1∣k)0]Az−b(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+1∣k)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+1∣k)=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ρ,其中ρ=Az−b(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(Az−b)=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+1∣k)(23)
其中
E
p
(
k
+
1
∣
k
)
E_p(k+1|k)
Ep(k+1∣k)由式
(
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×nc0⋯0]1×mΔU∗(k)[Inc×nc0⋯0]1×m(SuTΓyTΓySu+ΓuTΓu)−1SuTΓyTΓyEp(k+1∣k)(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×nc0⋯0]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+1∣k)(26)
算法总结:
- 初始化:设定预测时域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。
- k ≥ 0 k≥0 k≥0时刻,得到测量值 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(k−1)。
- 由式 ( 18 ) \href{#eq18}{(18)} (18)计算误差 E p ( k + 1 ∣ k ) E_p(k+1|k) Ep(k+1∣k)。
- 由式 ( 26 ) \href{#eq26}{(26)} (26)计算控制变量增量 Δ u ( k ) \Delta u(k) Δu(k)。
- 将 u ( k ) = u ( k − 1 ) + Δ u ( k ) u(k)=u(k-1)+\Delta u(k) u(k)=u(k−1)+Δu(k)作用于系统。
- 在 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+Ldud−LqωeLdid−LqRsiq+Lquq−Lqω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=[1−LdRsTs−LqωeLdTsLdωeLqTs1−LqRsTs],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(k−1),C=[1001](30)
d轴电流给定为0,给定参考速度为100rad/s,负载转矩0.25Nm,matlab仿真结果如下。稳定时,d轴电流为0,q轴电流为7.3369A,机械角速度为100rad/s。
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+Ldud−LqpnωmLdid−LqRsiq+Lquq−Lqpnωmψm2J3pnψmiq+2J3pn(Ld−Lq)idiq−JBωm−JTl(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+Lsud−pnωmid−LsRsiq+Lsuq−Lspnωmψm2J3pnψmiq−JBωm−JTl(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˙=⎣⎢⎡−LsRs000−LsRs2J3pnψm0−Lspnψm−JB⎦⎥⎤x+⎣⎡−Ls1000−Ls10⎦⎤u+非线性项
⎣⎡pnωmiq−pnωmid0⎦⎤+⎣⎡00−JTl⎦⎤(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˙=∂x∂fΔx+∂u∂fΔ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˙=⎣⎢⎡−LsRs−pnωm,t0pnωm,t−LsRs2J3pnψmpniq,t−Lspnψm−pnid,t−JB⎦⎥⎤Δx+⎣⎡−Ls1000−Ls10⎦⎤Δ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=⎣⎢⎡1−LsRsTs−pnωm,tTs0pnωm,tTs1−LsRsTs2J3pnψmTspniq,tTs−LspnψmTs−pnid,tTs1−JBTs⎦⎥⎤,Bu=⎣⎡−LsTs000−LsTs0⎦⎤(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(k−1),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(k−1)(38)
d轴电流给定为0,给定参考速度为100rad/s,负载转矩0.25Nm,matlab仿真结果如下。稳定时,d轴电流为0,q轴电流为7.3366A,机械角速度为99.8453rad/s。
matlab仿真参考代码。
5 参考文献
陈虹. 模型预测控制[M]. 北京:科学出版社, 2013. ↩︎