保存模型
通过查看 Simulink® 编辑器中的标题栏,可以判断模型是否有未保存的更改。当模型有未保存的更改时,标题栏中会出现星号(也称为修改标志)。
要以编程方式确定模型是否有未保存的更改,可以使用 get_param
函数查询模型参数 Dirty
的值。例如,如果当前系统是脏的,以下命令将保存当前系统 (gcs
):
if strcmp(get_param(gcs,'Dirty'),'on') save_system; end
保存模型
第一次保存模型时,请在 Simulink 编辑器中,在仿真选项卡上,点击保存。为模型文件提供位置和名称。要查看命名要求,请参阅模型名称。
要保存以前保存的模型,请执行以下过程之一:
要使用当前文件名保存模型,请在 Simulink 编辑器的仿真选项卡上,点击保存。
要使用新名称保存顶层模型的内容或将其保存到新位置,或要更改模型格式,请在 Simulink 编辑器的仿真选项卡上,选择保存 > 另存为。
注意
有关 SLX 格式的详细信息,请参阅将文件格式转换为 SLX。
要用新的名称、位置或格式保存引用模型的内容,请将引用模型作为顶层模型打开。然后,在仿真选项卡上,选择保存 > 另存为。
要将顶层模型保存为与早期 Simulink 版本兼容的格式,请在仿真选项卡上,选择保存 > 以前的版本。请参阅将模型导出为以前的 Simulink 版本。
模型名称
模型文件名必须以字母开头,可以包含字母、数字和下划线。文件名不能为:
语言关键字(例如,
if
、for
、end
)保留名称:
'simulink'
、'sl'
、'sf'
MATLAB® 软件命令
模型名称中的字符总数不能超过某个最大值,通常为 63 个字符。要找到系统的最大文件名长度,请使用 MATLAB namelengthmax
命令。
要了解当您指定模型名称时 MATLAB 如何确定调用哪个函数,请参阅函数优先顺序。
Simulink 如何保存模型
保存模型时,Simulink 会将模块图、模块属性和与模型相关联的其他信息保存在模型文件中。
如果您有任何保存前或保存后回调,它们将按以下顺序执行:
执行所有模块的
PreSaveFcn
回调例程,然后执行模型的PreSaveFcn
回调例程。Simulink 写入模型文件。
执行所有模块
PostSaveFcn
回调例程,然后执行模型PostSaveFcn
。
在保存过程中,Simulink 维护一个临时备份副本(名为
),用于在出现错误时还原模型。如果在保存时,或者在保存过程中执行任何回调时发生错误,Simulink 会:modelname
.bak
还原原始文件
将发生错误之前保存的任何内容写入到名为
的文件中modelname
.err发出一条错误消息
保存从 SLX 文件中加载的模型时,原始 SLX 文件必须依然存在。Simulink 对 SLX 文件执行增量加载和保存,因此,如果保存时原始文件不存在,Simulink 将发出警告,告诉您它无法完全重新构造该文件。
将模型保存为 SLX 文件格式
将新模型另存为 SLX
默认情况下,Simulink 将新模型和库保存为 SLX 格式,文件扩展名为 .slx
。SLX 格式是符合开放打包约定 (OPC) 互操作性标准的压缩包。SLX 格式使用 Unicode® UTF-8 以 XML 和其他国际格式存储模型信息。将 Simulink 模型保存为 SLX 格式:
通常可以减小文件大小(与 MDL 文件相比)。MDL 与 SLX 之间减小的文件大小因模型而异。
启用增量加载和保存。Simulink 通过只加载需要的模型部分并且只保存修改的模型部分,来优化性能和内存使用。
您可以使用 Simulink 预设File format for new models and libraries,指定用来保存新模型和库的文件格式。
将文件格式转换为 SLX
如果将 MDL 文件转换为 SLX 文件格式,则该文件包含与 MDL 文件相同的信息。适用于 MDL 文件的函数,如 get_param
和 set_param
,也适用于 SLX 文件格式。如果您将 MDL 文件转换为 SLX 文件格式而没有更改模型名称或位置,Simulink 将通过重命名 MDL 文件(如果该文件可写)来创建备份文件。
如果您通过点击仿真选项卡上的保存来保存现有 MDL 文件,Simulink 以 MDL 格式保存您的模型。
要将现有 MDL 文件保存为 SLX 文件格式,请执行以下操作:
在仿真选项卡上,选择保存 > 另存为。
保留另存类型的默认值 SLX,然后点击保存。
Simulink 将以 SLX 格式保存您的模型,并通过将 MDL 文件(如果该文件可写)重命名为
mymodel.mdl.
(例如releasename
mymodel.mdl.R2010b
)来创建备份文件。
此外,还可以使用 save_system
:
save_system mymodel mymodel.slx
mymodel.slx
,如果现有文件 mymodel.mdl
可写,则将其重命名为 mymodel.mdl.releasename
。SLX 文件的优先级高于 MDL 文件,因此,如果存在两个同名文件,而您没有指定文件扩展名,则将加载 SLX 文件。
小心
如果您使用第三方源代码管理工具,请将模型文件扩展名 .slx
注册为二进制文件格式。否则,当您提交 SLX 文件时,这些第三方工具可能会导致文件损坏。
下表说明使用 SLX 文件时可能存在兼容性问题的操作。
使用 SLX 时可能存在兼容性问题的操作 | 发生的情况 | 操作 |
---|---|---|
硬编码引用带有 .mdl 扩展名的文件名。 | 脚本找不到或无法处理用新文件扩展名 .slx 保存的模型。 | 确保您的代码兼容 使用函数(如 |
第三方源代码管理工具默认情况下采用文本格式。 | 提交二进制格式的 SLX 文件可能导致文件被第三方工具所破坏。 | 使用第三方源代码管理工具将 .slx 和 .mdl 扩展名注册为二进制文件格式。请参阅用源代码管理工具注册模型文件。 |
MDL 和 SLX 文件内容的格式可能随时更改。要处理模型数据,请使用文档中介绍的函数(例如 get_param
、find_system
和 Simulink.MDLInfo
)。
将模型导出为以前的 Simulink 版本
您可以将使用最新版本的 Simulink 软件创建的模型导出为旧版本软件使用的格式。例如,您可以与只能访问旧版本 Simulink 的同事共享模型时。
要将模型导出为旧版本格式,请执行以下操作:
在 Simulink 编辑器中,在仿真选项卡上,点击保存。此操作用最新版本的 Simulink 保存一个副本。这一步可以避免兼容性问题。
在 Simulink 编辑器中,在仿真选项卡上,选择保存 > 以前的版本。
在“导出到以前的版本”对话框中,从另存类型列表中选择要将模型导出到的旧版本。此列表支持过去七年的版本。
点击保存。
当您将模型导出为旧版本格式时,不管模型中是否包含在该版本之后引入的模块和功能,都会以旧版本格式保存模型。如果模型中包含的模块或使用的功能是在旧版本之后引入的,则当您在旧版本 Simulink 软件中运行模型时,可能无法得到正确的结果。而且,Simulink 会将旧版本之后的模块转换为空的黄色封装 Subsystem 模块。例如,如果您使用 save_system
将模型导出到版本 R2007b,而模型中包含 Polynomial 模块,则 Simulink 会将 Polynomial 模块转换为空的黄色封装 Subsystem 模块。Simulink 还会从模型中删除任何不支持的功能。请参阅 save_system
。
从旧 Simulink 版本保存到另一个旧版本
您可以打开在旧版本 Simulink 中创建的模型,并将其导出到另一个旧版本。为了防止兼容性问题,请使用以下过程:
使用最新版本的 Simulink 打开用旧版本创建的模型。
在您进行任何更改之前,通过点击仿真选项卡上的保存,用最新版本保存模型。
用最新版本保存模型之后,您可以根据需要进行更改并重新保存。
将模型保存为 Simulink 的旧版本格式。在仿真选项卡上,选择保存 > 以前的版本。
启动旧版本 Simulink,并使用它打开您导出到该版本的模型。
将模型保存为旧版本格式。
现在即可在旧版本 Simulink 中使用该模型了,就好像它是在该版本中创建的一样。
以下 Simulink 预设项可以帮助您处理旧版本的模型: