【五一创作】【Simulink】采用延时补偿的三相并网逆变器FCS-MPC

news2024/10/7 17:31:58

👉 【Simulink】基于FCS-MPC的三相并网逆变器控制
上一篇博客介绍了FCS-MPC的基本操作,并且以三相并网逆变器为控制对象进行了Simulink仿真。

但实际仿真中没有考虑补偿延时。本篇博客将讨论为什么要考虑延时并进行补偿,最后对此仿真验证。

传统FCS-MPC

模型预测电流控制步骤:
1)测量负载电流;
2) 针对所有可能的开关状态预测下一采样时刻的负载电流;
3) 评估每个预测的成本函数;
4) 选择使代价函数最小化的切换状态;
5) 应用新的开关状态。

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

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

为什么要考虑延时补偿?

图源:《Delay Compensation in Model Predictive Current Control of a Three-Phase Inverter》

a. 无延迟:计算时间为零(理想情况下):

在这里插入图片描述

在 k 时刻测量电流,并且立即计算并应用最佳开关状态,在 k+1 时刻达到使误差最小化的切换状态。
(图中 k 到 k+1 时刻共有3条 i β p i_\beta^p iβp,其中最上面的一条离 i β p i_\beta^p iβp (水平直线)最近,所以选择最上面的 i β p i_\beta^p iβp 对应的开关状态,在 k+1 时刻应用)

b. 有延迟且无补偿:计算时间长(实际情况):

在这里插入图片描述

在这里插入图片描述

如果计算时间比采样时间长,则在测量电流的瞬间与应用新开关状态的瞬间之间会有延迟。在这两个瞬间之间的间隔期间,将继续应用先前的切换状态。根据 k 处的测量值选择的电压矢量将在 k+1 之后继续应用,从而使负载电流远离参考值。由于该延迟,负载电流将围绕其参考值振荡,从而增加电流纹波。

c. 带延迟和补偿:计算时间长(实际情况):

在这里插入图片描述

使用在 k 时刻处测量的电流 i(k)施加的开关状态x_opt估计在 k+1 时刻处的负载电流的值,并以在 k+1 时刻处估计的负载电流的值预测 k+2 时刻的负载电流,对应的开关状态在 k+1 ~ k+2 时刻应用。

控制算法被修改如下:
1) 负载电流的测量;
2) 切换状态的应用(在前一个间隔中计算);
3) 考虑所施加的开关状态,估计在时间 k+1 处的电流值;
4) 针对所有可能的开关状态预测下一个采样时刻 k+2 的负载电流;
5) 对每个预测的成本函数进行评估;
6) 选择使成本函数最小化的切换状态。

在这里插入图片描述

代价函数从
g i = ∣ i α ∗ ( k + 1 ) − i α p ( k + 1 ) ∣ + ∣ i β ∗ ( k + 1 ) − i β p ( k + 1 ) ∣ g_i = |i_\alpha^*(k+1)-i_\alpha^p(k+1)|+|i_\beta^*(k+1)-i_\beta^p(k+1)| gi=iα(k+1)iαp(k+1)+iβ(k+1)iβp(k+1)
变成
g i = ∣ i α ∗ ( k + 2 ) − i α p ( k + 2 ) ∣ + ∣ i β ∗ ( k + 2 ) − i β p ( k + 2 ) ∣ g_i = |i_\alpha^*(k+2)-i_\alpha^p(k+2)|+|i_\beta^*(k+2)-i_\beta^p(k+2)| gi=iα(k+2)iαp(k+2)+iβ(k+2)iβp(k+2)
以此预测电流 i α p ( k + 1 ) , i β p ( k + 1 ) i_\alpha^p(k+1), i_\beta^p(k+1) iαp(k+1),iβp(k+1)

仿真

原理图

在这里插入图片描述

Matlab Function代码

function [S1,S2,S3,S4,S5,S6] = fcn(Vdc, ea, eb, ia, ib, iar, ibr)

g = zeros(1,8);
L = 0.02;
R = 0.05;
T = 1/1e4;

