カスタム ライブラリの作成
カスタム ライブラリを作成して、類似するブロックおよびサブシステムのグループを保存して管理し、これらを Simulink® モデルで再利用します。ライブラリからモデルにブロックを追加する場合、ライブラリ ブロックはプロトタイプとして機能し、モデル内のそのインスタンスがリンク付きブロックになります。これは、プロトタイプと同じように表示されて動作します。リンク付きブロックを使用すると、モデルで頻繁に再利用するブロックのすべてのインスタンスで一貫した動作を維持するのに特に役立ちます。
たとえば、エンジン制御、トランスミッション制御、ブレーキ システム、車両運動、運転支援のためのブロックを含むカスタムの自動車制御ライブラリを作成できます。その後、このライブラリのブロックをさまざまな車両モデルおよびプロジェクトで使用して、整合性を維持して開発時間を削減します。このライブラリをチームで共有することもできます。
カスタム ライブラリを使用する利点
カスタム ライブラリにはいくつかの利点があります。
ブロックの整理と再利用 — 類似するブロックとサブシステムを 1 つのカスタム ライブラリに整理して、使用頻度が高く、必要最小限の変更で済むコンポーネントのメンテナンスと再利用を容易にすることができます。
整合性の維持 — 1 つのライブラリ ブロックのインスタンスを使用して、すべてのリンク付きインスタンスで統一して使用できます。
意図しない変更の防止 — ライブラリとそのリンク付きブロックの間のリンクをロックして、他のユーザーがライブラリ ブロック インスタンスを変更できないようにします。
カスタム ライブラリの作成
この例では、カスタム ライブラリを作成し、ブロックと注釈を追加して、ライブラリ設定を構成する方法を示します。
ライブラリを作成するには、次の手順に従います。
1. 次のいずれかの方法を使用して、空のライブラリ ウィンドウを開きます。
Simulink スタート ページの Simulink 製品グループで、[空のライブラリ] をクリックします。
Simulink ツールストリップの [シミュレーション] タブで、[新規] を選択して [ライブラリ] をクリックします。
new_system
コマンドを使用して、myLibrary
という名前のライブラリを作成します。
new_system("myLibrary","Library"); open_system("myLibrary");
2. モデルを保存する方法と同様に、ライブラリを .slx
ファイルとして保存します。ただし、モデルとは異なり、ライブラリ内でシミュレーションを直接実行することはできません。ブロックを使用するモデルにアクセス可能な場所にライブラリを保存することができます。
ライブラリでのブロックとサブシステムの追加
ライブラリを作成した後、目的に合わせて構成されたブロック、サブシステム、およびチャートを追加できます。また、ブロックのパラメーターを変更したり、マスクを追加したり、サブシステム内でブロックを追加したりして、ブロックを変更することもできます。特殊な機能を行うために、ライブラリ内にカスタム ブロックを作成できます。詳細については、カスタム ブロックの設計と作成を参照してください。
myLibrary
にコンテンツを追加するには、次の手順に従います。
Continuous Time
という名前の Subsystem ブロックを追加します。Continuous Time
の中に、Inport ブロック、Integrator ブロック、Outport ブロックを追加し、これらを連結します。Discrete Time
という名前の別の Subsystem ブロックを追加します。Discrete Time
の中に、Inport ブロック、Discrete-Time Integrator ブロック、Outport ブロックを追加し、これらを連結します。
open_system("myLibrary")
ライブラリに複数のブロックが含まれている場合、これらを別個のサブライブラリにグループ化することで編成を改善できます。たとえば、機能に基づいてサブライブラリを作成することによって、カスタムの自動車制御ライブラリの編成を改善することができます。Engine Control というサブライブラリに、燃料噴射システム、点火タイミング制御、排出制御、スロットル制御のブロックを含めることができます。一方、Driver Assistance という別のサブライブラリには、クルーズ コントロール、車線維持支援、アダプティブ ヘッドライト、衝突回避システムのブロックを含めることができます。詳細については、ライブラリ ブラウザーおよびクイック挿入へのライブラリの追加の「ライブラリへのサブライブラリの追加」を参照してください。
ライブラリのロックとロック解除
ライブラリを閉じると、編集に対してロックされます。変更するには、次に開いたときにロック解除する必要があります。
ライブラリのロックを解除するには、次のいずれかのオプションを使用します。
ライブラリ ウィンドウの左下隅にあるロック バッジをクリックします。
Simulink ツールストリップの [ライブラリ] タブの [保護] セクションで、[ロックされたライブラリ] をクリックします。
MATLAB コマンド ウィンドウで、
set_param
関数を使用して、ライブラリのLock
パラメーターを設定します。
set_param("myLibrary","Lock","off")
ライブラリのリンクの無効化の防止
既定では、ライブラリ ブロックのユーザーは、親ライブラリへのリンクを無効にすることができます。リンク付きブロックの編集を制限して、ブロック ユーザーがリンクを無効にできないようにする場合、親ライブラリ ブロックとそのリンク付きブロックの間のリンクをロックします。ライブラリ リンクをロックすると、ユーザーはリンク付きインスタンスに変更を加えることができなくなります。ブロック ユーザーがロックされたライブラリのブロックを操作する方法については、ライブラリ内のブロックへのリンクのロックを参照してください。
ライブラリのリンクをロックするには、次のいずれかのオプションを使用します。これらの設定を変更するには、ライブラリが最初にロック解除されている必要があります。
ライブラリ ウィンドウの [ライブラリ] タブで、[リンクをロック] をクリックします。
コマンド ウィンドウで、
set_param
関数を使用して、LockLinksToLibrary
パラメーターを設定します。
set_param("myLibrary","LockLinksToLibrary","on");
ライブラリへの注釈の追加
ライブラリに背景情報や指示を追加するには、テキスト、式、またはイメージの注釈を使用します。注釈からライブラリのブロックへのコールアウトの線を追加したり、クリックするとアクションを実行する注釈を作成したりできます。
myLibrary
に注釈を追加するには、キャンバス上で注釈が必要な場所をダブルクリックします。クイック挿入メニューで [注釈の作成] をクリックし、Integrator Library
という注釈テキストを追加します。注釈の設定の詳細については、Annotate Modelsを参照してください。
myLibrary
のすべての注釈を表示するには、次のコマンドを使用します。
ann = find_system("myLibrary","FindAll","on","Type","annotation"); get_param(ann,"PlainText")
ans = 2×1 cell array {'Copyright 2024 The MathWorks, Inc.'} {'Integrator Library' }
ライブラリ内の各ブロックのブロック プロパティを指定することもできます。詳細については、ブロック プロパティの指定を参照してください。
ライブラリ ブロックの説明の追加
リンク付きブロックに表示される説明を追加するには、ライブラリ ブロックをマスクして、マスクの [ドキュメンテーション] ペインに説明を追加します。ブロック プロパティを介してライブラリ ブロックに追加された説明は、リンク付きブロックには表示されません。マスクの作成の詳細については、簡単なマスクの作成を参照してください。
ライブラリ ブロックの詳細の非表示
カスタム ライブラリ ブロックが誤って変更されるのを防ぐために、カスタム ライブラリ内の Subsystem ブロックの実装の詳細を非表示にすることができます。
Subsystem ブロック Continuous Time
の実装の詳細を非表示にするには、この Subsystem ブロックを選択します。Simulink ツールストリップの [Subsystem ブロック] タブの [内部を検索] セクションで、[[内部を検索] を許可] を選択します。この操作により、Subsystem ブロックの実装の詳細を表示するオプションは、ユーザー インターフェイスから無効になるほか、open_system(blk,"force")
を使用するプログラムによっても無効になります。ここで、blk
は、開いているか読み込まれているモデルに含まれている Subsystem ブロックの完全な名前またはパスです。
ライブラリ ブロックの詳細を表示するオプションを有効にするには、ライブラリ内の Subsystem ブロックを選択し、[Subsystem ブロック] タブの [内部を検索] セクションで、[[内部を検索] を禁止] をクリックします。
これらの変更は、ライブラリ全体ではなく、ライブラリ内の選択したブロックに対してのみ適用されます。
ライブラリ ブロックのインスタンスへのリンクの防止
既定では、ライブラリ ブロックをモデルに追加する場合、追加したブロックはリンク付きブロックとなります。ただし、ライブラリ ブロックから作成されたインスタンスがリンク付きブロックではなく独立したコピーであるように、ライブラリ ブロックを設定できます。
Continuous Time
ブロックでこの動作を実現するには、このブロックの [ブロック プロパティ] ウィンドウで、[コールバック] タブを使用して、ライブラリ ブロックの CopyFcn
コールバックを以下のように設定します。
set_param(gcbh,"LinkStatus","none");
ここでは、LinkStatus
パラメーターを使用して、ライブラリ ブロックとそのインスタンスの間の接続が設定されます。ライブラリ ブロックのリンク ステータスは、さまざまな方法で構成できます。詳細については、リンク ステータスを参照してください。
カスタム ライブラリを使用するときの考慮事項
親ライブラリ ブロックをモデルに追加した後、そのブロック プロパティを変更した場合、変更内容はリンク付きインスタンスに自動的に伝播されません。