Чтобы смоделировать системы, которые переключаются между периодической или непрерывной динамикой времени, используйте 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
.
Дополнительные сведения об редактировании данных см. в разделе Добавление и изменение данных, событий и сообщений.