为引用模型生成的代码
对引用的模型生成代码
为引用模型生成代码,你
在现有的模型创建一个子系统。
子系统转换为引用模型(模型块)。
调用引用模型的模型。
生成的代码模型和参考模型。
探索生成的代码和代码生成文件夹。
你能完成这些任务自动与一个函数调用金宝appSimulink.Subsystem.convertToModelReference
。
创建和配置子系统
在第一部分的这个例子中,您定义的一个子系统vdp
示例模型,设置配置参数模型,并使用金宝appSimulink.Subsystem.convertToModelReference
函数将它转换成两个新的模型——模型(顶部vdptop
)和一个参考模型vdpmultRM
创建包含一个子系统(vdpmult
)。
在MATLAB®命令窗口,创建一个新的文件夹无论你想工作和工作
cd
成:mkdir mrexample cd mrexample
打开
vdp
示例模型通过输入:vdp
拖三个街区的周围有一个盒子蓝色中概述如下:
选择从选择创建子系统从图>子系统&模型参考菜单。
一个子系统块替换所选块。
如果新的子系统块不是你想要的地方,把它移动到一个优先的位置。
重命名块
vdpmult
。的功能块参数对话框出现了。
在功能块参数对话框中,选择治疗作为原子单元,然后单击好吧。
的边界
vdpmult
子系统变稠,表明现在的原子。原子子系统执行作为一个单元相对于父模型:子系统块执行不交错父块执行。这个属性可以提取子系统作为独立的模型和生成的代码的功能。框图现在应该看起来如下:
之前你必须设置一些属性可以提取一个子系统作为一个参考模型。设置属性,
通过选择模型浏览器打开模型浏览器从模型的视图菜单。
在模型层次结构窗格中,单击模型名称前的符号揭示其组件。
点击配置(主动)在左窗格中。
在中间窗格中,选择解算器。
在右窗格中,在解算器选项改变类型来
固定步
,然后单击应用。您必须使用固定步解决生成代码时,尽管引用模型比前可以使用不同的动力学模型。在中间窗格中,选择诊断。在右窗格中,选择数据的有效性选项卡。在信号区域,设置信号的分辨率来
明确的只
。或者,如果您不想使用金宝appSimulink.Signal
对象,设置信号的分辨率来没有一个
。点击应用。
模型现在引用需要的属性模型。
在中间窗格中,单击模型参考。在右窗格中,集重建来
如果检测到已知的任何变化依赖关系
。点击应用。这个设置可以防止代码更新时,它不是必需的。在
vdp
模式窗口中,选择文件>另存为。保存模型vdptop
在你的工作目录。打开模型。
转换模型使用模型引用
在这个部分的示例中,您使用转换函数金宝appSimulink.SubSystem.convertToModelReference
提取子系统vdpmult
从vdptop
和转换vdpmult
为引用模型命名vdpmultRM
。看到的完整语法转换函数,在MATLAB提示类型:
帮助Sim金宝appulink.SubSystem.convertToModelReference
附加信息,类型:
医生Si金宝appmulink.SubSystem.convertToModelReference
如果你想看到的一个例子金宝appSimulink.SubSystem.convertToModelReference
之前使用它自己,类型:
sldemo_mdlref_conversion
金宝app®还提供了一个菜单命令,子系统和模型参考>转换子系统>引用模型,您可以使用一个子系统转换为一个参考模型。命令调用金宝appSimulink.SubSystem.convertToModelReference
使用默认参数。有关更多信息,请参见子系统转换为引用的模型(金宝app模型)。
提取子系统到参考模型
使用金宝appSimulink.SubSystem.convertToModelReference
提取vdpmult
并把它转换成一个参考模型,输入:
金宝appSimulink.SubSystem.convertToModelReference……(‘vdptop / vdpmult’、‘vdpmultRM’,……“ReplaceSubsystem”,的确,“BuildTarget”、“Sim卡”)
这个命令:
提取子系统
vdpmult
从vdptop
。命名转换子系统中提取到一个单独的模型
vdpmultRM
并保存模型的工作文件夹。在
vdptop
,取代了提取子系统模型块引用vdpmultRM
。创建一个模拟的目标
vdptop
和vdpmultRM
。
转换器输出进展消息和终止
ans = 1
父模型vdptop
现在看起来像这样:
注意物体的外观变化vdpmult
。这些变化表明,现在一块模型,而不是一个子系统。作为一个模型块,它没有自己的内容:前面的内容现在存在于引用模型vdpmultRM
,他的名字出现在模型顶部的块。扩大模型块暴露的完整名称引用的模型。
如果父母模型vdptop
已经关闭的时候转换,转换器将会打开它。提取一个子系统为参考模型不自动创建或改变父的保存副本模型。保存更改到父模型,保存vdptop
。
右键单击模型块vdpmultRM
并选择开放打开参考模型。模型是这样的:
创建和更改的文件转换器
你现在的工作目录中的文件包括以下(不按照这个顺序)。
文件 | 描述 |
---|---|
|
模型,该模型包含了一个模型块的地方 |
|
模型创建引用 |
|
静态库文件(微软®窗户®平台)。文件扩展名与系统相关的,可能有所不同。这个文件执行时 |
|
文件夹中生成的模型参考代码 |
代码被放置在模型参考仿真目标slprj / sim
子文件夹。ERT GRT生成的代码,以及其他金宝app仿真软件编码器™目标放在slprj
子文件夹命名的那些目标。你会检查一些模型参考代码之后在这个例子。在代码生成文件夹的更多信息,见使用代码生成文件夹。
运行转换模型
打开范围块在vdptop
如果它是不可见的。在vdptop
窗口中,单击运行工具或选择运行从模拟菜单。模型的调用vdpmultRM_msf
模拟仿真目标。输出是这样的:
GRT生成模型参考代码为目标
这个函数金宝appSimulink.SubSystem.convertToModelReference
创建的模型和模拟目标文件引用的模型vdpmultRM
。在这部分的示例中,您为该模型和生成代码vdptop
模型中,并运行您创建的可执行:
确认你仍然在工作
mrexample
文件夹中。如果模型
vdptop
没打开,就打开它。确保它是活动窗口。通过选择模型浏览器打开模型浏览器从模型的视图菜单。
在模型层次结构窗格中,单击前的象征
vdptop
模型揭示它的组件。点击配置(主动)在左窗格中。
在中间窗格中,选择数据导入/导出。
在窗格中,选择时间和输出和清晰的数据存储。点击应用。
这些设置指导模型
vdptop
(后来其可执行文件)来记录时间和输出数据为每个时间步mat文件。GRT生成代码(默认)和一个可执行的模型和参考模型。例如,在模型中,出版社Ctrl + B。
的金宝app仿真软件编码器构建过程生成和编译代码。当前文件夹现在包含一个新文件和一个新文件夹:
文件 | 描述 |
---|---|
|
创建的可执行构建过程 |
|
建立文件夹,包含顶级模型生成的代码 |
构建过程还GRT生成代码的引用的模型,并把它slprj
文件夹中。
视图模型生成的代码模型浏览器,模型必须开放。使用模型浏览器检查新创建的建立文件夹,vdptop_grt_rtw
:
通过选择模型浏览器打开模型浏览器从模型的视图菜单。
在模型层次结构窗格中,单击模型名称前的符号揭示其组件。
点击符号前
代码vdptop
揭示其组件。直属
代码vdptop
,点击这个模型
。生成的代码文件的列表
vdptop
出现在内容面板:rtmodel。h vdptop。c vdptop。h vdptop。可vdptop_private。h vdptop_types.h
您可以浏览感兴趣的代码通过选择一个文件内容窗格。
在文本编辑器中打开一个文件,单击文件名,然后单击超链接出现在顶部的灰色区域文档窗格。下图说明了查看代码
vdptop.c
在文本编辑器中。您的代码可能有所不同。查看生成的代码在HTML代码生成报告,明白了生成一个代码生成报告。
使用代码生成文件夹
在您生成模型参考代码代码生成的文件夹(金宝app模型)和模拟生成目标代码模拟缓存文件夹(金宝app模型)。因为这个过程的,有限制:
何时何地建模型参考目标。
如何访问模型参考目标。
引用的模型模型块可以存储在MATLAB的道路。给定的顶级模型可以包括模型存储在不同的文件系统或在不同的文件夹。也是不正确的模拟目标和生成的代码来自这些模型。在大多数情况下,允许代码重用,模型引用的一个给定的模型必须建立模拟和生成模型参考目标代码在一个代码生成文件夹。
这意味着,如果你引用相同的模型从几个顶级模特,每个存储在一个不同的文件夹,你必须选择其中一个方法:
总是使用相同的代码生成文件夹并确保在你的路径模型。
允许独立的代码生成的文件夹,模拟目标,和金宝app仿真软件编码器每个文件夹中生成目标的工作。
第二种方法需要维护的几个实例模型的参考代码和生成的代码有可能成为多余的。例如,当您更改参考模型。因此,为了减少代码引用的再生模型,选择一个特定的代码生成文件夹所有会话。