人在仿真软件金宝app

金宝appSimulink &基于模型的设计

锁还是不锁?

昨天我向一个同事解释了import block选项的效果锁存输入用于函数调用子系统输出的反馈信号.我想在这里分享一下会很有趣。

这个问题

在接下来的模型内,calib函数调用子系统,信号连接到一个单位延迟块。

模型中包含一个直接反馈循环中的函数调用子系统

当记录数据时,我们可以看到单位延时的输入和输出是相同的,就好像信号没有被延时一样!

单位延时的输入和输出相等

尽管这看起来很奇怪,但这种行为是意料之中的。让我们看看这是为什么。

仿真循环

要理解正在发生的事情,首先需要熟悉块方法在模拟循环中执行的顺序。为了真正理解模拟循环,我推荐以下文档页面:

在我们的例子中,我们有一个固定步长和离散的模型,所以模拟循环非常简单,如下所示:

模拟循环

重要的是要理解Simulink执行金宝app输出方法,然后更新方法。

的执行顺序

我们需要知道的第二件事是块执行的顺序。为此,我们显示块顺序

顺序

当您显示排序后的顺序时,您可以看到块上显示的红色数字。第一个数字是系统的编号,因此这个模型中的函数调用子系统是系统编号3。第二个数字是块在这个系统中的顺序。在本例中,增益是第一项(3:0),单位延迟秒(3:1),第三个柜台(3:2)等。

门闩的效果

为了看到锁存的效果,我为这个模型生成了代码,并添加了注释来强调这样一个事实,即当输出被写入时,反馈循环会导致输入信号立即发生变化:

无锁存生成代码

这种反馈循环打破了Output-Update逻辑所基于的假设……并且会使结果难以解释。这就是为什么Latch是可用的。

轮廓尺寸块对话框

使用锁存器,在步骤开始时复制输入信号,并将此复制用于计算:

锁存生成代码

结论

总之,我们可以说,引入门闩更安全,但需要额外的复制成本。如果您知道函数调用子系统可能涉及到直接反馈循环,请使用import Latching以避免意外情况。

现在轮到你了

您是否锁定了函数调用子系统的输入?让我们知道原因这里的评论

|

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。