Индексируйте и присвойте значения структурам Stateflow

Структуры Stateflow® позволяют вам связать данные различного размера и типа вместе в один объект Simulink.Bus. Используя запись через точку и числовые индексы, можно получить доступ и изменить содержимое структуры Stateflow. Для получения дополнительной информации смотрите доступ к Сигналам Шины Через Структуры Stateflow.

Индексируйте подструктуры и поля

Чтобы индексировать подструктуры и поля структур Stateflow, используйте запись через точку. Первая часть имени идентифицирует родительский объект. Последующие части идентифицируют дочерние элементы вдоль иерархического пути. Когда родительский элемент является структурой, ее дочерние элементы являются отдельными полями или полями, которые содержат другие структуры (также названный подструктурами). Имена полей структуры Stateflow совпадают с именами элементов объекта Simulink.Bus, который задает структуру.

Например, график C в этой модели содержит входную структуру in, выходная структура out и локальная структура subbus.

СтруктураОсциллографОбъект Simulink.Bus
inВходной параметрBusObject
outВывод BusObject
subbusЛокальныйSubBus

Поля входной структуры in и выходная структура, out имеет то же имя как элементы объекта Simulink.Bus BusObject, который задает их: sb, a, b и c. Поле локальной структуры subbus имеет то же имя ele как элемент объекта Simulink.Bus SubBus. Эта таблица приводит, как диаграмма Stateflow разрешает символы в записи через точку для индексации полей этих структур.

Запись через точкуРазрешение символа
in.cПоле c входной структуры in
out.sbПодструктура sb выходной структуры 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.

Эта таблица показывает допустимые и недопустимые присвоения структуры на основе спецификаций структуры для предыдущего примера.

“()” ПрисвоениеДопустимый или недопустимый?Объяснение

in = out;

Недопустимый

Вы не можете записать, чтобы ввести структуры.

out = in;

Допустимый

И in и out заданы от того же объекта Simulink.Bus BusObject.

subbus = in;

Недопустимый

Структуры subbus и in заданы от различных объектов Simulink.Bus.

in.sb = subbus;

Недопустимый

Вы не можете записать в подструктуры входных структур.

out.sb = subbus;

Допустимый

Подструктура out.sb и структура subbus задана от того же объекта Simulink.Bus SubBus.

in.c = out.c;

Недопустимый

Вы не можете записать в поля входных структур.

out.sb.ele = subbus.ele;

Допустимый

Поле out.sb.ele имеет тот же тип и размер как поле subbus.ele (3х3 матрицы).

subbus.ele[1][1] = in.c;

Допустимый

Поле subbus.ele[1][1] имеет тот же тип и размер как поле in.c (скаляры).

Смотрите также

Похожие темы