信号ラベル伝播
信号に信号名を付与し、Simulink® モデルでの信号名の伝播を設定して、1 つのブロックまたは複数のブロックを通して信号ラベルを追跡できます。サポートされているブロックの一覧は、信号ラベル伝播をサポートするブロックを参照してください。
信号に名前を設定し、許可されるブロックの出力信号の信号ラベル伝播の表示を有効にする場合、以下のようになります。
Simulink が伝播できるユーザー定義信号名が存在する場合、伝播信号ラベルは山かっこ (例:
<sig1>
) で名前を囲みます。伝播する信号名が存在しない場合、Simulink はラベルに空の山かっこ (
<>
) を表示します。
Simulink では、コメントアウトされたブロックに対しては信号ラベルの伝播は行われません。
たとえば、次のモデルでは、Subsystem ブロックからの出力信号は信号ラベル伝播用に構成されます。伝播した信号ラベル (<const>
) は、Constant ブロック (const
) の上流の出力信号の名前に基づいています。
Simulink が伝播信号ラベルを作成する方法の詳細は、Simulink が信号ラベルを伝播する方法を参照してください。
信号ラベル伝播をサポートするブロック
いくつかの "接続" ブロックには出力信号と共に信号ラベル伝播を使用できます。これによって、データを変更することなく信号をモデル経由で通すことができます。接続ブロックは信号変換を行いません。
また、Model ブロックは信号ラベルの伝播をサポートします。
信号ラベル伝播をサポートする接続ブロックには以下のものがあります。
Inport (サブシステムのみ、モデルの入力端子ではない)
Bus Creator ブロックと Bus Selector ブロックでは、信号ラベルの伝播はサポート "されません"。ただし、バスの階層を表示する場合は、バスの階層の表示を使用します。
信号の [信号プロパティ] ダイアログ ボックスは、信号が信号ラベル伝播をサポートするかどうかを示します。[伝播信号の表示] パラメーターは、信号ラベル伝播をサポートするブロックのみで利用できます。詳細については、伝播信号ラベルの表示を参照してください。
Simulink が信号ラベルを伝播する方法
一般に、Simulink は、信号ラベル伝播を次のように一貫して実行します。
異なるモデル構造に対して (非バス信号とバス信号、バーチャル バスと非バーチャル バス、サブシステムとモデル バリアント、モデル参照、ライブラリなど)
隠れたブロック (場合によっては、Simulink がシミュレーションを有効にするために挿入するもの) があるモデルとないモデルにおいて
モデルの読み込み時、編集時、更新時およびシミュレーション時
特殊なケースの詳細は、以下を参照してください。
一般的な信号ラベル伝播処理
一般に、ブロック (例: BlockA) の出力信号に対して信号ラベル伝播を有効にするとき、Simulink は伝播するソース信号名を見つけるために以下の処理を実行します。
出力信号が BlockA に接続するブロックをチェックして、必要に応じて、最も近いブロックから最も遠いブロックへと逆向きに上流ブロックのチェックを続行します。
以下のいずれかに該当するブロックを検出したときには停止します。
信号ラベル伝播をサポートしており信号名をもつもの
信号ラベル伝播をサポートしないもの
Simulink が停止するブロックがあれば、そのブロックの出力信号の信号名を取得します。
信号ラベル伝播を有効にする下流ブロックの出力信号には、伝播信号ラベルの信号名を使用します。
たとえば、次のモデルで、Subsystem ブロック用の出力信号 (つまり、Out1
端子に接続されている信号) の信号ラベル伝播を有効にすると想定します。
Simulink は、サブシステムの内部をチェックし、From ブロックと GoTo ブロック (信号ラベル伝播をサポートし名前のないブロック) の上流をチェックして、信号ラベル伝播をサポートしていない Constant ブロックに到達するまで、さらに上流のブロックをチェックします。
Simulink は Constant ブロック出力信号の信号名 const
を使用します。Subsystem ブロックの出力信号用の伝播信号ラベルは <const>
です。
Constant ブロックからの出力信号に信号名がなかった場合、伝播信号ラベルは山かっこの空のセット (<>
) になります。
以下に示すように、Subsystem ブロックで In1 ブロックからの出力信号用の信号ラベル伝播を有効にして、[信号プロパティ] ダイアログ ボックスを使用して From ブロックの出力信号用の信号名 const-from
を指定すると仮定します。
Subsystem ブロックの出力信号用の伝播信号ラベルは <const-from>
に変わります。これは、それが信号ラベル伝播処理で Simulink が検出した最初の名前付き信号であるためです。
以下のモデルでは、Subsystem ブロックの出力信号用の信号ラベル伝播は、信号名 bus1
を使用します。これは Bus Creator ブロックの出力バスの名前です。伝播信号ラベルはバス要素信号 (a
と b
) の名前を含みません。
伝播信号ラベルの表示
個々の信号の伝播された信号ラベルを表示することも、モデル内のすべての信号の伝播された信号ラベルを表示することもできます。すべての信号のラベルを表示するには、Simulink エディターで、[デバッグ] タブで [情報のオーバーレイ] 、 [伝播された信号ラベル] を選択します。
個々の信号に対して伝播された信号ラベルを表示するには、以下の手順を実行します。
伝播信号ラベルを表示する信号を右クリックし、[プロパティ] を選択します。
[信号プロパティ] ダイアログ ボックスで、[伝播信号の表示] を選択します。
[伝播信号の表示] パラメーターは、信号ラベル伝播をサポートするブロックからの出力信号のみで利用できます。
信号が伝播した名前を表示するようにプログラムによって設定するには、関数 set_param
を使用して、その信号を生成するブロック出力端子に対応する端子ハンドルの ShowPropagatedSignals
プロパティの値を指定します。たとえば、モデル MyModel
にある Subsystem ブロック Subsystem
の最初の出力端子の出力信号について信号ラベル伝播を有効にするには、次のようにします。
関数
get_param
を使用してそのブロックの端子ハンドルを取得します。portHandles = get_param("MyModel/Subsystem","PortHandles");
最初の出力端子のハンドルにインデックスでアクセスします。そのブロックがもつ可能性のある各端子タイプのフィールドを含む構造体として、ブロック端子ハンドルが返されます。
outport1 = portHandles.Outport(1);
関数
set_param
を使用して、出力端子のShowPropagatedSignals
パラメーターの値をon
として指定します。set_param(outport1,ShowPropagatedSignals="on")
信号に既にラベルがある場合、伝播信号ラベルを表示する "代替" 方法には以下のものがあります。
モデル ブロック線図で信号ラベルをクリックします。
ラベルのテキストを削除します。
信号ラベルのテキスト ボックスに山かっこ (
<
) を入力します。信号ラベルの外側をクリックします。
Simulink は伝播信号ラベルを表示します。
信号伝播の特殊なケース
参照モデルの処理
参照モデルの信号ラベル伝播を有効にするには、伝播信号ラベルの表示で説明されている手順に加えて、[モデル コンフィギュレーション パラメーター] 、 [モデル参照] 、 [すべての信号ラベルをモデルから伝播] パラメーターの既定の設定を使用します。つまり、パラメーターが有効になっていることを確認します。
信号ラベル伝播に影響する変更を参照モデル内部に加えた場合、参照モデルの外部にある伝播信号ラベルはブロック線図を更新した後やモデルをシミュレートした後までその変更を反映しません。
たとえば、モデル ex_signal_label_prop_model_ref
には信号名が input_1
である In1 ブロックからの出力信号を含む参照モデルがあります。
Model ブロックの Out1 端子からの信号に対して信号ラベル伝播を有効にした場合、その信号はブロック線図を更新した後やモデルをシミュレートした後まで名前 input_1
を反映 "しません"。
Variant Subsystem と Configurable Subsystem の処理
Simulink は、以下の条件の "両方" が発生した場合に、Subsystem ブロックまたは Model ブロックの出力信号に対する伝播信号ラベルを更新します (有効になっている場合)。
バリアント モデルの出力信号にはさまざまな信号名があります。
アクティブ バリアント モデルまたは Variant Subsystem を変更した場合。
Subsystem ブロックの場合、信号ラベルは編集時に更新されます。Model ブロックの場合、更新はブロック線図を更新するときまたはモデルをシミュレーションするときに行われます。