В этом примере показано, как синхронизировать выполнение с доступностью данных в системах на основе сообщений. Мы покажем, как моделировать это поведение с помощью событий и действий. Этот пример основан на другом примере, «Установление интерфейсов передачи и получения сообщений между компонентами программного обеспечения», в котором два компонента программного обеспечения обмениваются сообщениями.
Как и в предыдущем примере, процесс генерации кода должен применяться к SendComponent и ReceiveComponent. Хранилище сообщений моделирует промежуточное программное обеспечение и события уведомления данных, предоставляемые промежуточным программным обеспечением.
Ниже приведена модель композиции с SendComponent и ReceiveComponent, созданными с помощью двух блоков Model. Эти два блока модели соединены через блок очереди со строками сообщений.

Когда сообщение поступает в блок Queue, его поступление передается в ReceiveComponent с помощью действия события Queue entry. Это активирует блок Simulink Function внутри ReceiveComponent, чтобы принять новое сообщение для обработки.

Для этого в блоке «Очередь» на вкладке «Действие события» в поле «Запись» блок вызывает функцию Simulink. onMessageAvailable(). Дополнительные сведения о действиях события см. в разделе Языки действий события и создание случайных чисел (SimEvents).

Когда активирован блок Simulink Function, он принимает сообщение и преобразует его в сигнал.

В результате сообщения, отправленные от запуска SendComponent в пределах ReceiveComponent. Для наблюдения за таким поведением используйте блок «Просмотр последовательностей».
Например, соблюдайте время моделирования 0:
Стрелка из блока Send в блок Queue показывает, что сообщение отправляется со значением данных 0.
Стрелка от блока Queue к блоку Simulink Function указывает на вызов onMessageAvailable() функция.
Стрелка из блока «Очередь» показывает, что сообщение со значением данных 0 принимается блоком приема в рамках этого вызова функции.
Горизонтальная пунктирная стрелка из блока Simulink Function в блок Queue указывает на возврат функции onMessageAvailable().

Дополнительные сведения о блоке «Средство просмотра последовательностей» см. в разделе Использование средства просмотра последовательностей для визуализации сообщений, событий и сущностей.
Очередь | Получить | Послать | Синусоидальная волна