Эта тема описывает синтаксис, используемый в Test Sequence и блоках Test Assessment и графиках Stateflow®. В блоках вы используете этот синтаксис в тестовых ступенчатых действиях, переходах и оценках. В графиках вы используете этот синтаксис в состояниях и переходах.
Для получения информации об использовании интерфейса командной строки, чтобы создать и отредактировать тестовые шаги последовательности, переходы и символы данных, видят функции, перечисленные под Test Sequences на странице Test Scripts.
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(x > y,... 'SimulinkTest:'... 'greaterThan',... 'x and y values are '... '%d, %d',x,y) |
утверждение |
| Выполняет логическое выражение. Отказ останавливает симуляцию и возвращает ошибку. Дополнительные аргументы возвращают сообщение об ошибке. | assert(h==0 && k==0,... 'h and k must '... 'initialize to 0') |
Синтаксис в таблице использует эти аргументы:
Чтобы создать выражение, которое оценивает время симуляции, используйте темпоральных операторов. Переменные, используемые в условиях сигнала, должны быть входными параметрами, параметрами или константами в блоке Test Sequence.
Оператор | Синтаксис | Описание | Пример |
---|---|---|---|
и |
| Прошедшее время теста продвигается в | Прошедшее время тестовой последовательности продвигается в миллисекунды: et(msec) |
t |
| Прошедшее время симуляции в | Прошедшее время симуляции в микросекундах: t(usec) |
после |
| Возвращает | После 4 секунд: after(4,sec) |
прежде |
| Возвращает | Перед 4 секундами: before(4,sec) |
длительность |
| Возвращает | Возвратите 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(x) | Представляет прямоугольную волну выход с периодом В интервале | Выведите прямоугольную волну с периодом square(et/10) |
зуб пилы | sawtooth(x) | Представляет пилообразный выход волны с периодом В интервале | Выведите пилообразную волну с периодом sawtooth(et/10) |
треугольник | triangle(x) | Представляет треугольный выход волны с периодом В интервале | Выведите треугольную волну с периодом triangle(et/10) |
пандус | ramp(x) | Представляет сигнал пандуса наклонного
| Пандус один модуль в течение каждых 5 секунд теста продвигается прошедшее время: ramp(et/5) |
heaviside | heaviside(x) | Представляет сигнал шага heaviside, возвращая | Выведите сигнал heaviside после heaviside(et-5) |
фиксатор | 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
операторы. Смотрите Числа с плавающей запятой (MATLAB). Если вы используете данные с плавающей точкой, рассматриваете определение допуска к оценке. Например, вместо 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) |