Stateflow® API состоит из объектов, которые представляют графические и неграфические объекты диаграммы Stateflow. Для примера объекты API типа Stateflow.State
и Stateflow.Transition
представление состояний и переходов на диаграмме Stateflow.
Объекты Stateflow API организованы в иерархии ограничений, описанной в Иерархии объектов Stateflow API. Чтобы создать объект Stateflow в качестве дочернего объекта родительского объекта, начните с доступа к родительскому объекту. Затем используйте родительский объект в качестве входного параметра к функции, которая создает th дочерний объект. Например, чтобы добавить новую Stateflow.State
объект в Stateflow.Chart
объект, выполните следующие шаги:
Доступ к родительскому объекту ch
как описано в разделе «Доступ к объектам на диаграмме Stateflow».
Вызовите Stateflow.State
функция, использующая родительский объект ch
как аргумент.
st = Stateflow.State(ch);
Отобразите новое состояние в редакторе Stateflow путем вызова view
функция. Используйте Stateflow.State
объект как аргумент функции.
view(st)
Внесите изменения в состояние путем изменения свойств Stateflow.State
объект. Для примера можно задать имя и положение состояния путем изменения Name
и Position
свойства. Чтобы задать Position
свойство задает новую позицию как вектор с четырьмя элементами, в котором первые два значения являются (x, y) координатами верхнего левого угла состояния, а последние два значения являются шириной и высотой состояния.
st.Name = 'A';
st.Position = [30 30 90 60];
Можно также соединить новое состояние с другими состояниями или соединениями на графике путем создания Stateflow.Transition
объект и установка его Source
или Destination
свойства для st
.
Пример добавления состояний, переходов и объектов данных к графику см. в разделе Создание графиков при помощи Stateflow API.
Когда вы создаете графический объект, такой как состояние, функция, прямоугольник, соединение или аннотация, он появляется в левом верхнем углу его родительского объекта. Можно переместить графический объект в другое место, изменив его Position
свойство, как объяснено в предыдущем примере.
Когда вы создаете переход, он появляется в левом верхнем углу графика или субдиаграммы, где можно просмотреть родительский объект. Можно переместить переход в другое место путем установки его источника и назначения или путем изменения его SourceEndPoint
, MidPoint
, и DestinationEndPoint
свойства.
Графический объект должен располагаться внутри контура его родительского элемента. Изменение положения графического объекта может изменить его родительский элемент или привести к неопределенной родительской ошибке. Можно проверить это условие, исследуя значение BadIntersection
свойство объекта. Это свойство true
если ребра графического объекта перекрываются с другим графическим объектом. Установите положение и размер объектов так, чтобы они были отделены от других объектов.
Вы не можете переместить объект в состоянии, кубе или графической функции на другой уровень иерархии графика путем изменения его положения. Вместо этого скопируйте и вставьте объект из одного родительского объекта в другой. Затем удалите исходный объект. Для получения дополнительной информации смотрите Копировать и Вставить по Группировке и Копировать и Вставить массив объектов.
Когда вы создаете неграфические объекты, такие как данные, события или сообщения, они появляются в Model Explorer и в панели символов на иерархическом уровне их родительского объекта. Расположение родительского объекта можно также увидеть, осмотрев Path
свойство объекта.
Вы не можете программно изменить родительский элемент неграфического объекта. Вместо этого используйте Model Explorer. Для получения дополнительной информации смотрите Использование Model Explorer с объектами Stateflow.
Вы можете удалить большинство объектов на диаграмме Stateflow, вызвав функцию delete
. Например, чтобы удалить Stateflow.State
st объекта
, введите:
delete(st);
После удаления состояния переменная st
все еще существует в MATLAB® рабочая область, но она больше не связана с состоянием.
Примечание
Вы не можете использовать delete
функция для удаления объектов следующих типов:
Simulink.Root
Stateflow.Machine
Stateflow.Chart
Stateflow.EMChart
Stateflow.StateTransitionTableChart
Stateflow.TruthTableChart
Stateflow.Clipboard
Stateflow.Editor