【Simulink】基于FCS-MPC的三相并网逆变器电流控制(Matlab Function)

最近在学 MPC(模型预测控制) ,看到b站一个视频讲解得挺好的:

MPC专题(一)_基于模型预测的并网变流器控制策略

本篇博客将参考视频给出Simulink仿真过程。

1.模型预测控制

Model Predictive Control (MPC)

概念:通过模型来预测系统在未来几个周期内的全部状态(有限个)来进行优化控制

分类:按照是否需要调制单元可分为连续状态的模型预测控制(Continuous ControlSet-MPC, CCS-MPC)离散状态的有限控制集模型预测控制(Finite Control Set-MPC, FCS-MPC) 两类。

2.有限控制集模型预测控制

Finite Control Set-MPC(FCS-MPC)

FCS-MPC 相比于 CCS-MPC 无需调制器、运算量小,而且无需综合考虑预测时域、控制时域、各时域目标函数权值系数的配合设计等,关键是直接利用了变换器的离散特性和开关状态有限的特性,将目标优化和开关状态决策过程优化成一步,这些显著的优点让其成为电力电子系统模型预测控制研究的热点。

步骤:

  1. 建立离散控制模型(欧拉前向离散化)
  2. 枚举并预测所有必需的变量(开关变量)
  3. 最小化成本函数

3.三相两电平并网逆变器

拓扑结构:直流电压源经三相电压型逆变器和L型滤波器并网。

在这里插入图片描述

开关器件:同相桥臂的开关器件不能同时导通。设开关信号1表示上桥臂导通,下桥臂关断,信号0表示上桥臂关断,下桥臂导通。

两电平逆变器具有八个开关状态,包括六个有源电压矢量和两个零电压矢量。

在这里插入图片描述

4.三相两电平并网逆变器模型预测电流控制

在这里插入图片描述

控制对象是并网电流(电感电流)

前向欧拉(近似离散化的一种方法)
在这里插入图片描述

i α β ( k + 1 ) = T s L [ u α β ( k ) − e α β ( k ) ] + ( 1 − R T s L ) i α β ( k ) i_{\alpha\beta}(k+1)=\frac{T_s}{L}[u_{\alpha\beta}(k)-e_{\alpha\beta}(k)]+(1-\frac{RT_s}{L})i_{\alpha\beta}(k) iαβ(k+1)=LTs[uαβ(k)eαβ(k)]+(1LRTs)iαβ(k)

对于三相并网逆变器,代价函数为:
g i = ∣ i α ∗ ( k + 1 ) − i α ( k + 1 ) ∣ + ∣ i β ∗ ( k + 1 ) − i β ( k + 1 ) ∣ g_i = |i_\alpha^*(k+1)-i_\alpha(k+1)|+|i_\beta^*(k+1)-i_\beta(k+1)| gi=iα(k+1)iα(k+1)+iβ(k+1)iβ(k+1)

即预测电流和参考电流的误差。
g i g_i gi 的下标 i 代表开关状态顺序(1-8), i α ∗ i_\alpha^* iα i β ∗ i_\beta^* iβ 的下标 α , β \alpha,\beta αβ 为三相负载电流的 α , β \alpha,\beta αβ 分量(经过Clarke变换),上标 * 表示参考值。

在这里插入图片描述

(本篇博客实际仿真的时候没有考虑延时补偿)

⭐️步骤1:根据系统结构建立合适的系统模型。
⭐️步骤2:采集系统三相电流、电网电压值。
⭐️步骤3:根据系统模型建立离散化预测函数,预测变换器输出电流或并网功率。
⭐️步骤4:建立合适的代价函数,将8种开关状态依次带入代价函数。
⭐️步骤5:通过枚举的方式选择使代价函数最小的矢量所对应的开关状态进行下一控制周期的控制。

5.Simulink仿真

版本:matlab2019b

整体电路图:

在这里插入图片描述

仿真细节:

主电路:
在这里插入图片描述

坐标变换:
在这里插入图片描述

最优状态量生成:

在这里插入图片描述

Matlab Function:

function y = fcn(udc, ea, eb, ia, ib, iar, ibr)

m = inf;
L = 0.02;
R = 0.05;
T = 1/1e4;
ua = 0;
ub = 0;
n = 1;

