В этом примере показано, как смоделировать основанную на сообщении связь между компонентами программного обеспечения, которые запускаются в различных приложениях. Пример также показывает, как подготовить компоненты модели к генерации Кода С++.
Основанная на сообщении коммуникация необходима в различных приложениях, таких как новая архитектура системы управления, в которой идея централизованной архитектуры заменяется распределенными архитектурами из-за сложности систем.
Обычно в распределенной архитектуре, различные компоненты генерируют события и данные асинхронно. Сообщение является полезным артефактом моделирования, который комбинирует события со связанными данными, и блоки сообщения справляются с производством, потреблением, маршрутизацией и устройством хранения данных сообщений.
В этом примере основанная на сообщении коммуникация создается между двумя компонентами. Отправьте компонент отправляет данные, и получите компонент, использует данные. В этом сценарии, после отправляют, компонент отправляет сообщения, они хранятся в очереди. Получите получения по запросу компонента сообщение на основе логики, которую оно представляет.
Два блока Model, пометил Send Component и Receive Component, представляйте компоненты, соединенные строкой сообщения. Основанная на сообщении коммуникация достигается с помощью блока Send и блока Receive, которые соединяются с корневым уровнем блоки Inport и Outport. После генерации кода и развертывания, эти два компонента, запущенные в двух различных приложениях. Когда вы генерируете код для каждого компонента, код содержит необходимые программные интерфейсы, которые достаточны для вас, чтобы соединиться с промежуточным программным обеспечением сообщения или операционной системой.
Алгоритм в Отправить Компоненте может содержать логику любой сложности. В примере простой блок Sine Wave используется в подсистеме в качестве источника сигнала. Параметр Шага расчета блока устанавливается на 0.1
.
Чтобы подготовить Отправить Компонент к основанной на сообщении коммуникации, блок Send соединяется с блоком Outport корневого уровня. Блок Send преобразует сигналы данных, и отправьте сообщения.
Подготовить Отправить Компонент к генерации кода, в Параметрах конфигурации Модели:
В панели Решателя, в разделе выбора Решателя, Тип установлен в Fixed-step
.
Размер Фиксированного шага установлен в 0.1
.
В панели Генерации кода Системный конечный файл установлен в ert.tlc
и язык на C++.
Модель сохранена как mSend
.
В Получить Компоненте блок Scope используется, чтобы представлять алгоритм, который получает сообщения.
Чтобы подготовить Получить Компонент, блок Inport соединяется с блоком Receive. Блок Receive получает сообщения и преобразует их в данные сигнала. По умолчанию параметром Шага расчета блока Receive является -1
.
Подготовить Получить Компонент к генерации кода, в Параметрах конфигурации Модели:
В панели Решателя, в разделе выбора Решателя, Тип установлен в Fixed-step
.
Размер Фиксированного шага установлен в 0.1
.
В панели Генерации кода Системный конечный файл установлен в ert.tlc
и язык на C++.
Модель сохранена как mReceive
.
Это - модель состава с, Отправляют и Получают компоненты. Блоки Model, Отправьте Компонент и Получите Компонент, обратитесь к моделям mSend
и mReceive
, соответственно.
Симулируйте модель. Наблюдайте очередь, введенную по умолчанию. Значок выше строки сообщения представляет очередь по умолчанию. Способностью очереди по умолчанию является 1
и сообщение, перезаписывающее политику, включено. Можно настроить очередь при помощи блока Queue между компонентами. Для получения дополнительной информации смотрите Использование Блок Очереди, чтобы Управлять сообщениями.
Откройте блок Sequence Viewer. Блок позволяет вам визуализировать события перехода сообщения и данные, которые несут сообщения.
Окно блока Sequence Viewer показывает время симуляции в левой вертикальной панели. Каждый раз строка сетки содержит события, которые происходят в том же времени симуляции. Каждое событие перехода сообщения представлено стрелой, которая помечена значением данных сообщения. Для получения дополнительной информации о блоке Sequence Viewer, смотрите Использование Блок Sequence Viewer, чтобы Визуализировать сообщения, События и Сущности.
В блоке Sequence Viewer прокрутите или нажмите Go к первому значку события слева. Заметьте, что в начальный момент времени блок Send отправляет сообщение со значением данных 0
с блоком Receive, и во время 0.1
блок отправляет другое сообщение со значением данных 0.0998
. Блок отправляет сообщение в каждом 0.1
время симуляции.
Hit Crossing Probe | Queue | Receive | Send | Sequence Viewer | Sine Wave