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

    文章

    16016

    浏览量

    343609
  • matlab
    +关注

    关注

    175

    文章

    2922

    浏览量

    228440
  • 函数
    +关注

    关注

    3

    文章

    3868

    浏览量

    61309
  • 谐振控制器
    +关注

    关注

    1

    文章

    27

    浏览量

    9097
收藏 人收藏

    评论

    相关推荐

    离散点采样方法的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

    Labview离散信号怎么实现时间尺寸变换啊

    Labview离散信号怎么实现时间尺寸变换啊?
    发表于 04-21 12:14

    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

    离散时间信号和离散时间系统

    离散时间信号和离散时间系统离散时间信号和系统的频域描述离散时间信号的傅里叶变换众所周知,连续时间信号f(t)的傅里叶变换定义为下图而f(jΩ)的傅里叶反变换定
    发表于 10-30 12:53 0次下载
    <b class='flag-5'>离散</b>时间信号和<b class='flag-5'>离散</b>时间系统

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

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

    9/7二维离散小波变换的系统设计及FPGA实现

      美国空间数据系统咨询委员会(简称CCSDS)于2005年推出一套适用于空间领域的图像压缩标准,标准使用了离散小波变换为核心算法,推荐使用9/7整数离散小波变换实现无损图像压
    发表于 09-08 10:25 1304次阅读
    9/7二维<b class='flag-5'>离散</b>小波变换的系统设计及FPGA<b class='flag-5'>实现</b>

    有限长离散变换-离散傅里叶变换

    离散傅里叶变换是一种在时域和频域均离散的傅里叶变换.
    发表于 02-23 09:30 49次下载
    有限长<b class='flag-5'>离散</b>变换-<b class='flag-5'>离散</b>傅里叶变换

    一种简单可靠离散量信号电路的设计和实现

    基于目前航空电子设备离散量输入/输出电路实现复杂,分立器件多,高低温下参数不一致等现象,通过对比分析典型离散量电路,提出了一种简单、高可靠性的离散量信号电路设计,同
    发表于 04-15 18:46 14次下载
    一种简单可靠<b class='flag-5'>离散</b>量信号电路的设计和<b class='flag-5'>实现</b>

    离散傅里叶变换

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

    离散光滑插值在CATIAV5中的实现郭宝玉

    离散光滑插值在CATIAV5中的实现_郭宝玉
    发表于 03-15 08:00 0次下载