exponenta event banner

Последовательность тестирования и синтаксис оценки

В этом разделе описывается синтаксис, используемый в блоках тестовой последовательности и тестовой оценки и диаграммах Stateflow ®. В блоках этот синтаксис используется для проверки действий шага, переходов и оценок. В диаграммах этот синтаксис используется в состояниях и переходах.

Сведения об использовании интерфейса командной строки для создания и редактирования шагов тестовой последовательности, переходов и символов данных см. в разделе Функции в разделе Тестовые последовательности на странице Тестовые сценарии.

В блоках тестовой последовательности и тестовой оценки в качестве языка действий используется MATLAB ®. Определяются действия, переходы, оценки с операторами оценки, временными операторами, операторами перехода, функциями генерации сигнала, логическими операторами и реляционными операторами. За исключением verify, диаграммы Stateflow могут использовать все операторы в MATLAB или C в качестве языка действий. verify может использоваться только с языком MATLAB. Например:

  • Вывод квадратной волны с периодом 10 сек:

    square(et/10)
  • На переход, когда h изменения в 0:

    hasChangedTo(h,0)
  • Чтобы убедиться, что значение x больше y, выполните следующие действия.

    verify(x > y)

Отчеты об оценке

Для проверки моделирования, остановки моделирования и возврата результатов проверки используйте операторы оценки.

Ключевое словоСинтаксис оператораОписаниеПример
проверить

verify(expression)

verify(expression, errorMessage)

verify(expression, identifier, errorMessage)

Оценивает логическое выражение. Необязательные аргументы помечают результаты в диспетчере тестов и средстве просмотра диагностики.

verify(x > y,...
'SimulinkTest:'...
'greaterThan',...
'x and y values are '...
'%d, %d',x,y)
утверждать

assert(expression)

assert(expression, errorMessage)

Вычисляет логическое выражение. Сбой останавливает моделирование и возвращает ошибку. Дополнительные аргументы возвращают сообщение об ошибке.

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

Синтаксис в таблице использует следующие аргументы:

 expression

 identifier

 errorMessage

Временные операторы

Чтобы создать выражение, оценивающее время моделирования, используйте временные операторы. Переменные, используемые в условиях сигнала, должны быть входами, параметрами или константами в блоке тестовой последовательности.

ОператорСинтаксисОписаниеПример
и

et(TimeUnits)

Прошедшее время этапа тестирования в TimeUnits. Исключение TimeUnits возвращает значение в секундах.

Истекшее время шага тестовой последовательности в миллисекундах:

et(msec)
t

t(TimeUnits)

Прошедшее время моделирования в TimeUnits. Исключение TimeUnits возвращает значение в секундах.

Истекшее время моделирования в микросекундах:

t(usec)
после

after(n, TimeUnits)

Прибыль true если n указанные единицы времени в TimeUnits прошло с начала текущего этапа тестирования.

Через 4 секунды:

after(4,sec)
прежде

before(n, TimeUnits)

Прибыль true до n указанные единицы времени в TimeUnits истекло, начиная с текущего этапа тестирования.

До 4 секунд:

before(4,sec)
продолжительность

ElapsedTime = duration (Condition, TimeUnits)

Прибыль ElapsedTime в TimeUnits для которых Condition был true. ElapsedTime сбрасывается при повторном вводе шага тестирования или при Condition больше не является true.

Вернуть true если время в миллисекундах с Phi > 1 больше 550:

duration(Phi>1,msec) > 550

Синтаксис в таблице использует следующие аргументы:

 TimeUnits

 Condition

Операторы перехода

Чтобы создать выражения, оценивающие сигнальные события, используйте операторы перехода. К общим операторам перехода относятся:

ОператорСинтаксисОписаниеПример
hasChanged
hasChanged(u)

Прибыль true если u изменения значения с начала шага тестирования, в противном случае возвращается false.

u должен быть символом входных данных.

Переход, когда h изменения:

hasChanged(h)
hasChangedFrom
hasChangedFrom(u,A)

Возвращает значение true, если u изменения из значения A, в противном случае возвращает значение false.

u должен быть символом входных данных.

Переход, когда h изменения из 1:

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

