ドキュメンテーション

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

バス オブジェクトのインポートとエクスポートのカスタマイズ

バス エディターを使用すると、バス オブジェクトの保存とインポートの説明のように、ベース ワークスペースにバス オブジェクトをインポートし、ベース ワークスペースからオブジェクトをエクスポートできます。既定では、バス エディターはバス オブジェクトを MATLAB® コード ファイルまたは MAT ファイルに保存したり、これらのファイルからインポートしたりできます。ファイルは、通常の [開く] または [保存] ダイアログ ボックスを使用してアクセスできる場所になければなりません。

代替のインポートまたはエクスポート (あるいはその両方) の機能を提供する、カスタマイズした MATLAB 関数を記述できます。たとえば、オブジェクトを組織で使用する形式のレコードとしてデータベースに保存する、カスタマイズした関数を記述できます。

カスタムのバス オブジェクト インポート関数またはエクスポート関数を設計および実装した後に、Simulink® のカスタマイズ マネージャーを使用して関数を登録します。登録プロセスにより、カスタム インポート関数とカスタム エクスポート関数が、バス エディターの [ベース ワークスペースにインポート] コマンドおよび [ファイルにエクスポート] コマンドのコールバックとして確立されます。コールバックにより、バス エディターの既定の機能が置き換えられます。バス エディターのインポート機能とエクスポート機能をカスタマイズしても、他の MATLAB 関数や Simulink 関数には影響しません。インポートまたはエクスポートのカスタマイズをキャンセルすると、他の操作には影響せず、その操作に対して既定のバス エディター機能が復元されます。

外部 C コードからバス オブジェクトを作成するために、カスタマイズを行う必要はありません。外部 C コードからのバス オブジェクトの作成を参照してください。

必要な背景知識

バス オブジェクトのインポートまたはエクスポートをカスタマイズするには、以下を理解していることが必要です。

  • MATLAB 言語とプログラミング手法。

  • Simulink バス オブジェクト構文。

  • バス オブジェクトの変換先となる独自仕様の形式、およびオブジェクトを保存する機能にアクセスするために必要な手法。

  • バス オブジェクトを保存またはアクセスする場所の名前など、ユーザーからデータを取得するためのプラットフォーム固有の手法。

バス オブジェクトのエクスポート関数の作成

カスタム バス オブジェクト エクスポート関数には、少なくとも 1 つの引数が必要です。追加の引数を使用して、関数による特別なアクションを処理できます。最初の引数の値は、バス エディターが選択しているすべてのバス オブジェクトの名前を含む cell 配列です。追加の引数の値を指定するには、関数、グローバル変数、またはその他の MATLAB 手法を使用できます。カスタマイズされたエクスポート関数の一般的なアルゴリズムは、以下のとおりです。

  1. 最初の引数のオブジェクト名のリストを繰り返す。

  2. 各名前に対応するバス オブジェクトを取得する。

  3. バス オブジェクトを独自仕様の構文に変換する。

  4. 変換されたバス オブジェクトをローカル リポジトリに保存する。

以下の例は、そのようなエクスポート コールバック関数の構文シェルを示しています。

function myExportCallBack(selectedBusObjects)
disp('Custom export was called!');
for idx = 1:length(selectedBusObjects)
    disp([selectedBusObjects{idx} ' was selected for export.']);
end

この関数ではバス オブジェクトはエクスポートされませんが、構文的には有効なので登録できます。この関数は、バス オブジェクト名の cell 配列を受け入れ、それらを繰り返し、各名前を印刷します。実用的なエクスポート関数は、次のとおりです。

  • 各名前を使用して、ベース ワークスペースから対応するバス オブジェクトを取得する

  • オブジェクトを独自仕様の形式に変換する

  • 変換したオブジェクトを格納する

必要なその他のロジックは、企業ごとに異なります。

バス オブジェクトのインポート関数の作成

カスタムのバス オブジェクト インポート関数は 0 個以上の引数を取り、そのタスクを実行します。引数値の指定には、関数、グローバル変数、またはその他の MATLAB 手法を使用できます。この関数では、バス オブジェクト情報の取得先の指定など、ユーザーに情報を求めることもできます。カスタム バス オブジェクトのインポート関数の一般的なアルゴリズムは以下のとおりです。

  1. ローカル リポジトリからバス オブジェクトを取得する。

  2. 各バス オブジェクト定義を Simulink.Bus オブジェクトに変換する。

  3. 各バス オブジェクトを MATLAB ベース ワークスペースに保存する。

以下の例は、インポート コールバック関数の構文シェルを示します。

function myImportCallBack
disp('Custom import was called!');

