exponenta event banner

Создание и удаление объектов потока состояний

API Stateflow ® состоит из объектов, представляющих графические и неграфические объекты диаграммы Stateflow. Например, объекты API типаStateflow.State и Stateflow.Transition представляют состояния и переходы в диаграмме Stateflow.

Создание объектов потока состояний

Объекты API stateflow организованы в иерархии содержимого, описанной в разделе Иерархия объектов API Stateflow. Чтобы создать объект Stateflow в качестве дочернего объекта родительского объекта, сначала необходимо получить доступ к родительскому объекту. Затем используйте родительский объект в качестве входного аргумента функции, создающей дочерний объект. Например, для добавления нового Stateflow.State объект в Stateflow.Chart выполните следующие действия:

  1. Доступ к родительскому объекту ch как описано в разделе Доступ к объектам в диаграмме статусов.

  2. Позвоните в Stateflow.State функция, использующая родительский объект ch в качестве аргумента.

    st = Stateflow.State(ch);
  3. Отображение нового состояния в редакторе Stateflow с помощью вызова view функция. Используйте Stateflow.State объект в качестве аргумента функции.

    view(st)

  4. Внесите изменения в состояние, изменив свойства Stateflow.State объект. Например, можно задать имя и положение состояния, изменив Name и Position свойства. Для установки Position укажите новое положение в виде четырехэлементного вектора, в котором первые два значения являются координатами (x, y) верхнего левого угла состояния, а последние два значения - шириной и высотой состояния.

    st.Name = 'A';
    st.Position = [30 30 90 60];

    Можно также связать новое состояние с другими состояниями или соединениями в диаграмме, создав Stateflow.Transition объект и установка его Source или Destination свойства для st.

Пример добавления состояний, переходов и объектов данных в диаграмму см. в разделе Создание диаграмм с помощью API Stateflow.

Графическая оболочка объекта

При создании графического объекта, такого как состояние, функция, коробка, соединение или аннотация, он отображается в левом верхнем углу родительского объекта. Можно переместить графический объект в другое расположение, изменив его Position , как описано в предыдущем примере.

При создании перехода он отображается в левом верхнем углу диаграммы или вложенной диаграммы, где можно просмотреть родительский объект. Можно переместить переход в другое расположение, задав его источник и назначение или изменив его SourceEndPoint, MidPoint, и DestinationEndPoint свойства.

Графический объект должен находиться внутри границы родительского объекта. Изменение положения графического объекта может изменить его родительский объект или привести к неопределенной ошибке родительского объекта. Можно проверить это условие, проверив значение BadIntersection свойства объекта. Это свойство имеет значение true если края графического объекта перекрываются с другим графическим объектом. Задайте положение и размер объектов так, чтобы они были отделены от других объектов.

Невозможно переместить объект в состоянии, поле или графической функции в подшаблоне на другой уровень иерархии диаграммы, изменив его положение. Скопируйте и вставьте объект из одного родительского объекта в другой. Затем удалите исходный объект. Дополнительные сведения см. в разделах Копирование и вставка по группировке и Копирование и вставка массива объектов.

Неграфическая изоляция объектов

При создании неграфических объектов, таких как данные, события или сообщения, они отображаются в обозревателе моделей и на панели символов на иерархическом уровне родительского объекта. Расположение родительского объекта можно также увидеть, проверив Path свойства объекта.

Невозможно изменить родителя неграфического объекта программным путем. Вместо этого используйте обозреватель моделей. Дополнительные сведения см. в разделе Использование обозревателя моделей с объектами потока состояний.

Удалить объекты потока состояний

Большинство объектов диаграммы 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

См. также

Функции

Объекты

Связанные темы