Возвращает значение true, если u изменения значения B, в противном случае возвращает значение false.

u должен быть символом входных данных.

Переход, когда h изменения в 0:

hasChangedTo(h,0)

Функции генерации сигналов

Некоторые функции генерации сигнала используют временной оператор et, которое представляет собой прошедшее время этапа тестирования в секундах. Масштабирование, округление и другие аппроксимации значений аргументов могут влиять на выходные данные функции. Общие функции формирования сигналов включают в себя:

ФункцияСинтаксисОписаниеПример
квадратsquare(x)

Представляет выходной сигнал квадратной волны с периодом 1 и диапазон –1 кому 1.

В пределах интервала 0 <= x < 1, square(x) возвращает значение 1 для 0 <= x < 0.5и –1 для 0.5 <= x < 1.

square не поддерживается в диаграммах Stateflow.

Вывод квадратной волны с периодом 10 сек:

square(et/10)
зуб пилыsawtooth(x)

Представляет выход пилообразной волны с периодом 1 и диапазон –1 кому 1.

В пределах интервала 0 <= x < 1, sawtooth(x) увеличивается.

sawtooth не поддерживается в диаграммах Stateflow.

Вывод пилообразной волны с периодом 10 сек:

sawtooth(et/10)
треугольникtriangle(x)

Представляет выходной сигнал треугольника с периодом 1 и диапазон –1 кому 1.

В пределах интервала 0 <= x < 0.5, triangle(x) увеличивается.

triangle не поддерживается в диаграммах Stateflow.

Вывести треугольную волну с периодом 10 сек:

triangle(et/10)
пандусramp(x)

Представляет наклонный сигнал наклона 1, возвращая значение клина в момент времени x.

ramp(et) фактически возвращает прошедшее время тестового этапа.

ramp не поддерживается в диаграммах Stateflow.

Наклонить один блок на каждые 5 секунд прошедшего этапа испытания:

ramp(et/5)
heavisideheaviside(x)

Представляет тяжелый сигнал шага , возвращаемый 0 для x < 0 и 1 для x >= 0.

heaviside не поддерживается в диаграммах Stateflow.

Вывести тяжелый сигнал после 5 секунды:

heaviside(et-5)
замокlatch(x)

Сохраняет значение x в первый раз latch(x) вычисляет на этапе теста, а затем возвращает сохраненное значение x. Сбрасывает сохраненное значение x при выходе из шага. Переоценивает latch(x) когда следующий шаг активен.

latch не поддерживается в диаграммах Stateflow.

Замок b к значению torque:

b = latch(torque)
sinsin(x)

Возвращает синус x, где x находится в радианах.

Синусоидальная волна с периодом 10 с:

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

Возвращает косинус x, где x находится в радианах.

Косинусная волна с периодом 10 с:

cos(et*2*pi/10)
randrand

Равномерно распределенные псевдослучайные значения

Создание новых случайных значений для каждого моделирования путем объявления rand внешний с coder.extrinsic. Присвойте случайное число локальной переменной. Например:

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

Обычно распределенные псевдослучайные значения

Создание новых случайных значений для каждого моделирования путем объявления randn внешний с coder.extrinsic. Присвойте случайное число локальной переменной. Например:

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

Возвращает натуральную экспоненциальную функцию, например.

Экспоненциальный сигнал, прогрессирующий через одну десятую от времени, прошедшего тестовый этап:

exp(et/10)

Логические операторы

Логические соединения можно использовать в действиях, переходах и оценках. В этих примерах p и q представляют логические сигналы или логические выражения.

ОперацияСинтаксисОписаниеПример

Отрицание

~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))

Реляционные операторы

Реляционные операторы можно использовать в действиях, переходах и оценках. В этих примерах x и y представляют собой переменные числового типа.

Используя == или ~= операторы в verify возвращает предупреждение при сравнении данных с плавающей запятой. Учитывайте ограничения точности, связанные с числами с плавающей запятой при реализации verify заявления. См. раздел Числа с плавающей запятой. При использовании данных с плавающей запятой рекомендуется определить допуск для оценки. Например, вместо verify(x == 5), проверить x в пределах допуска 0.001:

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)

Связанные темы