exponenta event banner

Обмен данными с диаграммами Stateflow путем отправки сообщений

Для обмена данными внутри и между диаграммами Stateflow ® в модели Simulink ® используйте сообщения. Сообщение - это объект Stateflow, который обменивается данными локально или между диаграммами. Из диаграммы отправителей можно отправить или переслать сообщение, содержащее данные. На диаграмме приема очередь получает сообщение и удерживает его до тех пор, пока диаграмма не сможет оценить его.

Сообщения объединяют некоторые функциональные возможности данных и событий. Подобно данным, сообщения могут передавать числовую и текстовую информацию. Как и события, сообщения могут инициировать действия перехода и состояния. Однако:

  • Сообщения не запускают диаграммы для пробуждения. Вместо этого сообщения ставятся в очередь до тех пор, пока диаграмма не проснется. Когда диаграмма пробуждается, она может отвечать на сообщения в очереди.

  • Сообщения не теряются, если диаграмма получателей не может ответить немедленно.

Дополнительные сведения см. в разделе Просмотр различий между сообщениями Stateflow, событиями и данными.

Когда операция перехода или состояния диаграммы оценивает сообщение, диаграмма определяет, содержит ли очередь какие-либо сообщения. В этом случае диаграмма удаляет сообщение из очереди. Сообщение остается действительным до конца временного шага или до тех пор, пока диаграмма не перенаправит или не отбросит его. Пока сообщение является действительным, другие переходы или действия могут получить доступ к данным сообщения, и диаграмма не удаляет другое сообщение из очереди. Диаграмма уничтожает все допустимые сообщения в конце текущего шага времени.

Определение сообщений в диаграмме

Добавить сообщения в диаграмму потока состояний можно с помощью панели Символы (Symbols), меню Редактор потока состояний (Stateflow Editor) или Проводника моделей (Model Explorer).

Добавление сообщений через панель символов

  1. На вкладке «Моделирование» в разделе «Данные проекта» выберите «Панель обозначений».

  2. Щелкните значок Создать сообщение.

  3. В строке нового сообщения в разделе ТИП щелкните значок и выберите:

    • Input Message

    • Local Message

    • Output Message

  4. Измените имя сообщения.

  5. Для ввода и вывода сообщений щелкните по полю PORT и выберите номер порта.

  6. Чтобы задать свойства сообщения, откройте инспектор свойств. На панели «Символы» щелкните правой кнопкой мыши строку сообщения и выберите «Обзор». Дополнительные сведения см. в разделе Настройка свойств сообщения.

Добавление сообщений с помощью меню редактора Stateflow

  1. В редакторе Stateflow выберите параметр, соответствующий области добавляемого сообщения.

    ОбъемВыбор
    ВходНа вкладке «Моделирование» в разделе «Данные проекта» выберите «Ввод сообщений».
    ПродукцияНа вкладке «Моделирование» в разделе «Данные проекта» выберите «Вывод сообщения».
    МестныйНа вкладке «Моделирование» в разделе «Данные конструкции» выберите «Сообщение».

  2. В диалоговом окне «Сообщение» укажите свойства данных. Дополнительные сведения см. в разделе Настройка свойств сообщения.

Добавление сообщений через обозреватель моделей

  1. На вкладке Моделирование (Modeling) в разделе Данные конструкции (Design Data) выберите Обозреватель моделей (Model Explorer).

  2. На панели Иерархия модели (Model Hierarchy) выберите объект в иерархии Stateflow, где необходимо сделать новое сообщение видимым. Выбранный объект становится родителем нового сообщения.

  3. В меню Проводника моделей выберите Добавить (Add) > Сообщение (Message). Новое сообщение с определением по умолчанию появится на панели Содержимое (Contents) Проводника моделей (Model Explorer).

  4. На панели «Сообщение» укажите свойства сообщения. Дополнительные сведения см. в разделе Настройка свойств сообщения.

Время жизни сообщения Stateflow

Сообщение Stateflow имеет конечное время жизни. Время жизни начинается при отправке сообщения в очередь получения с помощью send оператор. Сообщение остается в очереди до перехода или состояния on действие оценивает его или диаграмма получает его с помощью receive оператор.

Сообщение становится действительным, когда диаграмма оценивает или получает его. Сообщение остается действительным до:

  • Конец текущего временного шага, когда диаграмма уничтожит все оставшиеся действительные сообщения.

  • Диаграмма пересылает сообщение в другую очередь с помощью forward оператор. Сообщение продолжает свое время жизни в новой очереди.

  • Диаграмма отбрасывает сообщение с помощью discard.

Пока сообщение является действительным, другие переходы и действия могут оценить сообщение и получить доступ к его данным. Чтобы проверить правильность сообщения, используйте isvalid оператор.

Чтобы просмотреть обмен сообщениями во время моделирования, добавьте блок просмотра последовательностей в модель Simulink. В блоке «Просмотр последовательности» отображаются:

  • Отправленные сообщения

  • Полученные сообщения

  • Переадресованные сообщения

  • Отброшенные сообщения

  • Уничтоженные сообщения

  • Отброшенные сообщения

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

Ограничения для сообщений

Вы не можете использовать сообщения в:

  • Графики Мура

  • Атомарные подшаблоны

  • Выражения условий точки останова

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

См. также

| | | | | | (Simulink)

Связанные темы