このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
テスト シーケンスと評価の構文
このトピックでは、Test Sequence ブロック、Test Assessment ブロック、および Stateflow® チャート内で使用される構文について説明します。ブロックでは、テスト ステップのアクション、遷移、および評価にこの構文を使用します。チャートでは、ステートと遷移でこの構文を使用します。
Test Sequence ブロックおよび Test Assessment ブロックでは、MATLAB® をアクション言語として使用します。テスト シーケンス ステップおよび遷移では、文字列比較を含む文字列も使用できます。アクション、遷移、評価については、評価演算子、時相演算子、遷移演算子、信号生成関数、論理演算子、関係演算子を使用して定義します。Stateflow チャートでは、verify
を除き、MATLAB または C のすべての演算子をアクション言語として使用できます。verify
は MATLAB 言語でのみ使用でき、verify
ステートメントで文字列を使用することはできません。以下に例を示します。
周期
10
秒の矩形波を出力:square(et/10)
h
が0
に変化したときに遷移:hasChangedTo(h,0)
x が y より大きいことを検証:
verify(x > y)
評価のステートメント
シミュレーションを検証し、シミュレーションを停止し、検証結果を返すには、評価のステートメントを使用します。
キーワード | ステートメントの構文 | 説明 | 例 |
---|---|---|---|
verify |
| 論理式を評価します。オプションの引数は、テスト マネージャーおよび診断ビューアーの結果にラベルを付けます。 | verify(x > y,... 'SimulinkTest:greaterThan',... 'x and y values are %d, %d',... x,y) |
assert |
| 論理式を評価します。失敗の場合、シミュレーションが停止してエラーが返されます。オプションの引数は、エラー メッセージを返します。 | assert(h==0 && k==0,... 'h and k must '... 'initialize to 0') |
この表の構文で使用している引数は次のとおりです。
時相演算子
シミュレーション時間を評価する式を作成するには、時相演算子を使用します。信号条件で使用する変数は、Test Sequence ブロック内の入力、パラメーター、または定数でなければなりません。
演算子 | 構文 | 説明 | 例 |
---|---|---|---|
et |
|
| ミリ秒単位のテスト シーケンス ステップの経過時間: et(msec) |
t |
|
| マイクロ秒単位のシミュレーションの経過時間: t(usec) |
after |
| 現在のテスト ステップの先頭から | 4 秒より後: after(4,sec) |
before |
| 現在のテスト ステップの先頭から | 4 秒より前: before(4,sec) |
duration |
|
|
duration(Phi>1,msec) > 550 |
この表の構文で使用している引数は次のとおりです。
遷移演算子
信号イベントを評価する式を作成するには、遷移演算子を使用します。一般的な遷移演算子には次のものがあります。
演算子 | 構文 | 説明 | 例 |
---|---|---|---|
hasChanged | hasChanged(u) | テスト ステップの先頭から
|
hasChanged(h) |
hasChangedFrom | hasChangedFrom(u,A) |
|
hasChangedFrom(h,1) |
hasChangedTo | hasChangedTo(u,B) |
|
hasChangedTo(h,0) |
信号生成関数
次の表に、Test Sequence ブロックでテスト信号、乱数、自然指数を作成するために使用できる一般的な関数を示します。テスト シーケンス ステップ内で評価された特定の値を保存して返す関数 latch
も示してあります。各関数の詳細については、最初の列にある名前をクリックしてください。
一部の信号生成関数では、時相演算子 et
を使用しています。これは、秒単位のテスト ステップの経過時間です。テスト シーケンス ステップで使用できる et
関連の他の演算子については、Temporal Operatorsを参照してください。
メモ
引数の値のスケーリング、丸め、およびその他の近似により、関数の出力に影響が出ることがあります。
関数 | 構文 | 説明 | 例 |
---|---|---|---|
sin | sin(x) |
| 周期 10 秒の正弦波: sin(et*2*pi/10) |
cos | cos(x) |
| 周期 10 秒の余弦波: cos(et*2*pi/10) |
square | square(x) | 周期
| 周期 square(et/10) |
sawtooth | sawtooth(x) | 周期
| 周期 sawtooth(et/10) |
triangle | triangle(x) | 周期
| 周期 triangle(et/10) |
ramp | ramp(x) | 勾配
| テスト ステップの経過時間が 5 秒進むごとに 1 単位ずつ上昇: ramp(et/5) |
heaviside | heaviside(x) | ヘヴィサイド ステップ信号。
|
heaviside(et-5) |
exp | exp(x) | 自然指数関数 を返します。 | テスト ステップの経過時間の 10 分の 1 で進行する指数信号: exp(et/10) |
rand | rand | 一様分布の疑似乱数値 |
coder.extrinsic('rand')
nr = rand
sg = a + (b-a)*nr |
randn | randn | 正規分布の疑似乱数値 |
coder.extrinsic('randn')
nr = randn
sg = nr*2 |
latch | latch(x) |
|
b = latch(torque) |
論理演算子
アクション、遷移、および評価では、論理コネクティブを使用できます。以下の例の p
と q
は、boolean 信号または論理式を表しています。
演算 | 構文 | 説明 | 例 |
---|---|---|---|
否定 | ~p |
|
|
積 | p && q |
|
|
和 | p || q |
|
|
包含 | ~p || q |
|
|
相互条件 | (p && q) || (~p && ~q) |
|
|
関係演算子
アクション、遷移、および評価では、関係演算子を使用できます。以下の例の x
と y
は、数値型の変数を表しています。
浮動小数点データを比較する場合、演算子 ==
または ~=
を verify
ステートメントで使用すると警告が返されます。verify
ステートメントを実装するときは、浮動小数点数に関する精度の制限を考慮してください。浮動小数点数を参照してください。浮動小数点データを使用する場合は、評価の許容誤差を定義することを検討してください。たとえば、verify(x == 5)
の代わりに、0.001
の許容誤差内で x
を検証します。
verify(abs(x-5) < 0.001)
演算子と構文 | 説明 | 例 |
---|---|---|
x > y | より大きい | verify(x > y) |
x < y | より小さい | verify(x < y) |
x >= y | 以上 | verify(x >= y) |
x <= y | 以下 | verify(x <= y) |
x == y | 等しい | verify(x == y) |
x ~= y | 等しくない | verify(x ~= y) |