0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

离散化与代码实现

汽车电子技术 来源:开关电源仿真与实用设计 作者:杨帅锅 2023-02-08 15:43 次阅读

前言:

一直有在用比例谐振控制器,是在matlab里面用C2D函数离散好了后直接使用参数,对于不同的电网频率还需要修改一下参数。而且在运行过程中发现网侧频率改变也不能实时修改PR的控制参数来达到最佳的控制效果,因此我需要能在MCU里面实时进行PR多个系数的计算,提取,更新的操作。

poYBAGPjUjuAFMI9AAAnckfBzqo067.png

QPR因为缓解PR在谐振点的增益以及有更好的适应性,而被广泛使用。传递函数中的wc用来调节QPR控制器在谐振点的增益带宽,wc越小则QPR在谐振的增益峰值越接近PR。kr是QPR控制器在谐振点的增益值,wr则是QPR控制器的设定谐振频率。参考文献1中展示了一张不同的kr和wc的QPR的bode图,可见:

poYBAGPjUlOATUUhAAQVOz3ycUU050.png

所以我们要在MCU中运行这个传递函数,第一步是需要将其进行Z变换离散化后得到Z域传递函数的系数,第二步是运行这个传递函数。

我们先来看第一步:使用双线性变换来得到Z域传递函数。根据双线性变换的公式,可以计算到这个QPR的s域传递函数到Z域的传递函数。

poYBAGPjUmKAK-AXAACBBVpczB4208.png

从上图来看,是一个典型的二阶Z域传递函数,但是有点麻烦的地方是分母的Z^2的系数不是1,因此还需要对其进行改写一下,我把分子和分母都同时除以分母Z^2项的系数,从而使得这个传递函数可以提取标准化系数:B0,B1,B2,A1,A2,可见:

ts_x_ts = ts * ts;

wr_x_wr = wr * wr;

div_x = ts * ts * wr * wr + 4.0 * wc * ts + 4.0;

coeff_B0 = (4.0 * kr * wc * ts)/div_x;

coeff_B1 = 0;

coeff_B2 = -1*coeff_B0;

coeff_A1 = (2.0 * ts_x_ts * wr_x_wr - 8.0)/div_x;

coeff_A2 = (ts_x_ts * wr_x_wr - 4.0 * ts * wc + 4)/div_x;

经过上面的处理后,即可得到标准的2阶Z域传递函数的系数,可见Matlab的输出:

pr_1st_z = c2d(pr_1st, ts, 'tustin')%Matlab自带函数

pr_1st_Z = tf([coeff_B0 coeff_B1 coeff_B2], [1 coeff_A1 coeff_A2], ts)%自己手动

两者输出一致,验证了正确性。

pr_1st_z =

0.03912 z^2 - 0.03912

----------------------

z^2 - 1.992 z + 0.9922

Sample time: 2.5e-05 seconds

Discrete-time transfer function.

pr_1st_Z =

0.03912 z^2 - 0.03912

----------------------

z^2 - 1.992 z + 0.9922

Sample time: 2.5e-05 seconds

Discrete-time transfer function.

第二步就是使用IIR滤波器来根据上面提取的系数来得到所需的输出了,其代码为:

w(1) = inputl(i) - w(2) * a_coff(2) - w(3) * a_coff(3);

yout(i) = (w(1) * b_coff(1) + w(2) * b_coff(2) +w(3) * b_coff(3));

w(3) = w(2);

w(2) = w(1);

第三步打包封装

我们的目的是使用QPR对1,3,5,7,9,11次谐波进行抑制,如果各个传递函数的kr和wc一致,则只需要调整wr到各个频率即可。可以编写一个IIR二阶系统提取函数,根据所需的频率进行计算即可。 最后在把KP和低通滤波器引入,LPF能提供一个在高频的增益衰减功能,用于提升多个PR组合后的传递函数的稳定性。


可见闭环控制器的传递函数最终为:

lpf = (flpf*2*pi/(s + flpf*2*pi));

sys_pr = kp + lpf * (pr_1st + pr_3st + pr_5st + pr_7st + pr_9st + pr_11st);

运行测试:

poYBAGPjUnCAWqjbAAGRfaOBXIw629.png

(3KHZ后 LPF开始起到作用)

编写QPR代码并运行测试,发现对3~5次谐波有抑制效果。

pYYBAGPjUnyACVc2AAKXRkh4UcA698.png

小结:根据s域传递函数计算出z域传递函数公式,并测试验证了准确性。

关于本人:

