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

Два блока «Модель», помеченные как «Отправить компонент» и «Получить компонент», представляют компоненты, связанные строкой сообщения. Связь на основе сообщений осуществляется с использованием блока отправки и блока получения, которые соединены с блоками исходящего и входящего трафика корневого уровня.
Дополнительные сведения о создании кода C или C++ для модели см. в разделах Создание сообщений C++ для обмена данными между компонентами Simulink (встроенный кодер) и Создание сообщений C для обмена данными между компонентами Simulink (встроенный кодер).
Для каждого компонента также можно создать код C++, который содержит необходимые программные интерфейсы, достаточные для подключения к операционной системе или промежуточному программному обеспечению сообщений. Дополнительные сведения см. в разделе Создание сообщений C++ для обмена данными между Simulink и операционной системой или промежуточным программным обеспечением (встроенным кодером).
Алгоритм в компоненте Send Component может содержать логику любой сложности. В данном примере простой блок синусоидальной волны используется в подсистеме в качестве источника сигнала. Параметр Sample time блока имеет значение 0.1.

Для подготовки компонента Send Component к связи на основе сообщений блок Send подключается к блоку Outport корневого уровня. Блок Send преобразует сигналы данных и отправляет сообщения.
Для подготовки компонента Send Component к генерации кода в окне Параметры конфигурации модели:
На панели Решатель (Solver) в разделе Выбор решателя (Solver selection) для параметра Тип (Type) установлено значение Fixed-step.
Для параметра Фиксированный размер шага установлено значение 0.1.
На панели Создание кода (Code Generation) для целевого файла системы (System target file) установлено значение ert.tlc и язык C++.
Модель сохраняется как mSend.
В компоненте приема блок области используется для представления алгоритма, который принимает сообщения.
Для подготовки компонента приема блок ввода подключается к блоку приема. Блок приема принимает сообщения и преобразует их в данные сигнала. По умолчанию параметр Sample time блока Receive имеет значение -1.

Для подготовки компонента получения к генерации кода в окне Параметры конфигурации модели:
На панели Решатель (Solver) в разделе Выбор решателя (Solver selection) для параметра Тип (Type) установлено значение Fixed-step.
Для параметра Фиксированный размер шага установлено значение 0.1.
На панели Создание кода (Code Generation) для целевого файла системы (System target file) установлено значение ert.tlc и язык C++.
Модель сохраняется как mReceive.
Это модель композиции с компонентами отправки и получения. Блоки «Модель», «Отправить компонент» и «Получить компонент» относятся к моделям mSend и mReceiveсоответственно.
Моделирование модели. Просмотрите вставленную очередь по умолчанию. Значок над строкой сообщения представляет очередь по умолчанию. Емкость очереди по умолчанию: 1 и включена политика перезаписи сообщений. Можно настроить очередь с помощью блока «Очередь» между компонентами. Дополнительные сведения см. в разделе Использование блока очереди для управления сообщениями.

Откройте блок «Просмотр последовательности». Блок позволяет визуализировать события перехода сообщений и данные, которые несут сообщения.
В окне блока «Просмотр последовательности» отображается время моделирования в левой вертикальной строке. Каждая строка временной сетки содержит события, происходящие в одно и то же время моделирования. Каждое событие перехода сообщения представлено стрелкой, которая помечена значением данных сообщения. Дополнительные сведения о блоке «Средство просмотра последовательностей» см. в разделе Использование средства просмотра последовательностей для визуализации сообщений, событий и сущностей.
В блоке «Просмотр последовательности» прокрутите вверх или щелкните значок перехода к первому событию слева. Обратите внимание, что во время нуля блок Send посылает сообщение со значением данных 0 в блок приема и в момент времени 0.1 блок отправляет другое сообщение со значением данных 0.0998. Блок отправляет сообщение в каждом 0.1 время моделирования.

Очередь | Получить | Послать | Просмотр последовательности | Синусоидальная волна