Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

保存模型

通过查看 Simulink® Editor 中的标题栏,可以判断模型是否有未保存的更改。当模型有未保存的更改时,标题栏中会出现星号(也称为修改标志)。

要以编程方式确定模型是否有未保存的更改,可以使用 get_param 函数查询模型参数 Dirty 的值。例如,如果当前系统是脏的,以下命令将保存当前系统 (gcs):

if strcmp(get_param(gcs,'Dirty'),'on')
	save_system;
end

保存模型

第一次保存模型时,请在 Simulink Editor 中,在 Simulation 选项卡上,点击 Save。为模型文件提供位置和名称。要查看命名要求,请参阅模型名称

要保存以前保存的模型,请执行以下过程之一:

  • 要使用当前文件名保存模型,请在 Simulink Editor 的 Simulation 选项卡上,点击 Save

  • 要使用新名称保存顶层模型的内容或将其保存到新位置,或要更改模型格式,请在 Simulink Editor 的 Simulation 选项卡上,选择 Save > Save As

    注意

    有关 SLX 格式的详细信息,请参阅将模型升级到 SLX

  • 要用新的名称、位置或格式保存引用模型的内容,请将引用模型作为顶层模型打开。然后,在 Simulation 选项卡上,选择 Save > Save As

  • 要将顶层模型保存为与早期 Simulink 版本兼容的格式,请在 Simulation 选项卡上,选择 Save > Previous Version。请参阅将模型导出为以前的 Simulink 版本

模型名称