我是杨帅,目前从事逆变器储能行业,专注在双向AC/DC变换器领域,对双向DC/DC的研究较多。数年来一直从事电力电子仿真技术研究与应用推广,致力于实现让天下没有难搞的电源而努力。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    17316

    浏览量

    352440
  • matlab
    +关注

    关注

    185

    文章

    2980

    浏览量

    230908
  • 函数
    +关注

    关注

    3

    文章

    4345

    浏览量

    62920
  • 谐振控制器
    +关注

    关注

    1

    文章

    30

    浏览量

    9162
收藏 人收藏

    评论

    相关推荐

    怎么在labview FPGA端实现离散传递函数的表达?

    我只知道有一个这个控件,叫直接型离散传递函数实现,但是我输入离散传递函数的系数之后,他的输出有问题。我再非FPGA端尝试使用相同的系数进行仿真,输出是没有问题的。我不知道前面的问题出在哪里,或者说还有没有其他的方法
    发表于 05-09 11:43

    离散点采样方法的MATLAB实现

    谁有离散点采样方法的MATLAB实现代码 老师说是用于图像处理上的基于目标区域和基于目标边界两类方法的优势,用阴采样图获取目标图像中目标的边界信息,用阳采样图获取目标图像中目标的区域信息,阴、阳
    发表于 03-16 00:16

    离散传感器

    离散传感器一般包括光电开关、接近开关、光栅、编码器等,这些都是自动上经常用到的器件,它们各有各的作用,但是经常一起配合使用,成为传感器中增长较快的一支队伍。尤其是近几年来离散传感器增加非常迅猛
    发表于 01-27 14:23

    自动基础--线性离散系统的分析与校正

    `自动基础--线性离散系统的分析与校正`
    发表于 02-24 13:24

    离散型PID算法的Matlab仿真

    ,'v');% 离散后提取分子、分母 u_1=0.0; u_2=0.0; y_1=0.0; y_2=0.0; x=[0,0,0]'; error_1=0; error_2=0; %核心代码 for k
    发表于 05-30 09:10

    PID参数在进行离散前后是不是相同的

    对传递函数进行离散后用sisotool设计了补偿函数,得到的Kp,Kd,Ki参数,和直接在时域里面进行补偿函数设计所得到的参数是不是一样的
    发表于 11-05 15:35

    怎么实现基于RFID技术的离散MES设计?

    怎么实现基于RFID技术的离散MES设计?
    发表于 06-07 06:02

    Matlab中使用S函数实现离散数值计算的问题有哪些

    关于Matlab中使用S函数实现离散数值计算的问题求助,现在我想使用S函数写一个永磁同步电机dq轴坐标系下的离散数学模型,使用改进欧拉法
    发表于 08-27 07:00

    Marr小波离散方法及其应用

    本文介绍了将连续小波Marr小波进行离散的一种新方法,实现了连续小波离散信号处理。将其应用于实际人体血压信号分析中,取得了满意的效果,具
    发表于 08-15 14:16 16次下载

    连续特征离散方法综述

    离散特征在数据挖掘的过程中具有重要的作用,如何将实际数据集中的连续特征最好地离散是一个NP-hard问题。本文介绍了离散方法的不同角度的
    发表于 01-03 17:02 25次下载

    基于离散小波变换的数字水印技术 (matlab源代码)

    基于离散小波变换的数字水印技术 (matlab源代码):提出了一种基于小波分析的简单有效的数字水印嵌入和盲检测的算法。先将嵌入的水印信息加密,然后将加密后的水印信息嵌到相
    发表于 02-10 10:04 317次下载

    离散傅里叶变换

    《OpenCV3编程入门》书本配套源代码:离散傅里叶变换
    发表于 06-06 15:39 5次下载

    针对多量级应急数据的无监督离散方法

    在对连续的多量级应急数据进行离散化时,采用传统无监督离散方法难以找出量级变化点完成离散。提出一种针对多量级应急数据的无监督离散
    发表于 06-04 14:28 1次下载

    进行鸿蒙移植和开发的离散滑块教程

    项目介绍 离散滑块尝试通过 API 为您提供带有值标签的滑块,如 [Material Design spec] 中所示。该库还为您提供范围滑块模式。 离散滑块尝试为您提供带有“材质设计”规范中所
    发表于 04-01 09:24 2次下载

    如何实现离散傅里叶变换

    离散傅里叶变换(DFT)是将离散时序信号从时间域变换到频率域的数学工具,其实现方法有多种,以下介绍几种常见的实现方案: 一、直接计算法 直接依据离散
    的头像 发表于 11-14 09:35 489次阅读