Simulink 要素と Stateflow 要素に対する入力範囲の指定
入力範囲の制約を Simulink® 要素と Stateflow® 要素に対し指定すると、Simulink Design Verifier™ によって解析中にこれらの制約が考慮されます。
Inport ブロックの入力範囲の指定
Inport ブロックで出力の最小値および最大値を指定した後は、Simulink Design Verifier の解析によって、その最小値と最大値が制約として使用されます。
次のモデル例では、2 つの Inport ブロックからの信号を制限します。
Input1 ブロック: 最小値: 1、最大値: 5
Input2 ブロック: 最小値: -1、最大値: 1
Simulink Design Verifier を使用してこのモデルを解析すると、解析によって次の結果が得られます。
Input1 からの出力は 0 未満になることはないため、Logical Operator ブロックへの最初の入力が
false
になることはない。Logical Operator への最初の入力がfalse
となるオブジェクティブは達成されない。最初の入力が
false
となる条件が発生することはないため、Logical Operator ブロックは 100% の改良条件判定カバレッジ (MCDC) を達成できない。
詳細な解析レポートには、Input1 と Input2 の制約として使用される値が示されます。
メモ
Simulink Design Verifier は、ルートレベルの inport についてのみ、取りうる値の範囲全体 (および任意の最小および最大の制約) を考慮します。
Simulink.Signal
オブジェクトの入力範囲の指定
モデル エクスプローラーを使用して、モデル ワークスペースで、入力信号に関連付けられた Simulink.Signal
オブジェクトの最小値および最大値を指定できます。
次のモデル例では、入力信号 a
および b
に関連付けられた Simulink.Signal
オブジェクトを使用して信号値を制限します。
信号
a
: 最小値: 1、最大値: 5信号
b
: 最小値: -1、最大値: 1
このモデルを解析すると、入力端子で最小値および最大値を指定した場合と同じ結果になります。
Inport ブロックおよび信号の信号範囲の指定
Inport ブロックと信号で範囲を指定すると、解析では最も狭い範囲の値が考慮されます。たとえば、入力端子に 4..12
の範囲を指定し、その入力端子からの信号に 1..8
の範囲を指定すると、解析では 4..8
の範囲が考慮されます。
Stateflow データ オブジェクトの入力範囲の指定
モデル エクスプローラーを使用して、Stateflow チャートのルートレベルの入力端子に直接接続されているデータ オブジェクトの範囲を指定できます。
次のモデル例で、Chart という名前の Stateflow チャートには、範囲を 0 < x
< 10 に指定されたデータ オブジェクト x
があります。このチャートでは、low
から high
への遷移をトリガーするためには x
が 15 より大きくなければなりません。
x
の値は 0 ~ 10 の範囲であるため、遷移条件 [x > 15]
が true
になることはありません。low
から high
への遷移が発生することはありません。high
ステートにはならないため、遷移条件 [x < 15]
がテストされることはなく、high
から low
への遷移は発生しません。チャートは常に low
ステートとなります。
このモデルの解析では、次のオブジェクティブが達成されないことが証明されます。
high
ステートにならない。遷移条件
[x > 15]
は常にfalse
となり、true
になることはない。条件
[x < 15]
がテストされることはないため、true
にもfalse
にもなることがない。
解析レポートには、x
の制約として使用された値 [0, 10] が示されます。
サブシステムの入力範囲の指定
Simulink Design Verifier ソフトウェアでは、指定された入力の最小値および最大値がモデルの最上位でのみ、制約として考慮されます。サブシステムの入力端子に最小値および最大値を指定することはできますが、最上位モデルを解析する場合、これらの値は無視されます。
サブシステムの解析を実行する際は、サブシステムの入力端子に指定された最小値および最大値が考慮されます。
たとえば、以下のモデルとそのサブシステムを考えます。
Subsystem では、入力端子 SSIn に指定された最小値および最大値はそれぞれ -10 と 10 です。Saturation ブロックの下限と上限はそれぞれ -15 と 15 です。
最上位モデルで Subsystem を右クリックして [Design Verifier] 、 [サブシステムに対するテストを生成] を選択すると、解析は指定された最小値および最大値を SSIn 端子の制約として考慮します。
制約: 設計上の最小/最大による制約
解析は 2 つの達成されないオブジェクティブを特定します。
入力 > 下限 F: 入力は Saturation ブロックの下限 (-15) より常に大きい。
入力 >= 上限 T: 入力が Saturation ブロックの上限 (15) 以上になることはない。
Subsystem を含むモデルを解析する場合、サブシステムの入力端子 SSIn に指定された値は考慮されません。解析の階層のそれぞれのレベルで、ルートレベルの入力端子のみが考慮されます。
グローバル データ ストアの入力範囲の指定
"データ ストア" は、入力信号または出力信号を直接データ ストアに接続しなくてもデータの書き込みまたは読み取りを行うことができるリポジトリです。データ ストアの作成には、Data Store Memory ブロックまたは Simulink.Signal
オブジェクトを使用します。任意のデータ ストアに対して最小値と最大値を指定できます。
サブシステムの解析時に、Simulink Design Verifier は入力端子を作成して、グローバル データ ストアの実行コンテキストを再現します。詳細については、解析用サブシステムの抽出を参照してください。データ ストアに指定された最小値および最大値がある場合、それらの値は新しい入力端子の最小値および最大値として代入されます。Simulink Design Verifier の解析では、入力の最小値と最大値をサブシステムレベルの解析の制約と見なします。
次のモデル例では、データ ストア A
の最小値は 0、最大値は 10 です。
Atomic Subsystem はデータ ストアから値を読み取り、入力が 0
未満かどうかをチェックします。Compare To Zero ブロックは入力が 0 未満の場合は 1 を出力し、入力が 0 以上の場合は 0 を出力します。Test Objective ブロックは出力が 1 になることがあるかどうかをチェックします。
最上位モデルで Subsystem を右クリックして [Design Verifier] 、 [サブシステムに対するテストを生成] を選択すると、解析においてデータ ストア A
の制約は [0, 10] と見なされます。
解析では、Test Objective ブロックで指定されたオブジェクティブは達成されません。入力は常に 0 以上になるため、Compare To Zero ブロックからの出力は常に 0 になります。
バス要素の入力範囲の指定
バスを定義するとき、バス要素の最小値と最大値を指定できます。Simulink Design Verifier は入力信号としてバスを使用するサブシステムとモデルを解析する際、これらの最小値および最大値を考慮します。
それぞれに最小値と最大値が定義された 3 つのフィールドをもつバスを入力するサブシステムがあるとします。このサブシステムを表示するには、例のフォルダーを現在の MATLAB パスに追加し、コマンド ラインで次のように入力します。
open_system('sldvBusMinMaxExample');
バス要素 | バス要素の最小値 | バス要素の最大値 |
---|---|---|
vehicleSpeed | 0 | 125 |
throttle | 0 | 100 |
engineSpeed | 0 | 7600 |
サブシステムには、各要素が定数を超えないことを確認するためのテスト オブジェクティブがあります。vehicleSpeed
信号は最大値がテスト オブジェクティブより小さくなるよう制限されます。
現在のフォルダーを書き込み可能なフォルダーに設定します。最上位モードで Subsystem を右クリックして、[Design Verifier] 、 [サブシステムに対するテストを生成] を選択します。vehicleSpeed
要素に指定された最大値により、vehicleSpeed > 135
をテストするための条件オブジェクティブは達成されません。