模型参考仿真目标
模拟的目标
一个模拟目标,或SIM目标是一个mex文件,它实现了以加速模式执行的引用模型。金宝app动态仿真模块®在仿真期间,根据需要调用仿真目标,以计算引用模型的行为和输出。金宝appSimulink对引用层次结构中任何位置的给定引用模型的所有加速器模式实例使用相同的仿真目标。
如果你有金宝app仿真软件编码器™请注意,不要将参考模型的仿真目标与任何其他类型的目标混淆:
硬件目标——一个平台金宝app仿真软件编码器生成的代码
系统目标-一个文件,告诉金宝app仿真软件编码器如何为特定目的生成代码
快速仿真目标(RSim) -提供的系统目标文件金宝app仿真软件编码器
模型参考目标——一个库模块,包含金宝app仿真软件编码器引用模型的代码
金宝appSimulink仅为在引用层次结构中具有一个或多个加速器模式实例的引用模型创建仿真目标。仅在正常模式下执行的引用模型总是解释性地执行,并且不使用仿真目标。当引用模型的一个或多个实例在正常模式下执行,并且一个或多个实例在加速模式下执行时:
金宝appSimulink为加速模式实例创建仿真目标。
正常模式实例不使用该模拟目标。
因为加速模式需要代码生成,所以它施加了一些不适用于正常模式的需求和限制。除了这些约束之外,在加速器模式下执行引用模型时,通常可以忽略仿真目标及其详细信息。有关详情,请参阅为模型层次选择仿真模式。
构建仿真目标
金宝app默认情况下,Simulink从引用的模型生成所需的目标:
如果模拟目标在模拟开始时不存在
当您为父模型执行更新图时
如果仿真目标存在,那么在默认情况下,Simulink检查自上次生成目标以来引用的模型是否有结构变化金宝app。如果是这样,S金宝appimulink会重新生成目标以反映模型中的变化。关于Simulink如何检测是否重建模型参考金宝app目标的详细信息,请参见重建参数文档。
您可以更改此默认行为以修改重建标准或指定Simulink总是或从不重建目标。金宝app看到重建获取详细信息。
要为加速器模式引用模型交互式地生成仿真目标,请执行以下步骤之一:
更新直接或间接引用处于加速模式的模型的模型上的关系图
执行
slbuild
命令,并附带适当的参数®命令行
在生成仿真目标时,Simulink在MATLAB命令行显示状态消息,使您能够金宝app监视目标生成过程。目标生成需要生成和编译代码,并将编译的目标代码与来自标准代码库的编译代码链接起来,以创建可执行文件。
减少变更检查时间
通过设置如下配置参数值,可以减少Simulink检查是否需金宝app要重建任何或所有仿真目标所花费的时间:
这些参数值存在于引用模型的配置集中,而不存在于单个模型中模型块。为引用模型的任何实例设置任意一个值,将为该模型的所有实例设置该值。
使用自定义代码
使用自定义C代码与状态流®或与MATLAB函数块构建模型时参考仿真目标,使用包括引用模型的自定义代码配置参数。
谨慎
在加速器模式下对引用模型使用自定义C代码与在不使用自定义代码的情况下模拟模型时产生的结果不同。如果自定义代码包含总线或枚举结构的声明,则如果构建导致这些结构的重复声明,则模拟目标生成将失败。此外,如果自定义代码使用表示总线或枚举的结构,则可能会得到意想不到的模拟结果。
仿真目标输出文件控制
金宝app控件中创建仿真目标slprj
工作文件夹的子文件夹。如果slprj
不存在,是Simulink创建的金宝app。
请注意
金宝app仿真软件编码器代码生成也使用slprj
文件夹中。子文件夹中slprj
为模拟代码提供单独的位置;金宝app仿真软件编码器代码和其他文件。有关详情,请参阅管理构建过程文件夹(金宝app仿真软件编码器)。
默认情况下,由Simulink图表更新和模型构建生成的文件被放金宝app置在构建文件夹中,其根文件夹是当前工作文件夹(松材线虫病
)。可以将生成的文件放在当前工作文件夹之外的根文件夹中。此选项允许您:
将生成的文件与模型和用于生成它们的其他源材料分开存储。
重用或共享以前构建的仿真目标,而不必将当前工作文件夹设置回以前的工作文件夹。
您可以将生成的模拟工件与生成的生产代码分开。
要控制由图更新和模型构建生成的文件的输出位置,请分别为这些文件指定构建文件夹。的模拟缓存文件夹根文件夹,其中放置用于模拟的工件。
要指定模拟缓存文件夹,请使用一个在这些方法中:
使用
CacheFolder
MATLAB会话参数。在金宝app仿真软件首选项>一般对话框中,使用模拟缓存文件夹偏好。此首选项提供了MATLAB会话参数的初始默认值。
模型仿真构建工件的控制输出位置
要控制由Simulink图表更新生成的文件的输出位置,请在金宝app金宝app仿真软件首选项>一般对话框中,使用模拟缓存文件夹偏好。要指定由Simulink图表更新生成的文件的根文件夹位置,可通过输入或浏览文件夹路径来设置首选值,例如:金宝app
您指定的文件夹路径提供了MATLAB会话参数的初始默认值CacheFolder
。初始化Simulink图更新时,生成的文金宝app件将放在根位置的构建文件夹中CacheFolder
,而不是在当前工作文件夹(松材线虫病
)。
例如,使用32位(Windows商标)主机平台,如果设置模拟缓存文件夹来“C: \ \ mymodelsimcache工作”
然后对模型进行仿真rtwdemo_capi
,生成的文件如下所示:
作为使用Simulink首选项设置的替代方案金宝app模拟缓存文件夹,也可以使用命令行获取和设置首选项值get_param
和set_param
。例如,
>> get_param(0, 'CacheFolder') ans = >> set_param(0, 'CacheFolder', 'mymodelsimcache')) >> get_param(0, 'CacheFolder') ans = C:\Work\mymodelsimcache
此外,您可以选择覆盖模拟缓存文件夹当前MATLAB会话的首选值。
覆盖生成文件夹设置
Simu金宝applink首选项模拟缓存文件夹和代码生成文件夹提供MATLAB会话参数的初始默认值CacheFolder
和CodeGenFolder
,它决定由Simulink图更新和模型构建生成的文件放置在何处。金宝app但是,您可以在当前MATLAB会话期间使用金宝appSimulink.fileGenControl
函数。该函数允许您直接操作MATLAB会话参数(例如,覆盖或恢复初始默认值)。设置的值金宝appSimulink.fileGenControl
在当前MATLAB会话结束时过期。
减少引用模型的更新时间
大型模型参考层次结构的并行构建
在并行计算环境中,只要条件允许,您可以通过构建以加速模式并行配置的引用模型来提高包含大型模型引用层次结构的模型的图表更新速度。例如,如果您有Parallel Computing Toolbox™软件,则每个参考模型的更新可以分布在多核主机的多个核心上。如果你有MATLAB并行服务器™软件,每个引用模型的更新可以分布在您的远程工作人员MATLAB并行服务器配置。
通过使用并行构建来更新参考模型所实现的性能增益取决于几个因素,包括:
有多少模型可以并行构建一个给定的模型引用层次结构
参考模型的大小
并行计算资源,例如可用的本地或远程工作人员数量以及本地和远程机器的硬件属性(RAM数量、内核数量等)
有关可应用于您的并行计算环境的配置需求,请参见平行建筑配置要求。
有关在条件允许的情况下并行构建引用模型的一般工作流的描述,请参见并行计算环境下的模型更新。
平行建筑配置要求
这些要求适用于使用并行构建来更新模型引用层次结构:
对于本地池,主机需要适当数量的可用RAM来支持您计划使用的本地工作程序(MATLAB会话)的数量。金宝app例如,使用
parpool (4)
创建具有四个worker的并行池会在您的机器上产生五个MATLAB会话,每个会话在启动时使用大约120 MB的内存。远程MATLAB并行服务器参与并行构建的工作线程必须使用公共平台和编译器。
为每个MATLAB工作会话和MATLAB客户端会话设置一致的MATLAB环境。例如,使用一致的共享基本工作空间变量,MATLAB路径设置,等等。一种方法是使用
PreLoadFcn
顶级模特的回调。如果您将模型配置为使用每个MATLAB worker会话加载顶级模型,则其预加载函数可用于任何MATLAB worker会话设置。
并行计算环境下的模型更新
为了利用模型引用层次结构的并行构建:
在并行计算环境中设置本地和/或远程MATLAB工作者池。
确保并行计算工具箱软件已获得许可并已安装。
要使用远程工作人员,请确保MATLAB并行服务器软件已获得许可并已安装。
发出MATLAB命令来设置工作池,例如:
parpool (4)
。
从模型引用层次结构的顶层模型中,打开Configuration Parameters对话框。去模型参考窗格,并选择启用并行模型参考构建选择。此选择启用该参数用于构建的MATLAB工作器初始化。
为用于构建的MATLAB工作器初始化,选择以下值之一:
没有一个
—软件不执行特殊的worker初始化。如果模型引用层次结构中的子模型除了它们显式设置之外不依赖于基本工作区中的任何内容(例如,使用模型加载函数),则指定此值。复制基本工作区
—软件尝试将基本工作空间复制到每个worker。如果您使用设置脚本为多个模型准备基本工作区,请指定此值。荷载顶模型
-软件将顶部模型加载到每个工人身上。如果模型引用层次结构中的顶层模型处理所有基本工作空间设置(例如,使用模型加载函数),则指定此值。
请注意
集启用并行模型参考构建仅适用于它所应用的模型引用层次结构的顶层模型。
可选地,为模拟构建打开详细消息。如果您选择详细构建,构建消息将使用模型的名称报告每个并行构建的进度。
要为模拟目标构建打开详细消息,请转到Configuration Parameters对话框并选择冗长的加速器构建。
的冗长的加速器构建选项控制MATLAB命令窗口和并行构建日志文件中的构建消息的详细程度。
可选地,检查模型层次结构以根据模型依赖关系确定将并行构建哪些模型。控件上的模型依赖关系查看器建模选项卡,在比较下拉列表,通过选择下面的一个选项依赖关系。
更新你的模型。MATLAB命令窗口中的消息记录了每个并行或串行构建开始和结束的时间。
如果需要有关并行构建的更多信息,例如,如果构建失败,请参见定位并行构建日志。
定位并行构建日志
当您更新一个参考模型是并行构建的模型时,如果打开了详细构建,则MATLAB命令窗口中的消息会记录每个并行或串行构建开始和结束的时间。例如,
为并行模型参考构建初始化并行工作者。并行工作初始化完成。###开始“bot_model001”的并行模型参考SIM构建###开始“bot_model002”的并行模型参考SIM构建###开始“bot_model003”的并行模型参考SIM构建###开始“bot_model004”的并行模型参考SIM构建###完成“bot_model001”的并行模型参考SIM构建###完成“bot_model002”的并行模型参考SIM构建###完成“bot_model003”的并行模型参考SIM构建###完成并行模型参考SIM构建“bot_model004”的参考SIM构建
要获取有关并行构建的更详细信息,可以查看并行构建日志。对于并行构建的每个引用模型,构建过程生成一个名为
,在那里模型
_buildlog.txt
被引用模型的名称。此文件包含该模型的完整构建日志。模型
如果并行构建完成,您可以在与引用模型对应的构建子文件夹中找到构建日志文件。例如,对于引用模型的构建bot_model004
,查找构建日志文件bot_model004_buildlog.txt
在引用的模型子文件夹中
。build_folder
/ slprj / sim / bot_model004
如果并行构建失败,您可以看到类似于以下的输出:
为并行模型参考构建初始化并行工作者。并行工作初始化完成。###开始为“bot_model002”构建平行模型参考SIM卡###开始为“bot_model003”构建平行模型参考SIM卡###为“bot_model003”构建平行模型参考SIM卡###开始为“bot_model001”构建平行模型参考SIM卡###为“bot_model004”构建平行模型参考SIM卡###完成“bot_model004”构建平行模型参考SIM卡###以下错误在为“bot_model001”构建并行模型参考SIM时发生:在构建模型“bot_model001”时遇到错误###清理并行工作。
如果并行构建失败,您可以在构建子文件夹下的引用模型子文件夹中找到构建日志文件/ par_mdl_ref /
。例如,对于一个失败的模型并行构建模型
bot_model001
,查找构建日志文件bot_model001_buildlog.txt
在子文件夹中
。build_folder
/ par_mdl_ref / bot_model001 / slprj / sim / bot_model001