文档

基于组件的模型引用建模

这个例子展示了如何使用模型引用。它将引导您完成多次引用另一个模型的模型的模拟和代码生成。

示例要求

在本例中,Simulink®和Simuli万博1manbetxnk®Coder™在当前工作目录中创建的代码生成文件夹中生成代码。如果您不想(或不能)在此目录中生成文件,您应该更改工作目录。

万博1manbetxSimulink编码器需要生成要部署在独立应用程序中的代码。

如果您计划更改示例模型:

1.通过从Matlab®安装目录复制以下文件,而无需将其名称更改为不同的目录,保留其原始状态的示例:

工具箱/模型/ 万博1manbetxsimdemos / simfeatures / modelreference / sldemo_mdlref_basic。基金工具箱/模型/ si万博1manbetxmdemos / simfeatures / modelreference / sldemo_mdlref_counter.slx

2.将当前的工作目录更改为复制文件的目录

3.继续这个例子

关于模型参考

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

模拟模式

模型块有一个名为SimulationMode控制参考模型的模拟方式。如果设置为加速器,通过代码生成模拟引用的模型。如果设置为正常的,参考模型以解释模式模拟。在此模型中,模型块对立反应和晶蝶基sldemo_mdlref_counter.在普通模式,这是由模型块图标上的空心角指示的。其他的实例,CounterC,引用sldemo_mdlref_counter.在加速器模式,这是由模型块图标上的填充角指示的。要了解关于与在Normal模式中多次引用的模型交互的更多信息,请参阅示例sldemo_mdlref_depgraph.

图1:前模型,sldemo_mdlref_basic.

图2:引用的模型,sldemo_mdlref_counter.

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

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

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

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

  • 引用的模型直到需要时才加载,这是一个被调用的特性增量加载。增量加载加快了模型加载时间。

  • 如果模型在Accelerator模式中被引用,Simulink会创建用于仿真的特殊二进制文件万博1manbetx。如果二进制文件是最新的,因为自创建二进制文件以来所引用的模型没有更改,那么在模拟或编译使用这些二进制文件的模型时就不会发生代码生成。这就是所谓的增量代码生成。二进制文件的使用增加了代码生成中的模拟速度和模块化。

  • 生成具有模型块的模型的代码也利用了增量代码生成。

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

在Accelerator模式下引用其他模型的模型的模拟需要为每个唯一引用模型生成代码和名为Simulation Target的二进制文件。这个过程不需要Simulink Coder。万博1manbetx在本例中,为sldemo_mdlref_counter.模型。你可以通过以下任何一个操作来创建模拟目标:

  • 更新sldemo_mdlref_basic.

  • 模拟sldemo_mdlref_basic.

  • 发出命令:

SLBUILD('sldemo_mdlref_counter','modelreferencesimtarget')

评论:

  • 如果模型在正常模式下被引用,则不会为该引用模型构建仿真目标。

  • 一旦构建了仿真目标,随后的模拟或更新模型不会触发引用模型的仿真目标的重建,除非引用模型已经更改。

  • 打开采样时间颜色sldemo_mdlref_basic.。注意,Model块继承了不同的示例时间。如果被引用的模型没有显式指定样本时间,则模型块继承它们的样本时间。

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

创建独立的可执行文件时sldemo_mdlref_basic.,目标的代码和二进制文件sldemo_mdlref_counter.首先生成。如果他们不是最新的,则建造必要的目标。您可以构建目标sldemo_mdlref_counter.和独立的可执行文件sldemo_mdlref_basic.通过以下任何一个操作:

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

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

评论:

  • 一旦模型参考编码器的目标sldemo_mdlref_counter.建成,后续构建sldemo_mdlref_basic.不触发重建sldemo_mdlref_counter.除非sldemo_mdlref_counter.更改(增量代码生成)。

  • 注意,为引用的模型生成的代码sldemo_mdlref_counter.是重用。

  • 生成代码的HTML报告sldemo_mdlref_basic.是否有生成代码的HTML报告的链接sldemo_mdlref_counter.在引用的模型部分中。

构建独立目标并查看生成代码的HTML报告

出口仿真数据

您可以记录模拟的时间,输出,状态和最终状态数据。日志记录配置为使用DataSet格式。

增量加载

关闭sldemo_mdlref_counter.sldemo_mdlref_basic.然后重新打开sldemo_mdlref_basic.。在MATLAB提示下发出命令:

find_system('type','block_diagram')

未列出引用的模型,因为它未加载。右键单击任何模型块并选择开放。在Matlab提示符下,发出命令:

find_system('type','block_diagram')

现在列出了引用的模型,说明了增量加载有效。

这个主题有用吗?