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

简介: 【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.三相两电平并网逆变器模型预测电流控制

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

对于三相并网逆变器,代价函数为:

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_igi 的下标 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));

参考

[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/.

相关文章
|
3月前
【Simulink】示波器图形数据导入Matlab重新绘图的简明教程(论文)
【Simulink】示波器图形数据导入Matlab重新绘图的简明教程(论文)
|
2月前
|
算法 计算机视觉
永磁同步电机的矢量控制PMSM仿真+simulink仿真建模(matlab仿真与图像处理)
永磁同步电机的矢量控制PMSM仿真+simulink仿真建模(matlab仿真与图像处理)
83 1
|
3月前
【Simulink】基于FCS-MPC的带阻感负载的三相逆变器电流控制(Matlab Function)
【Simulink】基于FCS-MPC的带阻感负载的三相逆变器电流控制(Matlab Function)
|
3月前
【Simulink】基于FCS-MPC的单相并网逆变器电流控制(Matlab Function)
【Simulink】基于FCS-MPC的单相并网逆变器电流控制(Matlab Function)
|
3月前
|
Perl
【MFAC】基于全格式动态线性化的无模型自适应控制(Matlab代码)
【MFAC】基于全格式动态线性化的无模型自适应控制(Matlab代码)
|
3月前
【数值分析】迭代法求方程的根(附matlab代码)
【数值分析】迭代法求方程的根(附matlab代码)
|
3月前
【数值分析】Jacobi、Seidel和Sor迭代法求解线性方程组(附matlab代码)
【数值分析】Jacobi、Seidel和Sor迭代法求解线性方程组(附matlab代码)
|
3月前
【数值分析】二分法求方程的根(附matlab代码)
【数值分析】二分法求方程的根(附matlab代码)
|
2月前
|
机器学习/深度学习 算法 计算机视觉
霍夫变换车道线识别-车牌字符识别代码(matlab仿真与图像处理系列第5期)
霍夫变换车道线识别-车牌字符识别代码(matlab仿真与图像处理系列第5期)
29 2
|
2月前
|
算法
MATLAB | 插值算法 | 一维interpl插值法 | 附数据和出图代码 | 直接上手
MATLAB | 插值算法 | 一维interpl插值法 | 附数据和出图代码 | 直接上手
32 0

热门文章

最新文章