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

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

Можно считать и записать состояние блоков в основанных на Simulink состояниях в действиях перехода диаграммы Stateflow. Можно считать и записать состояние блоков дословно на переходах графика или при помощи Читателя состояния Simulink и блоков Средства записи состояния.

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

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

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

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

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

В Окне Символов вы видите, что 'p' состояния появляется под Run_up состояния.

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

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

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

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

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

Чтобы соединить Читателя состояния или блок State Writer владельцу блокируются в Подсистеме Simulink:

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

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

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

Похожие темы