Main Content

リンク付きブロックのプログラムによる制御

リンク付きブロック情報

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 ブロックを選択すると、get_param(gcb, 'LinkStatus')implicit を返します。

inactive

無効なリンクです。

set_param を使用して LinkStatus を設定します。

LinkStatus 値の設定説明

none

リンクを解除します。none を使用してリンクを解除します。例: set_param(gcb, 'LinkStatus', 'none')

breakWithoutHierarchy

リンクの入れ子にされた親階層を維持したまま所定の位置のリンクを解除します。例: set_param(gcb, 'LinkStatus', 'breakWithoutHierarchy')

inactive

リンクを無効にします。inactive を使用してリンクを無効にします。たとえば、set_param(gcb, 'LinkStatus', 'inactive') のようにします。

restore

ライブラリ ブロックの非アクティブまたは無効のリンクを元に戻し、ライブラリ ブロックのローカル コピーに行われた変更を破棄します。たとえば、set_param(gcb, 'LinkStatus', 'restore') は、選択したブロックを同じタイプのライブラリ ブロックへのリンクで置き換えます。これはライブラリ ブロックのローカル コピーでの変更を破棄します。

restore は、リンク ツールの [個々のリンクを元に戻す] と同じです。

propagate

無効なリンクに加えられた変更をライブラリ ブロックにプッシュし、そのリンクを再確立します。propagate は、リンク ツールの [個々のリンクをプッシュ] と同じです。

restoreHierarchy

階層の無効なすべてのリンクを対応するライブラリ ブロックで復元します。restoreHierarchy は、リンク ツールの階層モードでの [元に戻す] と同じです。

propagateHierarchy

階層内の変更をもつすべてのリンクをそれらのライブラリにプッシュします。propagateHierarchy は、リンク ツールの [階層] モードでの [プッシュ] と同じです。無効なリンクの復元を参照してください。

メモ

  • get_param を使用してブロックのリンク ステータスをクエリする場合、古くなったブロックのリンクも関連付けられます。

  • get_param が子ブロックのコールバック コードで使用されている場合に StaticLinkStatus コマンドを使用してリンク ステータスを照会することは推奨されます。StaticLinkStatus コマンドは古くなったリンクの関連付けを行いません。

ライブラリ リンク内のブロックで get_param を呼び出すと、Simulink® は必要な場合にリンクを関連付けます。get_param の実行には、ライブラリの一部の読み込みとコールバックの実行が含まれます。

関連するトピック