Структуры Stateflow® позволяют вам связать данные различного размера и типа вместе в один Simulink.Bus
объект. Используя запись через точку и числовые индексы, можно получить доступ и изменить содержимое структуры Stateflow. Для получения дополнительной информации смотрите доступ к Сигналам Шины Через Структуры Stateflow.
Чтобы индексировать подструктуры и поля структур Stateflow, используйте запись через точку. Первая часть имени идентифицирует родительский объект. Последующие части идентифицируют дочерние элементы вдоль иерархического пути. Когда родительский элемент является структурой, ее дочерние элементы являются отдельными полями или полями, которые содержат другие структуры (также названный подструктурами). Имена полей структуры Stateflow совпадают с именами элементов Simulink.Bus
объект, который задает структуру.
Например, график C в этой модели содержит входную структуру in
, структура output out
, и локальная структура subbus
.
Структура | Осциллограф | Simulink.Bus Объект |
---|---|---|
in | Входной параметр | BusObject |
out | Вывод | BusObject |
subbus | Локальный | SubBus |
Поля входной структуры in
и структура output out
имейте то же имя как элементы Simulink.Bus
объект BusObject
это задает их: sb
A
B
, и c
. Поле локальной структуры subbus
имеет то же имя ele
как элемент Simulink.Bus
объект SubBus
. Эта таблица приводит, как диаграмма Stateflow разрешает символы в записи через точку для индексации полей этих структур.
Запись через точку | Разрешение символа |
---|---|
in.c | Поле c из входной структуры in |
out.sb | Подструктура sb из структуры output out |
in.a[0] | Первое значение векторного поля a из входной структуры in |
subbus.ele[1][1] | Значение во второй строке, втором столбце поля ele из локальной структуры subbus |
in.sb.ele[2][3] | Значение в третьей строке, четвертом столбце поля ele из подструктуры in.sb |
В этом примере диаграмма Stateflow использует скобки и основанную на нуле индексацию для векторов и массивов, потому что C является языком действия для графика. Для получения дополнительной информации смотрите Различия Между MATLAB и C как Синтаксис языка Действия.
Можно присвоить значения любой структуре Stateflow, подструктуре или полю структуры с осциллографом, отличающимся от Input
.
Чтобы присвоить одну структуру другой структуре, задайте обе структуры от того же Simulink.Bus
объект в базовом рабочем пространстве.
Чтобы присвоить одну структуру подструктуре отличной структуры (или наоборот), задайте структуру и подструктуру от того же Simulink.Bus
объект.
Чтобы присвоить поле одной структуры к полю другой структуры, поля должны иметь тот же тип и размер. Можно задать структуры Stateflow от различного Simulink.Bus
объекты.
Эта таблица показывает допустимые и недопустимые присвоения структуры на основе спецификаций структуры для предыдущего примера.
“()” Присвоение | Допустимый или недопустимый? | Объяснение |
---|---|---|
| Недопустимый | Вы не можете записать, чтобы ввести структуры. |
| Допустимый | Оба |
| Недопустимый | Структуры |
| Недопустимый | Вы не можете записать в подструктуры входных структур. |
| Допустимый | Подструктура |
| Недопустимый | Вы не можете записать в поля входных структур. |
| Допустимый | Поле |
| Допустимый | Поле |