问题
有没有办法让块强制模拟步骤在给定时间发生?
例如,即使用户在他的模型中选择了 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 之间的任意平均值。