simulink设置固定步长0.01怎么输出频率400的PWM波(多速率采样系统建模的求解器选择)

写在最前

标题举了一个例子,在Simulink中,使用固定步长0.01秒来输出一个3S内占空比逐渐降为0的频率为400Hz的PWM波,这意味着每个PWM周期将包含40个固定步长,因为

在这里插入图片描述

。这通常是不可取的做法,因为PWM信号的频率应该远高于求解器步长,以避免时间分辨率不足导致的失真。simulink也无法在0.025步进行一次采样,步长即最小采样单位。

我们知道,当求解器设置为固定步长时,模型中所有模块的采样时间应该为固定步长的整数倍,这是因为固定步长求解器在每个步长都会更新所有模块的状态,如果步长不是采样时间的整数倍,就无法保证所有模块能够按照其指定的速率正确更新。

然而在构建多速率系统时我们的模型中不同模块需要不同的采样频率。我们通常期望设置一个固定步长作为我们整个模型的主要步长,以综合匹配软硬件的性能需求,并便于我们进行实时性建模处理,在需要特殊采样频率的模块则设置另外的步长。
可以采取的建模方法大致如下:

一、多速率系统建模实现方法

1.采样率匹配

通过使用不同的采样率,可以更精确地模拟实际系统的行为,其中不同的物理过程可能以不同的速率变化。设置一个足够满足所有模块条件的固定步长求解器,确保所有模块的采样时间必须能够被固定步长的值整除。

缺点:各模块的采样时间范围较大时,难以兼容模型仿真时间和代码生成的软硬件开销。

2.模块数据转换

在不同速率的模型间需要进行数据转换,如降采样(downsampling)和升采样(upsampling),以确保信息在不同速率的子系统间正确传递。在Simulink中,可以使用Rate Transition块Multi-Rate S-Function块来实现多速率建模。这些块允许信号以不同的速率流入和流出子系统。

缺点:采样信号转变仍然受步长控制的限制,在固定步长情况下需满足步长要求,故而适用于采样速率变化范围较小时(变化范围在同一个数量级)。

3.使用可变步长求解器

将求解器切换为可变步长求解器,这通常可以自动处理不同采样时间的问题。这也是解决多速率采样系统建模的通常做法。

下面我们来说明使用可变步长求解器如何确保各模块能够按自己想要的步长进行模型采样的。

二、可变步长求解器与固定步长求解器的区别

我们先来了解可变步长求解器与固定步长求解器的区别。
可变步长求解器和固定步长求解器在仿真动态系统时有着不同的特性和应用场景:

固定步长求解器(Fixed-step Solvers)

  1. 时间步长固定: 在仿真过程中,固定步长求解器以相同的时间间隔进行计算,步长在整个仿真过程中不变。
  2. 计算效率: 由于步长固定,计算效率较高,仿真运行速度快,适合用于对仿真速度要求高而对精度要求不是特别高的场景。
  3. 适用性: 适用于动态系统相对简单、没有快速变化的信号或者系统本身不刚性的情况。
  4. 精度: 精度可能不如可变步长求解器,因为无法根据模型的动态特性调整步长。
  5. 稳定性: 在处理刚性问题时,可能需要非常小的步长以保持数值稳定性,这会降低仿真效率。

可变步长求解器(Variable-step Solvers)

1. 时间步长可变: 可变步长求解器根据模型的动态特性自动调整每个时间步长,以满足预设的精度要求。
2. 计算效率: 由于步长可以根据模型动态调整,可以在保证精度的同时提高计算效率。
3. 适用性: 适用于包含快速变化信号或刚性系统的模型,能够更精确地捕捉系统的行为。
4. 精度: 通常提供更高的精度,因为求解器可以根据模型的动态特性调整步长。
5. 稳定性: 在处理刚性问题时表现更好,因为步长的自动调整有助于避免数值不稳定。

两者的主要区别:

- 步长: 固定步长求解器使用恒定的步长,而可变步长求解器根据模型行为动态调整步长。
- 精度与效率: 可变步长求解器在保证仿真精度的同时,可以更灵活地调整计算效率;固定步长求解器在计算效率上有优势,但可能牺牲精度。
- 刚性问题: 可变步长求解器更适合处理刚性问题,而固定步长求解器可能需要非常小的步长来避免刚性问题导致的数值不稳定。
- 仿真时间: 固定步长求解器的仿真时间容易预测,因为它与步长直接相关;可变步长求解器的仿真时间则取决于模型的动态特性,不易事先预测。

三、可变步长求解器的设置

搭建简单或单一速率模型时我们习惯于使用定步长求解器进行求解,在使用可变步长求解器时,Simulink会自动调整求解器的步长以满足用户设定的精度要求,但有时我们更希望确保某些模块或子系统按照特定的步长工作。我们可以通过以下方法来达到我们的要求。

1. 最小步长限制: 在求解器的配置中设置最小步长限制,这样求解器不会选择比这个限制更小的步长。
2. 绝对和相对容差: 通过调整求解器的绝对和相对容差,可以影响求解器选择的步长。较小的容差会导致求解器使用更小的步长以保证仿真精度。
3. 固定步长模块: 对于需要固定步长的模块,可以使用Fixed Step Data Sources或Fixed Step Discrete等模块,这些模块允许你设置固定的更新步长。
4. Function-Call Subsystem: 对于需要以特定速率执行的子系统,可以使用Function-Call Subsystem,并设置Sample time参数为期望的步长。
5. 事件驱动: 对于基于事件的模块,可以设置事件间隔,这样模块会在特定事件发生时更新,而不是在每个求解器步长更新。
6. 模型引用和封装: 通过模型引用和封装技术,可以创建具有独立步长要求的子系统,并通过调用这些子系统来控制步长。
7. 显式步长设置: 在某些情况下,可以在模块属性中显式设置步长,尽管这通常适用于固定步长模块。

四、多速率采样下输出频率400的PWM波

以标题所述为例,输出一个3S内占空比逐渐降为0的频率为400Hz的PWM波,3S内占空比逐渐降为0 使用0.01的步长采样,400Hz的PWM波则使用PWM模块并设置其采样率为0.00025(采样周期为0.0025,采样率通常设置为其十分之一)。

搭建模型如下:
在这里插入图片描述
我们采用一个减计数模块控制占空比在3秒内从1降到0。再将其接入到PWM模块中输出PWM波。

求解器设置如下:
在这里插入图片描述
采用变步长求解器,设置最大步长为0.01,最小步长为PWM采样所需的0.00025,其他参数保持不变。

使用一个信号输入模块Signal Builder来启动减计数。信号设置如下:
在这里插入图片描述

在3S时信号变为0,计数开始。并在文件菜单中的仿真选项中设置采样时间为0.01。

采用变步长求解器时,若需要模块按照特定的步长工作,必须单独为模块设置其采样时间,这里若不设置,则减计数模块将按照PWM的采样时间进行采样。

原则上输入输出都应该设置为所需的采样时间,也可默认为继承状态,波形达到预期即可。

运行仿真并使用Scope模块观察信号,结果如下:

  • 3S时占空比在3S内逐渐降为0 。

在这里插入图片描述

  • 输出频率400的PWM波。

在这里插入图片描述

五、参考

simulink产生PWM波-PWM Generator模块使用

  • 19
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橘蓝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值