之前写过【Simulink】基于FCS-MPC的三相并网逆变器电流控制(Matlab Function)以及【Simulink】基于FCS-MPC的三相并网逆变器电流控制(Stateflow),控制对象都是三相逆变器,本篇博客将研究单相逆变器。
1. 单相并网逆变器拓扑
在单相逆变器中,当开关管S1和S4导通、S2和S3关断,u a b = U d c u_{ab}=U_{dc}uab=Udc;
当开关管S2和S3导通、S1和S4关断,u a b = − U d c u_{ab}=-U_{dc}uab=−Udc;
当开关管S1和S2导通、S3和S4关断,或者S1和S2关断、S3和S4导通,u a b = 0 u_{ab}=0uab=0;
一般情况下不会出现S1和S3同时导通,或者S2和S4同时导通的情况。
根据基尔霍夫定律,可得:
L d i / d t + R i = u a b − e L di/dt+Ri=u_{ab}-eLdi/dt+Ri=uab−e
以T为采样周期,前向差分离散化,可得:
u a b ( k ) = ( i r e f ( k + 1 ) − i ( k ) ) ∗ L / T + R i ( k ) + e ( k ) u_{ab}(k)=(i_{ref}(k+1)-i(k))*L/T+Ri(k)+e(k)uab(k)=(iref(k+1)−i(k))∗L/T+Ri(k)+e(k)
2. FCS-MPC原理
FCS-MPC控制原理可参见我之前的博客,控制流程基本类似。
- 测量 i(k) 和 e(k);
- 计算4种开关状态对应的电流预测值;
- 把电流预测值代入代价函数;
- 取使代价函数最小的开关状态,作用于下一控制周期。
预测电流公式:
i ( k + 1 ) = ( 1 − T s ∗ R / L ) ∗ i ( k ) + ( u ( k ) − e ( k ) ) ∗ T s / L i(k+1)=(1-Ts*R/L)*i(k)+(u(k)-e(k))*Ts/Li(k+1)=(1−Ts∗R/L)∗i(k)+(u(k)−e(k))∗Ts/L
3. Simulink仿真原理图
单相桥式逆变器包含4个IGBT,总共有 4 种状态,其中有两个状态计算得到的电流预测值相同,即代价函数相同。
4. Matlab Function代码
function [S1, S2, S3, S4] = fcn(R, L, Ts, i, Udc, Ug, ir) g = zeros(1,4); v0 = Udc; v1 = 0; v2 = -Udc; v3 = 0; v = [v0 v1 v2 v3]; states = [1 0 0 1; 1 1 0 0; 0 1 1 0; 0 0 1 1]; % 这里可以省去v3,因为v1=v3 for j = 1: 4 i1 = (1-Ts*R/L)*i+(v(j)-Ug)*Ts/L; g(j) = abs(ir - i1); end [~,x_opt] = min(g); S1 = states(x_opt,1); S2 = states(x_opt,2); S3 = states(x_opt,3); S4 = states(x_opt,4);
5. 仿真结果
负载参考电流幅值为5A时,负载电流波形:
从上图可见,预测值基本能跟踪参考值。
资源下载: