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

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

Модель в этом примере является плоским неголономическим роботом, который может перемещаться или вращаться с помощью двух колес, аналогичных домашнему роботу-пылесосу. Эта модель принимает, что робот перемещается одним из двух способов:

  • Линейный - Оба колеса поворачиваются в одном направлении с той же скоростью и робот движется линейно.

  • Вращательный - поворот колес в противоположных направлениях с той же скоростью и робот вращается на месте.

Чтобы узнать, как создать модель для робота, смотрите Определение системы и Размещение.

В этом примере робот отправляет свою скорость в x- и y- направления к базовой станции и ее относительные значения угла (направления движения) к базовой станции. Скорость потребления данных станции медленнее, чем данные, отправляемые роботом. Блок Queue используется в качестве буфера сообщений.

Отправка элементов сообщения виртуальной шины с полезной нагрузкой невиртуальной шины

В этой модели компоненты, которые представляют мобильного робота и станцию, взаимодействуют с помощью виртуальных шин с элементами сообщений. XVelocity и YVelocity представляют x и y компоненты скорости робота, соответственно. Angle представляет относительный угол робота к x-ось.

В компоненте Mobile Robot Sensing Data, XVelocity и YVelocity сигналы объединяются в невиртуальную шину Velocity. Блок Send 1 создает сообщения с данными о скорости в качестве полезной нагрузки. В этой среде сообщения обеспечивают асинхронную основанную на событиях связь между компонентами. Использование сообщений с невиртуальной полезной нагрузкой шины позволяет программному обеспечению обрабатывать Velocity как пакет данных с XVelocity и YVelocity как его поля. Поэтому каждый пакет включает XVelocity и YVelocity данные.

Блок Send 2 создает сообщения с Angle данные как полезная нагрузка. Out Bus Element блокирует маркированные SendVirtualBus.Velocity и SendVirtualBus.Angle задайте Velocity и Angle как элементы виртуальной шины SendVirtualBus. Можно объединить сообщения в виртуальную шину для создания интерфейсов отправки сообщений. В интерфейсах получения сообщений вы можете получить доступ к шине в целом или выбрать конкретные сообщения из шины. Для получения дополнительной информации об интерфейсах отправки и приема сообщений смотрите Simulink Messages Overview.

Связь между компонентами осуществляется посредством следующего:

  • Функция предварительной загрузки модели load('Velocity.mat') загружает Velocity шина объекта в рабочую область.

  • Блок Bus Creator группирует XVelocity и YVelocity в невиртуальную шину, заданную типом данных объекта шины Velocity.

  • Блок Send 1 создает сообщения с Velocity в качестве полезной нагрузки.

  • Блок Out Bus Element помечен SendVirtualBus.Velocity создает виртуальную шину SendVirtualBus с Velocity элемент. В блоке для типа данных задано значение Bus: Velocity, и в режиме данных установлено значение message.

  • Блок Out Bus Element помечен SendVirtualBus.Angle задает Angle как элемент сообщения SendVirtualBus.

Компонент Station Receiving Data получает виртуальные шины и выбирает элементы сообщения с помощью блока In Bus Element. Блоки приема преобразуют сообщения в сигналы для обработки и визуализации.

Для получения дополнительной информации о создании интерфейсов отправки и приема для сообщений с полезной нагрузкой невиртуальной шины, см. Раздел «Отправка и получение сообщений, переносящих данные шины».

Можно симулировать модель или сгенерировать код для компонента Mobile Robot Sessing Data и компонента Station Receiving Data. Для получения дополнительной информации смотрите Сгенерировать сообщения C++ для связи между Simulink и операционной системой или промежуточным программным обеспечением (Embedded Coder).

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

Симулируйте модель. Наблюдайте сообщенную скорость робота в x и y направления. Робот перемещается y направление, потому что его скорость в x направление является постоянным и 0.

Наблюдайте постоянный относительный угол робота в радианах. Угол pi/2 подтверждает движение в y направление.

Используйте инструмент Sequence Viewer, чтобы отобразить виртуальные шины, сообщенные между роботом и станцией. Чтобы открыть инструмент Sequence Viewer, на панели инструментов Simulink ®, на вкладке Simulation, в разделе Review Results, выберите Sequence Viewer.

В окне Sequence Viewer отображаются переходы виртуальной шины от компонента Mobile Robot Sessing Data к блоку Queue и от блока Queue к компоненту Station Receiving Data.

Расширение очереди

Разверните жизненную линию очереди в окне Sequence Viewer. Обратите внимание, что блок Queue расширяется до двух блоков Queue, которые обеспечивают хранение для двух элементов сообщений виртуальной шины Velocity и Angle. Дополнительный блок Queue имеет то же строение и емкость, что и исходный блок Queue. Дополнительные сведения о блоке очереди см. в разделе Использование блока очереди для управления сообщениями.

Визуализация виртуальных шин с элементами сообщений

Анимация позволяет вам наблюдать виртуальные шины, сообщенные между роботом и станцией во время симуляции. Чтобы включить анимацию, на панели инструментов, на вкладке Debug, в разделе Event Animation, выберите Animation Speed.

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

Анимация подсвечивает виртуальные шины, отправленные от робота к блоку Queue и от блока Queue к станции.

Приостановите анимацию и укажите лупу на блоке Queue, чтобы открыть Storage Inspector. Storage Inspector отображает элементы шины и данные сообщений.

Виртуальные шины с элементами сообщений в архитектурных моделях

Можно смоделировать коммуникацию на основе сообщений между компонентами программного обеспечения, сначала разработав систему с уровня архитектуры с помощью System Composer™. Модели архитектуры в System Composer поддерживают модели Simulink с входом сообщений и выводом в качестве поведения компонентов.

Ниже представлен пример рисунка, который показывает проект компонентов архитектуры для представления мобильного робота и станции. Модели Simulink, используемые в примере выше, MessageSendRobotModel и MessageReceiveRobotModel, присоединены к этим компонентам как поведение компонентов. Когда вы компилируете модель, очередь емкостей LIFO 1 автоматически вставляется в архитектурную модель для симуляции. Для разработки интерфейсов сообщений с уровня архитектуры требуется лицензия System Composer.

См. также

| |

Похожие темы