К системам модели, которые переключаются между периодической или непрерывной динамикой времени, используйте основанные на Simulink® состояния. Основанные на Simulink состояния поддерживаются только в графиках Stateflow® в модели Simulink. Для получения дополнительной информации смотрите Подсистемы Simulink как состояния.
Можно создать основанное на Simulink состояние при помощи инструмента для рисования. К системам повторного использования из отдельных моделей Simulink копия и вставка включили подсистемы. К подсистемам повторного использования в нескольких диаграммах Stateflow, копии и подсистемах действия вставки, которые сохранены в библиотеке.
Чтобы создать основанное на Simulink состояние, выполнить одно из следующих действий:
Создайте пустое основанное на Simulink состояние при помощи основанного на Simulink инструмента для рисования состояния.
Создайте основанное на Simulink состояние из другой модели путем копирования активированной подсистемы или подсистемы действия к диаграмме Stateflow.
Создайте соединенное основанное на Simulink состояние путем копирования подсистемы действия от библиотеки до диаграммы Stateflow.
Добавьте блок диаграммы Stateflow в модель Simulink. Чтобы открыть редактора Stateflow, дважды кликните блок.
На палитре объектов нажмите основанный на Simulink инструмент для рисования состояния. Перейдите свой курсор на ваш график.
Чтобы поместить новое основанное на Simulink состояние, кликните по холсту Stateflow. Появляется теневое состояние.
Введите метку состояния. В этом примере, модели состояния прыгун с шестом, запускающийся вдоль плоской поверхности, таким образом, меткой состояния является Run_up
. Основанные на Simulink состояния являются подсистемами действия, таким образом, Порт Действия появляется с вашим новым состоянием.
Создайте свою Подсистему Simulink. Эта подсистема выводит Декартовы координаты прыгуна с шестом. Для получения дополнительной информации об этой модели, смотрите доступ к Данным о Состоянии блока.
Чтобы создать основанное на Simulink состояние в вашей диаграмме Stateflow, скопируйте включенные подсистемы с отдельных моделей Simulink. Можно снова использовать компоненты из моделей Simulink в диаграмме Stateflow, не создавая совершенно новое основанное на Simulink состояние.
Откройте sf_clutch_enabled_subsystems
модель.
Из модели скопируйте блок Slipping
к вашей диаграмме Stateflow.
Импорт и выходные порты вашей Подсистемы Simulink появляются как неопределенные символы в вашей диаграмме Stateflow. Чтобы добавить соответствующие входные и выходные данные в вашу диаграмму Stateflow, нажмите кнопку Resolve undefined symbols.
Чтобы создать соединенное основанное на Simulink состояние в вашей диаграмме Stateflow, скопируйте подсистему действия от библиотеки до Stateflow. Когда библиотечный блок обновляется, изменения отражаются во всех диаграммах Stateflow, содержащих блок.
Откройте модель библиотеки.
Скопируйте и вставьте библиотечный блок Run_up
к вашей диаграмме Stateflow.
Чтобы отобразить ссылку в нижней части крайний левый угол на соединенной подсистеме, во вкладке Debug, выбирают Information Overlays> Show All Links.
Выходные порты этой Подсистемы Simulink, xy
, появляется как неопределенный символ в вашей диаграмме Stateflow. Чтобы добавить соответствие выходные данные в вашу диаграмму Stateflow, нажмите кнопку Resolve undefined symbols.
При использовании основанных на Simulink состояний импорт и выходные порты для вашей Подсистемы Simulink соединяются с входными и выходными данными на уровне диаграммы Stateflow. Эта связь позволяет модели Simulink верхнего уровня считывать данные из подсистемы, содержавшей в вашем основанном на Simulink состоянии.
Когда вы создаете пустое основанное на Simulink состояние, Stateflow создает вводы и выводы в вашей Подсистеме Simulink, которые соответствуют вводам и выводам, которые существуют в родительской диаграмме Stateflow. Однако, если вы добавляете импорт и выходные порты к вашему основанному на Simulink состоянию после того, как оно создается, необходимо создать соответствующие входные и выходные данные для диаграммы Stateflow.
Создать дополнительный импорт или выходные порты для основанного на Simulink состояния:
Откройте свое основанное на Simulink состояние.
Кликните по холсту Simulink, введите in1
, и нажмите Enter. Создается неопределенный импорт.
Неопределенный символ in1
появляется в панели Символов вашей диаграммы Stateflow. Чтобы разрешить неопределенный символ, нажмите кнопку Resolve undefined symbols.
Импорт графика под названием In1
создается.
В этом примере вы создаете дополнительный выходной порт для модели sf_pole_vault
:
Открыть модель.
Откройте график PoleVaulter
и дважды кликните основанный на Simulink Take_off
состояния.
Нажмите основанный на Simulink холст состояния и введите out1
и нажмите Enter. Создается неопределенный выходной порт. Переименуйте выходной порт theta_out
и соедините его с сигналом для theta.
В панели Символов PoleVaulter
, неопределенный символ для theta_out
появляется. Чтобы разрешить неопределенный символ, нажмите кнопку Resolve undefined symbols.
Stateflow создает выход в графике под названием theta_out
это соответствует выходному порту theta_out
.
Для получения дополнительной информации о редактировании данных, смотрите, Добавляют и Изменяют Данные, События и сообщения.