array of buses является массивом, элементы которого являются невиртуальными шинами.
Используйте массив шин для:
Уменьшите техническое обслуживание путем централизации алгоритмов, используемых для обработки нескольких шин.
Оптимизируйте итерационную обработку нескольких шин одного типа, например, с помощью подсистемы For Each с массивом шин.
Измените количество обрабатываемых шин без необходимости перестройки частей модели, которые используют массив шин.
Используйте встроенные блоки, такие как Assignment или Selector блоки, чтобы манипулировать массивами шин так же, как массивами любого другого типа. Использование массива шин избегает необходимости в создании пользовательских S-функций для управления сигналами упаковки и распаковки структуры.
Сгенерируйте код, который имеет массив структур C, которые можно интегрировать с устаревшим кодом С, который использует массивы структур. Этот подход упрощает индексацию в массив для Simulink® расчеты, использование for
цикл в индексированных структурах.
Например, можно смоделировать многоканальную систему, такую как коммуникационная система, как массив шин. Все каналы имеют совпадающий тип данных, и каждый из каналов может иметь разное значение.
Для модели, которая демонстрирует несколько способов использования массива шин, смотрите Массивы моделей of Buses.
Все шины, объединенные в массив шин, должны:
Быть невиртуальным
Задайте то же Simulink.Bus
тип данных объекта (то есть то же имя, иерархии и атрибуты элемента шины)
Не иметь сигналов переменного размера или сигналов на основе фрейма
Для получения информации о создании невиртуальных шин см. Раздел «Создание невиртуальных шин».
Для получения информации о том, какие блоки поддерживают массивы шин, смотрите Блоки с поддержкой шины.
Можно использовать блок Vector Concatenate или Matrix Concatenate, чтобы сгруппировать невиртуальные шины в массив шин. Simulink рассматривает невиртуальные автобусы как скаляры. Поэтому можно использовать любой из этих блоков независимо от типов данных элемента шины.
Чтобы создать массив шин с одним из следующих блоков:
Задайте одну Simulink.Bus
тип данных объекта для всех невиртуальных шин, которые необходимо сгруппировать в массиве шин.
В диалоговом окне Параметры Блоков для блока Vector Concatenate или Matrix Concatenate установите Число входов для количества шин, которые вы хотите в массиве шин. Значок блока отображает количество входа портов, которые вы задаете.
Соедините невиртуальные шины с входами блока.
Выходным выходом блока является массив шин.
Откройте и скомпилируйте модель примера. Чтобы скомпилировать модель, на вкладке Моделирование (Modeling) панели инструментов Simulink, нажмите Обновить модель (Update Model) или Запуск. Компиляция модели обновляет стили линии, которые можно использовать для визуальной идентификации массивов шин.
Чтобы продемонстрировать, как создать массивы шин из невиртуальных шин, модель использует:
Два блока Bus Creator для создания двух невиртуальных шин с одинаковыми Bus
тип данных объекта (Bus: BusObject
).
Вектор Конкатенация, Матрица Конкатенация блок с Количеством входов, установленным на 2
для группирования двух невиртуальных шин в массив шин.
Чтобы продемонстрировать, как выбрать элементы из массива шин, модель использует:
Блок Selector, для извлечения одной из шин из массива шин на основе заданного индекса в диалоговом окне. Поскольку массивы шин являются конкатенированными сигналами, которые обеспечивают основанный на индексе доступ к их элементам, блок Selector использует Index vector (dialog)
для опции Index.
Блок Bus Selector, для извлечения элементов невиртуальной шины с помощью доступа на основе имен.
Информационное наложение Размерности показывает, что массив шин содержит две шины. Чтобы включить наложение размерностей сигнала, на панели инструментов Simulink, на вкладке Debug, выберите Information Overlays > Signal Dimensions.
Можно использовать блок Constant, чтобы компактно представлять массив шин с постоянными элементами шины. Этот метод может уменьшить количество линий в модели и количество переменных, используемых моделью, особенно когда модель повторяет алгоритм с различными значениями параметров.
На блоке Constant задайте:
Постоянное значение как массив структур MATLAB или Simulink.Parameter
объект, который задает массив структур MATLAB
Выход типа данных как Simulink.Bus
объект
Постоянные блоки поддерживают структуры MATLAB ® только, когда типом выходных данных является Bus
объект.
Задайте массив структур с именем const_struct_array
. Составьте каждую структуру из одних и тех же элементов: Offset
, Gain
, и Threshold
.
const_struct_array(1).Offset = 197; const_struct_array(1).Gain = 4.32; const_struct_array(1).Threshold = 795.68; const_struct_array(2).Offset = 158; const_struct_array(2).Gain = 3.83; const_struct_array(2).Threshold = 1039.77;
Чтобы создать массив структур для иерархии шины со многими элементами, рассмотрите использование Simulink.Bus.createMATLABStruct
функция.
Определите соответствующую Bus
тип данных объекта.
Simulink.Bus.createObject(const_struct_array)
Новая Bus
объект использует имя по умолчанию slBus1
.
Откройте и симулируйте модель примера, которая содержит блок Constant с установленным на const_struct_array
Постоянным значением и выход данных, установленный на
Bus: slBus1
.
open_system('ArrayOfBusesFromStructModel') sim('ArrayOfBusesFromStructModel');
Выходы блока Constant являются массивом шин.
Блок For Each Subsystem итерационно обрабатывает постоянные значения для каждой невиртуальной шины в массиве. Содержимое подсистемы отображает невиртуальную шину вместо массива шин, который соединяется с портом.