通过一个单相逆变器仿真深度学习PR控制器

news2024/11/25 4:29:17

目录

前言

​编辑

PR控制器的理论

PR控制器不同表达式及其建模

 PR控制器连续积分组合及模型

 PR控制器连续传递函数及模型

 PR控制器离散积分及模型

 PR控制器离散传递函数及模型

 PR控制器差分方程及模型

系统仿真效果

总结


前言

在项目开发中常用PI控制器,这次在做单相逆变器的时候发现PI控制器在有些工况有局限性,于是引入了PR控制器。简单来说当控制器的输入是直流量大多用PI控制器,当控制器输入是一定频率的正弦量时PR控制器相比于PI控制器就好很多。如在单相逆变的电压环输入的就是目标电压的参考,给定值是50Hz,220V的交流电。如果要用PI控制器需要对给定电压进行变换转换成直流量,但是由于50Hz的频率比较低,转换后的直流量控制起来响应和带宽做不高。

在电机控制里电流环也可以采用PR控制器,需要输入当前电频率。

 在单/三相FPC整流和逆变同样也可以有类似的用法。如下图是单相逆变电压环简化的PR控制器。

PR控制器的理论

很多论文都有下面这样的描述,这里不再过多解释,网上对PR控制器的解释很多,包括伯德图等。这里主要以改进型的PR控制器根据实际的工程需要如何建模仿真。

PR控制器不同表达式及其建模

在实际开发中,s域的传递函数是没法写成C代码或者直接生成代码的,需要对其进行离散化,或者写成积分形式,或者写成差分方程的形式,直接用离散传递函数也是可以生成代码的,具体用哪种形式可以从方便或者代码量方面去考虑。

如下是能在单相系统中正常工作的参数。

Tprs是离散后的采样频率,对应控制环路执行频率,暂定70Khz.

Kpr_p,Kpr_r类似于PI的控制参数。
wcpr控制器的截止频率
wopr谐振频率,对应给定的参考变量频率,如果是电压环就是给定的参考交流电压频率。为了方便建模可以考虑把Kp单独拿出来,也可以整合成一个完整的传递函数。

根据PR控制器的传递函数

 PR控制器连续积分组合及模型

 写成积分组合形式Kp单独拿出来:

 R(s)=\frac{y(s)}{u(s)}=\frac{2K_{r}W_{c}s}{s^{2}+2W_{c}s+W_{o}^{2}}

 分子分母调换一下:

\frac{u(s)}{y(s)}=\frac{s^{2}+2W_{c}s+W_{o}^{2}}{2K_{r}W_{c}s}=\frac{s}{2K_{r}W_{c}}+\frac{1}{K_{r}}+\frac{W_{o}^{2}}{2K_{r}W_{c}s}

把u(s)提出来:

u(s)=\frac{s}{2K_{r}W_{c}}*y(s)+\frac{1}{K_{r}}*y(s)+\frac{W_{o}^{2}}{2K_{r}W_{c}s}*y(s)

 再把y(s)挪到等号左边:

\frac{s}{2K_{r}W_{c}}*y(s)=u(s)-\frac{1}{K_{r}}*y(s)-\frac{W_{o}^{2}}{2K_{r}W_{c}s}*y(s)

 得到如下的表达式:

y(s)=\left [ u(s)-\frac{1}{K_{r}}*y(s)-\frac{W_{o}^{2}}{2K_{r}W_{c}s}*y(s) \right ]*\frac{2K_{r}W_{c}}{s}

 到这一步就可以用Simulink搭成积分的形式了。

 实际中,把1/Kr这一项去掉也不影响系统正常工作,所以有些PR控制器可能没有这一项。如下所示:

 对比如下,有1/Kr和没有区别不是很大,特别是Kr选取比较大的时候,这一项的影响较小,实际中可以根据取值决定是否需要,可以节省那么一丢丢的算力。

 黄色省掉了1/Kr的项,蓝色保留

 PR控制器连续传递函数及模型

 采用连续传递函数直接控制,如下是包含Kp的控制器完整传递函数,在仿真中直接用Transfer Fcn模块做控制器也是可以的。

 和通过模块搭建的积分形式在相同输入的情况下,输出完全重合,这也从侧面验证了前面搭的积分组合形式没任何问题。

 PR控制器离散积分及模型

前面都是连续系统的仿真,实际工程需要离散化,对于积分组合形式只需要加上个速率转换,把连续积分换成离散积分就能得到离散积分的形式,如下:

 Matlab可以通过c2d的函数把连续传递函数转换成离散传递函数,如下:

只需要根据实际工程中的控制器执行频率设置采样时间和离散方式就可以了,这里选择tustin双线性变换的离散方法。

Dpr_Z=c2d(Cpr_s,Tprs,'tustin');

