主要内容

基于组件的模型引用建模

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

模型参考行为

模型参考相对于子系统有几个优点:

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

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

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

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

  • 如果模型在加速模式中被引用,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 cell array {'sldemo_mdlref_counter'} {'sldemo_mdlref_basic'}

现在列出了引用的模型,演示了模型在需要时增量加载。

继承的样品时间

导航回父模型sldemo_mdlref_basic

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

模型块继承不同的样本时间,因为所引用的模型sldemo_mdlref_counter没有明确指定示例时间。

通过代码生成进行模拟(不需要Simulink编码器)金宝app

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

在此模型中,参考CounterA和CounterBsldemo_mdlref_counter在普通模式下,由Model块图标上的空心角表示。另一个实例CounterC引用sldemo_mdlref_counter加速模式,由模型块图标上的填充角指示。

的模拟目标sldemo_mdlref_counter通过执行以下操作进行建模:

  • 更新sldemo_mdlref_basic

  • 模拟sldemo_mdlref_basic

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

slbuild(“sldemo_mdlref_counter”、“ModelReferenceSimTarget”)

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

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

独立应用程序的代码生成(需要Simulink编码器)金宝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引用模型部分。

另请参阅

相关的话题