Моделируйте интерфейс приема сообщений, который запускается при доступности сообщений

В этом примере показано, как синхронизировать выполнение с доступностью данных в системах, основанных на сообщениях. Мы покажем, как смоделировать это поведение с помощью событий и действий. Этот пример основан на другом примере, Установление интерфейсов отправки и приема сообщений между программными компонентами, где два программных компонента взаимодействуют с помощью сообщений.

Как и в предыдущем примере, процесс генерации кода должен применяться к SendComponent и ReceiveComponent. Устройство хранения сообщений моделирует промежуточное ПО и события уведомления данных, предоставляемые промежуточным ПО.

Ниже представлена модель композиции с SendComponent и ReceiveComponent, созданными с помощью двух блоков Model. Эти два блока Model соединяются через блок Queue со линиями сообщений.

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

Чтобы добиться такого поведения, в блоке Queue, на вкладке действия Event, в поле Entry, блок вызывает Функцию Simulink onMessageAvailable(). Смотрите Языки Действий События и Генерация Случайных Чисел (SimEvents) для получения дополнительной информации о Действиях События.

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

В результате сообщения, отправленные из SendComponent, запускают выполнение в ReceiveComponent. Чтобы наблюдать это поведение, используйте блок Sequence Viewer.

Для примера соблюдайте время симуляции 0:

  1. Стрела от блока Send до блока Queue представляет, что сообщение отправляется со значением данных 0.

  2. Стрела от блока Queue до блока Simulink Function указывает на вызов onMessageAvailable() функция.

  3. Стрела из блока Queue иллюстрирует, что сообщение со значением данных 0 принимается блоком Receive в рамках этого вызова функции.

  4. Горизонтальная штриховая стрела от блока Simulink Function до блока Queue указывает на возврат функции onMessageAvailable().

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

См. также

| | |

Похожие темы