この関数ではバス オブジェクトはインポートされませんが、構文的には有効なので Simulink カスタマイズ マネージャーに登録できます。実用的なインポート関数は、次のとおりです。

  • インポートするバス オブジェクトの取得先の指定を取得する

  • 各バス オブジェクトを Simulink.Bus オブジェクトに変換する

  • ベース ワークスペースにオブジェクトを格納する

必要なその他のロジックは、企業ごとに異なります。

カスタマイズの登録

バス オブジェクトのインポートまたはエクスポートをカスタマイズするには、Simulink を起動するたびに、または Simulink カスタマイズを更新するたびにカスタマイズ マネージャーの入力および構成を行うカスタマイズの登録関数を指定します。カスタマイズの登録関数を使用する手順は以下のとおりです。

  1. カスタマイズの登録関数を格納する sl_customization.m という名前のファイルを作成します。または、既存のカスタマイズ ファイルを使用できます。

  2. ファイルの先頭で、1 つの引数をとる sl_customization という名前の関数を作成します (または既存のファイル内のカスタマイズ関数を使用します)。関数を呼び出すときのこの引数の値はカスタマイズ マネージャーになります。

  3. importCallbackFcn および exportCallbackFcn が、カスタマイズされたバス オブジェクトのインポート関数およびエクスポート関数を指定する関数ハンドルに設定されるように sl_customization 関数を構成します。

  4. sl_customization.m が新しいカスタマイズ ファイルである場合は、MATLAB の検索パスの任意の場所にそれを配置します。2 つの頻繁に使用される場所は matlabroot と現在の作業フォルダーです。あるいは、検索パスを拡張できます。

カスタマイズの登録関数の簡単な例を示します。

function sl_customization(cm)
disp('My customization file was loaded.');
cm.BusEditorCustomizer.importCallbackFcn = @myImportCallBack;
cm.BusEditorCustomizer.exportCallbackFcn = @(x)myExportCallBack(x);

起動した Simulink は、MATLAB 検索パス内を移動し、sl_customization.m という名前のファイルを探します。Simulink では (最初のファイルだけでなく) 検出されたファイルがそれぞれ読み込まれ、その先頭にある関数 sl_customization が実行され、その関数で指定されたカスタマイズが確立します。

カスタマイズ関数の例を実行すると、メッセージが表示されます (実際の関数ではおそらく表示されません)。この関数によって、バス エディターでは myImportCallBack() という名前の関数を使用してバス オブジェクトをインポートし、myExportCallBack(x) という名前の関数でバス オブジェクトをエクスポートすることが確立されます。

コールバック登録に表示されるハンドルに対応する関数は、登録の実行時に定義しなくてもかまいません。ただし、バス エディターが関数を呼び出すときには定義されていなければなりません。追加の引数の値の指定に使用される関数またはグローバル変数にもこれと同じ許容度と要件が適用されます。

sl_customization.m ファイルにはその他の関数も存在することがあります。ただし、Simulink ソフトウェアでは、その起動時またはカスタマイズの更新時を除き、sl_customization.m という名前のファイルは無視されます。カスタマイズ ファイル内の関数の変更は、次のイベントのいずれかが発生するまで無視されます。一方、MATLAB パス上の他の MATLAB コード ファイルへの変更は、すぐに有効になります。

詳細については、カスタマイズの登録を参照してください。

カスタマイズの変更

次の方法で、関数 sl_customization で確立されたハンドルを変更できます。

  • 変更されたハンドルを指定する関数の変更

  • 関数の保存

  • sl_refresh_customizations の実行によるカスタマイズの更新

Simulink は MATLAB パス内を移動して、検出されたすべての sl_customization.m ファイルを再読み込みし、Simulink の起動時と同様に、各ファイルの先頭にある関数を実行します。

関数 sl_customization で、該当する BusEditorCustomizer 要素を [] に設定し、カスタマイズを更新することにより、既定のインポートまたはエクスポートの動作に戻すことができます。代わりに、以下を実行すると、両方のカスタマイズを 1 つの操作で消去できます。

cm.BusEditorCustomizer.clear

cm は、以前はカスタマイズ マネージャー オブジェクトに設定されていました (カスタマイズの登録を参照)。

インポートおよびエクスポート コールバック関数自体への変更は、それらをカスタマイズとして登録するハンドルへの変更とは異なり、sl_customization.m ファイルそのものに含まれていなければ、すぐに有効になります。sl_customization.m ファイルに含まれている場合は、カスタマイズを次回更新したときに有効になります。通常、コールバック関数を別のファイルに保存しておくと、より柔軟でモジュール化された結果が得られます。

参考

ブロック

関数

クラス

関連するトピック