基于组件的建模与模型参考
这个例子向您通过模拟和代码生成模型的多次引用另一个模型。在这个例子中,仿真软件®为加速模拟金宝app,生成的代码和仿真软件®编码器™生成代码可以部署在独立的应用程序。
模型参考行为
模型参考子系统有几个优势:
您可以开发引用模型独立于模型中使用它。
你可以参考模型多次在另一个模型,而不必让多余的副本。
多个模型可以引用一个模型。
引用的模型是不加载,直到它是必要的。这个增量加载加速模型加载时间。
如果一个模型是加速器中引用模式,模型创建特殊的二进制文件中使用模拟。金宝app如果所引用的模型并没有改变自创建二进制文件,因此二进制文件是最新的,没有代码生成时,模拟模型,使用这些二进制文件或编译。这个过程称为增量的代码生成。使用二进制文件,更新快和模拟模型和增加模块化代码生成。
对模型与模型生成代码块也利用增量代码生成。
增量加载
打开示例模型。
open_system (“sldemo_mdlref_basic”)
这个模型包含三个模型块:CounterA CounterB CounterC。这些块引用相同的模型,sldemo_mdlref_counter
,这是一个单独的模型,而不是一个子系统sldemo_mdlref_basic
。
来确定模型加载在内存中打开后上面模型在模型层次结构,输入这个命令:
get_param 金宝app(Simulink.allBlockDiagrams“名字”)
ans = ' sldemo_mdlref_basic '
引用的模型是不上市,因为它是不加载。
打开引用模型通过双击任何模型块或通过输入这个命令:
open_system (“sldemo_mdlref_counter”)
查询模型加载到内存中。
get_param 金宝app(Simulink.allBlockDiagrams“名字”)
ans = 2 x1单元阵列{‘sldemo_mdlref_counter} {' sldemo_mdlref_basic '}
引用的模型现在已经上市,证明模型加载增量时是必要的。
继承的样品时间
返回到父模型sldemo_mdlref_basic
。
sldemo_mdlref_basic
配置为显示样本时间颜色编译时。在调试选项卡上,单击更新模型。
模型块继承不同样本时间因为被引用的模型sldemo_mdlref_counter
不显式地指定样品的时间。
通过代码生成仿真(不需要仿真软件编码器)金宝app
模型块有一个模拟模式参数控制参考模型的模拟。如果参数设置正常的
以解释的方式,引用模型模拟。如果参数设置加速器
通过代码生成,引用模型模拟。这个过程使用一个称为二进制文件模拟目标加速器中引用方式为每一个独特的模型。生成一个模拟目标不需要仿真软件编码器许可证。金宝app
在这个模型中,CounterA和CounterB参考sldemo_mdlref_counter
在正常模式下,显示的模型上的空心角落块图标。CounterC,其他实例引用sldemo_mdlref_counter
在加速器模式下,显示的角落在模型块图标。
您可以创建仿真目标sldemo_mdlref_counter
模型通过执行这些动作:
更新
sldemo_mdlref_basic
模拟
sldemo_mdlref_basic
建立仿真目标编程,使用这个命令:
slbuild (“sldemo_mdlref_counter”、“ModelReferenceSimTarget”)
一旦建立仿真目标,随后模拟或更新sldemo_mdlref_basic
不触发一个重建的模拟目标除非吗sldemo_mdlref_counter
已经改变了。
如果所有的三个实例引用模型将模拟在正常模式下,仿真目标不会建造。
独立应用程序代码生成(需要仿真软件编码器)金宝app
当创建一个独立的可执行文件sldemo_mdlref_basic
,首先构建生成的代码和二进制文件模型参考编码器目标的sldemo_mdlref_counter
。生成一个模型参考编码器目标需要一个仿真软件编码器许可证。金宝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
在引用模型部分。