生成代码的参考模型

关于生成代码的参考模型

要为引用的模型生成的代码,你

  1. 创建现有模型的一个子系统。

  2. 转换子系统的参考模型(模型块)。

  3. 调用从顶级车型的参考模型。

  4. 生成的顶级型号和参考模型的代码。

  5. 浏览生成的代码和代码生成的文件夹。

您可以通过调用函数自动完成某些任务万博1manbetxSimulink.Subsystem.convertToModelReference

创建和配置子系统

在这个例子中的第一部分,您可以定义为一个子系统VDP示例模型,该模型组配置参数,并使用万博1manbetxSimulink.Subsystem.convertToModelReference功能将其转换成两款新车型 - 顶级车型(vdptop)和参考模型vdpmultRM包含您创建了一个子系统(vdpmult)。

  1. 在MATLAB®命令窗口,不管你想要的工作创建一个新的工作文件夹光盘进去:

    MKDIR mrexample CD mrexample
  2. 打开VDP示例模型通过打字:

    VDP
  3. 拖动蓝色下面列出的三个街区周围的框:

  4. 选择创建子系统来自选项卡上的工具条。

    子系统块替换所选块。

  5. 如果新的子系统块不是你想的那样,将其移动到最佳位置。

  6. 重命名块vdpmult

  7. 右键单击vdpmult块,然后选择块参数(子系统)

    块参数对话框。

  8. 在里面块参数对话框中,选择治疗以原子单位,然后单击

    的边界vdpmult子系统增厚,以表明它现在是原子。原子子系统执行作为一个单元相父模型:子系统块执行不与母块执行交织。这一特性使得我们可以提取子系统作为独立的模型,在生成代码的功能。

    出现的框图。

你必须设置一些属性,然后才能提取用作参考模型的一个子系统。要设置属性:

  1. 打开模型浏览器。在造型选项卡,单击模型浏览器

  2. 在里面模型层次窗格中,展开模型,以揭示其成分。

  3. 选择配置节点。

  4. 在里面内容窗格中,右键点击配置(主动)并点击打开在上下文菜单打开配置参数对话框。

  5. 在配置参数对话框的左侧窗格中,选择求解

  6. 更改类型固定步长,然后单击应用。生成代码时,必须使用固定的步距求解,但所引用的模型可以使用比顶级机型不同的求解器。

  7. 在左窗格中,单击前面的符号诊断。在下面的左侧窗格中诊断, 选择数据有效性。在里面信号区,集信号分辨率只有明确。另外,如果你不想使用万博1manbetxSimulink.Signal对象,集信号分辨率没有

  8. 请点击应用

    现在模型有一个模型引用需要的属性。

  9. 在左窗格中,单击型号引用。在里面所有引用的模型选项部分,设置重建如果已知相关性的任何变化来检测。请点击。此设置可以防止代码再生时它不是必需的。

  10. 在里面VDP示范窗口,选择文件>另存为。保存模型vdptop在你的工作文件夹。离开模式打开。

转换模型中使用的模型引用

在该例子中的这个部分,可以使用转换函数万博1manbetxSimulink.SubSystem.convertToModelReference提取子系统vdpmultvdptop和转换vdpmult到一个名为参考模型vdpmultRM。要查看转换功能的完整语法,请在MATLAB提示:

帮助Sim万博1manbetxulink.SubSystem.convertToModelReference

有关更多信息,请键入:

DOC 万博1manbetxSimulink.SubSystem.convertToModelReference

如果你想看到的一个例子万博1manbetxSimulink.SubSystem.convertToModelReference自己在使用它之前,键入:

sldemo_mdlref_conversion

万博1manbetx®还提供了一个菜单命令,子系统和模型参考>转换子系统>参考模型,您可以使用一个子系统转换为参考模型。命令调用万博1manbetxSimulink.SubSystem.convertToModelReference使用默认参数。欲了解更多信息,请参阅转换子系统参考模型(万博1manbetxSIMULINK)。

提取子系统的参考模型

要使用万博1manbetxSimulink.SubSystem.convertToModelReference提取vdpmult并将其转换为一个参考模型,类型:

万博1manbetxSimulink.SubSystem.convertToModelReference ...( 'vdptop / vdpmult', 'vdpmultRM',...... 'ReplaceSubsystem',真正的 'BuildTarget', '辛')

这条命令:

  1. 提取子系统vdpmultvdptop

  2. 所提取的子系统转换为一个单独的名为模型vdpmultRM并保存模型到工作文件夹。

  3. vdptop取代了提取子系统与一个模型块的引用vdpmultRM

  4. 创建一个模拟目标vdptopvdpmultRM

该转换器打印进度消息,并终止与

ANS = 1

父模型vdptop现在看起来是这样的:

请注意,在块的外观变化vdpmult。这些变化表明,它现在是一个模型块,而不是一个子系统。作为一名模特块,它没有自己的内容:现在前面的内容中存在的参考模型vdpmultRM,他的名字出现在模型块的顶部。拓宽模型块,露出参考模型的完整名称。

