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