В этом примере показано, как включать команды Stateflow® API в функцию MATLAB® или скрипт. Создание скрипта команд API позволяет вам избегать повторяющихся шагов создания графика и воссоздавать ту же модель с одной командой. Для получения дополнительной информации см. Обзор API Stateflow.
Функциональный makeMyModel
, то, которое задано в нижней части этой страницы, производит "основную" диаграмму Stateflow, которую можно снова использовать как шаблон для приложений.
ch = makeMyModel; ch.view
Эта функция создает диаграмму Stateflow и возвращает указатель на соответствующий Chart
объект.
function ch = makeMyModel % Create model and get handle for new chart rt = sfroot; prev_machines = rt.find('-isa','Stateflow.Machine'); sfnew; curr_machines = rt.find('-isa','Stateflow.Machine'); m = setdiff(curr_machines,prev_machines); ch = m.find('-isa', 'Stateflow.Chart'); % Create state A in chart sA = Stateflow.State(ch); sA.Name = 'A'; sA.Position = [50 50 310 200]; % Create state A1 inside of state A sA1 = Stateflow.State(ch); sA1.Name = 'A1'; sA1.Position = [80 120 90 60]; % Create state A2 inside of state A sA2 = Stateflow.State(ch); sA2.Name = 'A2'; sA2.Position = [240 120 90 60]; % Create transition from A1 to A2 tA1A2 = Stateflow.Transition(ch); tA1A2.Source = sA1; tA1A2.Destination = sA2; tA1A2.SourceOClock = 3; tA1A2.DestinationOClock = 9; % Add default transition to state A dtA = Stateflow.Transition(ch); dtA.Destination = sA; dtA.DestinationOClock = 0; dtA.SourceEndPoint = dtA.DestinationEndpoint-[0 30]; dtA.MidPoint = dtA.DestinationEndpoint-[0 15]; % Add default transition to state A1 dtA1 = Stateflow.Transition(ch); dtA1.Destination = sA1; dtA1.DestinationOClock = 0; dtA1.SourceEndPoint = dtA1.DestinationEndpoint-[0 30]; dtA1.MidPoint = dtA1.DestinationEndpoint-[0 15]; end
find
| setdiff
| sfnew
| sfroot
| Stateflow.State
| Stateflow.Transition
| view