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

К системам модели, которые переключаются между периодической или непрерывной динамикой времени, используйте Simulink® основанные состояния. Основанные на Simulink состояния не поддерживаются в автономном Stateflow® графики в MATLAB®. Для получения дополнительной информации смотрите Подсистемы 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 использует 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 выполниться.

Похожие темы