exponenta event banner

Создание диаграмм с помощью сценария MATLAB

В этом примере показано, как включить команды API Stateflow ® в функцию или сценарий MATLAB ®. Создание сценария команд API позволяет избежать повторяющихся шагов создания диаграммы и воссоздать одну и ту же модель с помощью одной команды. Дополнительные сведения см. в разделе Обзор API Stateflow.

Выполнение функции MATLAB

Функция makeMyModel, которая определена в нижней части этой страницы, создает «базовую» диаграмму Stateflow, которую можно повторно использовать в качестве шаблона для приложений.

ch = makeMyModel;
view(ch)

Создание функции базовой диаграммы

Эта функция создает диаграмму Stateflow и возвращает соответствующую Stateflow.Chart объект.

function ch = makeMyModel

Создание модели и доступ к новым Stateflow.Chart объект.

    rt = sfroot;
    prev_machines = find(rt,'-isa','Stateflow.Machine');
    sfnew;
    curr_machines = find(rt,'-isa','Stateflow.Machine');
    m = setdiff(curr_machines,prev_machines);
    ch = find(m,'-isa','Stateflow.Chart');

Создать состояние A в диаграмме.

    sA = Stateflow.State(ch);
    sA.Name = 'A';
    sA.Position = [50 50 310 200];

Создать состояние A1 внутри состояния A.

    sA1 = Stateflow.State(ch);
    sA1.Name = 'A1';
    sA1.Position = [80 120 90 60];

Создать состояние A2 внутри состояния A.

    sA2 = Stateflow.State(ch);
    sA2.Name = 'A2';
    sA2.Position = [240 120 90 60];

Создать переход из A1 кому A2.

    tA1A2 = Stateflow.Transition(ch);
    tA1A2.Source = sA1;
    tA1A2.Destination = sA2;
    tA1A2.SourceOClock = 3;
    tA1A2.DestinationOClock = 9;

Добавить переход по умолчанию в состояние A.

    dtA = Stateflow.Transition(ch);
    dtA.Destination = sA;
    dtA.DestinationOClock = 0;
    dtA.SourceEndPoint = dtA.DestinationEndpoint-[0 30];
    dtA.MidPoint = dtA.DestinationEndpoint-[0 15];

Добавить переход по умолчанию в состояние A1.

    dtA1 = Stateflow.Transition(ch);
    dtA1.Destination = sA1;
    dtA1.DestinationOClock = 0;
    dtA1.SourceEndPoint = dtA1.DestinationEndpoint-[0 30];
    dtA1.MidPoint = dtA1.DestinationEndpoint-[0 15];
end

См. также

Функции

Объекты

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