离散化的方法有很多:前向差分法、后向差分法、双线性变换、预插值双线性变换、脉冲响应不变法、零极点匹配法、零阶保持不变法、一阶保持不变法,实际的嵌入式系统用零阶保持和双线性变换都差不多,反正都是通过Matlab直接得到离散化后的传递函数,Bode图也都差不多。

 PR控制器离散传递函数及模型

R(s)离散化后得到R(z)

 这里有个坑需要注意,按照得到的离散传递函数直接构建的控制器输出和连续传递函数控制器输出不一样,完全不能让系统收敛,如下图:

 这里需要把Matlab的数据显示精度改成long。不然会影响控制器的正常工作,改完后得到的传递函数如下:

 连续的PR控制器和离散的PR控制器输出重合。

 细节上连续的更光滑,离散的会有70Khz的突变,不影响实际的控制系统。

 PR控制器差分方程及模型

这里只对R(z)进行差分方程化,其实在前面离散积分组合,离散传递函数都可以直接生成代码应用到工程里面,这里再多一个差分方程的形式方便另一种方式手写代码实现。

 为了方便差分方程的推导,可以把离散传递函数写成表达式:

R(z)=\frac{az^{2}-a}{z^{2}-bz+c}=\frac{y(z)}{x(z)}

 分子分母同时除以z^2:

\frac{a-az^{-2}}{1-bz^{-1}+cz^{-2}}=\frac{y(z)}{x(z)}

 交叉相乘提出y(z):

y(z)=bz^{-1}y(z)-cz^{-2}y(z)+ax(z)-az^{-2}x(z)

 把上式写成差分方程:

y(k)=by(k-1)-cy(k-2)+ax(k)-ax(k-2)

 根据差分方程建模得到:

 不管用哪种形式作为控制器,同样的输入经过控制器后输出都一样,证明不管是传递函数还是差分方程还是积分组合的方式模型搭建都没有错误。

系统仿真效果

最后通过一个单相逆变器系统仿真验证

 给定电压和反馈电压重合

 输出的交流电压和电流

总结

通过一个单相逆变器,引入了PR控制器,从仿真的角度来讲不管是s域传递函数还是Z域传递函数仿真都没有问题,实际工程中程序是在单片机里执行,需要把PR控制器离散化,对于手写代码和基于模型的自动代码生成来讲可以考虑差分方程或者积分组合的形式,不考虑去饱和直接写离散传递函数也可以。

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

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

相关文章

【CT】LeetCode手撕—148. 排序链表

目录 题目1- 思路2- 实现⭐148. 排序链表——题解思路 3- ACM 实现 题目 原题连接:148. 排序链表 1- 思路 排序链表,将每个元素看做一个单独的链表 ——> 归并排序 ——> 每次将单独的链表合并 2- 实现 ⭐148. 排序链表——题解思路 class Solu…

成人高考本科何时报名-深职训学校帮您规划学习之路

你有想过继续深造自己的学历吗?也许你已经工作多年,但总觉得学历是一块心病,想要通过成人高考本科来提升自己。不用着急,今天我们来聊一聊成人高考本科的报名时间,以及深职训学校如何帮助你顺利完成报名。 深圳成人高…

若依前后端分离 前端路由登录页 如何进行跳转

路由守卫,看这篇文章 http://t.csdnimg.cn/HkypThttp://t.csdnimg.cn/HkypT

昇思25天学习打卡营第06天 | 网络构建

昇思25天学习打卡营第06天 | 网络构建 文章目录 昇思25天学习打卡营第06天 | 网络构建定义网络网络层模型预测 模型参数总结打卡 神经网络模型是由神经网络层和对Tensor的操作构成的。 在MindSpore, Cell类是网络的基本单元。一个神经网络模型表示为一个 Cell&…

线上问题定位分析宝典——Linux中定位JVM问题常用命令

查询Java进程ID #ps axu | grep java #ps elf | grep java查看机器负载及CPU信息 #top -p 1(进程ID) #top (查看所有进程)获取CPU飙升线程堆栈 1. top -c 找到CPU飙升进程ID; 2. top -Hbp 9702(替换成进程ID) 找到CPU飙升线程ID; 3. $ printf &quo…

14-20 Vision Transformer用AI的画笔描绘新世界

概述 毫无疑问,目前最受关注且不断发展的最重要的主题之一是使用人工智能生成图像、视频和文本。大型语言模型 (LLM) 已展示出其在文本生成方面的卓越能力。它们在文本生成方面的许多问题已得到解决。然而,LLM 面临的一个主要挑战是它们有时会产生幻觉反应。 最近推出的新模…

binutils ifunc 流程图

上图是x86 binutils 的流程图。 函数说明_bfd_x86_elf_link_hash_table_createInit local STT_GNU_IFUNC symbol hash.elf_x86_64_check_relocsAdd support for handling STT_GNU_IFUNC symbols_bfd_elf_x86_get_local_sym_hashFind and/or create a hash entry for local sym…