如果父模型vdptop曾在转换时被关闭,该转换器会打开它。提取子系统的参考模型做自动创建或更改父模型的保存的副本。要保留更改父模型,保存vdptop

右键单击模型vdpmultRM并选择打开打开参考模型。该模型是这样的:

创建的文件并通过转换器改变

在你的工作文件夹中的文件现在由以下(不按照这个顺序)的。

文件 描述

vdptop模型文件

包含一个顶级模特模型块,其中vdpmult子系统是

vdpmultRM模型文件

为创建的参考模型vdpmult子系统

vdpmultRM_msf.mexw64

静态库文件(微软®视窗®只有平台)。该文件的扩展名是与系统相关的和可能不同。此文件执行时,vdptop模型调用模型块vdpmult。当被调用时,vdpmult依次调用参考模型vdpmultRM

/ slprj

文件夹生成的模型参考码

模型参考模拟目标代码放置在slprj / SIM卡子文件夹。对于GRT,ERT,等生成的代码万博1manbetxSimulink的编码器™目标被放置在slprj命名为这些目标的子文件夹。您将在这个例子后检查一些模型参考代码。有关代码生成文件夹的详细信息,请参阅代码生成文件夹的工作

运行模式转换

打开范围阻断vdptop如果它是不可见的。在里面vdptop窗口中,单击工具或点击来自模拟标签。该模型调用vdpmultRM_msf模拟目标来模拟。输出看起来是这样的:

生成模型参考代码为GRT目标

功能万博1manbetxSimulink.SubSystem.convertToModelReference创建模型和模拟目标文件的参考模型vdpmultRM。在这个例子中的这一部分,您生成该模型和代码vdptop模型,并运行您创建可执行文件:

  1. 验证是否仍在工作mrexample夹。

  2. 如果模型vdptop没有打开,打开它。请确保它是活动窗口。

  3. 打开模型浏览器。在造型选项卡,单击模型浏览器

  4. 在里面模型层次窗格中,单击符号前的vdptop模型以揭示其成分。

  5. 选择模型节点下的配置节点。

  6. 在里面内容窗格中,右键点击配置(主动)并点击打开在上下文菜单打开配置参数对话框。

  7. 在左窗格中,选择数据导入/导出

  8. 在里面保存到工作区或文件部分选择时间产量明确数据存储。请点击应用

    这些设置指示模型vdptop(后来其可执行)登录时间和将数据输出到MAT文件为每个时间步长。

  9. 生成GRT码(默认)和顶部模型和参考模型的可执行文件。例如,在模型中,按按Ctrl + B

万博1manbetxSimulink的编码器构建过程生成和编译代码。在当前文件夹现在包含一个新的文件,新文件夹。

文件 描述

vdptop.exe

在构建过程中创建的可执行文件

vdptop_grt_rtw /

生成文件夹,包含生成的代码用于顶部模型

构建过程还产生用于参考模型GRT代码并将其放置在slprj夹。

要在查看模型的生成代码模型浏览器,模型必须是开放的。要使用模型浏览器检查新创建的生成文件夹,vdptop_grt_rtw

  1. 打开模型浏览器。在造型选项卡,单击模型浏览器

  2. 在里面模型层次窗格中,展开型号,以显示其组件。

  3. 扩大代码vdptop以揭示其组件。

  4. 请点击这个型号

    对生成的代码文件的列表vdptop出现在内容窗格:

    rtmodel.h vdptop.c vdptop.h vdptop.mk vdptop_private.h vdptop_types.h

    您可以通过选择感兴趣的文件浏览代码内容窗格。

    要打开一个文本编辑器文件,单击文件名,然后单击在的顶部出现在灰色地带的超级链接文件窗格。该图中示出了观看代码vdptop.c在文本编辑器。您的代码可能会有所不同。

    要查看代码生成报告生成的代码,请参阅生成的代码生成报告

代码生成文件夹的工作

模型参考代码中生成的代码生成文件夹(万博1manbetxSIMULINK)和模拟目标代码中生成的模拟缓存文件夹(万博1manbetxSIMULINK)。由于这一过程中,也有制约:

  • 何时何地参考模型的目标是建立。

  • 模型参考指标是如何访问。

通过引用的模型模型模块可以存储在MATLAB路径上的任何地方。一个给定的顶级车型可以包括存储在不同的文件系统,或在不同的文件夹模式。这同样不是为模拟目标和生成的代码从这些模型得出正确的。在大多数情况下,允许代码重用,由给定的顶级车型所引用的模型必须设置模拟,并在单个代码生成文件夹中生成模型参考目标代码。

这意味着,如果你从几个顶级车型引用同一个模型中,每个存储在不同的文件夹,您必须选择这些方法之一:

  • 始终使用相同的代码生成文件夹中工作,并确保该模型是你的路径上。

  • 允许独立的代码生成文件夹,模拟目标,并万博1manbetxSimulink的编码器你工作的每个文件夹中生成的目标。

第二种方法需要模型参考代码的多个实例的维护和可能的是生成的代码以成为多余。例如,当你改变的参考模型。因此,为了降低参考模型的代码再生,选择一个特定的代码生成文件夹中的所有会话。

相关话题