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

Иерархия состоит из четырех уровней сдерживания:
Корень - Simulink.Root является родительским для всех объектов API Stateflow. Это местозаполнитель в верхней части иерархии API Stateflow, который отличает объекты Stateflow от других объектов в модели Simulink ®. Вы автоматически создаете Simulink.Root объект при добавлении диаграммы Stateflow, блока таблицы перехода состояния, блока таблицы истинности или блока функции MATLAB в модель Simulink или при загрузке модели, содержащей один из этих блоков.
Машина - с точки зрения потока состояния, Stateflow.Machine объекты эквивалентны моделям Simulink. A Stateflow.Machine объект содержит объекты, представляющие в модели диаграммы Stateflow, блоки таблицы перехода состояния, блоки таблицы истинности и блоки функции MATLAB.
График - Stateflow.Chart, Stateflow.StateTransitionTableChart, Stateflow.TruthTableChart, и Stateflow.EMChart объекты представляют диаграммы Stateflow, блоки таблицы перехода состояния, блоки таблицы истинности и блоки функции MATLAB соответственно. Объекты на этом уровне иерархии могут содержать объекты, представляющие состояния, функции, поля, данные, события, сообщения, переходы, соединения и аннотации.
Состояния, функции и поля - этот уровень иерархии включает Stateflow.State, Stateflow.Function, и Stateflow.Box объекты, представляющие состояния, функции и поля соответственно. Эти объекты могут содержать другие объекты, представляющие состояния, функции, поля, данные, события, сообщения, переходы, соединения и аннотации. Уровни вложенности могут продолжаться бесконечно долго.
Диаграмма иерархии показывает два типа объектов, которые существуют вне иерархии содержимого:
Редактор - Stateflow.Editor объекты обеспечивают доступ к графическим аспектам диаграмм и таблиц переходов состояний. Для каждого Stateflow.Chart или Stateflow.StateTransitionTableChart объект, есть Stateflow.Editor объект, который можно использовать для управления положением, размером и уровнем увеличения редактора Stateflow Editor. Дополнительные сведения см. в разделах Увеличение на диаграмме Staflow, Уменьшение на диаграмме Stateflow и Установка коэффициента масштабирования.
Буфер обмена - Stateflow.Clipboard объект имеет две функции, copy и pasteTo, которые используют буфер обмена в качестве промежуточной области для реализации функций копирования и вставки в API Stateflow. Дополнительные сведения см. в разделах Копирование и вставка по группировке и Копирование и вставка массива объектов.
Чтобы использовать API Stateflow, начните с доступа к Simulink.Root , который является родительским для всех объектов в API Stateflow. Вы используете 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 и Создание диаграмм с помощью API Stateflow.
Объекты API имеют свойства, соответствующие значениям, которые обычно задаются для объекта с помощью редактора Stateflow Editor. Например, чтобы изменить положение состояния, обычно следует щелкнуть и перетащить состояние. С помощью API Stateflow можно изменить положение состояния, изменив Position свойство соответствующего Stateflow.State объект:
st.Position = [10 20 100 80];
Объекты API имеют функции, предоставляющие услуги, которые обычно предоставляются редактором Stateflow Editor. Например, чтобы открыть диалоговое окно «Свойства» для перехода, обычно щелкните его правой кнопкой мыши и выберите «Свойства». С помощью API Stateflow можно открыть это диалоговое окно, вызвав 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