Stateflow® Интерфейс прикладного программирования (API) позволяет вам создавать или изменять диаграммы Stateflow из MATLAB® Командное окно. Поместив команды Stateflow API в функцию или скрипт MATLAB, можно:
Автоматизируйте операции изменения графика, выполнив несколько шагов редактирования в одной команде.
Исключить повторяющиеся шаги создания графика путем создания «базовой» диаграммы Stateflow, которую можно повторно использовать в качестве шаблона для приложений.
Составьте специализированный отчет о вашей модели.
Stateflow API состоит из объектов, которые представляют графические и неграфические объекты диаграммы Stateflow. Для примера объекты API Stateflow.State и Stateflow.Transition представление состояний и переходов на диаграмме Stateflow. Когда вы изменяете свойства объекта API или вызываете одну из его функций объекта, вы влияете на соответствующий объект в диаграмме Stateflow. Когда вы используете Редактор Stateflow для выполнения операции с объектом на графике, вы влияете на соответствующий объект API.
Примечание
Вы не можете отменить операцию в редакторе Stateflow, которую вы выполняете, используя Stateflow API. При выполнении операции редактирования через API кнопки Undo и Redo на панели быстрого доступа отключаются.
Объекты Stateflow API организованы в иерархию содержимого. Для примера, если состояние A содержит состояние B на диаграмме Stateflow, затем объект API для A состояний содержит объект API для состояния B. Иерархия Stateflow API следует тем же правилам сдерживания, что и иерархия объектов Stateflow. Например, графики могут содержать состояния, но состояния не могут содержать графиков. Для получения дополнительной информации см. Обзор объектов Stateflow.
Эта схема показывает иерархию объектов в Stateflow API.

Иерархия состоит из четырех уровней сдерживания:
Корень - The Simulink.Root объект является родительским элементом всех объектов Stateflow API. Это заполнитель в верхней части иерархии Stateflow API, который отличает объекты Stateflow от других объектов в Simulink® модель. Вы автоматически создаете Simulink.Root объект, когда вы добавляете диаграмму Stateflow, блок State Transition Table, блок Truth Table или блок MATLAB Function к модели Simulink, или когда вы загружаете модель, которая содержит один из этих блоков.
Машина - С точки зрения Stateflow, Stateflow.Machine объекты эквивалентны моделям Simulink. A Stateflow.Machine объект содержит объекты, которые представляют диаграммы Stateflow, блоки State Transition Table, блоки Truth Table и блоки MATLAB Function в модели.
График - Stateflow.Chart, Stateflow.StateTransitionTableChart, Stateflow.TruthTableChart, и Stateflow.EMChart объекты представляют диаграммы Stateflow, блоки State Transition Table, блоки Truth Table и блоки MATLAB Function, соответственно. Объекты на этом уровне иерархии могут содержать объекты, которые представляют состояния, функции, поля, данные, события, сообщения, переходы, соединения и аннотации.
Состояния, функции и коробки - этот уровень иерархии включает Stateflow.State, Stateflow.Function, и Stateflow.Box объекты, которые представляют состояния, функции и рамки, соответственно. Эти объекты могут содержать другие объекты, которые представляют состояния, функции, рамки, данные, события, сообщения, переходы, соединения и аннотации. Уровни вложенности могут продолжаться до бесконечности.
Иерархическая схема показывает два типа объектов, которые существуют вне иерархии содержимого:
Редактор - Stateflow.Editor объекты обеспечивают доступ к графическим аспектам графиков и таблицам переходов состояний. Для каждого Stateflow.Chart или Stateflow.StateTransitionTableChart объект, существует Stateflow.Editor объект, который можно использовать для управления положением, размером и уровнем увеличения редактора Stateflow. Для получения дополнительной информации см. раздел «Изменение масштаба на диаграмме Stateflow», «Изменение масштаба на диаграмме Stateflow» и «Задание коэффициента масштабирования».
Буфер обмена - The Stateflow.Clipboard объект имеет две функции, copy и pasteTo, которые используют буфер обмена в качестве промежуточной области для реализации функциональности копирования и вставки в Stateflow API. Для получения дополнительной информации смотрите Копировать и Вставить по Группировке и Копировать и Вставить массив объектов.
Чтобы использовать API Stateflow, вы начинаете с доступа к Simulink.Root объект, который является родительским элементом всех объектов в Stateflow API. Вы используете Simulink.Root объект для доступа к другим объектам API в вашей модели. Для примера:
Создайте модель Simulink с пустой диаграммой Stateflow путем вызова функции sfnew.
sfnew
Используйте функцию sfroot для доступа к Simulink.Root объект.
rt = sfroot;
Вызовите find функция для доступа к Stateflow.Chart объект, который соответствует графику в вашей модели.
ch = find(rt,'-isa','Stateflow.Chart');
Вызовите Stateflow.State функция для добавления состояния к графику. Эта функция возвращает Stateflow.State объект, который соответствует новому состоянию.
st = Stateflow.State(ch);
Отображение нового состояния в редакторе Stateflow.
view(st)
Для получения дополнительной информации смотрите Объекты доступа в диаграмме Stateflow и Создание графиков при помощи Stateflow API.
Объекты API имеют свойства, которые соответствуют значениям, которые вы обычно задаете для объекта через Редактор Stateflow. Для примера, чтобы изменить положение состояния, обычно щелкните и перетащите состояние. С помощью Stateflow API вы изменяете положение состояния, изменяя Position свойство соответствующего Stateflow.State объект:
st.Position = [10 20 100 80];
Объекты API имеют функции, которые обеспечивают услуги, которые обычно предоставляются редактором Stateflow. Например, чтобы открыть диалоговое окно Свойства для перехода, обычно щелкните правой кнопкой мыши переход и выберите Properties. С помощью Stateflow API вы открываете это диалоговое окно, вызывая dialog функция соответствующего Stateflow.Transition объект:
dialog(tr);
Stateflow.Box | Stateflow.Chart | Stateflow.Clipboard | Stateflow.Editor | Stateflow.EMChart | Stateflow.Function | Stateflow.Machine | Stateflow.State | Stateflow.StateTransitionTableChart | Stateflow.Transition | Stateflow.TruthTableChart