Настройка модели для использования массива шин обычно включает следующие основные задачи:
Определите массив шин (см. раздел Создание массива шин из невиртуальных шин).
Добавьте подсистему для итеративной обработки каждого элемента массива шин. Например, используйте блок «Для каждой подсистемы» или блок «Итератор». Подключите массив шин из блока Concatenate к подсистеме итеративной обработки. См. раздел Выполнение итеративной обработки.
Смоделировать скалярный алгоритм в итеративной подсистеме обработки (например, для каждой подсистемы).
Работа с массивом шин (с помощью блоков выбора и назначения).
Блоки Bus Selector (Селектор шины) и Bus Assignment (Назначение шины) используются для выбора элементов или назначения элементов невиртуальной шине в подсистеме.
См. разделы Назначение значений в массив шин и Выбор элементов шины из массива шин.
При необходимости импортируйте или регистрируйте массив данных шин. См. раздел Импорт массива данных шин и массивов журналов шин
Полученная модель включает эти компоненты.

Можно выполнить итеративную обработку данных шины массива шин с использованием таких блоков, как блок «Для каждой подсистемы», блок «While Iterator Subsystem» или блок «For Iterator Subsystem». Один из этих блоков можно использовать для выполнения одного и того же вида обработки:
Каждая шина в массиве шин
Выбранное подмножество шин в массиве шин
Чтобы назначить значение сигналу в массиве шин, используйте:
Блок назначения шины для назначения значения элементу шины
Блок назначения для назначения шины массиву шин
Блок назначения используется для назначения значений указанным элементам в массиве шины.
Например, в sldemo_bus_arrays , блок Assignment присваивает значение первому элементу массива шин.

Для назначения элементов шины в пределах шины используется блок «Назначение шины». Входным сигналом для блока назначения шины должна быть шина.
Блок назначения шины можно использовать для назначения или полной замены вложенной шины, представляющей собой массив шин. Чтобы назначить данные для вложенной шины внутри массива шин или выполнить частичное назначение определенным элементам с массивом шин, можно использовать функциональный блок MATLAB.
Например, предположим, что имеется такая структура шины:

Автобус имеет children элемент, который является массивом под-шины. В этом примере показано, как назначить элементу c и к элементу a. Блоки Inport и Outport используют Parent
Bus объект. Для определения присвоений в этом примере используется функциональный блок MATLAB, поскольку невозможно присвоить элементу a с использованием блока назначения шины или назначения.

Функциональный блок MATLAB использует этот код функции для выполнения присвоений:
function y = fcn(u) y = u; y.c = false; for idx = 1:length(y.children) y.children(idx).a = int32(zeros(5, 1)); end
Чтобы выбрать элемент шины из массива шин, используйте:
Блок селектора для выбора соответствующей шины в массиве шин.
Блок выбора шины для выбора элемента шины внутри шины.
Используйте блок выбора для выбора элементов массива шин. Входной массив шин может иметь любой размер. Выходная шина блока селектора представляет собой выбранный или переупорядоченный набор элементов из входного массива шин.
Например, sldemo_bus_arrays модель использует блоки селектора для выбора элементов из массива шин, выводимых блоками «Назначение» и «Для каждой подсистемы». В этом примере показано диалоговое окно «Параметры блока» для блока выбора, в котором выбирается первый элемент:

Для выбора элементов шины в пределах шины используйте блок выбора шины. Вход блока выбора шины должен быть шиной.
Использование корневого блока Inport для импорта (загрузки) массива структур MATLAB
®timeseries объекты для массива шин. Частичные данные можно импортировать в массив шин.
Дополнительные сведения см. в разделе Импорт массива данных шин.
Нельзя использовать блок «Из рабочего пространства» или «Из файла» для импорта данных для массива шин.
Для экспорта массива шин отметьте сигнал для регистрации сигнала. Дополнительные сведения см. в разделе Сохранение данных времени выполнения из моделирования.
Примечание
Simulink ® не регистрирует сигналы внутри ссылочных моделей в режиме быстрого ускорения.
Для доступа к данным регистрации сигналов для определенного сигнала в массиве шин выполните навигацию по иерархии структуры и укажите индекс для конкретного сигнала. Дополнительные сведения см. в разделе Массив доступа к данным регистрации сигналов шин.
Выходы шины корневого уровня не регистрируются при выборе параметра конфигурации Output. Используйте стандартный журнал сигналов, как описано в разделе Экспорт данных сигналов с использованием журнала сигналов.
Не используйте регистрацию сигналов для шины или массивов шин непосредственно из подсистемы For Each. Либо используйте блок выбора шины для выбора сигналов элементов шины для регистрации, либо добавьте блок исходящего порта за пределами подсистемы, а затем зарегистрируйте этот сигнал. Дополнительные сведения см. в разделе Регистрация сигналов в разделе Для каждой подсистемы.
Для определения уникального начального значения для каждого отдельного сигнала в массиве шин можно использовать массив структур начальных условий. Каждая структура в массиве инициализирует одну из шин.
Ниже приведен пример инициализации массива шин. Предположим, что определены типы шин MyData и PressureBus.

