主要内容

为模型引用层次结构生成代码

为了实现模型的增量加载、增量代码生成、引用模型的模块化开发以及代码重用,您可以为模型引用层次结构生成代码。

属性可以将一个模型包含到另一个模型中模型块。的每个实例模型块是A.模型参考.用于仿真和代码生成,在a中块引用模型作为一个整体一起执行。包含引用模型的模型是父模型.父母和引用模型的集合构成了一个模型层次结构

模型参考技术

当您为引用的模型层次结构生成代码时,代码生成器为顶层模型生成独立的可执行文件和名为模型参考目标对于每个引用的模型。当代码执行时,顶级模型可执行文件调用模型引用目标来计算引用的模型输出。模型引用目标有时被调用金宝app®编码器™目标

不要混淆模型参考目标(金宝app仿真软件编码器目标)和其他类型的目标:

  • 目标硬件-一个平台金宝app仿真软件编码器软件生成的代码。

  • 系统目标文件-指示金宝app仿真软件编码器软件如何为特定目的生成代码。

  • 快速模拟目标(RSim) -一个系统目标文件,它是金宝app仿真软件编码器产品。

  • 仿真目标-实现引用模型的MEX文件,通过使用金宝app仿真软件加速器™软件

代码生成器将顶部模型的代码放在代码生成文件夹中的层次结构中,并将代码放置在一个中引用的模型slprj文件夹。子文件夹slprj是不同类型文件的独立位置。有关文件夹信息,请参见管理构建过程文件夹

默认情况下,金宝app仿真软件编码器用途增量的代码生成.在生成代码时,软件将比较引用的模型文件与生成的代码文件的结构校验和,以确定是否重新生成模型引用目标。要控制何时重新构建,请使用配置参数模型引用>重建.有关详细信息,请参见重建

金宝app仿真软件编码器软件也使用增量加载.在父模型的代码执行并需要被引用模型的输出之前,被引用模型的代码不会被加载到内存中。金宝app仿真软件编码器然后加载引用的模型目标并执行代码。一旦加载,目标仍保留在内存中,直到不再使用它。

如果你有嵌入式编码器®,如果自定义目标支持,则它们必须声明自己符合模型引用金宝app模型块。有关更多信息,请参见金宝app支持模型引用

为模型引用层次结构生成代码

此示例展示了如何引用现有模型并为模型引用层次结构生成代码。

创建模型引用层次结构

1.打开现有模型,例如ex_model_arg_ref模型。该模型代表了一种可重用的算法。这是一个GRT模型。如果您有Embedded Coder,请更改模型配置参数系统目标文件ert.tlc

open_system (“ex_model_arg_ref”);

2.被引用的模型必须指定它可以被引用,以及它只能被引用一次还是多次。指定模型配置参数每个top模型允许的实例总数作为一个或者多个.默认情况下,每个top模型允许的实例总数被设定为多个

3.创建您想要作为模型引用层次结构中的顶级模型的新模型。顶级模型引用其他模型作为引用模型或引用模型的多个实例。

4.根据需要将Inports和Outports添加到顶层模型。要添加引用模型,请使用模型块。

5.新块最初无法解析,因为它没有指定引用的模型。要打开块参数对话框,双击Model块或使用Model块的上下文菜单。

6.属性中输入引用模型的名称模型名称字段。名称长度必须小于60个字符,不包括.slx后缀。

7.点击好的.如果引用的模型包含根级输入或输出,model块将显示相应的输入和输出端口。

8.创建模型块的另一个实例,以便顶部模型看起来像模型:

open_system (“ex_model_arg”);

9.模型名称ex_model_arg保存模型。

您还可以将子系统转换为引用的模型。有关详细信息,请参见将子系统转换为引用模型

为模型引用层次结构生成代码

1.验证模型配置参数的选择类型被设定为固定步用于顶层模型和参考模型。要打开各自的配置参数对话框,请在建模选项卡上,选择模型设置对于各自的模型。

对于具有多个引用模型的模型引用层次结构,您可以访问模型设置打开的引用模型和通过这个菜单的顶部模型。访问模型设置在模型层次结构中的另一个被引用的模型中,打开被引用的模型以访问此菜单。

2.对于顶级模型,打开C代码选项卡,选择金宝app仿真软件编码器应用程序或嵌入式编码器要生成模型引用层次结构的代码,请单击构建按钮。

Simu金宝applink Coder构建过程生成并编译代码。当前文件夹现在包含新文件和新文件夹。

  • ex_model_arg_grt_rtw-构建文件夹,其中包含顶部模型生成的代码。

  • SLPRJ > GRT > ex_model_arg_ref-包含引用模型的生成代码的文件夹。

  • ex_model_arg.exe- 由构建过程创建的可执行文件。

  • ex_model_arg.slxc—顶端模型的金宝appSimulink缓存文件。

  • ex_model_arg_ref.slxc—参考模型的金宝appSimulink缓存文件。

有关配置参数要求的更多信息,请参见设置模型层次结构代码生成的配置参数

在代码生成报告中查看生成的代码

查看生成的代码,在C代码选项卡上,选择开放的报告.代码生成报告包含对模型引用层次结构生成的所有文件的超链接。

要打开引用的模型的生成的代码,请单击此处的引用模型超链接引用模型部分的左边窗格。

要导航回顶部模型,请单击向后走代码生成报告窗口的左上角的按钮。

使用代码生成文件夹

模型参考代码在代码生成文件夹中生成。仿真目标代码是在模拟缓存文件夹中生成的。由于两个不同的文件夹,有限制:

  • 何时以及在哪里构建模型引用目标。

  • 如何访问模型引用目标。

您可以存储引用的模型模型块在MATLAB的任何地方®路径。顶级模型可以包括存储在不同文件系统或不同文件夹中的模型。模拟目标和由这些模型生成的代码不能存储在不同的文件系统或不同的文件夹中。要允许代码重用,您必须设置顶级模型引用的模型,以便在单个代码生成文件夹中模拟和生成模型引用目标代码。

如果您从多个顶级模型中引用相同的模型,每个模型都存储在不同的文件夹中,您必须选择以下方法之一:

  • 使用相同的代码生成文件夹,并确保模型位于路径上。

  • 允许单独的代码生成文件夹、模拟目标和金宝app仿真软件编码器要在您工作的每个文件夹中生成的目标。

第二种方法需要维护模型引用代码的几个实例。生成的代码可能变得冗余,例如,当您对引用的模型进行更改时。要最小化引用模型的代码再生,请为所有会话选择一个特定的代码生成文件夹。

构建模型参考目标

代码生成器直接从Simulink模型生成模型引用目标。金宝app代码生成器生成或重新生成模型引用目标,例如,当它们需要更新时。

当你执行slbuild在MATLAB命令窗口、Simulink和金宝app金宝app仿真软件编码器可以为加速器模式参考模型生成仿真目标,并为参考模型生成模型参考目标。

代码生成器仅为引用模型的多个实例生成一个模型引用目标。有关更多信息,请参见从子系统生成可重入代码

减少更改检查时间

您可以减少Simulink和Simulink的时间金宝app金宝app仿真软件编码器通过设置配置参数值来检查模型参考目标是否需要重建:

  • 在顶部模型中,考虑设置模型配置参数模型引用>重建如果检测到已知依赖项中的任何更改

  • 在整个层次结构的引用模型中,设置配置参数诊断>数据的有效性>信号的分辨率只有明确的或者没有一个

这些参数值存在于引用的模型配置集中,而不是在个人中模型块。为引用模型的实例设置任意一个值都会为该模型的实例设置该值。

相关话题