リンク付きブロックのプログラムによる制御
リンク付きブロック情報
libinfo
コマンドを使用して、モデル内のリンク付きブロックに関する情報を取得します。libinfo
はリンク付きブロックの親ライブラリ ブロックに関する情報も提供します。
たとえば、リンク付きブロックのある次のようなモデルがあります。
このブロックに対して libinfo(gcb)
コマンドを実行すると、次のようになります。
Block: 'slexMaskVariantExample/VariantSubsystem2' %Linked block Library: 'slexMaskingVariants_libraryblock' %Parent library block ReferenceBlock: 'slexMaskingVariants_libraryblock/VariantSubsystem2' LinkStatus: 'resolved' %Link status
ReferenceBlock
プロパティは、ブロックがリンクしているライブラリ ブロックのパスを与えます。set_param
コマンドを使用することで、プログラムによってこのパスを変更できます。以下に例を示します。
set_param('slexMaskVariantExample/VariantSubsystem2','ReferenceBlock','slexMaskVariantExample2/VariantSubsystem')
ここで、slexMaskVariantExample/VariantSubsystem2
は元のライブラリ ブロックのパスで、slexMaskVariantExample2/VariantSubsystem
は新しいライブラリ ブロックのパスです。
メモ
同じブロックのマスク初期化コードまたはコールバック コードで set_param
コマンドを使用して参照先ブロックのプロパティを変更することは推奨されません。そのようなモデル化パターンでは、参照先ブロックの親ブロックのコールバック コードまたはマスク初期化コードで、Variant ブロックを使用するか、または ReferenceBlock
パラメーターを使用することができます。
リンク付きブロックのロック
LockLinksToLibrary
コマンドを使用して、ライブラリのリンク付きブロックのロックまたはロック解除をコマンド ラインから行います。LockLinksToLibrary
の値を on
に設定すると、ライブラリにリンクするリンク付きブロックはロックされます。
set_param('MyLibraryName', 'LockLinksToLibrary', 'on') %Lock links
set_param('MyLibraryName', 'LockLinksToLibrary', 'off') %Unlock links
リンク ステータス
すべてのブロックが、そのブロックがリンク付きブロックであるかどうかを示す LinkStatus
パラメーターおよび StaticLinkStatus
パラメーターをもっています。
get_param(gcb, 'StaticLinkStatus')
を使用して、リンク付きブロックを更新せずにリンク ステータスをクエリします。StaticLinkStatus
を使用して、リンク付きブロックの状態がアクティブであるか古くなっているかを照会できます。
get_param
を使用してクエリを送信し、LinkStatus
の値を取得します。
LinkStatus 値の取得 | 説明 |
---|---|
none | ブロックがリンク付きブロックでないことを示します。 |
resolved | 関連付けられているリンクです。 |
unresolved | 関連付けられていないリンクです。 |
implicit | ブロックがライブラリ ブロック内にあり、ライブラリ ブロックへのリンクではないことを示します。A は Gain ブロックを含むライブラリ内のサブシステムへのリンクであると仮定します。A を開いて Gain ブロックを選択すると、 |
inactive | 無効なリンクです。 |
set_param
を使用して LinkStatus
を設定します。
LinkStatus 値の設定 | 説明 |
---|---|
| リンクを解除します。 |
| リンクの入れ子にされた親階層を維持したまま所定の位置のリンクを解除します。例: |
| リンクを無効にします。 |
| ライブラリ ブロックの非アクティブまたは無効のリンクを元に戻し、ライブラリ ブロックのローカル コピーに行われた変更を破棄します。たとえば、
|
| 無効なリンクに加えられた変更をライブラリ ブロックにプッシュし、そのリンクを再確立します。 |
| 階層の無効なすべてのリンクを対応するライブラリ ブロックで復元します。 |
| 階層内の変更をもつすべてのリンクをそれらのライブラリにプッシュします。 |
メモ
get_param
を使用してブロックのリンク ステータスをクエリする場合、古くなったブロックのリンクも関連付けられます。get_param
が子ブロックのコールバック コードで使用されている場合にStaticLinkStatus
コマンドを使用してリンク ステータスを照会することは推奨されます。StaticLinkStatus
コマンドは古くなったリンクの関連付けを行いません。
ライブラリ リンク内のブロックで get_param
を呼び出すと、Simulink® は必要な場合にリンクを関連付けます。get_param
の実行には、ライブラリの一部の読み込みとコールバックの実行が含まれます。