基于MATLAB/Simulink的三相并网逆变器dq阻抗建模及扫频仿真

目录

  • 整体系统介绍
  • 理论模型
    • MATLAB实现
  • 基于Simulink的阻抗扫频仿真
    • 整体思路
    • 注意事项
    • 流程框图
  • 其他

本文主要介绍三相并网逆变器dq阻抗建模的相关知识,和大家分享一下怎么使用MATLAB/Simulink来进行理论模型的搭建以及如何通过扫频获取阻抗模型,一方面是给自己留点学习资料,也希望对大家能有所帮助。如果有什么问题或者错误,欢迎留言。

本文涉及的代码和模型就不提供啦,不过后面会给出一组参数和对应阻抗的Bode图,有兴趣的可以自己做一下然后对照看看有没有问题。

整体系统介绍

图1是本文所使用的系统:三相并网逆变器;输入认为是恒定的直流电压源;滤波采用单电感,同时考虑寄生电阻;控制在dq坐标系下实现,为简单起见,使用单电流环。

在这里插入图片描述

图1 三相并网变换器系统框图

理论模型

理论模型不是本文叙述的重点,大家可以去找相关的论文,有比较详细的介绍(特别是一些学位论文),这里只简单提一下。

并网变换器的dq阻抗模型实际上就是一个2*2的传递函数矩阵,输入和输出分别为并网点的电压和电流

在这里插入图片描述

(1)

建模中,个人认为最重要的就是锁相环。由于锁相环(PLL)的存在,在有小信号扰动时,控制系统的dq坐标系和实际系统的dq坐标系之间存在着相位差ΔθΔθ的存在引起了dq轴的耦合,使得系统产生了复杂的稳定性问题。

为此,我们需要找出主电路(上标为 s)和控制系统(上标为 c )两个dq坐标系之间的关系。也就是两个坐标系下的电气量之间的转换关系式。根据相关的文献,有

在这里插入图片描述

(2)

其中 x 表示电压/电流/占空比等。

MATLAB实现

获取dq阻抗模型的控制框图或表达式后,我们可以考虑在MATLAB中用代码实现,并画出对应的Bode图。

要注意的几个点是:

  1. 不需要写出各个阻抗的具体表达式,直接以矩阵的形式来进行运算;
  2. 求逆矩阵时,MATLAB里面不推荐使用 inv() 函数,而是用 / 或 \ 予以替代。具体来说

在这里插入图片描述

(3)
  1. 似乎没办法直接作出一个2*2传递函数矩阵的Bode图(也可能是我不会),所以需要分别运用 bode() 函数。另外,推荐大伙使用这么几行命令,让每次画出的图的范围都是固定的。
tt = bodeoptions;
tt.XLim={[1 10e3]}; % 横坐标范围
tt.FreqUnits='Hz'; % 设置值模式
tt.PhaseWrapping='on'; % 相频特性 限制范围
tt.PhaseWrappingBranch=-180; % ±180之间bode(Zdd,tt);

基于Simulink的阻抗扫频仿真

整体思路

这里 阻抗扫频仿真 的意思是,我们先在Simulink中搭建电路模型,然后往PCC点注入一定的扰动信号(这里为串联电压扰动信号源),并采集对应的PCC电流,而后对电压电流信号进行处理运算,求解出系统的阻抗模型。

由于待求的阻抗有四个,但是一组扰动信号只有d轴和q轴两组方程,所以需要设计两组线性无关的扰动信号,才能建立起四个方程。

在这里插入图片描述

(4)

而这只是一个频率下的阻抗,还需要根据情况设计多个扰动频率点,以勾勒出一段频率范围内的阻抗特性。

整体的思路是:

  1. 搭建电路模型,并且保证其可以正常工作(具有稳态工作点);
  2. 设计电压扰动信号1和电压扰动信号2;
  3. 把某一频率下的信号1注入系统,采集PCC处的电压和电流,并进行dq变换;
  4. 注入扰动信号2,并且采集PCC处的电压和电流;
  5. 利用FFT,求出相应扰动频率下的两组信号的电压分量和电流分量的幅值和相位;
  6. 根据前面的公式,得到阻抗矩阵的具体数值;
  7. 注入另一频率下的扰动信号,并重复上述步骤,直至获得所有频率下的阻抗解;
  8. 画图。

注意事项

这里针对上面的各个步骤介绍一些可能要加以注意的事项

  1. 搭建电路模型,这一点没啥好说的,你首先需要确保自己的系统有稳态工作点,再考虑注入小信号扰动的事情;
  2. 设计扰动信号,对于逆变器,一般采用串联电压源的方式,而两组线性无关的信号可以这样设计:

在这里插入图片描述

(5)

其中 wg 是电网电压角频率。

  1. 注入信号,采集信号,为了确保准确性,可以每次注入一个频率的一组扰动信号。采集的时候因为是dq阻抗,所以要进行dq变换。这里要注意θ的选取,需要变换到实际系统dq坐标系下(上标为 s );
  2. 利用FFT求出幅值和相位,MATLAB中有对应的函数 fft() ,不过还需要自己补充一些内容才能符合需求;
  3. 求解阻抗方程,如果需要导纳模型,同样也可以求解;
  4. 注入其他频率的扰动信号,一般要避开工频(50Hz)以及其他谐波频率,免得计算结果有误。

流程框图

如果每次注入信号都手动操作的话,未免过于繁琐和费时(简直非人哉),所以强烈建议大家把这一个过程自动化。

得益于强大的MATLAB,我们最终可以实现这样的效果:在设计好系统和扰动频率点后,待程序运行结束后便可以自动生成理论模型和扫频仿真的Bode图。

个人的思路如下,供大家参考。

