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

目录

前言

​编辑

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.rhkb.cn/news/368985.html

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

相关文章

解读 Amazon Q | 用 AI 聊天机器人连接你与未来的无限可能

在美国当地时间11月28日,亚马逊云科技在拉斯维加斯举办了 re:Invent 大会,大会介绍了许多今年来新增的核心产品与功能,着重讲解了生成式 AI 引领人工智能未来的前进方向,亚马逊作为云计算领域的龙头,相信会继续给我们的…

基于路径长度的样条插补算法(自动驾驶和路径跟踪控制适用)

以前在做车辆跟踪控制的时候发现在针对有多个X和多个Y对应的路径插补时候,总是报错,因为MATLAB里面的interp1插补函数它要求x要唯一对应一个y,当路径以单独的x或者y来求插补时候的时候就报错。由于在使用Matlab的interp1函数进行插值时&#…

重生之算法刷题之路之链表初探(三)

算法刷题之路之链表初探(三) 今天来学习的算法题是leecode2链表相加,是一道简单的入门题,但是原子在做的时候其实是有些抓耳挠腮,看了官解之后才恍然大悟! 条件 项目解释 有题目可以知道,我们需…

C#Modbus专题

1,辅助工具。 1,虚拟串口工具(vspd.exe) 2,Modubus模拟主站(Modbus Poll) 3,Modbus模拟从站(Modbus Slave) 4,OPC服务软件(KEPServerEx V4.0)。 下载链接:https://download.csdn.n…

Redisson框架

1. Redisson锁与Redis订阅与发布模式的联系: Redisson锁中,使用订阅发布模式去通知等待锁的客户端:锁已经释放,可以进行抢锁。 publish channel_name message:将消息发送到指定频道 解锁时,在Lua解锁脚本…

算法思想总结:优先级队列

一、最后一块石头的重量 . - 力扣(LeetCode) 我们每次都要快速找到前两个最大的石头进行抵消,这个时候用优先级队列(建大堆),不断取堆顶元素是最好的!每次删除堆顶元素后,可以自动调整&#xf…

[C++][CMake][CMake基础]详细讲解

目录 1.CMake简介2.大小写?3.注释1.注释行2.注释块 4.日志 1.CMake简介 CMake是一个项目构建工具,并且是跨平台的 问题 – 解决 如果自己动手写Makefile,会发现,Makefile通常依赖于当前的编译平台,而且编写Makefile的…

【动态规划】动态规划一

动态规划一 1.第 N 个泰波那契数2.面试题 08.01. 三步问题3.使用最小花费爬楼梯4.解码方法 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃 1.…

分布式限流:Spring Cloud Gateway 限流

分布式限流:Spring Cloud Gateway 限流 在现代微服务架构中,流量控制是一个至关重要的部分。分布式限流作为一种有效的流量控制手段,能够帮助我们保护系统不被突发的流量冲垮。Spring Cloud Gateway支持多种限流方式。 什么是分布式限流 分…

模拟5亿年自然进化史,全新蛋白质大模型ESM3诞生!前Meta老将力作LeCun转赞

模拟5亿年自然进化史,全新蛋白质大模型ESM3诞生!前Meta老将力作LeCun转赞。 能抗衡AlphaFold 3的生命科学大模型终于出现了。初创公司Evolutionary Scale AI发布了他们最新的98B参数蛋白质语言模型ESM3。不仅支持序列、结构、功能的all-to-all推理&#…

Unreal Engine@Jetson Orin Nano尚不支持

Unreal EngineJetson Orin Nano尚不支持 1. 源由2. Unreal Engine介绍3. 问题4. 编译方法5. 补充6. 其他 1. 源由 最近在看SC-Explorer方面的内容,在模拟方面采用了Unreal Engine。 本打算跑下模拟,因此打算在JetsonOrin的板子上试试看。 2. Unreal En…

opencv实现目标检测功能----20240704

早在 2017 年 8 月,OpenCV 3.3 正式发布,带来了高度改进的“深度神经网络”(dnn)模块。 该模块支持多种深度学习框架,包括 Caffe、TensorFlow 和 Torch/PyTorch。这次我们使用Opencv深度学习的功能实现目标检测的功能,模型选用MobileNetSSD_deploy.caffemodel。 模型加载…

mac视频压缩简单办法,mac如何把视频压缩到指定大小内存

在数字时代,视频已成为我们日常生活和工作的重要交流工具。然而,视频文件体积庞大,给存储和分享带来了不少困扰。本文将为你揭秘视频压缩的秘密,让你轻松减小视频文件体积,提升分享效率! 方法一下载文件压缩…

Python爬虫教程第0篇-写在前面

为什么写这个系列 最近开发了个Python爬虫的脚本,去抢一个名额,结果是程序失败了,中间有各种原因,终究还是准备不足的问题。我想失败的经验或许也可贵,便总结一下当初从0开始学Python,一步步去写Python脚本…

【SpringCloud】Ribbon源码解析

ribbon是一个负载均衡组件,它可以将请求分散到多个服务提供者实例中,提高系统的性能和可用性。本章分析ribbon是如何实现负载均衡的 1、LoadBalanced 消费者在引入ribbon组件后,给http客户端添加LoadBalanced注解就可以启用负载均衡功能。Lo…

Github 2024-07-01开源项目月报 Top15

根据Github Trendings的统计,本月(2024-07-01统计)共有15个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目6JavaScript项目3C++项目2PHP项目1Blade项目1非开发语言项目1C#项目1Lua项目1Go项目1MDX项目1Jupyter Notebook项目1从零开始构建你喜…

Ubuntu 24.04-自动安装-Nvidia驱动

教程 但在安全启动模式下可能会报错。 先在Nvidia官网找到GPU对应的驱动版, 1. 在软件与更新中选择合适的驱动 2. ubuntu自动安装驱动 sudo ubuntu-drivers autoinstall显示驱动 ubuntu-drivers devices3. 安装你想要的驱动 sudo apt install nvidia-driver-ve…

99. 岛屿数量

题目描述:给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。你可以假设矩阵外均被水包围。 输入描述&#xff1a…

@amap/amap-jsapi-loader实现高德地图嵌入React项目中,并且做到点击地图任意一处,获得它的经纬度

1.第一步要加入项目package.json中或者直接yarn install它都可以 想必大家应该都会 "amap/amap-jsapi-loader": "0.0.7"2.加入项目中 关于接口获取key的接口 大家改成自己对应的项目请求方法 import React, { PureComponent } from react; import { Input…

GEE计算遥感生态指数RSEI

目录 RESI湿度绿度热度干度源代码归一化函数代码解释整体的代码功能解释:导出RSEI计算结果参考文献RESI RSEI = f (Greenness,Wetness,Heat,Dryness)其遥感定义为: RSEI = f (VI,Wet,LST,SI)式中:Greenness 为绿度;Wetness 为湿度;Thermal为热度;Dryness 为干度;VI 为植被指数…