Эта тема описывает синтаксис, используемый в 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 |
| Оценивает логическое выражение. Дополнительные аргументы помечают результаты в менеджере по Тесту и диагностическом средстве просмотра. | 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, возвращая | Выведите сигнал heaviside после 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) |