Информация о форматах Simulink MDL и SLX?

Какая информация доступна об этих форматах файлов? Какие инструменты доступны для анализа этих файлов?

3 ответа

Решение

Обновление (2015/04/02)

Новая версия Simulink Library для Java имеет полную поддержку формата SLX. Документация не является явной, но исходный код содержит все детали для ее анализа.

Старый ответ

По словам Роба, библиотека Simulink для Java поддерживает формат файлов Simulink MDL, а также может анализировать содержимое Stateflow. Библиотека с открытым исходным кодом, но единственной документацией является исходный код.

В настоящее время (по состоянию на сентябрь 2014 года) мы работаем над поддержкой SLX и планируем выпустить ее в ближайшие 1 или 2 месяца. Если вам нужен код до этого времени, не стесняйтесь связаться со мной.

Это правда, что при использовании библиотеки ваш код может сломаться с новым выпуском Simulink, так как формат файла не задокументирован, и нам пришлось перепроектировать большую часть его. Однако в настоящее время мы активно обновляем библиотеку в случае возникновения проблем, и с помощью исходного кода вы сможете исправить ее, даже если нас нет рядом.

PS: Я бы написал это как комментарий к ответу грабителя, но, похоже, у меня недостаточно репутации, чтобы сделать это:(

Раскрытие информации: я являюсь одним из разработчиков упомянутой библиотеки.

Очень мало информации общедоступно. Вот что я нашел немного:

MDL и SLX являются проприетарными форматами файлов MathWorks для хранения моделей Simulink. SLX был представлен в Simulink R2012a и сделал формат файла по умолчанию в R2012b. Помимо файловой структуры, содержимое файлов SLX и MDL очень похоже. Например, пары ключ-значение кажутся одинаковыми между двумя форматами. Люди часто говорят, что анализ этих файлов - плохая идея, потому что они могут меняться между версиями Simulink (см., Например, am304 и мои комментарии выше), но я не видел много доказательств этого.

Формат MDL, кажется, был разработан внутри компании MathWorks. Похоже, что для Python был парсер MDL, но он имел ограниченную функциональность, и по состоянию на май 2014 года сайт не работал.

SLX-файл - это zip-файл, содержащий коллекцию XML-файлов, большая часть спецификации модели хранится в simulink/blockdiagram.xml, @am304 указал на эту информацию с сайта MathWorks:

SLX - это сжатый пакет, который соответствует стандарту совместимости Open Packaging Conventions (OPC). SLX хранит информацию о модели с использованием Unicode® UTF-8 в XML и других международных форматах. Сохранение моделей Simulink в формате SLX:

  • Обычно уменьшает размер файла по сравнению с 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

Какая информация доступна об этих форматах файлов?

MathWorks действительно имеет некоторую документацию для формата файлов MDL в R2007b.

Файлы SLX представляют собой контейнеры zipfile, внутренняя структура которых основана на формате OPC в OOXML. Файлы SLX содержат один или несколько файлов XML, внутренняя структура которых аналогична структуре файла MDL, но в формате XML. Кроме того, двоичные ресурсы, такие как графика, могут храниться в отдельных файлах JPG, а не кодироваться в текстовом формате и напрямую встраиваться, как они есть в файле MDL.

Оба формата меняются по мере добавления новых функций в Simulink, но вы можете ожидать, что SLX будет менее стабильным, поскольку MathWorks рефакторирует внутреннюю файловую структуру SLX. Например, в R2014b MathWorks начал разбивать разделы традиционно монолитного blockdiagram.xml на отдельные файлы, такие как stateflow.xml и graphicalInterface.xml.

Какие инструменты доступны для анализа этих файлов?

Есть несколько общедоступных библиотек /API для анализа Simulink, но я не использовал ни одну из них, поэтому я не уверен, насколько хорошо они работают.

Вы также можете найти других, выполнив поиск синтаксического анализатора Simulink.

Если ничего из этого не получается, некоторые коммерческие инструменты анализируют MDL и SLX напрямую, а не полагаются на MATLAB API. Вы могли бы спросить о лицензировании парсера, используемого в каком-либо коммерчески доступном инструменте Simulink.

Другие вопросы по тегам