ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

モデルの保存

モデルを保存する必要があるかどうかの判定方法

モデルを保存する必要があるかどうかを判定するには、Simulink® エディターのタイトル バーを確認します。モデルを保存する必要がある場合は、タイトル バーのモデル名の隣にアスタリスクが表示されます (変更未保存 (ダーティ) フラグと呼ばれます: *)。

モデルを保存する必要があるかどうかをプログラムで確認するには、モデル パラメーター Dirty (変更未保存) を使用します。以下に例を示します。

if strcmp(get_param(gcs,'Dirty'),'on')
	save_system;
end

モデルの保存

はじめてモデルを保存するには、Simulink エディターで [ファイル][保存] を選択します。モデル ファイルの保存場所と名前を指定します。名前の要件については、モデル名を参照してください。

以前保存したモデルを保存するには、次の手順に従います。

  • ファイルの内容を "置き換える" には、Simulink エディターで [ファイル][保存] を選択します。

  • モデルを新しい名前または場所に保存する場合または MDL 形式から SLX 形式に変更する場合は、Simulink エディターで [ファイル][名前を付けて保存] を選択します。

  • モデルを以前のバージョンと互換性のある形式で保存するには、[ファイル][モデルのエクスポート先][以前のバージョン] を選択します。モデルを以前の Simulink バージョンにエクスポートするを参照してください。

モデル名

モデル ファイル名は文字で始まり、文字、数字、アンダースコアの組み合わせを使用できます。ファイル名には以下を使用してはなりません。

  • 言語キーワード (ifforend など)

  • 予約名: 'simulink''sl''sf'

  • MATLAB® ソフトウェア コマンド

モデル名の合計文字数は指定の最大数 (通常は 63 文字) 以下で指定しなければなりません。ご使用のシステムの最大文字数が 63 より大きいかどうか確認するには、MATLAB namelengthmax コマンドを使用します。

MATLAB で、モデル名を指定するときに呼び出す関数を決定する方法については、「関数の優先順位」を参照してください。

モデル保存時の処理

Simulink は、モデル (ブロック線図) とブロック プロパティをモデル ファイルに保存します。

プリセーブ関数またはポストセーブ関数がある場合は、次の順序で実行されます。

  1. すべてのブロック PreSaveFcn コールバック ルーチンを最初に実行してから、モデルの PreSaveFcn コールバック ルーチンを実行します。

  2. Simulink がモデル ファイルを書き込みます。

  3. すべてのブロック PostSaveFcn コールバック ルーチンを実行してから、モデルの PostSaveFcn を実行します。

保存プロセスの最中、Simulink はエラーが発生した場合に復元を行うための一時的なバックアップ コピー (名前は modelname.bak) を維持します。保存の最中または保存プロセスの任意のコールバックの実行中にエラーが発生した場合、Simulink は次を実行します。

  • 元のファイルを復元します。

  • エラー発生前に保存されたすべての内容を modelname.err という名前のファイルに書き込みます。

  • エラー メッセージを発行します。

SLX ファイルから読み込んだモデルを保存する場合、元の SLX ファイルは引き続き存在しなければなりません。Simulink は SLX ファイルのインクリメンタルな読み込みと保存を行うため、元のファイルが保存時に見つからない場合、Simulink は元のファイルを完全には再構築できないことを警告します。

SLX ファイル形式でのモデルの保存

SLX での新規モデルの保存

既定の設定では、Simulink は新しいモデルとライブラリをファイル拡張子 .slx をもつ SLX 形式で保存します。SLX は Open Packaging Conventions (OPC) 相互運用標準に準拠する圧縮パッケージです。SLX は XML や他の国際的な形式で Unicode® UTF-8 を使ってモデル情報を格納します。SLX 形式での Simulink モデルの保存には次の特長があります。

  • 通常、MDL と比較してファイル サイズは小さくなります。MDL と SLX とのファイル サイズの削減はモデルによって変わります。

  • 韓国語の文字と中国語の文字を含むファイルの読み込みと保存に関連してこれまでのリリースに存在したいくつかの問題を解決しています。

  • インクリメンタルな読み込みと保存が可能です。Simulink はモデルの必要な部分のみを読み込み、モデルの変更された部分のみを保存することによって、パフォーマンスとメモリ使用量を最適化します。

新規モデルとライブラリを保存するファイル形式は、 Simulink 設定「新しいモデルおよびライブラリのファイル形式」を使用して指定できます。

SLX へのモデルのアップグレード

