メインコンテンツ

モデルの保存

モデル、テンプレート、またはライブラリを保存できます。テンプレートとライブラリを作成する方法については、モデルからのテンプレートの作成およびカスタム ライブラリの作成を参照してください。

Simulink® モデルを SLX 形式または MDL 形式で保存できます。

既定では、Simulink は新しいモデルとライブラリをファイル拡張子が .slx の SLX 形式で保存します。SLX 形式は、Open Packaging Conventions (OPC) 相互運用性標準に準拠した圧縮パッケージです。SLX 形式では、XML およびその他の国際形式で Unicode® UTF-8 を使用してモデル情報を保存します。

通常、Simulink モデルを SLX 形式で保存すると、MDL ファイルに比べてファイル サイズが小さくなります。ファイル サイズの削減はモデルによって異なります。

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

Simulink の基本設定のFile format for new models and librariesで、新しいモデルおよびライブラリを保存する際のファイル形式を指定できます。

モデル自体に加えて、モデルの実行に必要なデータを格納および保存することもできます。モデルが開いている間、変数を使用してモデル ワークスペースおよびベース ワークスペースにデータを保存できます。これらのワークスペースの違いの詳細については、モデル ワークスペースを参照してください。データは保存しない限り、モデルを閉じると削除されます。

データを MAT ファイルとして保存するか、データ ディクショナリを使用して保存することができます。データ ディクショナリは、モデルに関連するデータの永続リポジトリです。データ ディクショナリの詳細については、データ ディクショナリとはを参照してください。

モデルに保存されていない変更があるかどうかの判別

モデルに保存されていない変更がある場合、Simulink エディターのタイトル バーのモデル名の横にアスタリスク (変更未保存 (ダーティ) フラグとも呼ばれる) が表示されます。

Title bar showing an asterisk next to the model name

モデルに保存されていない変更があるかどうかをプログラムで判別するには、get_param 関数を使用してモデル パラメーター Dirty の値をクエリします。たとえば、次のコマンドは、現在のシステムが変更未保存の場合に現在のシステム (gcs) を保存します。

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

モデルの保存

モデルを初めて保存する場合は、Simulink エディターの [シミュレーション] タブで [保存] をクリックします。ファイルの名前付け要件については、有効なモデル ファイル名の選択を参照してください。

以前に保存したモデルを再保存するには、次のいずれかを実行します。

  • 現在のファイル名を使用してモデルを保存する場合は、Simulink エディターの [シミュレーション] タブで [保存] をクリックします。

  • モデルの内容を新しい名前または場所に保存するか、モデル形式を変更する場合は、Simulink エディターの [シミュレーション] タブで [保存][名前を付けて保存] を選択します。SLX 形式については、SLX へのモデル ファイル形式の変換を参照してください。

  • 以前の Simulink バージョンと互換性のある形式でモデルを保存する場合は、[シミュレーション] タブで [保存][以前のバージョン] を選択します。詳細については、以前のバージョンの Simulink へのモデルのエクスポートを参照してください。

  • 参照モデルの内容を新しい名前、場所、または形式で保存する場合は、参照モデルのファイルを開きます。次に、[シミュレーション] タブで [保存][名前を付けて保存] を選択します。

有効なモデル ファイル名の選択

モデル ファイル名は英字で始まる必要があり、英字、数字、およびアンダースコアを含めることができます。モデル名の合計文字数は 150 文字を超えてはなりません。

ファイルの名前が有効でない場合でも (たとえば、mymodel (1).slx)、モデルを開くことができます。Simulink はモデルを開き、有効な名前を割り当てます。モデルの名前を変更するか、新しく名前を付けたモデルに変更を保存する場合は、[保存] をクリックします。

モデルに名前を付ける際は、以下を使用しないでください。

  • 言語キーワード (たとえば、ifforend)

  • 予約名 (たとえば、simulink)

  • MATLAB® 組み込み関数 (たとえば、plot)

現在のスコープ内の複数のファイルの名前が同じである場合に MATLAB が呼び出す関数を決定する方法については、関数の優先順位を参照してください。

モデル変数およびデータの保存

MATLAB ワークスペースに Simulink モデルの実行に必要な変数およびデータが含まれている場合、それらの内容を保存して、次回モデルを開いたときに再利用できます。

ワークスペースのすべての内容を保存する場合は、MATLAB エディターの MATLAB ツールストリップにある [ホーム] タブの [変数] セクションで、[ワークスペースの保存] をクリックします。データを MAT ファイルに保存します。

ワークスペース内の特定の項目を保存する場合は、MATLAB エディターの [ワークスペース] パネルで項目を右クリックし、[名前を付けて保存] を選択します。項目を MAT ファイルに保存します。

次回モデルを開いたときに、シミュレーションを実行する前に、MAT ファイルをワークスペースに読み込みます。Load Model Variables and Data from MAT Fileを参照してください。

モデルを保存する前または後に実行するコードの指定

コールバックは、モデルを読み込んだ後や保存した後など、指定したアクション ポイントで実行されるコードです。

