exponenta event banner

Программно задать метки в состояниях и переходах

При использовании API Stateflow ® укажите метки состояний и переходов, назначив вектор символов LabelString собственность.

Для извлечения частей метки состояния или перехода используйте свойства Stateflow.State и Stateflow.Transition объекты, перечисленные в этой таблице.

Объект APIСобственностьОписание
Stateflow.StateDuringActionТекст в during действие в этом состоянии. Это свойство не поддерживается в диаграммах Мура.
EntryActionТекст в entry действие в этом состоянии. Это свойство не поддерживается в диаграммах Мура.
ExitActionТекст в exit действие в этом состоянии. Это свойство не поддерживается в диаграммах Мура.
MooreActionТекст в действии в этом состоянии. Это свойство поддерживается только в диаграммах Мура. Дополнительные сведения см. в разделе Правила проектирования диаграмм Мура.
NameИмя этого состояния.
OnAction

Текст в on действия в этом состоянии, анализируемые как массив ячеек этой формы:

{'trigger1','action1',...,'triggerN','actionN'}

Это свойство не поддерживается в диаграммах Мура.

Stateflow.TransitionConditionТекст в условии этого перехода.
ConditionActionТекст в действии условия для этого перехода.
TransitionActionТекст в действии перехода для этого перехода.
TriggerТекст в триггере этого перехода.

За исключением Name, все эти свойства доступны только для чтения. Дополнительные сведения о синтаксисе меток состояния и перехода см. в разделах Метки состояния и Метки перехода.

Ввод меток при переходах

Предположим, что tr является Stateflow.Transition объект, соответствующий переходу. Можно назначить метку, определяющую триггер, условие и действие условия для этого перехода, введя:

tr.LabelString = 'trigger[guard]{action();}';

Transition with a trigger, a condition, and a condition action.

Чтобы извлечь триггер, условие и действие условия, указанные меткой перехода, введите:

trigger = tr.Trigger
trigger =

    'trigger'
cond = tr.Condition
cond =

    'guard'
action = tr.ConditionAction
action =

    'action();'

Ввод многострочных меток в состояниях

Существует два эквивалентных способа ввода многострочных меток для состояний и переходов. Например, Предположим, что sA является Stateflow.State объект, соответствующий состоянию. Ввод многострочной метки с помощью entry и during действия, можно:

  • Вызов функции MATLAB ®sprintf и использовать escape-последовательность \n для вставки новых символов строки:

    str = sprintf('A\nen: action1();\ndu: action2();\nen,du: action3();');
    sA.LabelString = str;
  • Введите конкатенированное текстовое выражение, использующее целое число 10 в качестве ASCII-эквивалента символа новой строки:

    str = ['A',10, ...
        'en: action1();',10, ...
        'du: action2();',10, ...
        'en,du: action3();'];
    sA.LabelString = str;

State with entry and during actions.

Чтобы извлечь имя состояния, entry действия, и during действие, указанное меткой состояния, введите:

name = sA.Name
name =

    'A'
entry = sA.EntryAction
entry =

    ' action1();
      action3();'
during = sA.DuringAction
during =

    ' action2();
      action3();'

См. также

Функции

Объекты

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