MDL ファイルを SLX ファイル形式にアップグレードする場合、そのファイルには MDL ファイルと同じ情報が含まれ、常にバックアップ ファイルが存在します。get_param コマンドや set_param コマンドなど、モデルで作業するために現在存在している機能と API は、すべて、SLX ファイル形式を使用するときにも利用できます。モデル名または場所を変更せずに MDL ファイルを SLX ファイル形式にアップグレードする場合、Simulink は MDL ファイルの名前を変更することでバックアップ ファイルを作成します (書き込み可能な場合)。

[ファイル][保存] を使用して既存の MDL ファイルを保存する場合は、Simulink は現在のファイル形式を引き継ぎ、モデルを MDL 形式で保存します。

SLX ファイル形式で既存の MDL ファイルを保存するには、以下の手順に従います。

  1. [ファイル][名前を付けて保存] を選択します。

  2. 既定の [ファイルの種類] を SLX のままにし、[保存] をクリックします。

    Simulink はモデルを SLX 形式で保存し、MDL (書き込み可能な場合) ファイルの名前を mymodel.mdl.releasename (たとえば mymodel.mdl.R2010b など) に変更することで、バックアップ ファイルを作成します。

あるいは、save_system を使用します。

save_system mymodel mymodel.slx
このコマンドで mymodel.slx が作成され、既存のファイル mymodel.mdl が書き込み可能である場合、このファイルの名前は mymodel.mdl.releasename に変更されます。

SLX ファイルは MDL ファイルよりも優先順位が高いので、両方のファイルが同じ名前で存在する場合に、ユーザーがファイル拡張子を指定しないと SLX ファイルが読み込まれます。

Simulink プロジェクトは、ファイルの SLX への移行を支援します。例については、「モデル ファイルを SLX にアップグレードしてリビジョン履歴を保存する」を参照してください。

    注意:   サードパーティのソース管理ツールを使用している場合は、モデルのファイル拡張子 .slx を必ずバイナリ ファイル形式として登録してください。そうしないと、これらのサードパーティ ツールが SLX ファイルを送信するときにファイルを壊す可能性があります。

SLX を使用するときに起こりうる互換性の考慮事項と操作動作 アクション
拡張子 .mdl 付きのファイル名へのハードコード化された参照。 スクリプトが新しいファイル拡張子 .slx で保存されたモデルを検出または処理できません。 コードを .mdl 拡張子と .slx 拡張子の両方で作業できるようにしてください。
.mdl の文字列の代わりに whichwhat などの関数を使用します。
既定の設定でテキスト形式を想定しているサードパーティのソース管理ツール。 SLX ファイルのバイナリ形式は、サードパーティ ツールでファイルを送信するときにファイルを壊す可能性があります。サードパーティのソース管理ツールでは .slx をバイナリ ファイル形式として登録してください。これは .mdl ファイルの場合も推奨します。「ソース管理ツールへのモデル ファイルの登録」を参照してください。
文字エンコードの変更。いくつかの改善がありました。たとえば、SLX は韓国語の文字と中国語の文字を含む MDL ファイルの読み込みと保存に関連してこれまでのリリースに存在したいくつかの問題を解決しました。ただし、異なるロケールのモデル間での共有には問題が残っています。SLX ファイルと文字エンコードを参照してください。

MDL ファイルと SLX ファイル内のコンテンツ形式は今後変更される可能性があります。モデル データを処理するには、ドキュメント化されている API (get_paramfind_system およびSimulink.MDLInfo) を使用してください。

他の文字エンコードによるモデルの保存

MDL ファイルと文字エンコード

モデルを保存するとき、モデル ファイルに格納されているテキストは、現在の文字エンコードを使用してエンコードされます。現在のエンコードがモデルのオリジナルのエンコードと異なる場合にモデルを保存すると、MDL ファイルではモデルが壊れることがあります。

文字エンコードを変更すると、現在のエンコードでは表現不可能な文字を追加してしまう可能性があります。この場合、モデルは model.mdl.err として保存され (ここで model はモデル名)、元のモデル ファイルは変更されずにそのまま残されます。また、Simulink によって、表示できない最初の文字の列と行の番号を指定するエラー メッセージが表示されます。

このエラーを修復するには、以下のいずれかを行ってください。

  • モデルを SLX 形式で保存します (SLX ファイル形式でのモデルの保存を参照してください)。

  • 以下の手順を使用して、文字を 1 つずつ検索して削除します。

    1. テキスト エディターを使って、エラー メッセージで示される位置で .err ファイル内の文字を検索します。

    2. 開いているモデル内の対応する文字を見つけて削除し、モデルを再度保存します。

    3. エラーなしでモデルが保存可能になるまで、このプロセスを繰り返します。

