Simulinkモデルの新形式(R2012aで導入)

まだまだ超絶忙しいため、ちょっとした小ネタを。

Simulinkモデルを保存すると、 .mdl ファイルになります。これは単なるテキストファイルです。ところがR2012aから試験的に、Simulinkモデルの新形式 slx が導入されました。

新モデルと旧モデル

これはR2012aではオプションですが、R2012b以降ではデフォルトになるとの事なので、今のうちに準備しておくのも良いかも分かりません。

今回は、どこにどんな影響があるのか?また、そもそもどうしてマスワークスさんは slx に移行しようとしているのか、私見を書いてみます。

まずは slx を使ってみる

R2012aで slx を使うには、MATLABコマンドプロンプトにて以下のように入力する必要があります。

set_param(0,’ModelFileFormat’,’slx’)

これで、モデルを保存する際には slx が使われるようになります。

(ちなみに元のmdlを使うようにするには次のように入力します。

set_param(0,’ModelFileFormat’,’mdl’)

さて、モデルを開いて適当にブロックを配置し、これを保存しようとしますと次のようになります。

保存しようとしている

保存したファイルはこんな感じです。

slxファイル

これ、実はZIPファイルなのです。拡張子を zip に変更して、

zipに変更

展開するとこうなります。

展開したところ

その中にいくつか xml ファイルが出来ていますが、そのうちの1つ「blockdiagram.xml」を開くとこうなっています。

XMLで記述されたモデル

これ、実はR2011b以前にモデルをXMLで保存したときのものと大体おなじです。

(MATLABコマンドウィンドウにて、

save_system(‘モデル名’, ‘exported_file_name.xml’,’ExportToXML’, true)

とすると、モデルをXMLに変換できます。)

slxに移行すると、どんな影響があるのか?

マスワークスさんのサイトで触れられているのは、次の2点です。

モデルを扱うツールへの影響(1)

ツールからモデルファイルを開く場合、「拡張子 mdl 」のファイルを開くようにしている場合が多いかと思います。あるいは、拡張子 mdl のファイルを検索しているツールがあるかも分かりません。

拡張子の変更によって、これらのツールが正しくモデルファイル(拡張子が mdl から slx になった)を認識できなくなるため、ツールの更新が必要になります。

モデルを扱うツールへの影響(2)

mdlはテキストファイルでしたが、slxはバイナリファイル(中身はzip)です。バージョン管理システムなどで、モデルがテキストファイルである事を前提にしている場合には、対応が必要です。

slxに移行すると、さらにどんな影響があるのか?

私見ですが、次のような影響もあるように思います。

モデルを扱うツールへの影響(3)

たとえば medini unite(モデル差分、マージツール。おすすめです)は、mdlファイルの中身を直接解析しています。そのため、slxになってしまうとツールの更新が必要になります。

ただし、slxの本体はxmlなので、従来よりモデル解析が容易になるはずです。そういう意味で、medini uniteのようなモデルを直接解析するツールにとっては追い風のように思います。

将来的に、複数ファイルの埋め込みも可能に?

これは完全に妄想ですが、将来的には slx に複数ファイル(matファイルとか、mファイルとか)を埋め込めるようになるかも分かりません。まさにzipならではの応用です。

なぜマスワークスさんはslxに移行するのか?

これも完全に妄想です。

理由はたくさんあると思うのですが、オプション「Report Generator」に付属のモデル差分機能も1つの要因ではないかと思っています。

モデルを直接解析する medini uniteと違い、Report Generatorでは mdl ファイルをいったん xml ファイルに変換し、そのxmlファイルをベースにモデル比較を行っています。(これには理由があるのですが、ちょっとアレな話なので。ちょっと不便なのですが、とにかく、どうしようもないのです。)

それであれば、モデルファイルのフォーマットをそもそも xml にしてしまえば、モデル差分も簡単になるじゃない!という話が出てきても不思議ではありません。デファクトを握っている会社ならではの戦略です。

(繰り返しますが、完全に妄想であり、単なる憶測です。)