名人堂再聚首 2024-04-25 09:29 采纳率: 50%
浏览 1

数字电源中知道了BUCK Gp(s)传递函数如何生成Gc(s)函数

数字电源中知道了BUCK Gp(s)传递函数如何生成Gc(s)函数?

知道了Gc(s)如何生成Gc(z)?

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-25 09:29
    关注

    引自免费微信小程序:皆我百晓生

    在数字电源设计中,我们通常会先建立连续时间系统(Analog Domain)的数学模型,然后通过数字控制技术将其转换为离散时间系统(Digital Domain)。在这个过程中,我们会经历从传递函数到Z变换的过程。

    首先,假设我们有一个Buck转换器的连续时间闭环传递函数Gp(s),它描述了输出电压对输入参考信号的响应。这个传递函数通常是基于电路参数计算得到的,可能包括开环增益、电感L、电容C等参数。对于一个基本的Buck转换器,闭环传递函数可能如下所示:

    [ G_p(s) = \frac{K}{s(LCs + 1)} ]

    其中:

    • K是占空比调制的放大系数。
    • L是电感值。
    • C是电容值。

    要将这个连续时间传递函数转换为离散时间传递函数Gc(z),我们需要应用零阶保持器(Zero-Order Hold, ZOH)和理想采样定理。这涉及到将连续时间系统的冲激响应进行采样,然后应用Z变换。由于ZOH假设输入信号在整个采样周期内恒定,我们可以将Gp(s)乘以单位阶跃函数e^(st),然后对其进行Z变换。

    然而,实际的数字控制器可能会采用更高阶的保持器(比如一阶保持器),这样可以减少高频噪声,提高精度。在这种情况下,我们将需要更复杂的数学处理,但这已经超出了基础的ZOH方法。

    在MATLAB中,你可以使用c2d函数将连续时间传递函数转换为离散时间传递函数。下面是一个例子,假设采样频率fs=10kHz,我们使用零阶保持器进行转换:

    % 定义参数
    K = 1; % 放大系数
    L = 1e-3; % 电感值 (亨利)
    C = 1e-6; % 电容值 (法拉)
    
    % 计算闭环传递函数
    Gp_continuous = K / (s * (LC*s + 1));
    
    % 定义采样频率
    fs = 10e3; % Hz
    
    % 将连续时间传递函数转换为离散时间传递函数
    Gp_discrete = c2d(Gp_continuous, 1/fs, 'zoh');
    
    % 显示离散时间传递函数
    disp(Gp_discrete);
    

    接着,如果你想要从Gc(s)到Gc(z),实际上已经在上面的步骤中完成了。因为在MATLAB的c2d函数中,'zoh'选项就是使用零阶保持器进行离散化,结果已经是Gc(z)的形式。

    如果你想手动计算Gc(z),你需要使用Z变换表,但是这通常非常复杂,并且不推荐手工完成。使用工具包中的函数是更便捷的方法。

    最后,如果你需要将离散时间传递函数Gc(z)转换为数字滤波器结构(例如IIR或FIR),可以使用MATLAB的tf2ssbutterfir1等函数。但这是另一个话题,如果你需要这部分的帮助,请告诉我。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月25日

悬赏问题

  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向