Доступ к данным о состоянии блока

Чтобы смоделировать системы, которые переключаются между периодической или непрерывной динамикой времени, используйте Simulink® основанные состояния. Состояния, основанные на Simulink, поддерживаются только в Stateflow® графики в модели Simulink. Для получения дополнительной информации см. Подсистемы Simulink как государства.

Вы можете считать и записывать состояние блоков в состояниях, основанных на Simulink, в переходных действиях вашей диаграммы Stateflow. Вы можете читать и записывать состояние блоков текстово на переходах графика или с помощью блоков Simulink State Reader и State Writer.

Эта диаграмма Stateflow моделирует человека, перемещающегося через стадии сводирования полюсов. Первый этап является запуском подхода вальтера, который моделируется состоянием, основанным на Simulink Run_up. На втором этапе сводник устанавливает шест и взлетает, что моделируется состоянием, основанным на Simulink Take_off. Заключительный этап происходит, когда сводник очищает планку и отпускает шест, который моделируется состоянием, основанным на Simulink Fly.

Состояния Run_up и Fly легче смоделировать при помощи Декартовых координат. Состояние Take_off более легкий для моделирования при помощи полярных координат. Simulink функционирует InitTakeOff и InitFly используются для переключения с одной системы координат на другую. Для получения дополнительной информации на этой диаграмме смотрите Модель сводника полюсов при помощи состояний на основе Simulink.

Текстовый доступ

Эта подсистема содержится в состоянии, основанном на Simulink Run_up. Для перехода от Run_up на Take_off чтобы произойти, положение сводчика полюсов вдоль оси X, p(1), должно быть больше -4.

Путем установки имени состояния блока интегратора Position на 'p', вы можете получить текстовый доступ к состоянию этого блока из диаграммы Stateflow. Для доступа к состоянию блока интегратора в условии введите [Run_up.p(1)> -4]. Когда это условие становится истинным, происходит переход, и активное состояние становится Take_off.

На панели «Символы» можно увидеть, что состояние 'p' появляется под состоянием Run_up.

Графический доступ

Stateflow использует State Reader и State Writer блоки, чтобы соединить подсистемы в состоянии, основанном на Simulink, с другими подсистемами Simulink в вашей модели. State Reader и State Writer блоки отображают имя блока владельца состояния, к которому они подключены. И наоборот, блок владельца состояния отображает тег, указывающий ссылку на State Reader или State Writer блок. Если щелкнуть метку над тегом, откроется список со ссылкой для перехода к блоку State Writer.

Соедините State Reader блок с блоком владельца

Следующая подсистема содержится в функции Simulink InitTakeOff. Функция использует State Reader блоков, чтобы соединиться с состоянием Run_up и читает p и v. Затем функция преобразует Декартовы значения для положения сводчика полюсов и скорости в полярные координаты, r и theta и rdot и theta_dot, соответственно. Эти полярные координаты затем получают доступ с помощью блоков владельцев состояний в состоянии Take_off.

Когда происходит действие перехода, State Reader блокируется InitTakeOff считайте состояние их блоков состояний. Когда функция Simulink заканчивает выполняться, блоки State Writer записывают в блоки владельца состояния в основанном на Simulink состоянии Take_off.

Чтобы соединить State Reader или State Writer блок с блоком владельца в подсистеме Simulink:

  1. Чтобы открыть свойства, дважды кликните State Reader.

  2. В State Owner Selector Tree перейдите к блоку, который вы хотите быть блоком владельца состояния. В этом примере путем выбора Positionблок State Reader соединяется с интегратором Position в состоянии Run_up.

  3. Путем соединения блока State Reader с Position интегратор блок, эта функция Simulink может использовать состояние интегратора Position для выполнения.

Похожие темы