如何阻止模拟步骤在给定时间发生?

时间:2014-12-17 16:24:00

标签: matlab simulink pwm

问题

有没有办法在给定时间内阻止模拟步骤?

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


上下文

我正在开发一个PWM发生器模块[1],我的初始方法存在很大问题。为了更好地解释这一点,我绘制了一个简单的图表: as

黑色信号是我想要块生成的信号(方波信号,周期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之间的任意平均值。

1 个答案:

答案 0 :(得分:1)

正如我在评论中提到的,如果您使用的是固定步长解算器,那么步长在模拟的持续时间内是固定的。因此,您(或用户)需要在开始模拟之前适当地设置它,以确保捕获所有效果。我很害怕没有其他方法可以解决这个问题。

唯一的另一个选择是使用variable-step solver,它将根据系统的动态动态调整步长,并启用过零检测以捕获PWM切换时的精确瞬间。有关过零的更多详细信息,请参阅documentation

相关问题