Simulin万博1manbetxk上的家伙

万博1manbetxSimulink与基于模型的设计

这个变量来自哪里?

大多数Si万博1manbetxmulink模型使用工作空间变量来定义重要参数。例如,将增益值设置为K,然后在工作区中定义K。我写过在基本工作区中初始化这些参数在最近的一篇文章中。你是否注意到这些参数有很多来源?K的值可能在基本工作空间中,也可能在模型工作空间中。K的源头甚至可能在面具里。

万博1manbetxSimulink通过搜索使用变量的块上面的工作区来确定变量的值。从块开始,它在子系统层次上搜索每个掩码工作区,直到到达模型的根。万博1manbetxSimulink最后搜索模型工作空间和基础工作空间。这个过程是分层符号解析,在本文中,我将演示确定Simulink如何解析变量值的这些规则。万博1manbetx

示例模型

为了说明分层符号解析的概念,让我们使用一个简单的模型(在这里下载).这个模型由子系统、常量块和显示器组成。常量块引用不同工作空间中的变量,并根据它们在层次结构中的位置获取它们的值。从模型的根开始,我们找到变量k和m。

可变分辨率Simulink模型。万博1manbetx

查看块上方的工作区

我认为模型工作区位于模型的根。模型工作区是搜索k和m的第一个地方。我使用model Explorer查看模型工作区的内容。

显示模型工作区的模型资源管理器。

我们已经找到了k,但是m不在模型工作区中。层次结构中的下一个工作空间是基本工作空间。模型资源管理器方便地显示了反映模型层次结构的树。

显示基本工作区的模型资源管理器。

面具工作区

遮罩子系统在模型层次结构中引入遮罩工作空间。如果块位于遮罩子系统中,它首先在遮罩工作空间中求值,然后在层次结构中向上运行,直到到达模型的根。这是最上面的子系统。

顶层子系统、顶层子系统掩码和系统内容。

“掩码”对话框将变量m的值初始化为3000。变量k也会出现在模型的这个级别,但会解析为在模型工作空间级别定义的变量。

子系统从它们的上下文继承变量

由于分层符号解析,子系统从它们的上下文继承变量。Bottom子系统指的是k,它来自于它的掩码。它也指m,在Top Mask中解析。如果Bottom子系统位于模型的根,m将解析到基本工作空间。

底层子系统、底层子系统掩码和系统内容。

这种行为可以使相同的库块根据它们的父系统表现不同。例如,一个钟摆子系统可以从它的母系统继承重力加速度(g)。这些父系统可以为不同的环境定义变量。

允许基于上下文继承变量g的子系统层次结构。

控制分层分辨率

通过在子系统参数中设置“允许层次解析”参数,可以控制子系统中变量的解析(右键单击子系统并选择“子系统参数…”)。

子系统参数,允许分层解析。

默认设置为全部的并给出上面描述的行为。如果您不希望变量解析为子系统之上层次结构中定义的符号,您可以将其更改为没有一个这个明确地设置通过仅解析已设置为显式解析的对象来控制信号和状态名称的解析。

模型引用层次结构呢?

分层符号解析在到达模型的根时停止。模型参考层次结构不被认为是层次符号解析的一部分。任何模型都必须能够单独定义自己,或者作为更大的模型引用层次结构的一部分。可以通过模型引用参数向下传递变量到模型工作空间。有关这方面的更多信息,请参阅有关文档使用模型参数

现在轮到你了

如果您使用M代码编程,您可能会发现讨论类似于在M文件的嵌套函数中解析变量的方式。您是否利用了分层符号分辨率?留下评论这里告诉我们怎么做。

|
  • 打印
  • 发送电子邮件

评论

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