Блок Test Sequence использует MATLAB® как язык действия. Можно перейти между тестовыми шагами путем оценки компонента под тестом. Можно использовать условную логику, темпоральных операторов и операторы события.
Рассмотрите простую тестовую последовательность, которая выводит синусоиду на трех частотах. Блок Test Sequence продвигается посредством нескольких действий на основе изменений в переключателе сигнала. Смотрите hasChanged.
Чтобы создать выражение, которое оценивает время симуляции, используйте темпоральных операторов. Переменные, используемые в условиях сигнала, должны быть входными параметрами, параметрами или константами в блоке 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) |
Сообщения несут данные между Тестовыми блоками Последовательности и другими блоками, такими как графики Stateflow®. Сообщения могут использоваться, чтобы смоделировать асинхронные события. Сообщение ставится в очередь, пока вы не оцениваете его, который удаляет его из очереди. Можно использовать сообщения и передать данные в тестовой последовательности. Сообщение остается допустимым, пока вы не передаете его, или концы временного шага. Для получения дополнительной информации см. сообщения (Stateflow) в документации Stateflow®.
Получите сообщения и доступ к данным о сообщении
Если вашему блоку Test Sequence вводили сообщение, можно использовать поставленные в очередь сообщения в тестовых действиях последовательности или переходах. Используйте receive
команда прежде, чем получить доступ к данным о сообщении или передать сообщение.
Чтобы создать вход сообщения, наведите на Вход на боковой панели Символов, кликните по добавить значку сообщения и введите имя сообщения.
receive(M)
определяет, присутствует ли сообщение во входной очереди M
, и удаляет сообщение из очереди. receive(M)
возвращает true
если сообщение находится в очереди и false
если нет. Если сообщение получено, можно получить доступ к данным о сообщении с помощью записи через точку, M.data
, или передайте сообщение. Сообщение допустимо, пока оно не передается или концы шага текущего времени.
Порядок удаления сообщения зависит от типа очереди. Установите тип очереди с помощью диалогового окна свойств сообщения. На боковой панели Символов кликните по значку редактирования рядом с входом сообщения и выберите тип Очереди.
Отправьте сообщения
Чтобы отправить сообщение, создайте сообщение выход и используйте send
команда. Чтобы создать сообщение выход, наведите на Выход на боковой панели Символов, кликните по добавить значку сообщения и введите имя сообщения.
Можно присвоить данные сообщению с помощью записи через точку M.data
, где M является сообщением выход блока Test Sequence. send(M)
отправляет сообщение.
Передайте сообщения
Можно передать сообщение от очереди входного сигнала к выходному порту. Передавать сообщение:
Получите сообщение от входной очереди с помощью receive
.
Передайте сообщение с помощью команды forward(M,M_out)
где M
входная очередь сообщения и M_out
сообщение выход.
Сравните тестовые последовательности Используя данные и сообщения
Этот пример демонстрирует вводы и выводы сообщения, отправку и получение сообщения. Модель сравнивает две пары тестовых последовательностей. Каждая пара состоит из отправки и получения тестового блока последовательности. Первая пара отправляет и получает данные, и второе отправляет и получает сообщение.
Установите переменную имени модели.
model = 'sltest_testsequence_data_vs_message';
Откройте модель.
open_system(model)
Протестируйте последовательности Используя данные
Блок DataSender присваивает значение выводу данных M
.
Блок DataReceiver ожидает 3 секунды, затем переходы к шагу S2. Переходы шага S2 к шагу S3 с помощью условия, сравнивающего M
к ожидаемому значению, и делает то же самое для S3 к S4.
Протестируйте последовательности Используя сообщения
Блок MessageSender присваивает значение данным о сообщении сообщения выход M_out
, затем отправляет сообщение в блок MessageReceiver.
Блок MessageReceiver ожидает 3 секунды, затем переходы к шагу S2. Переход шага S2's оценивает очередь M
с receive(M)
, удаление сообщения от очереди. receive(M)
возвращает true
поскольку сообщение присутствует. M.data == 3.5
сравнивает данные о сообщении с ожидаемым значением. Оператор верен, и переходы последовательности к шагу S3.
Когда условие перехода шага S3's оценивает, никакие сообщения не присутствуют в очереди. Поэтому S3 не переходит к S4.
Запустите тест и наблюдайте выходной сигнал, сравнивающий различные поведения тестовых пар последовательности.
open_system([model '/Scope'])
sim(model)
close_system(model,0) clear(model)
Test Sequence | Протестируйте синтаксис последовательности и оценки