Custom Simulink离散时间积分器模块

时间:2015-09-23 14:38:44

标签: initialization integration simulink integrator

我试图使用梯形规则在Simulink中设计我自己的离散时间积分器的简单实现。 这是我努力的结果(考虑我使用1作为时间积分间隔): 然后,只是为了仔细检查我是否做得对,我将结果与标准的Simulink离散时间积分器块(当然配置为使用梯形规则)进行了比较:

当我让步骤在时间1上升时,一切都运行正常(自定义和默认积分器块的初始条件都为0):

当步长在时间0上升时,我得到了两个积分器块响应之间的差异:

  • 自定义块:@Interalral(t = 0)= 0.5; @ Integral(t = 1)= 1.5
  • 默认块:@Interalral(t = 0)= 0; @t = 1积分(t = 1)= 1

我认为这取决于我在t = 0和初始条件= 0之间积分的自定义块(即在0和1之间应用梯形规则,因此得到0.5)。

这是解决此问题的最佳方法,并使我的自定义块在零时显示与默认块相同的行为?我缺少任何参数/设置吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

请注意,梯形积分器仅需要,并且应该只有一个单位延迟。正确的实现如下图所示。

Discrete Integrator

从您在问题中显示的第二个图像中,库块的输出在时间等于零时为零。这不是默认行为(如上所示,也在Integration and Accumulation Methods块文档的Discrete Time Integrator子部分中讨论过)。

您是否已将初始条件设置状态更改为输出?如果是这样,那么需要适当修改自定义实现中的状态。