Связь с диаграммами Stateflow путем отправки сообщений

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

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

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

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

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

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

Определение сообщений на графике

Можно добавить сообщения на диаграмму Stateflow с помощью панели «Символы», меню «Редактор Stateflow» или «Model Explorer».

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

  1. На вкладке Modeling, под Design Data, выберите Symbols Pane.

  2. Щелкните значок Create Message.

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

    • Input Message

    • Local Message

    • Output Message

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

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

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

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

  1. В редакторе Stateflow выберите опцию, соответствующий возможностям сообщения, которое вы хотите добавить.

    ВозможностиОпция
    ВходНа вкладке Modeling, под Design Data, выберите Message Input.
    ВыходНа вкладке Modeling, под Design Data, выберите Message Output.
    МестныйНа вкладке Modeling, под Design Data, выберите Message.

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

Добавление сообщений через Model Explorer

  1. На вкладке Modeling, под Design Data, выберите Model Explorer.

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

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

  4. На панели Message задайте свойства сообщения. Для получения дополнительной информации смотрите Задать свойства сообщения.

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

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

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

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

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

  • График отбрасывает сообщение при помощи discard.

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

Чтобы просмотреть обмен сообщениями во время симуляции, добавьте блок Sequence Viewer к своей модели Simulink. Блок Sequence Viewer отображает:

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

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

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

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

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

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

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

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

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

  • Диаграммы Мура

  • Атомарные субдиаграммы

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

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

См. также

| | | | | | (Simulink)

Похожие темы