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