В этом примере показано, как смоделировать основанную на сообщении связь между компонентами программного обеспечения, которые запускаются в различных приложениях. Пример также показывает, как подготовить компоненты модели к генерации Кода С++.
В этом примере основанная на сообщении коммуникация создается между двумя компонентами. Отправьте компонент отправляет данные, и получите компонент, использует данные. В этом сценарии, после отправляют, компонент отправляет сообщения, они хранятся в очереди. Получите получения по запросу компонента сообщение на основе логики, которую оно представляет.
Два блока Model, пометил Send Component и Receive Component, представляйте компоненты, соединенные строкой сообщения. Основанная на сообщении коммуникация достигается с помощью блока Send и блока Receive, которые соединяются с корневым уровнем блоки Inport и Outport.
Для получения дополнительной информации о генерации кода C or C++ для модели, смотрите, Генерируют сообщения C++, чтобы Связаться Между Компонентами Simulink (Embedded Coder) и Сгенерировать сообщения C, чтобы Связаться Между Компонентами Simulink (Embedded Coder).
Можно также сгенерировать Код С++ для каждого компонента, и код содержит необходимые программные интерфейсы, которые достаточны для вас, чтобы соединиться с промежуточным программным обеспечением сообщения или операционной системой. Для получения дополнительной информации смотрите, Генерируют сообщения C++, чтобы Связаться Между Simulink и Операционной системой или Промежуточным программным обеспечением (Embedded Coder).
Алгоритм в Отправить Компоненте может содержать логику любой сложности. В примере простой блок 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
время симуляции.
Queue | Receive | Send | Sequence Viewer | Sine Wave