v0 = 0; 
v1 = 2/3*Vdc; 
v2 = 1/3*Vdc + 1j/sqrt(3)*Vdc; 
v3 = -1/3*Vdc + 1j/sqrt(3)*Vdc; 
v4 = -2/3*Vdc; 
v5 = -1/3*Vdc - 1j/sqrt(3)*Vdc; 
v6 = 1/3*Vdc - 1j/sqrt(3)*Vdc; 
v7 = 0;
v = [v0 v1 v2 v3 v4 v5 v6 v7]; 
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]; 

persistent x_opt 
if isempty(x_opt)
    x_opt = 1; 
end 
S1 = states(x_opt,1); 
S2 = states(x_opt,2); 
S3 = states(x_opt,3); 
S4 = ~states(x_opt,1); 
S5 = ~states(x_opt,2); 
S6 = ~states(x_opt,3); 

% 负载电流估算
ia1 = (1-T*R/L)*ia+(real(v(x_opt))-ea)*T/L;
ib1 = (1-T*R/L)*ib+(imag(v(x_opt))-eb)*T/L;

for i = 1: 8
    v_o1 = v(i); 
    % 负载电流预测
    ia2 = (1-T*R/L)*ia1+(real(v_o1)-ea)*T/L;
    ib2 = (1-T*R/L)*ib1+(imag(v_o1)-eb)*T/L;
    
    % 代价函数
    g(i) = abs(iar - ia2) + abs(ibr - ib2);
end   

[~,x_opt] = min(g); 

仿真结果

负载电流
在这里插入图片描述

THD降低了一点点,从原来的4.07%降到3.99%

遗留问题:
有的论文提到需要对电流参考值和电网电压进行估计,我用了矢量角的方法进行估计后THD反而增大了,很奇怪。

参考:

[1] 郑文帅. 三相并网逆变器有限控制集模型预测控制研究[D].辽宁工程技术大学,2021.DOI:10.27210/d.cnki.glnju.2021.000395.
[2] P. C, J. R, C. S, et al. Delay Compensation in Model Predictive Current Control of a Three-Phase Inverter[J]. IEEE Transactions on Industrial Electronics, 2012,59(2): 1323-1325.
[3] 对同一个三相逆变器使用FCS-MPC的延迟补偿的两种方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/476035.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

参会记录|全国多媒体取证暨第二届多媒体智能安全学术研讨会(MAS‘2023)

前言:2023年4月8日上午,我与实验室的诸位伙伴们共聚浙江杭州西子湖畔的六通宾馆,参加了为期一天半的全国多媒体取证暨第二届多媒体智能安全学术研讨会(MAS’2023)。本届学术研讨会由浙江省自然科学基金委员会资助&…

3.2 静态随机存取存储器

学习目标: 学习静态随机存取存储器(SRAM)的基本原理、结构和工作方式,理解其与动态随机存取存储器(DRAM)的区别和优缺点,掌握SRAM的性能参数和应用领域,了解SRAM的发展历程和未来趋…

三元操作 三元操作符 if-else / ? :

Python 三元操作符 if-else , 其他语言三元操操作符 ? : 。 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……地址:h…

【Java】类和对象,封装

目录 1.类和对象的定义 2.关键字new 3.this引用 4.对象的构造及初始化 5.封装 //包的概念 //如何访问 6.static成员 7.代码块 8.对象的打印 1.类和对象的定义 对象:Java中一切皆对象。 类:一般情况下一个Java文件一个类,每一个类…

深度学习的定义和未来发展趋势

深度学习的定义和未来发展趋势 什么是深度学习数学和编程的基础知识深度学习的应用领域深度学习的常见算法和模型训练深度学习模型深度学习的未来 🏘️🏘️个人简介:以山河作礼。 🎖️🎖️:Python领域新星创作者&#…

Linux [常见指令 (1)]

Linux常见指令 ⑴ 1. 操作系统1.1什么事操作系统1.2选择指令的原因 2.使用工具3.Linux的指令操作3.1mkdir指令描述:用法:例子 mkdir 目录名例子 mkdir -p 目录1/ 目录2/ 目录3 3.2 touch指令描述:用法:例子 touch 文件 3.2pwd指令描述:用法:例子 pwd 3.4cd指令描述:用法:例子 c…

