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

В этом примере показано, как отправлять, получать и визуализировать сообщения. В примере также показано, как использовать Данные Моделирования Inspector, Sequence Viewer, Animation и Storage Inspector, чтобы понять, как сообщения происходят в вашей модели.

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

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

  • Sine wave - источник сигнала. Параметр Шага расчета блока установлен в 0.1.

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

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

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

  • Возможности - Визуализация сообщений, полученных блоком Receive.

Моделируйте модель и рецензируйте результаты

В модели логгирования данных активируется для сигнала и линий сообщений среди блоков Sine Wave, Send, Queue, Receive и Возможностей.

Симулируйте SimpleMessagesModel и наблюдайте от Данных моделирования Inspector, что:

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

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

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

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

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

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

Для использования инструмента Sequence Viewer:

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

  • Симулируйте свою модель. Чтобы открыть инструмент Sequence Viewer, на вкладке Simulation, в разделе Review Results, нажмите Sequence Viewer.

Кнопки Log events и Sequence Viewer видны, когда ваша модель имеет блоки из библиотеки Simulink ® Messages & Events, диаграммы Stateflow, Подсистемы вызова функций, Функции Simulink или блоков SimEvents ®.

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

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

Используйте Animation and Storage Inspector

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

На панели инструментов, на вкладке Debug, найдите раздел Event Animation.

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

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

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

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

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

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

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

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

Отображение полезной нагрузки сообщения как меток значений портов

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

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

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

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

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

open_system('SimpleMessagesPortValueModel');

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

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

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

См. также

| | | | |

Похожие темы