【发布时间】:2015-02-16 06:28:52
【问题描述】:
问题
有没有办法让块强制模拟步骤在给定时间发生?
例如,即使用户在他的模型中选择了 1e-2 的模拟步长(固定步长模拟),如果他使用我的模块,那么模拟步长将在 2.5e-4 秒发生?
上下文
我正在开发一个 PWM 发生器模块 [1],我最初的方法有一个大问题。为了更好地解释这一点,我画了一个简单的图表:
黑色信号是我希望模块生成的信号(方形信号,周期 T,在 D.T 秒内的值为 1,其中 D 是介于 0 和 1 之间的常数)。蓝色星号是在模拟步骤时间采样的点(假设固定步骤模拟)。蓝线是模块实际生成的,因为在第 5 步之后和第 6 步之前,值 1 将保持不变。
这种步时间与信号值变化的不同步会在信号的平均值中引入误差(因为它会保持比预期为 1 的时间更长的时间)。在最坏的情况下,这个错误将是 s/T,其中 s 是模拟步长,T 是要生成的信号的周期(我可以发布推导,但我不知道如何在这里写方程这很简单)。解决此问题的直接方法是减小步长,但这并不总是可行的,具体取决于 PWM 的周期。
如果有办法强制模拟步骤发生在 0、D.T 和 T 秒,那么蓝色和黑色信号的平均值将完全相同。
如果需要进一步说明,请说出来。提前致谢。
1 - PWM 是一个周期性方波信号,在其周期内,在给定的时间内保持值为 1,其余时间保持值为 0,因此具有介于 0 和 1 之间的任意平均值。
【问题讨论】:
-
在模拟时间之间没有发生任何事情......那......绝对荒谬。计算机模拟时间 t1,然后是 t2,然后是 t3……如果你想做你想做的事,那么你需要在你想要的
t中创建一个模拟 ste。它必须被模拟。 -
完美,问题就是这样:“如何使块强制模拟步骤(...)”。
-
我不认为你可以改变模拟配置。您可以手动设置模拟配置并让模块在 Tn 时间内执行某些操作,因此 simulink 将模拟那个时间,因为我遇到了一些事情。但是我不确定。检查你是否可以这样做。
-
固定步长模拟就是这样,固定步长。你不能改变它,期间。如果您希望求解器检测 PWM 信号的变化,则需要使用启用过零检测的可变步长求解器。