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

Dou*_*ple 10 matlab file-format simulink

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

Dou*_*ple 9

公开的信息非常少.这是我发现的小事:

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

MDL格式似乎是在MathWorks内部开发的.似乎有一个用于python的MDL解析器,但功能有限,截至2014年5月该网站已关闭.

SLX文件是一个包含XML文件集合的zip文件,其中存储了大部分模型规范simulink/blockdiagram.xml.@ am304从MathWorks网站上指出了这些信息:

SLX是一种压缩包,符合开放式打包约定(OPC)互操作性标准.SLX使用XML®和其他国际格式的Unicode®UTF-8存储模型信息.以SLX格式保存Simulink模型:

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

  • 通过加载和保存包含朝鲜语和中文字符的MDL文件,解决了以前版本中的一些问题.

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

除了上面的文本之外,还有一些参考文献:
如何将simulink文件转换为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


Ben*_*mel 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的回答的评论,但似乎我没有足够的声誉这样做:(

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