【问题标题】:In simulink, programmatically create a variant subsystem在 simulink 中,以编程方式创建一个变体子系统
【发布时间】:2014-03-05 21:17:11
【问题描述】:

我想使用脚本在 simulink 中创建和定义变体子系统。

我能够创建变体子系统并使用 add_block 在其中添加子系统,但找不到使用 get_param 命令定义变体子系统的适当属性。

我以图形方式配置变体子系统的方式是右键单击模块并转到模块参数,然后为每个子系统添加变体控制条件。

我想从一个 m 文件中做同样的事情,这样我就可以通过编程方式创建多个块。

我检查了文档和谷歌搜索,但找不到任何东西。

提前致谢。

【问题讨论】:

  • 我什至不想知道您为什么希望以编程方式执行此操作,但您可以通过在文本编辑器中打开模型并查看子系统的属性。您应该能够通过反复试验以get_param / set_param 正确设置。
  • 在文本编辑器中打开文件(顺便说一句,对于 .slx 文件,您首先必须使用 zip 程序提取它,然后在编辑器中打开 xml 文件)我能够看到变体条件存储在变体子系统内的子系统中,而不是顶级变体子系统内。因此,您将条件存储在每个子系统的“VariantControl”参数中。示例:set_param(sys,'VariantControl','a==1') 其中sys 是变体子系统中的子系统。

标签: matlab simulink


【解决方案1】:

根据@Praetorian 的评论,我在文本编辑器中打开模型并找到定义变体条件的参数行。

我发现变体条件存储在变体子系统内的子系统中,而不是存储在顶级变体子系统中。

因此,您将条件存储在每个子系统的“VariantControl”参数中。

示例: set_param([variantSys '/' sys],'VariantControl','a==1') 其中sys 是变体子系统variantSys 中的一个子系统。

【讨论】:

    【解决方案2】:

    变体控件应该写在模型的回调上。为了使模型可以使用 simulink 变体控件,应在工作区中创建变量。为此,您需要将 Sys = Simulink.Variant(Mode== value) 等放在 PreLoadFcn 上。

    检查访问 PreLoadFcn 并将公式放入其中,然后您的表格将自动填充。

    如果您不介意,能否告诉我您是如何创建变体子系统的?

    祝你好运

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-31
      • 1970-01-01
      • 2011-09-02
      • 2012-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多