主要内容

测试顺序和评估语法

中使用的语法测试序列而且测试评估块,Stateflow®图表。在这些块中,您将此语法用于测试步骤操作、转换和评估。在图表中,可以在状态和转换中使用此语法。

有关使用命令行界面创建和编辑测试序列步骤、转换和数据符号的信息,请参阅下面列出的函数测试序列测试脚本页面。

测试序列而且测试评估块使用MATLAB®作为动作语言。您还可以在测试序列步骤和转换中使用字符串,包括字符串比较。您可以定义操作、转换、带有评估操作符、时间操作符、转换操作符、信号生成函数、逻辑操作符和关系操作符的评估。除了验证,状态流图可以使用MATLAB或C中的所有操作符作为动作语言。验证只能在MATLAB语言中使用,不能在验证语句。例如:

  • 输出周期为的方波10证券交易委员会:

    广场(et / 10)
  • 过渡时h更改0

    hasChangedTo (h, 0)
  • 验证x大于y:

    验证(x > y)

评估语句

要验证仿真,停止仿真,并返回验证结果,请使用评估语句。

关键字 声明的语法 描述 例子
验证

验证(表达)

验证(表情,errorMessage)

验证(表情,标识符,errorMessage)

求值逻辑表达式。可选参数在测试管理器和诊断查看器中标记结果。

验证(x > y,...“SimulinkTest: greaterThan”...'x和y值为%d, %d'...x, y)
断言

断言(表达)

断言(表情,errorMessage)

求逻辑表达式的值。失败停止模拟并返回错误。可选参数返回错误消息。

