В этой теме описывается синтаксис, используемый в Test Sequence и Test Assessment блоках, и Stateflow® чарты. В блоках этот синтаксис используется для тестовых действий, переходов и оценок. В графиках вы используете этот синтаксис в состояниях и переходах.
Для получения информации об использовании интерфейса командной строки для создания и редактирования шагов тестовой последовательности, переходов и символов данных, смотрите функции, перечисленные в Test Sequences на странице Тестовые скрипты.
Test Sequence и Test Assessment блоки используют MATLAB® как язык действий. Вы задаете действия, переходы, оценки с операторами оценки, темпоральными операторами, операторами перехода, функциями генерации сигналов, логическими операторами и реляционными операторами. Кроме verify
Диаграммы Stateflow можете использовать все операторы в MATLAB или C в качестве языка действий. verify
может использоваться только с языком MATLAB. Для примера:
Вывод квадратной волны с периодом 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) | Возвращает true, если
| Переход при hasChangedFrom(h,1) |
hasChangedTo | hasChangedTo(u,B) | Возвращает true, если
| Переход при hasChangedTo(h,0) |
Некоторые функции генерации сигналов используют темпоральный оператор et
, которое является истекшим временем тестового шага в секундах. Масштабирование, округление и другие приближения значений аргументов могут повлиять на выходы функции. Общие функции генерации сигналов включают:
Функция | Синтаксис | Описание | Пример |
---|---|---|---|
square | square(x) | Представляет выход квадратной волны с периодом В пределах интервала
| Вывод квадратной волны с периодом square(et/10) |
sawtooth | sawtooth(x) | Представляет выход пилообразной волны с периодом В пределах интервала
| Вывод пилообразной волны с периодом sawtooth(et/10) |
triangle | triangle(x) | Представляет выход треугольной волны с периодом В пределах интервала
| Вывод треугольной волны с периодом triangle(et/10) |
ramp | ramp(x) | Представляет сигнал наклона
| Наклоните один модуль на каждые 5 секунд истечения тестового шага: ramp(et/5) |
heaviside | heaviside(x) | Представляет тяжелый сигнал шага , возвращаясь
| Вывод сигнала тяжести после heaviside(et-5) |
latch | latch(x) | Сохраняет значение
| Защелка b = latch(torque) |
sin | sin(x) | Возвращает синус | Синусоида с периодом 10 секунд: sin(et*2*pi/10) |
cos | cos(x) | Возвращает косинус | Косинусоидная волна с периодом 10 секунд: cos(et*2*pi/10) |
rand | rand | Равномерно распределенные псевдослучайные значения | Сгенерируйте новые случайные значения для каждой симуляции путем объявления coder.extrinsic('rand')
nr = rand
sg = a + (b-a)*nr |
randn | randn | Нормально распределенные псевдослучайные значения |
Сгенерируйте новые случайные значения для каждой симуляции путем объявления coder.extrinsic('randn')
nr = randn
sg = nr*2 |
exp | exp(x) | Возвращает естественную экспоненциальную функцию, . | Экспоненциальный сигнал, прогрессирующий в одну десятую времени истечения тестового шага: exp(et/10) |
Можно использовать логические соединения в действиях, переходах и оценках. В этих примерах p
и q
представление логических сигналов или логических выражений.
Операция | Синтаксис | Описание | Пример |
---|---|---|---|
Отрицание | ~p | не |
|
Соединение | p && q |
|
|
Разъединение | p || q |
|
|
Значение | ~p || q | если |
|
Двусторонняя условная зависимость | (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) |