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

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

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

Два блока Model, отмеченные как Send Component и Receive Component, представляют компоненты, соединенные линией сообщения. Коммуникация на основе сообщений достигается с помощью блока Send и блока Receive, которые соединяются с блоками Outport и Inport корневого уровня.

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

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

Отправка компонента

Алгоритм в Компоненте Отправки может содержать логику любой сложности. В примере простой блок Sine Wave используется в подсистеме в качестве источника сигнала. Параметр Шага расчета блока установлен в 0.1.

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

Чтобы подготовить компонент Send для генерации кода, в Параметрах конфигурации модели:

  1. На панели Решатель, в разделе Выбор решателя, Тип установлен на Fixed-step.

  2. Для параметра Fixed-step задано значение 0.1.

  3. На панели Генерация кода (Code Generation) задается значение Системный целевой файл (System target file) ert.tlc и язык на C++.

  4. Модель сохранена как mSend.

Получение компонента

В компоненте Receive используется блок Scope, чтобы представлять алгоритм, который получает сообщения.

Чтобы подготовить компонент Receive, блок Inport соединяется с блоком Receive. Блок Receive получает сообщения и преобразует их в сигнальные данные. По умолчанию параметр Шага расчета блока Receive -1.

Чтобы подготовить компонент Receive для генерации кода, в Параметрах конфигурации модели:

  1. На панели Решатель, в разделе Выбор решателя, Тип установлен на Fixed-step.

  2. Для параметра Fixed-step задано значение 0.1.

  3. На панели Генерация кода (Code Generation) задается значение Системный целевой файл (System target file) ert.tlc и язык на C++.

  4. Модель сохранена как mReceive.

Визуализация переходов сообщений между компонентами с помощью блока Sequence Viewer

Это модель композиции с компонентами Send и Receive. Блоки Model, Компонент и Receive Component, относятся к моделям mSend и mReceive, соответственно.

Симулируйте модель. Наблюдайте за очередью, вставленной по умолчанию. Значок над линией сообщений представляет очередь по умолчанию. Емкость очереди по умолчанию 1 и политика перезаписи сообщений включена. Вы можете настроить очередь с помощью блока Queue между компонентами. Дополнительные сведения см. в разделе Использование блока очереди для управления сообщениями.

Откройте блок Sequence Viewer. Блок позволяет вам визуализировать события перехода сообщения и данные, которые несут сообщения.

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

В блоке Sequence Viewer прокрутите вверх или нажмите Go к первому значку события слева. Заметьте, что в начальный момент времени блок Send отправляет сообщение со значением данных 0 в блок Receive, и в момент 0.1 блок отправляет другое сообщение со значением данных 0.0998. Блок отправляет сообщение в каждом 0.1 время симуляции.

См. также

| | | |

Похожие темы