主要内容

使用模型参考的基于组件的建模

这个示例将引导您完成多次引用另一个模型的模型的模拟和代码生成。在本例中,Simulink®生成用金宝app于加速模拟的代码,而Simulink®Coder™生成可部署在独立应用程序中的代码。

模型参考行为

与子系统相比,Model Reference有几个优点:

  • 您可以独立于所使用的模型来开发所引用的模型。

  • 您可以在另一个模型中多次引用一个模型,而不必进行冗余复制。

  • 多个模型可以引用单个模型。

  • 直到需要引用模型时才会加载它。这种增量加载加快了模型加载时间。

  • 如果以加速模式引用模型,Simulink将创建用于模拟的特殊二进制文件。金宝app如果自二进制文件创建以来引用的模型没有更改,并且二进制文件因此是最新的,那么在模拟或编译使用这些二进制文件的模型时,就不会发生代码生成。这个过程叫做增量代码生成.使用二进制文件可以更快地更新和模拟模型,并增加代码生成中的模块化。

  • 使用model块为模型生成代码也可以利用增量代码生成。

增量加载

打开示例模型。

open_system (“sldemo_mdlref_basic”

该模型包含三个模型块:CounterA、CounterB和CounterC。这些块引用了相同的模型,sldemo_mdlref_counter,这是一个单独的模型,而不是一个子系统sldemo_mdlref_basic

在打开模型层次结构中的顶层模型后,要确定哪些模型被加载到内存中,输入以下命令:

get_param 金宝app(Simulink.allBlockDiagrams“名字”
Ans = 'sldemo_mdlref_basic'

没有列出引用的模型,因为它没有加载。

通过双击任意model块或输入以下命令打开引用的模型:

open_system (“sldemo_mdlref_counter”

再次查询加载到内存中的模型。

get_param 金宝app(Simulink.allBlockDiagrams“名字”
Ans = 2x1单元格数组{'sldemo_mdlref_counter'} {'sldemo_mdlref_basic'}

现在列出了引用的模型,说明模型是在需要时增量加载的。

继承样本时间

导航回父模型sldemo_mdlref_basic

sldemo_mdlref_basic配置为在编译时显示示例时间颜色。在调试选项卡上,单击更新模型

模型块继承不同的采样时间,因为引用模型sldemo_mdlref_counter没有显式指定采样时间。

通过代码生成进行仿真(不需要Simulink Coder)金宝app

模型块有一个模拟模式参数,该参数控制如何模拟引用的模型。如果参数设置为正常的时,以解释模式模拟参考模型。如果参数设置为加速器,通过代码生成模拟参考模型。这个过程使用一个名为a的二进制文件模拟目标对于加速器模式中引用的每个独特模型。生成模拟目标不需要Simulink Coder许可证。金宝app

在这个模型中,引用了CounterA和CounterBsldemo_mdlref_counter在正常模式下,由Model块图标上的空心角表示。另一个实例CounterC引用sldemo_mdlref_counter在加速模式下,由Model块图标上的填充角表示。

对象的模拟目标sldemo_mdlref_counter通过执行以下任何操作来建模:

  • 更新sldemo_mdlref_basic

  • 模拟sldemo_mdlref_basic

要以编程方式构建模拟目标,使用以下命令:

slbuild(“sldemo_mdlref_counter”、“ModelReferenceSimTarget”)

一旦建立了仿真目标,随后进行仿真或更新sldemo_mdlref_basic不会触发模拟目标的重建,除非sldemo_mdlref_counter已经改变了。

如果所引用模型的所有三个实例都被设置为在普通模式下进行模拟,则不会构建模拟目标。

独立应用程序代码生成(需要Simulink Coder)金宝app

的独立可执行文件时sldemo_mdlref_basic时,构建首先为模型参考编码器目标sldemo_mdlref_counter.生成模型参考编码器目标需要一个Simulink coder许可证。金宝app

您可以为其构建模型参考编码器目标sldemo_mdlref_counter的独立可执行文件sldemo_mdlref_basic通过执行以下任何一个动作:

  • 构建的独立可执行文件sldemo_mdlref_basic

  • 建立模型参考编码器的目标sldemo_mdlref_counter,然后构建独立的可执行文件sldemo_mdlref_basic

要以编程方式构建独立的可执行文件,使用以下命令:

slbuild(“sldemo_mdlref_basic”、“StandaloneCoderTarget”)

一旦模型参考编码器目标被建立,随后构建sldemo_mdlref_basic不触发模型引用编码器目标的重建,除非sldemo_mdlref_counter已经改变了。为引用模型生成的代码sldemo_mdlref_counter是重用。

的代码生成报告sldemo_mdlref_basic的报告的链接sldemo_mdlref_counter引用模型部分。

另请参阅

相关的话题