【发布时间】:2014-03-24 21:58:06
【问题描述】:
我在运行 simulink 的块回调时遇到了很多麻烦,而且文档严重不足且杂乱无章。看来我对 Simulink 编译模型的方式有多点误解,但由于 StackOverflow 不喜欢多部分问题,我将一次发布一个。
情况:我有一个组件库,每个组件都是一个虚拟子系统,其参数通过掩码定义。块A 有参数a 使用'assignin' 命令发送到基础工作区。
接下来,块B 有一个参数b,它在掩码的Initialization 选项卡中被初始化。
最后,B 块的 StartFcn 回调运行一个 脚本,该脚本需要引用 a 和 b 来计算 c。在脚本中,我将a 引用为a,因为它位于“基础”工作区中,我使用get_param(gcb,'b') 引用b。
现在,当参数b 是用户输入(因此它是一个常数值)时,最后一条命令有效。但在我的例子中,这个b 是使用初始化选项卡中的 other 参数计算的。并且由于某种原因,在脚本中,此参数始终为零。
我在 B 块中添加了一个显示以查看这些值是什么,它们显然不为零。
有人能解释一下为什么脚本似乎无法从区块中获取区域的真正价值吗?
【问题讨论】:
-
块B有参数b是什么意思,是掩码参数吗?如果 'b' 不是 一个掩码参数并且您只在掩码初始化中拥有它,那么我猜它只是掩码的本地参数,它不是您可以获得的块的实际参数获取参数。
-
嗨@pmb,是的,它是一个掩码参数。但是,该参数不是用户输入。它在初始化选项卡中计算。这意味着,根据您的说法,我无法访问
b,除非它是用户输入。然而,我仍然am 能够在子系统内 的常量中使用b。你能告诉我为什么它可以在系统中工作,但当我尝试使用get_param获取它时却不行? -
如果是被屏蔽的参数,也就是说你在Parameters & Dialog选项卡中输入了它,并且没有勾选“visibility”,这样用户就无法输入了,那我就不解释了。跨度>
-
只有被屏蔽的参数可以用 get_param 访问,如果你在初始化选项卡中只有“b = 1+1”,这是 not 用 get_param 获取的,因为它是仅在该选项卡本地。这不被视为掩码参数。
-
听起来你真的应该使用getworkspacevariables