0

问题

有没有办法让块强制模拟步骤在给定时间发生?

例如,即使用户在他的模型中选择了 1e-2 的模拟步长(固定步长模拟),如果他使用我的模块,那么模拟步长会在 2.5e-4 秒发生吗?


语境

我正在开发一个 PWM 发生器块 [1],我最初的方法有一个大问题。为了更好地解释这一点,我画了一个简单的图表: 作为

黑色的信号是我希望块生成的信号(方形信号,周期 T,在 DT 秒内的值为 1,其中 D 是介于 0 和 1 之间的常数)。蓝色星号是在模拟步骤时间采样的点(假设固定步骤模拟)。蓝线是块实际生成的,因为在第 5 步和第 6 步模拟步骤之前,值 1 将保持不变。

这种步进时间与信号值变化的不同步会在信号的平均值中引入误差(因为它会保持比预期为 1 的时间更长的时间)。在最坏的情况下,这个错误将是 s/T,其中 s 是模拟步长,T 是要生成的信号的周期(我可以发布推导,但我不知道如何在这里写方程这很简单)。解决此问题的直接方法是减小步长,但这并不总是可行的,具体取决于 PWM 的周期。

如果有办法强制模拟步骤发生在 0、DT 和 T 秒,那么蓝色和黑色信号的平均值将完全相同。

如果这需要更多澄清,请说出来。提前致谢。

1 - PWM 是一个周期性方波信号,在其周期内,在给定的时间内保持值为 1,其余时间保持值为 0,因此具有介于 0 和 1 之间的任意平均值。

4

1 回答 1

1

正如我在评论中提到的,如果您使用的是固定步长求解器,那么步长在模拟期间是固定的。因此,您(或用户)需要在开始模拟之前对其进行适当设置,以确保捕获所有效果。恐怕没有别的办法了。

唯一的其他选择是使用可变步长求解器,它将根据系统的动态动态调整步长,并启用过零检测以捕获 PWM 切换时的精确瞬间。有关过零的更多详细信息,请参阅文档

于 2014-12-18T12:02:12.513 回答