モデルのオリジナル エンコードが現在のセッションで行ったすべてのテキストの変更を表すことは、適切ではありませんが可能です。たとえば、現在のエンコードが B であるセッションでオリジナル エンコードが A であるモデルを開くと仮定します。さらに、A および B とは異なるエンコードをもつ文字を含めるためにモデルを編集してからモデルを保存するとします。さらに、B の x に対するエンコードが A の y のコーディングと同じで、B が有効なときに x をモデルに挿入し、モデルを保存し、A が有効なときにモデルを再度開くとします。この場合、Simulink ソフトウェアは、x を y として表示します。このような間違いの可能性を警告するためにソフトウェアは、現在のエンコードとオリジナルのエンコードが異なるモデルを保存するときに、オリジナルがモデル ファイルに保存されるすべての文字を不適切ではあってもエンコード可能である場合は、警告メッセージを表示します。

SLX ファイルと文字エンコード

SLX 形式で Simulink モデルを保存することは、通常、ファイル サイズを削減し、韓国語の文字と中国語の文字を含む MDL ファイルの読み込みと保存に関連してこれまでのリリースに存在したいくつかの問題を解決しました。

モデル ファイル形式を選択するときの考慮事項は以下のとおりです。

  • 韓国語の文字と中国語の文字のモデルの読み込みと保存を行っている場合は SLX を使用します。

  • 圧縮されたモデル ファイルのメリットを得るには SLX を使用します。

  • SLX または MDL のいずれを使用するかにかかわらず、モデルに現在のロケールでサポートされない文字が含まれていれば、Simulink はそれを検出し、警告を出します。SLX の場合は、モデル アドバイザーが役立ちます。「対象外の文字がないかモデルをチェック」を参照してください。

モデルを以前の Simulink バージョンにエクスポートする

Simulink ソフトウェアの最新バージョンで作成されたモデルを、以前のバージョンで使われる形式にエクスポート (保存) できます。たとえば、Simulink 製品の以前のバージョンにしかアクセスできない同僚とモデルを共有できます。

以前の形式にモデルをエクスポートするには、以下のようにします。

  1. Simulink エディターで、[ファイル][保存] の順に選択します。これにより、最新バージョンの Simulink にコピーが保存されます。このステップにより互換性の問題を回避することができます。

  2. Simulink エディターで、[ファイル][モデルのエクスポート先][以前のバージョン] を選択します。

    [前バージョンにエクスポート] ダイアログ ボックスが表示されます。

  3. ダイアログ ボックスの [ファイルの種類] リストからモデルのエクスポート先となる以前のバージョンを選択します。このリストには、7 年間分の以前のリリースが表示されます。

  4. [保存] ボタンをクリックします。

以前のバージョンの形式にモデルをエクスポートする場合は、そのバージョン以降に導入されたブロックおよび機能をモデルが含んでいるかどうかに関係なく、その以前の形式でモデルが保存されます。モデルがそのバージョン以降に導入されたブロックを含んでいたり、そのバージョン以降に導入された機能を使用している場合、Simulink ソフトウェアの以前のバージョンで実行されるときに正しい結果が得られない可能性があります。さらに、Simulink は、古いバージョン以降に導入された未対応ブロックを黄色い空のマスク Subsystem ブロックに変換します。たとえば、save_system を使用して、Polynomial ブロックを含んでいるモデルを Release R2007b にエクスポートする場合、Simulink は Polynomial ブロックを黄色い空のマスク Subsystem ブロックに変換します。また、Simulink はモデルのサポートされていない機能があれば、それらを削除します。save_system を参照してください。

1 つ前の Simulink バージョンから別のバージョンに保存する

Simulink の以前のバージョンで作成されたモデルを開き、そのモデルを別の前のバージョンにエクスポートできます。モデルを 1 つ前のバージョンから別のバージョンに保存する必要がある場合は、次の手順を使用すると、互換性の問題を回避できます。

  1. 現在のバージョンの Simulink を使用して、前のバージョンで作成したモデルを開きます。

  2. 変更を加える前に、[ファイル][保存] を選択してモデルを現在のバージョンで保存します。

    モデルを現在のバージョンで保存した後、必要に応じてモデルを変更し再度保存できます。

  3. [ファイル][モデルのエクスポート先][以前のバージョン] を選択して、モデルを Simulink の以前のバージョンで保存します。

  4. 以前の Simulink バージョンを起動し、それを用いて以前のバージョンにエクスポートしたモデルを開きます。

  5. [ファイル][保存] を選択して、モデルを以前のバージョンで保存します。

これにより、前のバージョンの Simulink のモデルを別のバージョンで作成したものとして使用できるようになります。

また、以前のバージョンからのモデルでの作業に役立つ Simulink 設定も参照してください。

参考

この情報は役に立ちましたか?