断言(h = = 0 & & k = = 0,...“h和k必须”...“初始化到0”

表格中的语法使用了这些参数:

表达式

标识符

errorMessage

颞运营商

要创建计算模拟时间的表达式,请使用时态运算符。信号条件中使用的变量必须是函数中的输入、参数或常数测试序列块。

操作符 语法 描述 例子

等(TimeUnits)

测试步骤的运行时间TimeUnits.省略TimeUnits以秒为单位返回值。

测试序列步骤的运行时间,以毫秒为单位:

东部时间(毫秒)
t

t (TimeUnits)

中的模拟运行的时间TimeUnits.省略TimeUnits以秒为单位返回值。

以微秒为单位的模拟运行时间:

t(购买)

后(n, TimeUnits)

返回真正的如果n指定的时间单位TimeUnits从当前测试步骤开始的时间间隔。

4秒后:

后(4秒)
之前

之前(n, TimeUnits)

返回真正的直到n指定的时间单位TimeUnits从当前测试步骤开始。

4秒前:

前(4秒)
持续时间

ElapsedTime = duration(条件,TimeUnits)

返回ElapsedTimeTimeUnits条件一直真正的ElapsedTime在重新输入测试步骤时重置条件不再是真正的

返回真正的如果时间以毫秒为单位φ> 1大于550:

持续时间(φ> 1,msec) > 550

表格中的语法使用了这些参数:

TimeUnits

条件

转换操作符

要创建计算信号事件的表达式,请使用转换运算符。常见的转换操作符包括:

操作符 语法 描述 例子
焕然一新
焕然一新(u)

返回真正的如果u自测试步骤开始以来的值更改,否则返回

u必须是输入数据符号。

过渡时h变化:

焕然一新(h)
hasChangedFrom
hasChangedFrom (u)

返回true,如果u值的更改一个,否则返回false。

u必须是输入数据符号。

过渡时h改变从1

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

返回true,如果u值的更改B,否则返回false。

u必须是输入数据符号。

过渡时h更改0

hasChangedTo (h, 0)

信号生成函数

下表列出了可以在Test Sequence块中使用的常用函数,用于创建测试信号、随机数值和自然指数。它还描述了门闩函数,该函数保存并返回在测试序列步骤中计算的特定值。有关每个函数的更多信息,请单击第一列中的名称。

一些信号生成函数使用时间算子,它是以秒为单位的测试步骤的运行时间。用于附加相关的运算符您可以在测试序列步骤中使用,参见颞运营商

请注意

参数值的缩放、四舍五入和其他近似值会影响函数输出。

函数 语法 描述 例子
sin (x)

返回的正弦值x,在那里x在弧度。

周期为10秒的正弦波:

罪(et * 2 *π/ 10)
因为 cos (x)

返回cosx,在那里x在弧度。

周期为10秒的余弦波:

因为(et * 2 *π/ 10)
广场 广场(x)

方波输出周期为1和范围11

时间间隔内0 <= x < 1广场(x)返回的值10 <= x < 0.5而且10.5 <= x < 1

广场在状态流图中不支持。

输出周期为的方波10证券交易委员会:

广场(et / 10)
锯齿波 锯齿(x)

周期为的锯齿波输出1和范围11

时间间隔内0 <= x < 1锯齿(x)增加。

锯齿波在状态流图中不支持。

输出周期为的锯齿波10证券交易委员会:

锯齿(et / 10)
三角形 三角形(x)

三角波输出周期为1和范围11

时间间隔内0 <= x < 0.5三角形(x)增加。

三角形在状态流图中不支持。

输出一个周期为的三角波10证券交易委员会:

三角形(et / 10)
斜坡 斜坡(x)

斜坡斜坡信号1,返回当时坡道的值x

斜坡(et)有效地返回测试步骤的运行时间。

斜坡在状态流图中不支持。

每5秒增加一个单位的测试步骤运行时间:

斜坡(et / 5)
亥维赛 亥维赛(x)

重步信号,返回0x < 0而且1x > = 0

亥维赛在状态流图中不支持。

输出一个沉重的信号后5秒:

亥维赛(et-5)
经验值 exp (x)

返回自然指数函数, e x

以十分之一的测试步骤运行时间前进的指数信号:

exp (et / 10)
兰德 兰德

均匀分布伪随机值

通过声明为每个模拟生成新的随机值兰德外在与coder.extrinsic.将随机数分配给局部变量。例如:

coder.extrinsic (“兰德”) nr = rand sg = a + (b-a)*nr
randn randn

正态分布伪随机值

通过声明为每个模拟生成新的随机值randn外在与coder.extrinsic.将随机数分配给局部变量。例如:

coder.extrinsic (“randn”) nr = randn sg = nr*
门闩 锁(x)

的值保存x在第一次锁(x)在测试步骤中求值,然后返回已保存的值x.的保存值重置x当步骤退出时。要重新计算锁(x)当步骤下一次活动时。

门闩在状态流图中不支持。

门闩b的价值转矩

b =闩(扭矩)

逻辑运算符

您可以在操作、转换和评估中使用逻辑连接词。在这些例子中,p而且表示布尔信号或逻辑表达式。

操作 语法 描述 例子

否定

~ p

p

验证(~ p)

结合

p & &

p而且

验证(p & &)

析取

p | |问

p

验证(p | |问)

含义

~ p | | q

如果p.逻辑上等同于蕴涵p

验证(~ p | |问)

双条件的

(~p && ~q) ||

p而且,或者不p而不是.逻辑上等同于双条件p

验证((p && q) || (~p && ~q))

关系运算符

您可以在操作、转换和评估中使用关系操作符。在这些例子中,x而且y代表数值类型变量。

使用= =~ =运营商在一个验证语句在比较浮点数据时返回警告。在实现时考虑与浮点数相关的精度限制验证语句。看到浮点数.如果使用浮点数据,请考虑为评估定义一个公差。例如,代替验证(x = = 5),验证x在容忍的范围内0.001

验证(abs (x5) < 0.001)

运营商和语法 描述 例子
x > y 大于 验证(x > y)
x < y 不到 验证(x < y)
x > = y 大于或等于 验证(x > = y)
x < = y 小于或等于 验证(x < = y)
x = = y 等于 验证(x = = y)
x ~ = y 不等于 验证(x ~ = y)

相关的话题

Baidu
map