此示例通过多次引用另一个模型的模型进行仿真和代码生成。在此示例中,Simulink®生成金宝app用于加速仿真的代码,Simulink®Coder™生成可在独立应用程序中部署的代码。
模型参考相对于子系统有几个优点:
您可以独立于使用它的模型来开发引用的模型。
您可以在另一个模型中多次引用一个模型,而不必进行冗余复制。
多个模型可以引用单个模型。
引用的模型直到需要时才加载。这种增量加载加快了模型加载时间。
如果模型在加速模式中被引用,Simulink会创建用于仿真的特殊二进制文件。金宝app如果自创建二进制文件以来引用的模型没有更改,因此二进制文件是最新的,那么在模拟或编译使用这些二进制文件的模型时,不会发生代码生成。这个过程叫做增量的代码生成.使用二进制文件可以更快地更新和模拟模型,并提高代码生成的模块化程度。
使用model块为模型生成代码也利用了增量代码生成的优势。
打开示例模型。
Open_System(“sldemo_mdlref_basic”)
此模型包含三个模型块:对比度,符号和反应。这些块参考相同的模型,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
在此模型中,对立反应和抵消参考sldemo_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
已经改变。
如果将引用模型的所有三个实例都设置为在正常模式下进行模拟,则不会构建模拟目标。
创建独立的可执行文件时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
在里面引用的模型部分。