exponenta event banner

Анимация и понимание отправки и получения сообщений

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

Описание модели

SimpleMessagesModel содержит следующие блоки:

  • Send - преобразует сигналы данных и отправляет сообщения. Заданное значение параметра Sample time блока Sine Wave определяет скорость, с которой блок Send отправляет сообщения. Следовательно, блок Send отправляет одно сообщение каждый 0.1 время моделирования.

  • Очередь - сохраняет сообщения. Просмотрите строку сообщения между блоком Send и блоком Queue. Емкость очереди по умолчанию: 16, что означает, что блок Queue может хранить не более 16 сообщения. Поведение сортировки сообщений по умолчанию: LIFO, что означает, что входящие сообщения сортируются на основе политики «последний в первый раз». По умолчанию установлен флажок Перезаписать самый старый элемент, если очередь заполнена. Когда очередь заполнена, входящее сообщение перезаписывает самое старое сообщение в очереди. Дополнительные сведения об использовании блока очереди см. в разделе Использование блока очереди для управления сообщениями.

  • Прием - принимает сообщения и преобразует их в сигнальные данные. В блоке параметр Sample time имеет значение 0.1. Блок приема принимает сообщение каждые 0,1 времени моделирования.

  • Область - визуализирует сообщения, полученные блоком получения.

Моделирование модели и анализ результатов

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

Моделирование SimpleMessagesModel и наблюдение из инспектора данных моделирования за тем, что:

  • Блок синусоидальной волны генерирует синусоидальный сигнал (зеленый).

  • Каждый 0.1 время моделирования, блок Send преобразует значение сигнала в сообщение и отправляет его в блок Queue. Инспектор расчетных данных отображает сообщения как сводные графики. Обратите внимание на инспектор данных моделирования, отображающий отправленные сообщения (фиолетовые).

  • Блок Queue отправляет сообщения в блок Receive (синий).

  • Выходной сигнал блока приема представляет собой восстановленный синусоидальный сигнал (оранжевый).

Использование средства просмотра последовательностей для визуализации сообщений

Для визуализации сообщений, событий и вызовов функций Simulink можно использовать инструмент «Просмотр последовательностей» или блок «Просмотр последовательностей». Средство просмотра последовательностей отображает события перехода сообщений и данные, которые несут сообщения. В окне Просмотр последовательности можно просмотреть данные о событиях, связанных с выполнением диаграммы Stateflow и обменом сообщениями между диаграммами Stateflow.

Для использования инструмента «Просмотр последовательностей»:

  • Чтобы активировать ведение журнала событий, на панели инструментов Simulink на вкладке Simulation в разделе Prepare щелкните Log Events.

  • Моделирование модели. Чтобы открыть инструмент Просмотр последовательностей (Sequence Viewer), на вкладке Моделирование (Simulation) в разделе Результаты проверки (Review Results) щелкните Просмотр последовательностей (Sequence Viewer).

Кнопки Log events и Sequence Viewer отображаются, если в модели имеются блоки из библиотеки Simulink ® Messages & Events, диаграммы Stateflow, Function-Call Subsystem, Simulink Function или SimEvents ®.

В окне Просмотр последовательности (Sequence Viewer) отображаются сообщения, которые создаются, отправляются, пересылаются, принимаются и уничтожаются в разное время во время выполнения модели. В окне просмотра последовательностей также отображаются действия состояния, переходы и вызовы функций графических функций Stateflow, Simulink и MATLAB.

Можно также добавить в модель блок «Просмотр последовательности» для визуализации переходов сообщений. Дополнительные сведения см. в разделе Использование блока очереди для управления сообщениями.

Использование инспектора анимации и хранилища

Анимацию можно использовать для анимации модели и наблюдения за потоком сообщений между компонентами модели. Скорость анимации можно задать как Slow, Medium, или Fast. Выбор None отключает анимацию модели.

На панели инструментов на вкладке «Отладка» найдите раздел «Анимация событий».

В разделе «Анимация событий» задайте скорость анимации как Slow.

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

Анимация выделяет строки сообщений и вызовы функции Simulink, основанные на событиях, а не на прошедшем времени. В течение одного времени моделирования может быть выделено более одного потока сообщений или события вызова функции Simulink.

Приостановите анимацию. На панели инструментов Simulink выберите «Пауза» на вкладке «Отладка». Обратите внимание, что последняя выделенная строка сообщения выделена фиолетовым цветом.

Инспектор хранилища позволяет визуализировать сведения о сохраненных сообщениях в блоке очереди. При приостановке моделирования на блоке «Очередь» появляется значок лупы «Инспектор хранилища». Чтобы открыть инспектор хранилища, щелкните лупу.

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

Чтобы создать сценарий с сохраненными сообщениями, остановите моделирование и измените параметр Sample time блока Receive на 0.5. Теперь блок отправки отправляет одно сообщение каждый 0.1 время моделирования, но блок получения получает сообщения каждый 0.5 время моделирования. Это приводит к задержке сообщений, которые хранятся в блоке очереди.

Снова смоделировать модель, установив для скорости анимации значение Slowи приостановите моделирование для проверки состояния в инспекторе хранилища. Сущность в инспекторе хранилища представляет сохраненные элементы в блоке очереди, в данном случае сообщения. Инспектор хранилища перечисляет сообщения, хранящиеся в блоке очереди, с их идентификатором и значением данных, переносимыми каждым сообщением.

Отображать полезные данные сообщений в виде меток значений портов

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

В приведенном ниже примере значения портов отображаются для строки сообщения, соединяющей блок Send с блоком Queue.

Если сообщение содержит данные в виде объекта шины, можно также выбрать элементы для отображения в качестве значений порта.

SimpleMessagesPortValueModel является вариантом SimpleMessagesModel где вход в блок Send происходит от блока Bus Creator. В этом примере объект шины Data_message создается с двумя элементами, sinewave и constant.

Чтобы открыть эту модель, введите:

open_system('SimpleMessagesPortValueModel');

Щелкните правой кнопкой мыши строку сообщения, появившуюся из блока «Отправить», выберите Show Value Label of Selected Portи выберите константу.

В качестве значений порта отображаются только значения постоянного сигнала.

Если передача сообщения прекращается в строке сообщения, на дисплее значения порта отображается последнее значение полезной нагрузки сообщения.

См. также

| | | | |

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