Main Content

Simulink.Signal オブジェクトを使用した信号の属性の指定および制御

Simulink.Signal オブジェクトを使用すると、データ型、数値型、次元などの、信号や離散状態の属性を割り当てたり検証したりできます。

信号属性の割り当てまたは検証に信号オブジェクトを使用する

信号属性の割り当てまたは検証に信号オブジェクトを使用できます。同じ手法は離散状態にも適用されます。信号属性の割り当てまたは検証に信号オブジェクトを使用するには、以下のようにします。

  1. 属性を割り当てまたは検証する信号と同じ名前の Simulink.Signal オブジェクトを作成します。

    1. モデル エクスプローラーを開きます。

    2. 信号オブジェクトに必要なコンテキストに応じて、[モデルの階層構造] ペインで、ベース ワークスペースかモデル ワークスペースのノードを選択します。信号オブジェクトをモデル ワークスペースに作成する場合は、[ストレージ クラス] パラメーターを 自動 を設定しなければなりません。

    3. [追加][Simulink 信号] を選択します。

  2. 信号ソースで指定されていない属性に対応するオブジェクト、または検証する属性に対応するオブジェクトのプロパティを設定します。

  3. 信号の明示的または暗黙的な関連付けを行います。

    • 明示的な関連付け: 信号の [信号プロパティ] ダイアログ ボックスで [信号名を Simulink の信号オブジェクトに関連付ける] をチェックします。これは、推奨手法です。詳細については、明示的または暗黙的な記号関連付けを参照してください。

      この手法を使用する場合、[コンフィギュレーション パラメーター]、[診断]、[データ有効性]、[信号の関連付け][なし] 以外の値に設定します。明示的な関連付けのみを使用するには (ベスト プラクティス)、パラメーターを [明示的のみ] に設定します。

    • 暗黙的な関連付け: モデルの [コンフィギュレーション パラメーター]、[診断]、[データ有効性]、[信号の関連付け] オプションを [明示的と暗黙的] または [明示的と暗黙的で警告] に設定します。明示的な関連付けが推奨手法です。

  4. 信号オブジェクトをワークスペース変数に割り当てます。

  5. 信号オブジェクトをソース信号に関連付けます。

検証

信号が信号オブジェクトと一致しないときの結果は複数の要因に依存します。Simulink® はブロック線図の更新時やシミュレーションの実行中あるいはその両方で信号プロパティを検証します。検証の起こるタイミングや方法は、変更される可能性がある内部ルールや、場合によってはコンフィギュレーション パラメーター設定に依存します。

すべての信号検証が信号ソースの属性と信号オブジェクトのプロパティを比較するわけではありません。たとえば、信号オブジェクトを利用して [最小値] および [最大値] の信号値を指定する場合は、信号ソースは、信号オブジェクトと同じ値を指定する (またはオブジェクトから値を継承する) 必要がありますが、そのような検証は、ソースとオブジェクト間の一致にのみ関連し、シミュレーション中の最小値と最大値の施行には関連しません。

[コンフィギュレーション パラメーター]、[診断]、[データ有効性]、[シミュレーション範囲のチェック] の値が なし (既定の設定) の場合、信号オブジェクトが指定または検証しても、Simulink はシミュレーション中に最小値と最大値を適用しません。シミュレーション中の最小と最大の信号値を得るには、[シミュレーション範囲のチェック]警告 または エラー に設定します。詳細については、信号範囲の指定およびモデル コンフィギュレーション パラメーター: データ有効性の診断を参照してください。

複数の信号オブジェクト

信号オブジェクトのストレージ クラスが Auto または Reusable の場合に、特定の "信号オブジェクト" を複数の信号に関連付けることができます。ストレージ クラスが Auto で、[信号ストレージの再利用] などの最適化が外されて、生成コードによって関連するすべての信号にメモリが割り当てられるような場合、各信号は一意の名前をもつグローバル構造体のフィールドとして表示され、信号や状態のデータが含まれます。オブジェクトのストレージ クラスが Auto または Reusable 以外の場合は、信号オブジェクトを 1 つの信号のみに関連付けることができます。

特定の信号は、1 つの信号オブジェクトに関連付けることができます。信号は、信号オブジェクトを複数回参照できますが、各参照は同じ信号オブジェクトに関連付ける必要があります。完全に同じプロパティをもつ 2 つの信号オブジェクトを参照すると、コンパイル時にエラーが発生します。

モデルが任意の信号をもつ 1 つを超える信号オブジェクトに関連付けられている場合、コンパイル時エラーが発生します。このエラーを回避するには、信号が使用するオブジェクトを決定し、他の信号オブジェクトへのすべての参照を削除または再設定します。それにより残りの参照は、選択された信号オブジェクトに関連付けられます。信号の完全なトレースに使用できる手法の説明については、信号の伝播元と伝播先の強調表示を参照してください。

Signal Specification ブロック: Simulink.Signal の代替

Simulink.Signal オブジェクトではなく Signal Specification ブロックを使用して、信号ソースの未指定のプロパティを割り当てることができます。各手法には利点と欠点があります。

  • 信号オブジェクトを使うと、モデルを簡略化し、モデルを編集せずに信号のプロパティ値を変更できますが、信号のプロパティ値をブロック線図に直接表示しません。

  • Signal Specification ブロックを使うと、信号のプロパティ値がブロック線図に直接表示されますが、モデルが複雑化し、信号のプロパティ値の変更を行う必要があります。

以下の 2 つのモデルは、信号への属性割り当ての 2 つの方法のそれぞれの利点を図示したものです。

最初の例では、Sig1 という名前の信号オブジェクトは入力端子 In1 によって出力される信号のサンプル時間とデータ型を指定します。

A simple Simulink model with an input port, a Gain block, and an output port. The signal emitted by the input port is labeled as Sig1.

Sig1 信号のプロパティを確認するために、モデル エクスプローラーで信号オブジェクトを表示できます。このモデルでは、サンプル時間は -1 で、データ型は auto です。

Model Explorer with property dialog box for Sig1 displayed in the right pane

信号 Sig1 のサンプル時間とデータ型プロパティを指定するために信号オブジェクトを使用すると、モデルを編集せずにサンプル時間またはデータ型を変更できます。たとえば、モデル エクスプローラー、MATLAB® コマンド ライン、または MATLAB プログラムを使用して、これらのプロパティを変更できます。

2 番目の例では、Signal Specification ブロックを使用して入力端子 In2 によって出力される信号のサンプル時間とデータ型を指定します。Signal Specification ブロックでは、ダイアグラムの中にデータ型と信号のサンプル時間のプロパティ (ここではそれぞれ uint84) が表示されます。

A simple Simulink model with an input port, a Signal Specification block, a Gain block, and an output port. The signal emitted by the input port is labeled as Sig2.

バス サポート

バス オブジェクトをデータ型として使用する

Simulink.Signal では、非バーチャル バスを出力データ型として使用することをサポートしています。

信号オブジェクトの [データ型] をバス オブジェクトに設定すると、信号オブジェクトを非バス信号と関連付けることができません。

初期値に構造体を使用する

バス オブジェクトをデータ型として使用する場合、[初期値]0 かバス オブジェクトと一致する MATLAB 構造体に設定します。

指定する構造体には、バス オブジェクトが表すバスのすべての要素の値を含めなければなりません。

Simulink.Bus.createMATLABStruct を使用すると、バスに対応する完全な構造体を作成できます。

Simulink.Bus.createObject を使用すると、MATLAB 構造体からバス オブジェクトを作成できます。

参考