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

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

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

  • Linear — Оба поворота колес в том же направлении с той же скоростью и робот перемещаются линейно.

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

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

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

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

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

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

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

Компоненты связываются через следующее:

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

  • Блок Bus Creator группы XVelocity и YVelocity в невиртуальную шину, заданную Скоростью, соединяет шиной тип данных Object.

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

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

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

Станция, Получающая компонент Данных, получает виртуальные шины и выбирает элементы сообщения с помощью блока In Bus Element. Получите блоки, преобразуют сообщения в сигналы для обработки и визуализации.

Для получения дополнительной информации о создании отправляют и получают интерфейсы для сообщений с невиртуальной полезной нагрузкой шины, видят, Отправляют и Получают сообщения, Несущие Данные о Шине.

Можно симулировать модель или сгенерировать код и для Мобильного Робота, Отправляющего компонент Данных и для Станции, Получающей компонент Данных. Для получения дополнительной информации смотрите, Генерируют сообщения C++, чтобы Связаться Между Simulink и Операционной системой или Промежуточным программным обеспечением (Embedded Coder).

Симулируйте модель и рассмотрите результаты

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

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

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

Окно Sequence Viewer отображает виртуальные переходы шины от Мобильного Робота, Отправляющего компонент Данных в блок Queue и от блока Queue до Станции, Получающей компонент Данных.

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

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

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

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

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

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

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

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

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

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

Смотрите также

| |

Похожие темы