このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
カスタム ライブラリへのデータ ディクショナリのリンク
カスタム ブロック ライブラリを作成するときに、ブロック インターフェイスで使用するデータ オブジェクト (バスや列挙型など) を定義できます。ライブラリに接続されている Simulink® データ ディクショナリにこれらのデータ型を保存して、これらのデータ型をライブラリ ユーザーが利用できるようにすることができます。ライブラリ ユーザーは、ライブラリからモデルにブロックをドラッグすると、ディクショナリに含まれているデータ型に自動的にアクセスできます。
接続されているデータ ディクショナリで定義されているデータ型を使用したライブラリ ブロックの作成
データ ディクショナリ内のライブラリ ブロックのデータと型を定義するには、次のようにします。
新しいデータ ディクショナリを作成するか、既存のディクショナリを開きます。新しいディクショナリを作成するには、モデル エクスプローラーで、[ファイル] 、 [新規] 、 [データ ディクショナリ] を選択します。既存のディクショナリを開くには、[ファイル] 、 [開く] を選択し、ディクショナリを参照します。
データと型 (バス オブジェクトなど) をデータ ディクショナリに追加します。
データ ディクショナリを保存します。
UI を使用するか、プログラムにより関数 set_param
を使用してデータ ディクショナリをライブラリに接続できます。
UI を使用してデータ ディクショナリを接続するには、次のようにします。
ライブラリのロックを解除します (ライブラリのロックとロック解除を参照)。
Simulink エディターの [モデル化] タブで、[ライブラリ プロパティ] をクリックします。
[ライブラリ プロパティ] ダイアログ ボックスの [外部データ] タブで、[参照] をクリックし、データ ディクショナリを選択して開きます。
[OK] をクリックしてディクショナリを接続します。
関数 set_param
を使用してデータ ディクショナリを接続するには、次のコマンドを使用します。
set_param('myLib','DataDictionary','myLibData.sldd');
ディクショナリを接続し、ライブラリを保存すると、ディクショナリとその内容がモデル エクスプローラーにライブラリの外部データ ソースとして表示されます。
ライブラリのブロックを作成するときは、ライブラリ ディクショナリに含まれる型を [データ型] リストから選択できます。
データ ディクショナリが接続されたライブラリからのブロックの使用
ブロックをライブラリからモデルにドラッグすると、モデルはそのライブラリに接続されているディクショナリに含まれるデータ オブジェクトに自動的にアクセスします。モデル エクスプローラーでディクショナリを表示するには、Simulink エディターで、左下隅にあるモデル データ バッジ をクリックしてから、[外部データ] をクリックします。ディクショナリは、[From Libraries] ノードの下にあるモデルへの外部データ ソースとして表示されます。
ライブラリで定義されたデータ オブジェクトは、ベース ワークスペースまたは別のデータ ディクショナリにそれらのデータ オブジェクトを取り込まなくても、シミュレーションおよびコード生成用にモデルで利用できます。
モデルを更新または保存するときに、モデルにライブラリからのブロックが含まれていない場合は、ライブラリ ディクショナリはモデルで使用できなくなり、ディクショナリは [From Libraries] ノードから削除されます。
ライブラリ ディクショナリを使用するときの考慮事項
データ ディクショナリがリンクされたライブラリを作成または使用するときには、以下の点を考慮します。
多くの場合、ライブラリ ディクショナリではバスまたは列挙型を定義しますが、ライブラリの作成者はオブジェクトをディクショナリに追加することで、どのタイプのオブジェクトでもライブラリ ユーザーと共有できます。
ライブラリ ディクショナリ内の項目はスコープがグローバルで、ライブラリ ディクショナリがモデルに直接接続されているかのように記号の関連付けが行われます。
ライブラリ リンクが解除されると、ライブラリに関連付けられたデータは使用できなくなります。データへのアクセスを回復するには、モデルをライブラリ ディクショナリに手動でリンクしなければなりません。ライブラリ ディクショナリへのリンクが復元されると、データへのアクセスも復元されます。
ライブラリをライブラリ ディクショナリに再リンクできない場合、ライブラリ ディクショナリのリンクに関する情報を含むキャッシュが破損している可能性があります。キャッシュをリセットするには、関数
Simulink.LibraryDictionary.resetLibraryLinks
を呼び出します。この関数を呼び出すと、ライブラリをライブラリ ディクショナリにリンクする機能が回復しますが、前にリンクしていたライブラリ ディクショナリの情報は失われます。モデルの階層構造では、モデルはディクショナリに含まれるデータ オブジェクトを使用するためにライブラリ ディクショナリを直接または間接的に参照しなければなりません。
Simulink はライブラリ ディクショナリの依存関係情報をユーザー基本設定フォルダーに格納します。この情報は複数の MATLAB® セッション間で維持されます。ライブラリを別のフォルダーまたはマシンに移動した場合、またはライブラリ階層に変更を加えた場合は、関数
Simulink.LibraryDictionary.refresh
を使用して依存関係の解析を実行し、格納されている依存関係を更新できます。この依存関係の解析は計算量が多くなる可能性があるため、見つからない依存関係がある場合にのみ関数 refresh を呼び出します。前の依存関係の解析を消去するには、関数Simulink.LibraryDictionary.clear
を使用します。ブロックをライブラリからモデルにドラッグすると、モデルはそのライブラリに接続されているデータ ディクショナリに自動的にアクセスします。ただし、ブロックがサブライブラリからのものである場合、アクセスはそのサブライブラリに接続されているデータ ディクショナリに限定されます。この場合、モデルがブロックを使用するときにライブラリ ディクショナリとサブライブラリ ディクショナリの両方にアクセスできるようにするためには、ライブラリの作成者は新しいサブシステムにサブライブラリ ブロックを含めなければなりません。
ライブラリを MATLAB ルート フォルダーに保存すると、ディクショナリをライブラリに接続できますが、ライブラリからブロックを追加するときに、モデルは自動でディクショナリにアクセスできません。
Simulink は、ライブラリにリンクされたデータ ディクショナリでの使用されない変数の検索をサポートしていません。
参考
set_param
| Simulink.LibraryDictionary.refresh
| Simulink.LibraryDictionary.clear
| Simulink.LibraryDictionary.resetLibraryLinks