Предположим, что задан тип данных сигнального элемента temperature кому int16и тип данных элементов s1 и s2 кому double.
Чтобы задать начальные условия для массива шин, можно создать переменную, значение которой является массивом структур начальных условий.
initValues(1).temperature = int16(5); initValues(1).pressure.s1 = 9.87; initValues(1).pressure.s2 = 8.71; initValues(2).temperature = int16(20); initValues(2).pressure.s1 = 10.21; initValues(2).pressure.s2 = 9.56; initValues(3).temperature = int16(35); initValues(3).pressure.s1 = 8.98; initValues(3).pressure.s2 = 9.17;
Переменная initValues обеспечивает начальные условия для сигнала, который представляет собой матрицу из трех шин. Вы можете использовать initValues для указания параметра начального условия блока, например «Единичная задержка».
Можно также использовать одну скалярную структуру для задания одинаковых начальных условий для всех шин в массиве.
initStruct.temperature = int16(15); initStruct.pressure.s1 = 10.32; initStruct.pressure.s2 = 9.46;
При указании initStruct в параметре Initial condition блока каждая шина в массиве использует одно и то же начальное значение, 15, для сигнального элемента temperature. Аналогично, шины используют начальное значение 10.32 для элемента pressure.s1 и значение 9.46 для элемента pressure.s2.
Чтобы создать массив структур для шины, использующей большую иерархию сигнальных элементов, рассмотрите возможность использования функции Simulink.Bus.createMATLABStruct.
В этом примере показано, как инициализировать вложенный массив шин. Создайте начальную структуру условий для сложной иерархии сигналов, которая включает вложенные массивы шин.
В редакторе шины создайте Bus объекты MyData и PressureBus.

В области иерархии выберите элемент шины pressure. Задайте для свойства «Размеры» значение [1 3].
Создание массива из четырех структур инициализации с помощью функции Simulink.Bus.createMATLABStruct. Сохранение массива в переменной initStruct. Инициализируйте все отдельные сигналы на землю, 0.
initStruct=Simulink.Bus.createMATLABStruct('MyData',[],[1 4]);В основном рабочем пространстве дважды щелкните переменную initStruct для просмотра в редакторе переменных.
Каждая из четырех структур в массиве имеет поля temperature и pressure.
Проверка pressureдважды щелкните на одном из полей.
Значение каждого из четырех pressure поля представляют собой массив из трех подструктур. Каждая подструктура имеет поля s1 и s2.
Чтобы обеспечить уникальные значения инициализации для сигналов в массиве шин, можно задать значения вручную с помощью редактора переменных.
Кроме того, можно написать сценарий. Например, для доступа к полю s1 второй подструктуры pressure в третьей структуре initStruct, используйте следующий код:
initStruct(3).pressure(2).s1 = 15.35;
Для инициализации массива шин с параметрами структуры можно использовать:
Число 0. В этом случае все отдельные сигналы в массиве шин используют начальное значение 0.
Скаляр struct представляет ту же иерархию полей и имен полей, что и тип шины. В этом случае скалярная структура расширяется для инициализации каждого из отдельных сигналов в массиве шин.
Массив структур, который задает начальное значение для каждого из отдельных сигналов в массиве шин.
При использовании массива структур все структуры массива должны иметь одинаковую иерархию полей. Каждое поле в иерархии должно иметь одинаковые признаки в массиве:
Имя поля
Числовой тип данных, например single или int32
Сложность
Размеры
Нельзя использовать частичные структуры.
Генерация кода для массивов шин производит структуры с определенным форматом. См. раздел Генерация кода для массивов шин.