В этом примере показано, как синхронизировать выполнение с доступностью данных в основанных на сообщении системах. Мы показываем, как смоделировать это использование поведения события и действия. Этот пример основывается на другом примере, Установите сообщение, Отправляют и Получают Интерфейсы Между Компонентами программного обеспечения, где два компонента программного обеспечения передают сообщения использования.
Как с предыдущим примером, процесс генерации кода должен примениться к SendComponent и ReceiveComponent. Модели Message Storage промежуточное программное обеспечение и события уведомления о данных, обеспеченные промежуточным программным обеспечением.
Ниже модель состава с SendComponent и ReceiveComponent, созданным при помощи двух блоков Model. Эти два блока Model соединяются через блок Queue со строками сообщения.
Когда сообщение прибывает в блок Queue, его прибытие передается в ReceiveComponent при помощи действия события записи Очереди. Это активирует Функциональный блок Simulink в ReceiveComponent, чтобы принять новое сообщение для обработки.
Чтобы достигнуть этого поведения, в блоке Queue, в конечном счете вкладка действия, в поле Entry, блок вызывает Функцию Simulink onMessageAvailable()
. Смотрите Языки Действия События и Генерацию случайных чисел (SimEvents) для получения дополнительной информации о Действиях События.
Когда Функциональный блок Simulink активируется, он принимает сообщение и преобразует его в сигнал.
В результате сообщения, отправленные от SendComponent, инициировали выполнение в ReceiveComponent. Чтобы наблюдать это поведение, используйте блок Sequence Viewer.
Например, наблюдайте время симуляции 0
:
Стрела от блока Send до блока Queue представляет это, сообщение отправляется со значением данных 0
.
Стрелка от блока Queue до Функционального блока Simulink указывает на вызов onMessageAvailable()
функция.
Стрела из блока Queue иллюстрирует что сообщение со значением данных 0
получен блоком Receive в рамках этого вызова функции.
Горизонталь, подчеркнутая штриховой линией стрелка от Функционального блока Simulink до блока Queue указывает на возврат функционального onMessageAvailable()
.
Для получения дополнительной информации о блоке Sequence Viewer, смотрите Использование Блок Sequence Viewer, чтобы Визуализировать сообщения, События и Сущности.
Queue | Receive | Send | Sine Wave