Задайте метки в состояниях и переходах программно

При использовании Stateflow® API, задайте метки состояний и переходов путем присвоения вектора символов 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 sequence \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();'

См. также

Функции

Объекты

Похожие темы