主要内容

基于组件的模型引用建模

本例指导您完成多次引用另一个模型的模型的模拟和代码生成。在本例中,Simulink®生成用于加速模拟的代码,Simulink®编码器™ 生成可在独立应用程序中部署的代码。万博1manbetx

模型参考行为

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

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

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

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

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

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

  • 使用model块为模型生成代码也利用了增量代码生成的优势。

增量加载

打开示例模型。

开放式系统(“sldemo_mdlref_basic”

此模型包含三个模型块:计数器A、计数器B和计数器C。这些块引用相同的模型,sldemo_mdlref_counter,这是一个单独的模型,而不是sldemo_mdlref_基本

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

get_param 万博1manbetx(Simulink.allBlockDiagrams“名字”
ans='sldemo\U mdlref\U basic'

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

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

开放式系统(“sldemo_mdlref_counter”

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

get_param 万博1manbetx(Simulink.allBlockDiagrams“名字”
ans=2x1单元数组{'sldemo\u mdlref\u计数器'}{'sldemo\u mdlref\u基本'}

现在列出了引用的模型,说明模型是根据需要以增量方式加载的。

继承的样品时间

导航回父模型sldemo_mdlref_基本

sldemo_mdlref_基本配置为在编译时显示采样时间颜色。上调试选项卡上,单击更新模型

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

通过代码生成进行模拟(不需要Simulink编码器)万博1manbetx

模型块具有模拟模式控制如何模拟参照模型的参数。如果参数设置为正常的时,以解释模式模拟参考模型。如果设置为加速器通过代码生成对参考模型进行了仿真。此过程使用名为模拟目标加速器模式中所引用的每个独特型号。生成仿真目标不需要Simulink Coder许可证。万博1manbetx

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

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

  • 更新sldemo_mdlref_基本

  • 模拟sldemo_mdlref_基本

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

slbuild('sldemo\u mdlref\u计数器','ModelReferenceSimTarget')

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

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

独立应用程序的代码生成(需要Simulink编码器)万博1manbetx

创建独立的可执行文件时sldemo_mdlref_基本的代码和二进制文件模型参考编码器目标属于sldemo_mdlref_counter.生成模型参考编码器目标需要Simulink coder许可证。万博1manbetx

您可以为其构建模型参考编码器目标sldemo_mdlref_counter以及的独立可执行文件sldemo_mdlref_基本通过执行以下任一操作:

  • 为。构建独立的可执行文件sldemo_mdlref_基本

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

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

slbuild('sldemo\U mdlref\U basic','StandaloneCoderTarget')

一旦构建了模型参考编码器目标,随后构建sldemo_mdlref_基本不会触发模型引用编码器目标的重建,除非sldemo_mdlref_counter已更改。为引用模型生成的代码sldemo_mdlref_counter是重用。

的代码生成报告sldemo_mdlref_基本链接到报告sldemo_mdlref_counter参考模型部分

另请参阅

相关话题