这个变量从何而来?
大多数Si万博1manbetxmulink模型使用工作空间变量来定义重要参数。例如,将增益值设置为K,然后在工作区中定义K。我写过在基本工作区中初始化这些参数在最近的一篇文章中。您是否注意到这些参数有很多来源?K的值可能在基本工作空间中,也可能在模型工作空间中。K的来源甚至可以在掩模中。
万博1manbetxSimulink通过在使用变量的块上方的工作区中搜索来确定变量的值。从块开始,它沿着子系统层次结构向上搜索每个掩码工作区,直到到达模型的根。万博1manbetxSimulink分别在最后搜索模型工作空间和基本工作空间。这个过程是分层符号解析在这篇文章中,我将演示这些决定Simulink如何解析变量值的规则。万博1manbetx
模型示例
为了说明分层符号解析的概念,让我们使用一个简单的模型(在这里下载).该模型由子系统、常量块和显示器组成。常量块引用不同工作区中的变量,并根据它们在层次结构中的位置获取它们的值。从模型的根开始,我们找到变量k和m。
查看块上方的工作区
我认为模型工作区位于模型的根。模型工作空间是搜索k和m的第一个地方。我使用模型资源管理器查看模型工作空间的内容。
我们已经找到了k,但是m不在模型工作空间中。层次结构中的下一个工作空间是基本工作空间。模型资源管理器方便地显示了反映模型层次结构的树。
面具工作区
掩码子系统在模型层次结构中引入了掩码工作区。如果块在一个屏蔽子系统中,它首先在屏蔽工作区中计算,然后沿着层次结构向上工作,直到到达模型的根。这是Top子系统。
掩码对话框将变量m初始化为3000。变量k也出现在模型的这个级别,但是解析为在模型工作空间级别定义的变量。
子系统从它们的上下文继承变量
由于分层符号解析,子系统从它们的上下文继承变量。底部子系统指的是k, k来自于它的掩码。它也指的是在顶部蒙版中解析的m。如果Bottom子系统位于模型的根,m将解析为基本工作空间。
这种行为可以使相同的库块根据它们的父系统表现出不同的行为。例如,一个摆子系统可以从它的父系统继承重力加速度(g)。这些父系统可以为不同的环境定义变量。
控制层次分辨率
您可以通过在子系统参数中设置允许分层分辨率参数来控制子系统中变量的分辨率(右键单击子系统并选择子系统参数…)。
默认设置为所有并给出上面描述的行为。如果您不希望变量解析为子系统之上的层次结构中定义的符号,可以将其更改为没有一个.的ExplicitOnly设置通过仅解析已设置为显式解析的对象来控制信号和状态名称的解析。
模型参考层次结构是什么?
层次符号解析在到达模型的根时停止。模型引用层次结构不被视为层次符号解析的一部分。任何模型都必须能够独立地定义自己,或者作为更大的模型引用层次结构的一部分。通过模型引用参数将变量传递到模型工作区是可能的。有关这方面的更多信息,请参阅有关文档使用模型参数.
现在轮到你了
如果您使用M-code编程,您可能会看到讨论类似于在m -文件的嵌套函数中解析变量的方式。您是否利用了分层符号解析?留下一个这里的评论告诉我们怎么做。
评论
要发表评论,请点击此处登录到您的MathWorks帐户或创建一个新帐户。