有关Simulink MDL和SLX格式的信息?

时间:2014-05-01 12:58:22

标签: matlab simulink file-format

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

3 个答案:

答案 0 :(得分:9)

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

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

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

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

答案 1 :(得分:5)

更新(2015/04/02)

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

旧答案

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

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

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

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

披露:我是上述图书馆的开发者之一。

答案 2 :(得分:4)

  

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

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

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

随着新功能添加到Simulink,这两种格式都会发生变化,但是当MathWorks重构SLX的内部文件结构时,您可以预期SLX会更不稳定。例如,在R2014b中,MathWorks已经开始将传统的单片blockdiagram.xml的各个部分分解为单独的文件,例如stateflow.xml和graphicalInterface.xml。

  

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

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

您也可以通过搜索 Simulink解析器找到其他人。

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