【问题标题】:Information about Simulink MDL and SLX formats?有关 Simulink MDL 和 SLX 格式的信息?
【发布时间】:2014-06-17 23:02:36
【问题描述】:

关于这些文件格式有哪些可用信息?有哪些工具可用于解析这些文件?

【问题讨论】:

  • 为什么需要这个?您是否尝试解析模型文件?
  • @P0W 我知道解析 MDL 文件是一个坏主意,从查看 SLX 文件我可以看出解析 SLX 文件可能也是一个坏主意。不过我想知道关于这种文件格式(实际上是这两种格式)的知识,因为这已经出现在我的工作中。如果我找到一个官方的参考资料说“不要解析 SLX 文件!”那么这也很有帮助。我更新了我的问题以反映这一点。
  • 关于文件格式的唯一“官方”位在mathworks.co.uk/help/simulink/ug/saving-a-model.html#btbr7kx-1
  • @DouglasB.Staple IMO 解析 .mdl 从来没有是个坏主意,直到 .slx 出现。如果可能的话,您可以从 .slx 中知道您真正需要什么,有几个 Simulink API 可以做很多的东西。
  • 我同意@P0W 的 cmets。任何依赖于解析 Simulink 模型的程序都必然会在下一个版本中中断。文件格式没有记录,可能永远不会。使用 API 会更好。

标签: matlab simulink file-format


【解决方案1】:

很少有信息是公开的。这是我发现的一点:

MDLSLX 是 MathWorks 用于存储 Simulink 模型的专有文件格式。 SLX 在 Simulink R2012a 中引入,并在 R2012b 中制作了默认文件格式。除了文件结构,SLX 和 MDL 文件的内容非常相似。例如,两种格式之间的键值对似乎是相同的。人们经常说解析这些文件是个坏主意,因为它们可以在 Simulink 版本之间进行更改(参见上面的 am304 和我的 cmets),但我没有看到太多这方面的证据。

MDL 格式似乎是 MathWorks 内部开发的。 There seems to have been an MDL parser for python, but it was of limited functionalitywebsite is down 截至 2014 年 5 月。

SLX 文件是包含 XML 文件集合的 zip 文件,大部分模型规范存储在 simulink/blockdiagram.xml 中。 @am304 从MathWorks website 指出这条信息:

SLX 是一个符合 Open Packaging 的压缩包 公约 (OPC) 互操作性标准。 SLX商店模型 在 XML 和其他国际格式中使用 Unicode® UTF-8 的信息 格式。以 SLX 格式保存 Simulink 模型:

  • 与 MDL 相比,通常会减小文件大小。 MDL 和 SLX 之间的文件大小缩减因型号而异。

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

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

除了上面的文字之外,还有一些参考资料:
How convert simulink files to XML
http://www.scootersoftware.com/vbulletin/showthread.php?t=11568
http://blog.xogeny.com/blog/dont-zip/
http://blog.developpez.com/matlab/p11469/simulink-2/nouveau-format-slx-pour-les-modeles-simulink

【讨论】:

    【解决方案2】:

    更新 (2015/04/02)

    Simulink Library for Java 的新版本具有完整的 SLX 格式支持。文档不明确,但源代码包含解析它的所有细节。

    旧答案

    正如 rob 所回答的,Simulink Library for Java 支持 Simulink 的 MDL 文件格式,还可以解析 Stateflow 内容。该库是开源的,但唯一的文档是源代码。

    我们目前(截至 2014 年 9 月)致力于 SLX 支持,预计将在未来 1 或 2 个月内发布。如果您在此之前需要代码,请随时与我联系。

    确实,在使用该库时,您的代码可能会因新的 Simulink 版本而中断,因为文件格式没有记录,我们不得不对其中的大部分进行逆向工程。但是,我们目前正在积极更新库以防出现问题,并且即使我们不在,您也可以使用源代码修复它。

    PS:我会将此作为对 rob 答案的评论发布,但似乎我没有足够的声誉这样做:(

    披露:我是上述库的开发者之一。

    【讨论】:

    • 我可以使用 Simulink Library for Java 从 slx 文件中获取元数据吗?我使用下一个 MATLAB 代码将元数据写入 slx 文件:h = load_system(pathToFile); set_param(h, 'Metadata', properties)
    【解决方案3】:

    关于这些文件格式有哪些可用信息?

    MathWorks 确实有一些 documentation 用于 R2007b 中的 MDL 文件格式。

    SLX 文件是 zipfile 容器,其内部结构基于 OOXMLOPC 格式。 SLX 文件包含一个或多个 XML 文件,其内部结构类似于 MDL 文件,但采用 XML 格式。此外,图形等二进制资源可以存储在单独的 JPG 文件中,而不是像在 MDL 文件中那样进行文本编码并直接嵌入。

    随着向 Simulink 添加新功能,这两种格式都会发生变化,但您可以预期 SLX 会因为 MathWorks 重构 SLX 的内部文件结构而变得不太稳定。例如,在 R2014b 中,MathWorks 已开始将传统的整体式 blockdiagram.xml 的部分拆分为单独的文件,例如 stateflow.xml 和 graphicsInterface.xml。

    有哪些工具可用于解析这些文件?

    有一些用于解析 Simulink 的公开可用的库/API,但我没有使用过其中任何一个,所以我不确定它们的工作情况。

    您也可以通过搜索Simulink parser找到其他人。

    如果这些都不起作用,一些商业工具会直接解析 MDL 和 SLX,而不是依赖 MATLAB API。您可能会询问有关某些商用 Simulink 工具中使用的解析器的许可。

    【讨论】:

    • 非常感谢。您写的内容与我的理解一致并建立在我的理解之上。
    猜你喜欢
    • 2013-07-31
    • 1970-01-01
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多