対応するコールバック タイプを選択することで、アクション ポイントを指定できます。

  • PreSaveFcn 関数は、モデルを保存する直前に実行されます。

  • PostSaveFcn 関数は、モデルを保存した直後に実行されます。

たとえば、モデルを保存した直後にすべてのワークスペース変数の値を自動的にクリアする場合は、次のようにします。

  1. プロパティ インスペクターが既に開いていて最小化されている場合、モデル ウィンドウの右端にある [プロパティ インスペクター] をクリックして元に戻します。

    プロパティ インスペクターが開いていない場合は、Simulink ツールストリップの [モデル化] タブの [設計] セクションで、[プロパティ インスペクター] をクリックします。

  2. [プロパティ] タブの [コールバック] セクションで、[PostSaveFcn] を選択します。

  3. テキスト ボックスに次のコードを入力します。

    clearvars;

    ヒント

    あるいは、コードを MATLAB スクリプトとして保存し、テキスト ボックスにスクリプトの名前を入力することもできます。

  4. モデルを保存します。

Model Properties dialog box with the PostSaveFcn callback type selected and the clearvars command in the right pane

これで、モデルを保存するたびに、モデルの保存が完了するとワークスペースがクリアされます。

コールバックの詳細については、コールバックを使用したモデル動作のカスタマイズを参照してください。変数を読み込むコールバックをプログラムで定義するには、モデルを開く際のプログラムによる変数の読み込みを参照してください。

SLX へのモデル ファイル形式の変換

既存の MDL ファイルを SLX ファイル形式に変換するには、次のようにします。

  1. [シミュレーション] タブで [保存][名前を付けて保存] を選択します。

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

MDL ファイルを SLX ファイル形式に変換すると、ファイルには MDL ファイルと同じ情報が含まれます。

get_paramset_param などの MDL ファイルで機能する関数は、SLX ファイル形式でも機能します。

モデル名や場所を変更せずに MDL ファイルを SLX ファイル形式に変換すると、ソフトウェアは MDL ファイルの名前を mymodel.mdl.releasename (例: mymodel.mdl.R2010b) に変更してバックアップ ファイルを作成します (ファイルが書き込み可能な場合)。

SLX ファイルは MDL ファイルよりも優先されるため、両方が同じ名前で存在しているときにファイル拡張子を指定しなかった場合は、SLX ファイルが読み込まれます。

注意

サードパーティのソース管理ツールを使用している場合は、モデル ファイル拡張子 .slx をバイナリ ファイル形式として登録します。そうしないと、サードパーティのツールによって SLX ファイルが送信時に破損する可能性があります。

次の表で、SLX ファイルを使用する際に互換性に関する考慮事項が生じる可能性のある操作について説明します。

SLX を使用する際に互換性に関する考慮事項が生じる可能性のある操作オーバーフロー発生時に起きること アクション
拡張子が .mdl のファイル名へのハードコードされた参照スクリプトが、新しいファイル拡張子 .slx で保存されたモデルを見つけたり処理したりできません。

コードが .mdl.slx の両方の拡張子で機能するようにしてください。

ファイル名の代わりに、whichwhat などの関数を使用してください。

既定でテキスト形式を想定するサードパーティのソース管理ツールSLX ファイルのバイナリ形式が原因で、サードパーティのツールにより、ファイルの送信時にファイルが破損する可能性があります。サードパーティのソース管理ツールで、.slx および .mdl 拡張子をバイナリ ファイル形式として登録してください。バイナリ ファイルの Git への登録およびバイナリ ファイルの SVN への登録を参照してください。

MDL ファイルおよび SLX ファイルの内容の形式は変更される可能性があります。モデル データを操作する際には、get_paramfind_systemSimulink.MDLInfo などのドキュメンテーションに記載された関数を使用してください。

以前のバージョンの Simulink へのモデルのエクスポート

モデルを Simulink の以前のバージョンにエクスポートできます。たとえば、Simulink の以前のバージョンにのみアクセスできる同僚にモデルを共有できます。

モデルを Simulink の以前のバージョンにエクスポートするには、以下のようにします。

  1. 続行する前に、モデルに加えたすべての変更が保存されていることを確認します。モデルに保存されていない変更がある場合は、Simulink エディターの [シミュレーション] タブで [保存] をクリックします。

  2. Simulink エディターの [シミュレーション] タブで、[保存][以前のバージョン] を選択します。

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

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

モデルを以前のバージョンにエクスポートすると、そのバージョン以降に導入されたブロックや機能がモデルに含まれているかどうかに関係なく、モデルは以前のバージョンで保存されます。モデルに以前のバージョン以降に開発されたブロックや機能が含まれていたり使用されていたりする場合、以前のバージョンの Simulink でモデルを実行すると正しい結果が得られない可能性があります。

Simulink は、以前のバージョンで導入されたブロックを、黄色の空のマスクされた Subsystem ブロックに変換します。

また、Simulink はサポートされていない機能をモデルから削除します。save_system を参照してください。

参考

トピック