在Simulink中搭建模型,扰动信号的频率、幅值等将从MATLAB中获得(同理,也可以设置其他的模块参数从MATLAB中获得);这一功能利用如下函数实现

% 载入仿真模型文件
load_system('xxx.slx');% 设定参数
set_param('xxx/Constant','Value','3');% 运行仿真
sim('xxx', [t_start, t_end]);

具体可以参考这篇文章:MATLAB脚本调用simulink仿真文件及simulink模块参数修改-load_system函数-sim函数-set_param函数

另一方面,采集到的电压电流信号也要传到MATLAB中,以便于进一步的处理。这里可以使用 To WorkspaceTo File 模块;

点击 运行 后,首先启动Simulink模型,并选择注入扰动信号1(这里要设置好合适的仿真时间)。仿真结束后,把数据先存放到一个数组里,然后再注入扰动信号2,并且也给它存起来。获得两组数据后,利用FFT求得幅值和相位,利用阻抗表达式求得这一扰动频率下的阻抗解。为了获得其他频率下的阻抗,可以设计一个扰动频率数组,利用循环语句每次注入不同的信号。最后,把得到的阻抗解利用 plot() 给它画出来,并利用 hold on , 对比理论模型和扫频模型。

图2 流程框图

图2 流程框图

其他

这里提供了一组参数和阻抗Bode图,具体系统框图如前面的图1所示,供大家参考。

描述参数数值
直流电压Udc1000V
电网电压有效值Ug220V
有功功率P100kW
无功功率Q20kVar
滤波电感L1mH
滤波电感寄生电阻R1mΩ
锁相环比例系数Kp_PLL1
锁相环积分系数Ki_PLL100
电流环比例系数Kp_i0.01
电流环积分系数Ki_i0.1

在这里插入图片描述

图3 dq阻抗模型Bode图

其中 蓝色线 表示理论模型,红色线 表示扫频仿真模型。

2023.08.23

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

树的介绍(C语言版)

前言 在数据结构中树是一种很重要的数据结构,很多其他的数据结构和算法都是通过树衍生出来的,比如:堆,AVL树,红黑色等本质上都是一棵树,他们只是树的一种特殊结构,还有其他比如linux系统的文件系…

R-Meta分析核心技术教程

详情点击链接:全流程R-Meta分析核心技术教程 一,Meta分析的选题与检索 1、Meta分析的选题与文献检索 1)什么是Meta分析 2)Meta分析的选题策略 3)精确检索策略,如何检索全、检索准 4)文献的管理与清洗,如何制定文献纳入排除标准 …

windows下Mysql安装配置教程

Mysql下载 在官网下载mysql community Server https://dev.mysql.com/downloads/mysql/ 可以选择下载压缩包或者MSI安装程序 使用压缩包安装 MySQL 压缩包安装通常需要以下步骤: 1. 下载 MySQL 安装包 你可以从 MySQL 官网上下载适合你系统的 MySQL 安装包&am…

人工智能在机器学习中的八大应用领域

文章目录 1. 自然语言处理(NLP)2. 图像识别与计算机视觉3. 医疗诊断与影像分析4. 金融风险管理5. 预测与推荐系统6. 制造业和物联网7. 能源管理与环境保护8. 决策支持与智能分析结论 🎉欢迎来到AIGC人工智能专栏~探索人工智能在机器学习中的八…

开始MySQL之路——MySQL的DataGrip图形化界面

下载DataGrip 下载地址:Download DataGrip: Cross-Platform IDE for Databases & SQL 安装DataGrip 准备好一个文件夹,不要中文和空格 C:\Develop\DataGrip 激活DataGrip 激活码: VPQ9LWBJ0Z-eyJsaWNlbnNlSWQiOiJWUFE5TFdCSjBaIiwibGl…

性能优化之分库分表

1、什么是分库分表 1.1、分表 将同一个库中的一张表(比如SPU表)按某种方式(垂直拆分、水平拆分)拆分成SPU1、SPU2、SPU3、SPU4…等若干张表,如下图所示: 1.2、分库 在表数据不变的情况下,对…

多线程(二)

一.关于线程的常用操作 1.启动线程 run(): 对于run方法的覆写只是指定线程要做的任务清单,而不是真正的启动线程 start(): start()方法才是真正的在底层创建出一个线程,并且启动 2.中断线程 1.通过共享的标记来中断 package demo; impor…

AcWing 898. 数字三角形 (每日一题)

大家好 我是寸铁 希望这篇题解对你有用,麻烦动动手指点个赞或关注,感谢您的关注 注意 像数组下标出现i-1的,在循环的时候从i1开始。 关于0x3f3f3f3f和Integer.MAX_VALUE 0x3f3f3f3f:1061109567 Integer.MAX_VALUE:2147483647 在选用Integ…

一个插件实现代码自由,快来试试吧

效果如下 开始操作 1.插件下载并解压 2.打开chrome浏览器,点击扩展程序–》管理扩展程序 3.打开开发者模式,加载已解压的扩展程序 4.加载AI工具 5.打开插件 6.回到主页,效果如下 7.点击ChatGPT 8.大概过30秒,邮箱注册 9.注册完成,可以…

mysql sql_mode数据验证检查

sql_mode 功能 sql_mode 会影响MySQL支持的sql语法以及执行的数据验证检查。通过设置sql_mode ,可以完成不同严格程度的数据校验,有效地保障数据准确性 sql_mode 严格模式 VS 宽松模式 宽松模式 比如,插入的数据不满足 表的数据类型,也可能…

Android ---使用Jenkins 打包release版本不能安装或者安装后不显示APP

大家在用 Jenkins的时候,是不是会觉得很爽,因为他在用的过程中,是无脑的,毕竟一键触发!!!! 这边记录一个昨天,今天遇到的一个坑货问题,别人提交了所有代码&am…