Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

テスト シーケンスと評価の構文

このトピックでは、Test Sequence ブロック、Test Assessment ブロック、および Stateflow® チャート内で使用される構文について説明します。ブロックでは、テスト ステップのアクション、遷移、および評価にこの構文を使用します。チャートでは、ステートと遷移でこの構文を使用します。

Test Sequence ブロックおよび Test Assessment ブロックでは、MATLAB® をアクション言語として使用します。テスト シーケンス ステップおよび遷移では、文字列比較を含む文字列も使用できます。アクション、遷移、評価については、評価演算子、時相演算子、遷移演算子、信号生成関数、論理演算子、関係演算子を使用して定義します。Stateflow チャートでは、verify を除き、MATLAB または C のすべての演算子をアクション言語として使用できます。verify は MATLAB 言語でのみ使用でき、verify ステートメントで文字列を使用することはできません。以下に例を示します。

  • 周期 10 秒の矩形波を出力:

    square(et/10)
  • h0 に変化したときに遷移:

    hasChangedTo(h,0)
  • x が y より大きいことを検証:

    verify(x > y)

評価のステートメント

シミュレーションを検証し、シミュレーションを停止し、検証結果を返すには、評価のステートメントを使用します。

キーワードステートメントの構文説明
verify

verify(expression)

verify(expression, errorMessage)

verify(expression, identifier, errorMessage)

論理式を評価します。オプションの引数は、テスト マネージャーおよび診断ビューアーの結果にラベルを付けます。

verify(x > y,...
'SimulinkTest:greaterThan',...
'x and y values are %d, %d',...
x,y)
assert

assert(expression)

assert(expression, errorMessage)

論理式を評価します。失敗の場合、シミュレーションが停止してエラーが返されます。オプションの引数は、エラー メッセージを返します。

assert(h==0 && k==0,...
'h and k must '...
'initialize to 0')

この表の構文で使用している引数は次のとおりです。

 expression

 identifier

 errorMessage

時相演算子

シミュレーション時間を評価する式を作成するには、時相演算子を使用します。信号条件で使用する変数は、Test Sequence ブロック内の入力、パラメーター、または定数でなければなりません。

演算子構文説明
et

et(TimeUnits)

TimeUnits 単位のテスト ステップの経過時間。TimeUnits を省略すると、秒単位の値が返されます。

ミリ秒単位のテスト シーケンス ステップの経過時間:

et(msec)
t

t(TimeUnits)

TimeUnits 単位のシミュレーションの経過時間。TimeUnits を省略すると、秒単位の値が返されます。

マイクロ秒単位のシミュレーションの経過時間:

t(usec)
after

after(n, TimeUnits)

現在のテスト ステップの先頭から TimeUnits の時間単位で指定された n が経過している場合に true を返します。

4 秒より後:

after(4,sec)
before

before(n, TimeUnits)

現在のテスト ステップの先頭から TimeUnits の時間単位で指定された n が経過するまで true を返します。

4 秒より前:

before(4,sec)
duration

ElapsedTime = duration (Condition, TimeUnits)

Conditiontrue になってからの TimeUnits 単位の ElapsedTime を返します。ElapsedTime は、テスト ステップに再び入るか Conditiontrue でなくなるとリセットされます。

Phi > 1 になってからのミリ秒数が 550 より大きい場合に true を返す:

duration(Phi>1,msec) > 550

この表の構文で使用している引数は次のとおりです。

 TimeUnits

 Condition

遷移演算子

信号イベントを評価する式を作成するには、遷移演算子を使用します。一般的な遷移演算子には次のものがあります。

演算子構文説明
hasChanged
hasChanged(u)

テスト ステップの先頭から u の値が変化した場合に true を返し、それ以外の場合は false を返します。

u は入力データ シンボルでなければなりません。

h が変化したときに遷移:

hasChanged(h)
hasChangedFrom
hasChangedFrom(u,A)

u の値が A から変化した場合に true を返し、それ以外の場合は false を返します。

u は入力データ シンボルでなければなりません。

h1 から変化したときに遷移:

hasChangedFrom(h,1)
hasChangedTo
hasChangedTo(u,B)

u の値が B に変化した場合に true を返し、それ以外の場合は false を返します。

u は入力データ シンボルでなければなりません。

h0 に変化したときに遷移:

hasChangedTo(h,0)

信号生成関数

次の表に、Test Sequence ブロックでテスト信号、乱数、自然指数を作成するために使用できる一般的な関数を示します。テスト シーケンス ステップ内で評価された特定の値を保存して返す関数 latch も示してあります。各関数の詳細については、最初の列にある名前をクリックしてください。

一部の信号生成関数では、時相演算子 et を使用しています。これは、秒単位のテスト ステップの経過時間です。テスト シーケンス ステップで使用できる et 関連の他の演算子については、Temporal Operatorsを参照してください。

メモ

引数の値のスケーリング、丸め、およびその他の近似により、関数の出力に影響が出ることがあります。

関数構文説明
sinsin(x)

x の正弦を返します。ここで、x はラジアン単位です。

周期 10 秒の正弦波:

sin(et*2*pi/10)
coscos(x)

x の余弦を返します。ここで、x はラジアン単位です。

周期 10 秒の余弦波:

cos(et*2*pi/10)
squaresquare(x)

周期 1、範囲 –11 の矩形波出力。

square(x) は、0 <= x < 1 の区間内で、0 <= x < 0.5 であれば値 10.5 <= x < 1 であれば –1 を返します。

square は Stateflow チャートではサポートされていません。

周期 10 秒の矩形波を出力:

square(et/10)
sawtoothsawtooth(x)

周期 1、範囲 –11 のノコギリ波出力。

sawtooth(x)0 <= x < 1 の区間内で増加します。

sawtooth は Stateflow チャートではサポートされていません。

周期 10 秒のノコギリ波を出力:

sawtooth(et/10)
triangletriangle(x)

周期 1、範囲 –11 の三角波出力。

triangle(x)0 <= x < 0.5 の区間内で増加します。

triangle は Stateflow チャートではサポートされていません。

周期 10 秒の三角波を出力:

triangle(et/10)
rampramp(x)

勾配 1 のランプ信号。時間 x におけるランプの値を返します。

ramp(et) は、実質的にテスト ステップの経過時間を返します。

ramp は Stateflow チャートではサポートされていません。

テスト ステップの経過時間が 5 秒進むごとに 1 単位ずつ上昇:

ramp(et/5)
heavisideheaviside(x)

ヘヴィサイド ステップ信号。x < 0 であれば 0x >= 0 であれば 1 を返します。

heaviside は Stateflow チャートではサポートされていません。

5 秒後にヘヴィサイド信号を出力:

heaviside(et-5)
expexp(x)

自然指数関数 ex を返します。

テスト ステップの経過時間の 10 分の 1 で進行する指数信号:

exp(et/10)
randrand

一様分布の疑似乱数値

coder.extrinsic で外部関数 rand を宣言して、シミュレーションごとに新しい乱数値を生成します。乱数をローカル変数に代入します。以下に例を示します。

coder.extrinsic('rand')
nr = rand
sg = a + (b-a)*nr
randnrandn

正規分布の疑似乱数値

coder.extrinsic で外部関数 randn を宣言して、シミュレーションごとに新しい乱数値を生成します。乱数をローカル変数に代入します。以下に例を示します。

coder.extrinsic('randn')
nr = randn
sg = nr*2
latchlatch(x)

latch(x) がテスト ステップで最初に評価されたときに x の値を保存し、以降は保存された x の値を返します。ステップが終了すると、保存された x の値をリセットします。ステップが次にアクティブになると、latch(x) を再評価します。

latch は Stateflow チャートではサポートされていません。

btorque の値にラッチ:

b = latch(torque)

論理演算子

アクション、遷移、および評価では、論理コネクティブを使用できます。以下の例の pq は、boolean 信号または論理式を表しています。

演算構文説明

否定

~p

p でない

verify(~p)

p && q

p かつ q

verify(p && q)

p || q

p または q

verify(p || q)

包含

~p || q

p であれば q。包含 pq と論理的に等価です。

verify(~p || q)

相互条件

(p && q) || (~p && ~q)

p かつ q、または p でも q でもない。相互条件 pq と論理的に等価です。

verify((p && q) || (~p && ~q))

関係演算子

アクション、遷移、および評価では、関係演算子を使用できます。以下の例の xy は、数値型の変数を表しています。

浮動小数点データを比較する場合、演算子 == または ~=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)

関連するトピック