array of buses является массивом, элементами которого являются невиртуальные шины.
Используйте массив шин к:
Уменьшайте обслуживание путем централизации алгоритмов, используемых для обработки нескольких шин.
Оптимизируйте итеративную обработку нескольких шин того же типа, например, при помощи Для Каждой подсистемы с массивом шин.
Измените количество шин, обрабатываемых, не имея необходимость реструктурировать части модели, которые используют массив шин.
Используйте встроенные блоки, такие как Assignment или блоки Selector, чтобы управлять массивами шин точно так же, как массивы любого другого типа. Используя массив шин избегает потребности в вас создать пользовательские S-функции, чтобы справиться с упаковкой и распаковкой сигналов структуры.
Сгенерируйте код, который имеет массив структур C, которые можно интегрировать с устаревшим кодом С, который использует массивы структур. Этот подход упрощает индексацию в массив для расчетов Simulink®, с помощью for
цикл на индексируемых структурах.
Например, можно смоделировать многоканальную систему, такую как система связи, как массив шин. Все каналы имеют совпадающий тип данных, и каждый из каналов может иметь различное значение.
Для модели, которая демонстрирует несколько способов использовать массив шин, смотрите Массивы моделей Шин.
Все шины, объединенные в массив шин, должны:
Будьте невиртуальными
Задайте тот же Simulink.Bus
тип данных Object (то есть, то же имя, иерархии и атрибуты элемента шины)
Не имейте никаких сигналов переменного размера или основанных на системе координат сигналов
Для получения информации о создании невиртуальных шин смотрите, Создают Невиртуальные Шины.
Для получения информации о котором блоки поддерживают массивы шин, видят Способные к шине Блоки.
Можно использовать блок Vector Concatenate или Matrix Concatenate, чтобы сгруппировать невиртуальные шины в массив шин. Simulink обрабатывает невиртуальные шины как скаляры. Поэтому можно использовать любой из этих блоков независимо от типов данных элементов шины.
Создать массив шин с одним из этих блоков:
Задайте один Simulink.Bus
тип данных Object для всех невиртуальных шин, которые вы хотите сгруппировать в массиве шин.
В диалоговом окне Block Parameters для блока Vector Concatenate или Matrix Concatenate определенного Номера входных параметров к количеству шин вы хотите в массиве шин. Значок блока отображает количество входных портов, которые вы задаете.
Соедините невиртуальные шины с входными параметрами блока.
Блок выход является массивом шин.
Откройте и скомпилируйте модель в качестве примера. Чтобы скомпилировать модель, на вкладке Modeling Панели инструментов Simulink, нажимают Update Model или Run. Компиляция модели обновляет стили линии, которые можно использовать, чтобы визуально идентифицировать массивы шин.
Чтобы продемонстрировать, как создать массивы шин от невиртуальных шин, использования модели:
Два Создателя Шины блокируются, чтобы создать две невиртуальных шины, которые имеют тот же Bus
тип данных Object (Bus: BusObject
).
Векторная конкатенация, блок Matrix Concatenate с Количеством входного набора к 2
сгруппировать две невиртуальных шины в массиве шин.
Чтобы продемонстрировать, как выбрать элементы из массива шин, использования модели:
Селекторный блок, чтобы извлечь одну из шин от массива шин на основе заданного индекса в диалоговом окне. Поскольку массивы шин конкатенированы сигналы, которые обеспечивают основанный на индексе доступ к их элементам, Селекторный блок использует Index vector (dialog)
для опции индекса.
Селектор Шины блокируется, чтобы извлечь элементы невиртуальной шины с помощью основанного на имени доступа.
Наложение информации о Размерностях Сигнала показывает, что массив шин содержит две шины. Чтобы включить наложение Размерностей Сигнала, в Панели инструментов 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
тип данных Object.
Simulink.Bus.createObject(const_struct_array)
Новый Bus
возразите использует имя по умолчанию slBus1
.
Откройте и симулируйте модель в качестве примера, которая содержит блок Constant с набором Постоянного значения к const_struct_array
и Выходные данные вводят набор к Bus: slBus1
.
open_system('ArrayOfBusesFromStructModel') sim('ArrayOfBusesFromStructModel');
Выход блока Constant является массивом шин.
Для Каждого блока Subsystem итеративно обрабатывает постоянные значения для каждой невиртуальной шины в массиве. Содержимое подсистемы отображает невиртуальную шину вместо массива шин, который соединяется с портом.