模型文件名必须以字母开头,可以包含字母、数字和下划线。文件名不能为:

  • 语言关键字(例如 ifforend

  • 保留名称:'simulink''sl''sf'

  • MATLAB® 软件命令

模型名称中的字符总数不能超过某个最大值,通常为 63 个字符。要找到系统的最大文件名长度,请使用 MATLAB namelengthmax 命令。

要了解当您指定模型名称时 MATLAB 如何确定调用哪个函数,请参阅函数优先顺序

Simulink 如何保存模型

保存模型时,Simulink 会将模块图、模块属性和与模型相关联的其他信息保存在模型文件中。

如果您有任何保存前或保存后回调,它们将按以下顺序执行:

  1. 执行所有模块的 PreSaveFcn 回调例程,然后执行模型的 PreSaveFcn 回调例程。

  2. Simulink 写入模型文件。

  3. 执行所有模块 PostSaveFcn 回调例程,然后执行模型 PostSaveFcn

在保存过程中,Simulink 维护一个临时备份副本(名为 modelname.bak),用于在出现错误时还原模型。如果在保存时,或者在保存过程中执行任何回调时发生错误,Simulink 会:

  • 还原原始文件

  • 将发生错误之前保存的任何内容写入到名为 modelname.err 的文件中

  • 发出一条错误消息

保存从 SLX 文件中加载的模型时,原始 SLX 文件必须依然存在。Simulink 对 SLX 文件执行增量加载和保存,因此,如果保存时原始文件不存在,Simulink 将发出警告,告诉您它无法完全重新构造该文件。

将模型保存为 SLX 文件格式

将新模型另存为 SLX

默认情况下,Simulink 将新模型和库保存为 SLX 格式,文件扩展名为 .slx。SLX 格式是符合开放打包约定 (OPC) 互操作性标准的压缩包。SLX 格式使用 Unicode® UTF-8 以 XML 和其他国际格式存储模型信息。将 Simulink 模型保存为 SLX 格式:

  • 通常可以减小文件大小(与 MDL 文件相比)。MDL 与 SLX 之间减小的文件大小因模型而异。

  • 解决以前的版本中加载和保存包含韩语和中文字符的 MDL 文件时出现的一些问题。

  • 启用增量加载和保存。Simulink 通过只加载需要的模型部分并且只保存修改的模型部分,来优化性能和内存使用。

您可以使用 Simulink 预设File format for new models and libraries,指定用来保存新模型和库的文件格式。

将模型升级到 SLX

如果将 MDL 文件升级到 SLX 文件格式,则该文件包含与 MDL 文件相同的信息。适用于 MDL 文件的函数,如 get_paramset_param,也适用于 SLX 文件格式。如果您将 MDL 文件升级到 SLX 文件格式而没有更改模型名称或位置,Simulink 将通过重命名 MDL 文件(如果该文件可写)来创建备份文件。

如果您通过点击 Simulation 选项卡上的 Save 来保存现有 MDL 文件,Simulink 以 MDL 格式保存您的模型。

要将现有 MDL 文件保存为 SLX 文件格式,请执行以下操作:

  1. Simulation 选项卡上,选择 Save > Save As

  2. 保留 Save as type 的默认值 SLX,然后点击 Save

    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 文件。

Simulink 工程可以帮助您将文件迁移到 SLX 格式。有关示例,请参阅

小心

如果您使用第三方源代码管理工具,请将模型文件扩展名 .slx 注册为二进制文件格式。否则,当您提交 SLX 文件时,这些第三方工具可能会导致文件损坏。

下表说明使用 SLX 文件时可能存在兼容性问题的操作。

使用 SLX 时可能存在兼容性问题的操作发生的情况 操作
硬编码引用带有 .mdl 扩展名的文件名。脚本找不到或无法处理用新文件扩展名 .slx 保存的模型。

确保您的代码兼容 .mdl.slx 扩展名。

使用函数(如 whichwhat),而不是文件名。

第三方源代码管理工具默认情况下采用文本格式。提交二进制格式的 SLX 文件可能导致文件被第三方工具所破坏。使用第三方源代码管理工具将 .slx.mdl 扩展名注册为二进制文件格式。请参阅Register Model Files with Source Control Tools
更改字符编码。某些情形已得到改进,例如,SLX 解决了以前的版本中加载和保存包含韩语和中文字符的 MDL 文件时出现的一些问题。但是,在不同的区域设置之间共享模型依然存在问题。请参阅 SLX 文件和字符编码

MDL 和 SLX 文件内容的格式可能随时更改。要处理模型数据,请使用文档中介绍的函数(例如 get_paramfind_systemSimulink.MDLInfo)。

保存具有不同字符编码的模型

MDL 文件和字符编码

将模型保存为 MDL 文件时,当前 Simulink 字符编码会对模型文件中存储的文本进行编码。如果模型包含无法用当前编码表示的字符,此行为会导致数据损坏。如果是这种情况,模型将另存为 model.mdl.err(其中 model 是模型名称),而保留原始模型文件不变。Simulink 还会显示一条错误消息,指出无法表示的第一个字符所在的行号和列号。

要解决此问题,请执行以下任一操作:

SLX 文件和字符编码

以 SLX 格式保存 Simulink 模型通常会减小文件大小并消除字符编码问题,因为模型是使用 UTF-8 编码保存的。

在以下情况下,您可能需要将 MDL 文件转换为 SLX 文件:

  • 加载并保存包含韩语或中文字符的模型。

  • 压缩模型文件可能带来好处。

将模型导出为以前的 Simulink 版本

您可以将使用最新版本的 Simulink 软件创建的模型导出为旧版本软件使用的格式。例如,您可以与只能访问旧版本 Simulink 的同事共享模型时。

要将模型导出为旧版本格式,请执行以下操作:

  1. 在 Simulink Editor 中,在 Simulation 选项卡上,点击 Save。此操作用最新版本的 Simulink 保存一个副本。这一步可以避免兼容性问题。

  2. 在 Simulink Editor 中,在 Simulation 选项卡上,选择 Save > Previous Version

  3. 在 Export to Previous Version 对话框中,从 Save as type 列表中选择要将模型导出到的旧版本。此列表支持过去七年的版本。

  4. 点击 Save

当您将模型导出为旧版本格式时,不管模型中是否包含在该版本之后引入的模块和功能,都会以旧版本格式保存模型。如果模型中包含的模块或使用的功能是在旧版本之后引入的,则当您在旧版本 Simulink 软件中运行模型时,可能无法得到正确的结果。而且,Simulink 会将旧版本之后的模块转换为空的黄色封装 Subsystem 模块。例如,如果您使用 save_system 将模型导出到版本 R2007b,而模型中包含 Polynomial 模块,则 Simulink 会将 Polynomial 模块转换为空的黄色封装 Subsystem 模块。Simulink 还会从模型中删除任何不支持的功能。请参阅 save_system

从旧 Simulink 版本保存到另一个旧版本

您可以打开在旧版本 Simulink 中创建的模型,并将其导出到另一个旧版本。为了防止兼容性问题,请使用以下过程:

  1. 使用最新版本的 Simulink 打开用旧版本创建的模型。

  2. 在您进行任何更改之前,通过点击 Simulation 选项卡上的 Save,用最新版本保存模型。

    用最新版本保存模型之后,您可以根据需要进行更改并重新保存。

  3. 将模型保存为 Simulink 的旧版本格式。在 Simulation 选项卡上,选择 Save > Previous Version

  4. 启动旧版本 Simulink,并使用它打开您导出到该版本的模型。

  5. 将模型保存为旧版本格式。

现在即可在旧版本 Simulink 中使用该模型了,就好像它是在该版本中创建的一样。

以下 Simulink 预设项可以帮助您处理旧版本的模型:

另请参阅

相关主题