Map Set(Java篇详解)

🍁 个人主页:爱编程的Tom💫 本篇博文收录专栏:Java专栏👉 目前其它专栏:c系列小游戏 c语言系列--万物的开始_ 等 🎉 欢迎 👍点赞✍评论⭐收藏💖三连支持…

麒麟操作系统开机显示initramfs问题解决方案

一、问题现象: 近期某客户开机提示以下内容: 二、原因分析: 出现该问题一般是在【强制关机】或者【电脑异常断电】的情况下概率性导致系统分区损坏,重启后大概率就会进入到initramfs 模式。 三、解决思路: 1、输入ex…

邮件营销:利用HubSpot实现自动化与高效增长

在当今数字化时代,电子邮件(Email)作为最古老也是最强大的数字营销工具之一,依然占据着不可替代的地位。它不仅是个人与企业间日常沟通的重要桥梁,更是企业实施精准营销、扩大品牌影响力、促进销售转化的关键手段。随着…

解决在【Tomcat服务器上报错java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver】

目录 1. 添加驱动依赖:右键导入为库 2. 重新导入工件,注意看lib下有没有mysql的驱动包,没有的话需要导入。 3. 写代码的时候要注意对null值的处理,比如下面的截图,如果只是简单的获取生成的随机数,很有可…

[数据结构] --- 线性数据结构(数组/链表/栈/队列)

1 线性结构和非线性结构的理解 1.1 线性结构 线性结构是什么? 数据结构中线性结构指的是数据元素之间存在着“一对一”的线性关系的数据结构。线性结构是一个有序数据元素的集合。 线性结构特点: 线性结构有唯一的首元素(第一个元素&#…

openstack虚机重启无法启动或者云盘无法挂载问题(rbd的header元数据丢失问题)

这里写自定义目录标题 一、openstack虚机重启无法启动或者云盘无法挂载问题(rbd的header元数据丢失问题)1、openstack计算节点报错现象2、存储侧的rbd报错3、解决思路4、解决办法4.1 先看下正常的rbd的元数据信息4.2 查找丢失的header4.3 生成反编码属性4.3.1 features4.3.2 ob…

四大水刊《PLoS One》也升一区了!发文量依旧爆炸!

关注GZH【欧亚科睿学术】,第一时间获取期刊最新动态! 最新JCR正式公布后,期刊PLOS ONE发文量继续保持在高位,还上升至JCR1区,简直赢麻了! 作为四大“水刊”之一,期刊PLOS ONE创刊于2006年&…

docker 安装 禅道

docker pull hub.zentao.net/app/zentao:20.1.1 sudo docker network create --subnet172.172.172.0/24 zentaonet 使用 8087端口号访问 使用禅道mysql 映射到3307 sudo docker run \ --name zentao2 \ -p 8087:80 \ -p 3307:3306 \ --networkzentaonet \ --ip 172.172.172.…

科东软件精彩亮相华南工博会,展现未来工业前沿技术

近日,华南国际工业博览会在深圳成功举办。科东软件携众多前沿技术、解决方案及最新应用案例精彩亮相,为参展观众带来了一场工业智能的科技盛宴。 鸿道操作系统(Intewell) 科东软件重点展示了鸿道操作系统(Intewell&…

Shenandoah GC概述

文章目录 1_介绍2_原理1.0版本2.0版本3_ShenandoahGC的执行流程4_并发转移阶段 – 并发问题 1_介绍 Shenandoah 是由Red Hat开发的一款低延迟的垃圾收集器,Shenandoah 并发执行大部分 GC 工作,包括并发的整理,堆大小对STW的时间基本没有影响…

day11_homework_need2submit

Homework 编写—个将ts或mp4中视频文件解码到yuv的程序 yuv数据可以使用如下命令播放: ffplay -i output yuv-pix_fmt yuv420p-s 1024x436 要求: ffmpeg解析到avpacket并打印出pts和dts字段完成解码到avframe并打印任意字段完成yuv数据保存 // teminal orders on bash cd ex…

Unity2D - 基本战斗系统(Battle System Design)

1. 攻击逻辑 在Entity中初始化两个变量,因为在每个角色几乎都拥有攻击状态。这两个变量分别是transform类,接收一个坐标和一个半径画一个圆作为攻击的判定范围 public Transform attackCheck; public float attackCheckRadius; 为了可视化攻击范围&am…

基于改进高斯-拉普拉斯滤波器的一维时间序列平滑与降噪(MATLAB)

以图像处理为例,拉普拉斯算子是基于图像的二阶导数来找到边缘并搜索过零点,传统的拉普拉斯算子常产生双像素宽的边缘,对于较暗区域中的亮斑进行边缘检测时,拉普拉斯运算就会使其变得更亮。因此,与梯度算子一样&#xf…