SQL语句截取字段某指定字符的前半段/后半段内容

最近项目中遇到一个小问题: 需要从数据库中取出对应数据,并根据某个字段中的前半段内容进行排序,搜索资料后得以解决,现将解决方法记录如下: 最初的查询SQL: SELECT file_name,sort FROM base_annexesfil…

Linux守护进程(Daemon Process)

1. 守护进程概念: 独立于终端控制并周期性地执行处理某些任务的后台进程。 2. 守护进程创建步骤: 核心:让进程脱离控制终端→创建新会话。 (1)创建子进程,父进程退出(必须)&#x…

LVS +Keepalived 高可用群集部署

一、LVSKeepalived 高可用群集 在这个高度信息化的 IT 时代,企业的生产系统、业务运营、销售和支持,以及日常管理等环节越来越依赖于计算机信息和服务,对高可用(HA)技术的应用需求不断提高,以便提供持续的…

【数据结构】二叉树(链式)

😛作者:日出等日落 📘 专栏:数据结构 抱怨是一件最没意义的事情。如果实在难以忍受周围的环境,那就暗自努力练好本领,然后跳出那个圈子。 目录 🎄二叉树 ✔二叉树的结构: ✔BuyNode…

Linux 基础操作

Linux学习教程,Linux入门教程(超详细) chown (change owner) : 修改所属用户与组。chmod (change mode) : 修改用户的权限。 要查看文件或目录的属性,可以使用ls命令,加上-l选项。例如&#xff…

ctfshow之_萌新web1至web7

一、访问在线靶场ctfshow ctf.showhttps://ctf.show/challenges如下图所示,进入_萌新赛的web1问题: 如上图所示,页面代码提示id1000时,可以查询到flag,进行如下尝试: 如下图所示,传入参数id1时…

3.1 存储系统概述

学习目标: 以下是一个关于存储系统概述的具体学习目标: 理解计算机存储器的基本概念,包括存储器的分类、存储单元、存储器容量等基本概念。 掌握存储器的存取原理,包括地址结构、存取周期、存取速度等相关概念。 熟悉常见的存储…

在flutter中使用NFC(超全)

文章前景:目前公司主要的业务方向是sass平台,我们的admin系统是基于qiankun搭建的主基座和子模块,app是flutterh5。我主要负责的是 1、qiankun基座的搭建 2、flutter基座和通信jsbridge的搭建 3、app内h5的书写 4、模块开发规范的书写 5、… …

Winform从入门到精通(33)——OpenFileDialog(史上最全)更新中

一、属性 1、AddExtension 该属性用于SaveFileDialog保存文件时,如果没有为文件添加后缀,则自动为保存的文件添加一个后缀,这个后缀是由DefaultExt属性决定的,比如DefaultExt的,所以在OpenFileDialog中这个属性没什么作用,在SaveFileDialog中我再详细介绍该属性 2、AutoU…

第二章 集合

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目…

极客之眼 Nmap:窥探世界的第一步

文章目录 参考描述Nmap极客之眼Nmap 与黑客的缠绵往事CIDRNmap 的获取检测 Nmap 是否已经安装下载并安装 NmapLinuxMacOS 与 WIndows 区域扫描基本扫描扫描结果解析域名解析服务 区域扫描CIDR列表扫描正向 DNS 查询与反向 DNS 查询列表扫描拒绝反向 DNS 查询 主机名与 CIDRIP 地…

vs2019+vtk开发环境搭建

1.安装vs2019 Enterprise,visual assist x,cmake Microsoft Visual Studio Enterprise 2019 sn: BF8Y8-GN2QH-T84XB-QVY3B-RC4DF 2.下载vtkhttps://www.vtk.org/files/release/9.2/VTK-9.2.6.tar.gz 3.cmake编译配置选中Example,可编译官方…

【Java】『蓝桥杯』10道编程题及答案(五)

系列文章 【Java】『蓝桥杯』10道编程题及答案(一) 本文链接:https://blog.csdn.net/youcheng_ge/article/details/130223115 【Java】『蓝桥杯』10道编程题及答案(二) 本文链接:https://blog.csdn.net/y…