Основанная на сообщении коммуникация необходима в различных приложениях, такова как архитектуры системы управления, в которых централизованные архитектуры заменяются распределенными архитектурами из-за сложности систем. В распределенной архитектуре несколько компонентов системы связываются через общую сеть.
Распределенная архитектура имеет эти три элемента:
Компонент — Представляет разделы проекта, который выполняет набор функциональностей или алгоритмов с заданными интерфейсами ввода-вывода. Обычно компоненты генерируют события и данные асинхронно.
Интерфейс — Обеспечивает разделяемый контур, через который связываются компоненты системы. Чтобы обеспечить асинхронную коммуникацию, сообщения являются полезными артефактами моделирования, которые комбинируют события со связанными данными.
Промежуточное программное обеспечение — Предоставляет услуги, необходимые компонентам, чтобы поддержать асинхронную коммуникацию через общую сеть.
Ниже рисунок, который показывает состав распределенной архитектуры и ее элементов.
При моделировании такой архитектуры, вы обычно компоненты модели, которые явно идентифицируются, являются допускающими повторное использование, и развертываемыми. Чтобы достигнуть асинхронной основанной на событии связи между компонентами, используйте сообщение, отправляют и получают интерфейсы. Смоделируйте промежуточное программное обеспечение, чтобы упростить сетевую топологию, которая представляет возможность соединения компонентов, таких как one-many, many-one, или many-many на основе количества сообщения передающие и получающие компоненты.
Чтобы изучить, как смоделировать распределенную архитектуру, с помощью Simulink®, SimEvents® и Stateflow®, видят рисунок ниже. Рисунок включает две отправки сообщения и два сообщения, получающие компоненты, которые создаются как модели, на которые ссылаются. Компоненты модели с отправляют и получают интерфейсы с помощью Simulink, Отправляют и Получают блоки. Если ваш отправлять и получают интерфейсы, включают состояния или требуют логики решения, используют диаграмму Stateflow.
После того, как вы моделируете свои компоненты и интерфейсы:
Симулируйте поведение своей распределенной архитектуры путем моделирования промежуточного программного обеспечения с помощью SimEvents. Используя блоки из библиотеки SimEvents, можно смоделировать пользовательские шаблоны маршрутизации и коммуникации, такие как слияние, задержка, распределение и широковещательная передача сообщений, и исследовать эффекты промежуточного программного обеспечения на коммуникационной сети.
Сгенерируйте код C/C++ для своих компонентов, включая интерфейс, и соединитесь со своим промежуточным программным обеспечением или коммуникационным API операционной системы.
Давайте запустимся путем понимания, как работают блоки сообщения. Чтобы создать модель, которая использует сообщения, используйте блоки Send, чтобы преобразовать данные и отправить сообщения и блоки Receive, чтобы получить и преобразовать сообщения в данные. Для простого примера, который показывает, как Send и блоки Receive работают, смотрите Анимационный и Изучите Отправку и Получение сообщений.
Используйте Send, и блоки Receive к сообщению модели отправляют и получают интерфейсы для ваших компонентов. Для простого примера, который показывает, основы создания отправляют и получают интерфейсы, видят, Устанавливают сообщение, Отправляют и Получают Интерфейсы Между Компонентами программного обеспечения. Чтобы изучить, как сгенерировать код для той же модели, смотрите, Генерируют Код C or C++ для Основанной на сообщении Коммуникации в Simulink (Simulink Coder).
Можно далее изменить, отправляют и получают интерфейсы для пользовательского поведения. Например, можно синхронизироваться, когда получить интерфейс выполняется к тому, когда данные доступны. Для получения дополнительной информации см. Модель, сообщение Получает Интерфейс, который Работает на Доступности сообщения.
После моделирования сгенерируйте код C/C++ для вашего отправлять и получить интерфейсы и соединить их с промежуточным программным обеспечением или коммуникационным API операционной системы. Для примера, который генерирует код для топ-модели и позволяет вашему приложению связываться в распределенной системе, которая использует внешний сервис протокола сообщения (например, DDS, ROS, SOMEIP или сообщения POSIX), видят, Генерируют Код С++ от Топ-моделей для Основанной на сообщении Коммуникации При помощи Внешних Протоколов сообщения (Embedded Coder).
Используйте блоки Queue, чтобы сохранить, отсортировать и поставить сообщения в очередь. Блок Queue позволяет вам задавать способность хранения сообщений и перезапись и сортировку политик для переходов сообщения. Для простого примера, который показывает, как Queue кладка блоков, смотрите Использование Блок Очереди, чтобы Управлять сообщениями.
Можно также использовать SimEvents, чтобы смоделировать и симулировать эффекты промежуточного программного обеспечения на коммуникационной сети. Используйте блоки, предоставленные библиотекой SimEvents маршрутизации сообщения модели, одноранговой коммуникации, радиосвязи, пакетной потере и задержкам канала. Для получения дополнительной информации о SimEvents, смотрите Дискретно-событийную симуляцию в Моделях Simulink (SimEvents).
Для основных коммуникационных шаблонов, которые могут быть смоделированы SimEvents, смотрите, что Моделирование передает Коммуникационные Шаблоны с SimEvents. Можно использовать комбинации этих шаблонов, чтобы создать более комплексное коммуникационное поведение. Поскольку пример системы с несколькими передает отправку и получение компонентов и идеала совместно использованный канал с задержкой, смотрите Сборку Разделяемый Канал связи с Несколькими Отправителями и Получателями. Чтобы видеть модель с разделяемым беспроводным каналом со сбоем в канале и пакетной потерей, смотрите, что Беспроводная связь Модели передает Связь с Пакетной Потерей и Сбой в канале.
Чтобы видеть пример, который показывает, как смоделировать более комплексное сетевое поведение, такое как коммуникационная сеть Ethernet с протоколом CSMA/CD, см. Модель Коммуникационная сеть Ethernet с Протоколом CSMA/CD.
Блоки SimEvents не поддерживают генерацию кода.
Queue | Receive | Send | Sequence Viewer | Sine Wave