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