for i = 1: 8
    % 电压矢量
    switch i
        % 0 0 0
         case 1
            ua = 0;
            ub = 0;      
        % 0 0 1
         case 2
            ua = -udc/3;
            ub = -udc/sqrt(3);
        % 0 1 0
         case 3
            ua = -udc/3;
            ub = udc/sqrt(3);
        % 0 1 1
         case 4
            ua = -2*udc/3;
            ub = 0;
        % 1 0 0
        case 5
            ua = 2*udc/3;
            ub = 0;
        % 1 0 1
        case 6
            ua = udc/3;
            ub = -udc/sqrt(3);
        % 1 1 0
        case 7
            ua = udc/3;
            ub = udc/sqrt(3);   
        % 1 1 1
        case 8
            ua =0;
            ub = 0;        
    end

    % 负载电流预测
    ia1 = (1-T*R/L)*ia+(ua-ea)*T/L;
    ib1 = (1-T*R/L)*ib+(ub-eb)*T/L;

    % 代价函数
    g = abs(iar - ia1) + abs(ibr - ib1);
    if g < m
        m = g;
        n = i;
    end
end   
y = n;

仿真结果:

电网侧电流(参考电流为6A):

在这里插入图片描述

FFT分析:
在这里插入图片描述

THD:4.07%

将电流参考值6A换成6A→3A,依旧能够实现跟踪参考值:
在这里插入图片描述

在这里插入图片描述

6.资源下载

下载地址

7.后续

有小伙伴问在dq坐标系下该怎么做,其实这些都是类似的

原理图:
在这里插入图片描述

代码:

function [S1,S2,S3] = fcn(Vdc, theta, w, Eabc, Iabc, Iabcr, R, L, Ts)

trans =2/3 * [cos(theta) cos(theta-2*pi/3) cos(theta+2*pi/3); -sin(theta) -sin(theta-2*pi/3) -sin(theta+2*pi/3)]; 

states = [0 0 0; 1 0 0; 1 1 0; 0 1 0; 0 1 1; 0 0 1; 1 0 1; 1 1 1]; 

g = zeros(1,8); 

for i=1:8 
    Vabc = states(i,:)'*Vdc - Vdc/2; 
    Vdq = trans*Vabc; 
    Vd = Vdq(1); 
    Vq = Vdq(2); 

    Edq = trans*Eabc; 
    ed = Edq(1); 
    eq = Edq(2); 

    Idq = trans*Iabc; 
    id = Idq(1); 
    iq = Idq(2); 

    Idqr = trans*Iabcr; 
    idr = Idqr(1); 
    iqr = Idqr(2); 

    id1 = (1-R*Ts/L)*id + Ts/L*(Vd-ed+w*L*iq); 
    iq1 = (1-R*Ts/L)*iq + Ts/L*(Vq-eq-w*L*id); 
    g(i) = abs(id1-idr) + abs(iq1-iqr); 
end 

[~,x_opt1] = min(g); 
S1 = logical(states(x_opt1,1)); 
S2 = logical(states(x_opt1,2)); 
S3 = logical(states(x_opt1,3)); 

另外,有小伙伴说仿真运行不了,我在两台电脑都是能正常运行的(一台R2019b,一台R2022b),如果出现报错有可能是本身Matlab/Simulink软件问题,可以自行百度解决。另外,如果还是不放心仿真有无问题,这里推荐一个在线验证方法,在matlab online运行仿真。这种方法也可以用来修改Simulink版本,使用方法和在软件里面一样。

步骤1:上传仿真文件到drive:https://drive.mathworks.com/ (官方网站,但是需要matlab账号)

步骤2:和在软件里面打开仿真一样:https://matlab.mathworks.com/ 打开matlab online,然后打开已上传的仿真文件,运行验证

在这里插入图片描述

上图即仿真在matlab online运行的结果,在线运行除了有点糊,其他都还好

参考

[1] DONG Q, WANG B, XIA L, et al. A Virtual Voltage Field-Weakening Scheme of Trajectory Correction for PMSM Model Predictive Control[J]. IEEE transactions on power electronics, 2023,38(3): 3044-3056.
[2] MPC专题(一)_基于模型预测的并网变流器控制策略_哔哩哔哩_bilibili[EB/OL]. [2022-8-11]. https://www.bilibili.com/video/BV1Fv4y1c7Ky/.

评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不雨_亦潇潇

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

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

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

打赏作者

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

抵扣说明:

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

余额充值