exponenta event banner

Создание диаграмм с помощью API Stateflow

В этом примере показано, как создать диаграмму Stateflow ® с помощью интерфейса прикладного программирования (API) Stateflow. API Stateflow - это инструмент для создания или изменения диаграмм Stateflow с помощью команд MATLAB ®. Дополнительные сведения см. в разделе Обзор API Stateflow.

Создание диаграммы потока состояний

Эта диаграмма Stateflow представляет логику, лежащую в основе полуволнового выпрямителя. Диаграмма содержит два состояния с меткой On и Off. В On состояние, выходной сигнал диаграммы y равно входу x. В Off состояние, выходной сигнал устанавливается равным нулю. Когда входной сигнал превышает некоторый порог t0, диаграмма переходит между этими состояниями. Действия в каждом состоянии обновляют значение y на каждом временном этапе моделирования.

Дополнительные сведения о моделировании этой диаграммы см. в разделах Конструирование и выполнение диаграммы статофлоу.

1. Закройте все модели.

bdclose all

2. Создание модели Simulink ® с именемrectify содержит пустой блок диаграммы Stateflow.

sfnew rectify

Доступ к Chart Объект

Чтобы использовать API Stateflow, начните с доступа к Simulink.Root , который является родительским для всех объектов в API Stateflow. Вы используете Simulink.Root для доступа к другим объектам API в модели.

1. Используйте функцию sfroot для доступа к Simulink.Root объект.

rt = sfroot;

2. Позвоните в find для доступа к Stateflow.Chart объект, соответствующий диаграмме в модели.

ch = find(rt,'-isa','Stateflow.Chart');

3. Чтобы открыть диаграмму в редакторе Stateflow, вызовите view функция.

view(ch);

4. Чтобы изменить язык действий, измените ActionLanguage свойства диаграммы.

ch.ActionLanguage = 'C';

Добавить состояния

Чтобы создать объект API Stateflow в качестве дочернего объекта родительского объекта, используйте родительский объект в качестве входного аргумента функции, создающей дочерний объект. Дополнительные сведения см. в разделе Создание и удаление объектов потока состояний.

1. Позвоните в Stateflow.State для добавления состояния в диаграмму.

s1 = Stateflow.State(ch);

2. Настройте положение состояния, изменив Position свойство соответствующего State объект. Укажите новое положение в виде четырехэлементного вектора, в котором первые два значения являются координатами (x, y) верхнего левого угла состояния, а последние два значения - шириной и высотой состояния.

s1.Position = [30 30 90 60];

3. Укажите имя и метку для состояния, изменив LabelString , как описано в разделе Указание меток в состояниях и переходах программным способом.

s1.LabelString = ['On',10,'y = x;'];

4. Создайте второе состояние. Отрегулируйте его положение и укажите его имя и метку.

s2 = Stateflow.State(ch);
s2.Position = [230 30 90 60];
s2.LabelString = ['Off',10,'y = 0;'];

Добавить переходы

При добавлении перехода необходимо указать его источник и место назначения, изменив его Source и Destination свойства. Для перехода по умолчанию указывается место назначения, но не источник.

1. Позвоните в Stateflow.Transition для добавления перехода к диаграмме.

t1 = Stateflow.Transition(ch);

2. Задайте источник и место назначения перехода.

t1.Source = s1;
t1.Destination = s2;

3. Скорректируйте положение перехода, изменив его SourceOClock собственность.

t1.SourceOClock = 2.1;

4. Укажите метку перехода и ее положение, изменив LabelString и LabelPosition свойства.

t1.LabelString = '[x<t0]';
t1.LabelPosition= [159 23 31 16];

5. Создайте второй переход. Укажите источник, назначение и метку.

t2 = Stateflow.Transition(ch);
t2.Source = s2;
t2.Destination = s1;
t2.SourceOClock = 8.1;
t2.LabelString = '[x>=t0]';
t2.LabelPosition= [155 81 38 16];

6. Добавление перехода к состоянию по умолчанию On. Чтобы выполнить вертикальный переход, измените значения SourceEndpoint и Midpoint свойства. Дополнительные сведения см. в разделе Добавление перехода по умолчанию.

t0 = Stateflow.Transition(ch);
t0.Destination = s1;
t0.DestinationOClock = 0;
t0.SourceEndpoint = t0.DestinationEndpoint-[0 30];
t0.Midpoint = t0.DestinationEndpoint-[0 15];

Добавить данные

Перед моделированием диаграммы необходимо определить каждый символ данных, используемый в диаграмме, и указать ее область и тип.

1. Позвоните в Stateflow.Data для добавления объекта данных, представляющего входные данные диаграммы.

x = Stateflow.Data(ch);

2. Укажите имя объекта данных как 'x' и его сфера применения в качестве 'Input'.

x.Name = 'x';
x.Scope = 'Input';

3. Чтобы указать, что входные данные x имеет тип double, установить его Props.Type.Method свойство для 'Built-in'. Встроенный тип данных по умолчанию: 'double'.

x.Props.Type.Method = 'Built-in';
x.DataType
ans = 
'double'

4. Добавьте объект данных, представляющий выходные данные диаграммы. Укажите его имя как 'y' и его сфера применения в качестве 'Output'.

y = Stateflow.Data(ch);
y.Name = 'y';
y.Scope = 'Output';

5. Чтобы указать, что вывод y имеет тип single, установить его Props.Type.Method свойство для 'Built-in' и его DataType свойство для 'single'.

y.Props.Type.Method = 'Built-in';
y.DataType = 'single';
y.DataType
ans = 
'single'

6. Добавьте объект данных, представляющий порог перехода на диаграмме. Укажите его имя как 't0' и его сфера применения в качестве 'Constant'. Установите начальное значение в 0.

t0 = Stateflow.Data(ch);
t0.Name = 't0';
t0.Scope = 'Constant';
t0.Props.InitialValue = '0';

7. Указание порогового значения t0 имеет тип данных с фиксированной точкой, задайте его Props.Type.Method свойство для 'Fixed-point'. Затем укажите значения Props.Type свойства, применяемые к данным с фиксированной точкой.

t0.Props.Type.Method = 'Fixed point';
t0.Props.Type.Signed = true;
t0.Props.Type.WordLength = '5';
t0.Props.Type.Fixpt.ScalingMode = 'Binary point';
t0.Props.Type.Fixpt.FractionLength = '2';
t0.DataType
ans = 
'fixdt(1,5,2)'

Сохранение и моделирование диаграммы

Чтобы сохранить модель, содержащую завершенную диаграмму, вызовите sfsave функция.

sfsave

Чтобы смоделировать диаграмму, подключите ее к другим блокам в модели Simulink через порты ввода и вывода.

Дополнительные сведения см. в разделе Моделирование диаграммы как блока симулятора.

См. также

Блоки

Функции

Объекты

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