上次写了一篇【Simulink】基于FCS-MPC的三相并网逆变器控制(Matlab Function),控制部分用 Matlab Function 写的,因实验室一般用 Stateflow,所以这篇把 Matlab Function 改成 Stateflow.
原理
电路原理图:
直流电压源与三相桥式逆变器相连,经过RL滤波器并网。
三相桥式逆变器包含6个IGBT,由于同相上下臂的IGBT不能同时导通,因此总共有 2 3 = 8 2^3=8 23=8 种状态,且有两个状态计算得到的代价函数相同。
FCS-MPC 步骤:
步骤1:根据系统结构建立合适的系统模型。
步骤2:采集系统三相电流、电网电压值。
步骤3:根据系统模型建立离散化预测函数,预测变换器输出电流或并网功率。
步骤4:建立合适的代价函数,将8种开关状态依次带入代价函数。
步骤5:通过枚举的方式选择使代价函数最小的矢量所对应的开关状态进行下一控制周期的控制。
状态0:
c
o
s
t
0
=
a
b
s
(
i
α
(
k
+
1
)
−
i
α
r
e
f
)
+
a
b
s
(
i
β
(
k
+
1
)
−
i
β
r
e
f
)
=
a
b
s
(
(
1
−
R
∗
T
s
/
L
)
∗
i
α
(
k
)
+
T
s
/
L
∗
(
0
−
e
α
(
k
)
)
−
i
r
α
)
+
a
b
s
(
(
1
−
R
∗
T
s
/
L
)
∗
i
β
(
k
)
+
T
s
/
L
∗
(
0
−
e
β
(
k
)
)
−
i
r
β
)
:
cost0=abs(iα(k+1)-iαref)+abs(iβ(k+1)-iβref)=abs((1-R*Ts/L)*iα(k)+Ts/L*(0-eα(k))-irα)+abs((1-R*Ts/L)*iβ(k)+Ts/L*(0-eβ(k))-irβ):
cost0=abs(iα(k+1)−iαref)+abs(iβ(k+1)−iβref)=abs((1−R∗Ts/L)∗iα(k)+Ts/L∗(0−eα(k))−irα)+abs((1−R∗Ts/L)∗iβ(k)+Ts/L∗(0−eβ(k))−irβ):
状态1:
c
o
s
t
1
=
a
b
s
(
i
α
(
k
+
1
)
−
i
α
r
e
f
)
+
a
b
s
(
i
β
(
k
+
1
)
−
i
β
r
e
f
)
=
a
b
s
(
(
1
−
R
∗
T
s
/
L
)
∗
i
α
(
k
)
+
T
s
/
L
∗
(
−
U
d
c
/
3
−
e
α
(
k
)
)
−
i
r
α
)
+
a
b
s
(
(
1
−
R
∗
T
s
/
L
)
∗
i
β
(
k
)
+
T
s
/
L
∗
(
−
U
d
c
/
s
q
r
t
(
3
)
−
e
β
(
k
)
)
−
i
r
β
)
:
cost1=abs(iα(k+1)-iαref)+abs(iβ(k+1)-iβref)=abs((1-R*Ts/L)*iα(k)+Ts/L*(-Udc/3-eα(k))-irα)+abs((1-R*Ts/L)*iβ(k)+Ts/L*(-Udc/sqrt(3)-eβ(k))-irβ):
cost1=abs(iα(k+1)−iαref)+abs(iβ(k+1)−iβref)=abs((1−R∗Ts/L)∗iα(k)+Ts/L∗(−Udc/3−eα(k))−irα)+abs((1−R∗Ts/L)∗iβ(k)+Ts/L∗(−Udc/sqrt(3)−eβ(k))−irβ):
状态2:
c
o
s
t
2
=
a
b
s
(
i
α
(
k
+
1
)
−
i
α
r
e
f
)
+
a
b
s
(
i
β
(
k
+
1
)
−
i
β
r
e
f
)
=
a
b
s
(
(
1
−
R
∗
T
s
/
L
)
∗
i
α
(
k
)
+
T
s
/
L
∗
(
−
U
d
c
/
3
−
e
α
(
k
)
)
−
i
r
α
)
+
a
b
s
(
(
1
−
R
∗
T
s
/
L
)
∗
i
β
(
k
)
+
T
s
/
L
∗
(
U
d
c
/
s
q
r
t
(
3
)
−
e
β
(
k
)
)
−
i
r
β
)
:
cost2=abs(iα(k+1)-iαref)+abs(iβ(k+1)-iβref)=abs((1-R*Ts/L)*iα(k)+Ts/L*(-Udc/3-eα(k))-irα)+abs((1-R*Ts/L)*iβ(k)+Ts/L*(Udc/sqrt(3)-eβ(k))-irβ):
cost2=abs(iα(k+1)−iαref)+abs(iβ(k+1)−iβref)=abs((1−R∗Ts/L)∗iα(k)+Ts/L∗(−Udc/3−eα(k))−irα)+abs((1−R∗Ts/L)∗iβ(k)+Ts/L∗(Udc/sqrt(3)−eβ(k))−irβ):
状态3:
c
o
s
t
3
=
a
b
s
(
i
α
(
k
+
1
)
−
i
α
r
e
f
)
+
a
b
s
(
i
β
(
k
+
1
)
−
i
β
r
e
f
)
=
a
b
s
(
(
1
−
R
∗
T
s
/
L
)
∗
i
α
(
k
)
+
T
s
/
L
∗
(
−
2
∗
U
d
c
/
3
−
e
α
(
k
)
)
−
i
r
α
)
+
a
b
s
(
(
1
−
R
∗
T
s
/
L
)
∗
i
β
(
k
)
+
T
s
/
L
∗
(
0
−
e
β
(
k
)
)
−
i
r
β
)
:
cost3=abs(iα(k+1)-iαref)+abs(iβ(k+1)-iβref)=abs((1-R*Ts/L)*iα(k)+Ts/L*(-2*Udc/3-eα(k))-irα)+abs((1-R*Ts/L)*iβ(k)+Ts/L*(0-eβ(k))-irβ):
cost3=abs(iα(k+1)−iαref)+abs(iβ(k+1)−iβref)=abs((1−R∗Ts/L)∗iα(k)+Ts/L∗(−2∗Udc/3−eα(k))−irα)+abs((1−R∗Ts/L)∗iβ(k)+Ts/L∗(0−eβ(k))−irβ):
状态4:
c
o
s
t
4
=
a
b
s
(
i
α
(
k
+
1
)
−
i
α
r
e
f
)
+
a
b
s
(
i
β
(
k
+
1
)
−
i
β
r
e
f
)
=
a
b
s
(
(
1
−
R
∗
T
s
/
L
)
∗
i
α
(
k
)
+
T
s
/
L
∗
(
2
∗
U
d
c
/
3
−
e
α
(
k
)
)
−
i
r
α
)
+
a
b
s
(
(
1
−
R
∗
T
s
/
L
)
∗
i
β
(
k
)
+
T
s
/
L
∗
(
0
−
e
β
(
k
)
)
−
i
r
β
)
:
cost4=abs(iα(k+1)-iαref)+abs(iβ(k+1)-iβref)=abs((1-R*Ts/L)*iα(k)+Ts/L*(2*Udc/3-eα(k))-irα)+abs((1-R*Ts/L)*iβ(k)+Ts/L*(0-eβ(k))-irβ):
cost4=abs(iα(k+1)−iαref)+abs(iβ(k+1)−iβref)=abs((1−R∗Ts/L)∗iα(k)+Ts/L∗(2∗Udc/3−eα(k))−irα)+abs((1−R∗Ts/L)∗iβ(k)+Ts/L∗(0−eβ(k))−irβ):
状态5:
c
o
s
t
5
=
a
b
s
(
i
α
(
k
+
1
)
−
i
α
r
e
f
)
+
a
b
s
(
i
β
(
k
+
1
)
−
i
β
r
e
f
)
=
a
b
s
(
(
1
−
R
∗
T
s
/
L
)
∗
i
α
(
k
)
+
T
s
/
L
∗
(
U
d
c
/
3
−
e
α
(
k
)
)
−
i
r
α
)
+
a
b
s
(
(
1
−
R
∗
T
s
/
L
)
∗
i
β
(
k
)
+
T
s
/
L
∗
(
−
U
d
c
/
s
q
r
t
(
3
)
−
e
β
(
k
)
)
−
i
r
β
)
:
cost5=abs(iα(k+1)-iαref)+abs(iβ(k+1)-iβref)=abs((1-R*Ts/L)*iα(k)+Ts/L*(Udc/3-eα(k))-irα)+abs((1-R*Ts/L)*iβ(k)+Ts/L*(-Udc/sqrt(3)-eβ(k))-irβ):
cost5=abs(iα(k+1)−iαref)+abs(iβ(k+1)−iβref)=abs((1−R∗Ts/L)∗iα(k)+Ts/L∗(Udc/3−eα(k))−irα)+abs((1−R∗Ts/L)∗iβ(k)+Ts/L∗(−Udc/sqrt(3)−eβ(k))−irβ):
状态6:
c
o
s
t
6
=
a
b
s
(
i
α
(
k
+
1
)
−
i
α
r
e
f
)
+
a
b
s
(
i
β
(
k
+
1
)
−
i
β
r
e
f
)
=
a
b
s
(
(
1
−
R
∗
T
s
/
L
)
∗
i
α
(
k
)
+
T
s
/
L
∗
(
U
d
c
/
3
−
e
α
(
k
)
)
−
i
r
α
)
+
a
b
s
(
(
1
−
R
∗
T
s
/
L
)
∗
i
β
(
k
)
+
T
s
/
L
∗
(
U
d
c
/
s
q
r
t
(
3
)
−
e
β
(
k
)
)
−
i
r
β
)
:
cost6=abs(iα(k+1)-iαref)+abs(iβ(k+1)-iβref)=abs((1-R*Ts/L)*iα(k)+Ts/L*(Udc/3-eα(k))-irα)+abs((1-R*Ts/L)*iβ(k)+Ts/L*(Udc/sqrt(3)-eβ(k))-irβ):
cost6=abs(iα(k+1)−iαref)+abs(iβ(k+1)−iβref)=abs((1−R∗Ts/L)∗iα(k)+Ts/L∗(Udc/3−eα(k))−irα)+abs((1−R∗Ts/L)∗iβ(k)+Ts/L∗(Udc/sqrt(3)−eβ(k))−irβ):
主电路
250V直流电压源与三相桥式逆变器相连,经过RL滤波器并网。
控制电路
Clark变换
Stateflow
记得要在模型管理器定义变量
运行结果
当参考电流幅值为 6A 时:
当参考电流幅值为 6A→3A 时:
可以看到,和采用 Matlab Function 编写代码的效果是一样的。