Невиртуальная шина аналогична struct в коде С Используйте невиртуальные шины для:
Упакуйте данные шины как структуры в сгенерированный код C.
Создайте массив шин.
Интерфейс с внешним кодом через S-функцию.
Иметь данные шины через MATLAB® Function блок или Stateflow® контуры графика.
Отображение и логгирование шин с блоком Scope.
Невиртуальные автобусы требуют Simulink.Bus
тип данных объекта. Чтобы симулировать модель, которая содержит невиртуальные шины, ссылку на Bus
объекты должны быть в базовом рабочем пространстве или словаре данных, используемом моделью. Для получения дополнительной информации смотрите Задать свойства шины с Simulink типами данных объекта .Bus.
Невиртуальные шины также требуют, чтобы все элементы шины имели одинаковый шаг расчета. Для получения дополнительной информации смотрите Изменение шагов расчета для невиртуальных шин.
Способ создания невиртуальных шин отличается в зависимости от местоположения шины и блока, который создает шину:
Чтобы сосредоточиться на фундаментальных шагах, эти примеры просты. Однако шины наиболее полезны, когда у вас есть много сигналов для объединения.
Можно использовать блоки Bus Creator для создания невиртуальных шин в компонентах.
Откройте и скомпилируйте модель примера, которая использует блоки Bus Creator для создания иерархии виртуальных шин. Чтобы скомпилировать модель, на вкладке Моделирование (Modeling) панели инструментов Simulink, нажмите Обновить модель (Update Model) или Запуск. Компиляция модели обновляет стили линии, которые можно использовать для визуальной идентификации шин.
Чтобы создать эту модель, смотрите Групповые сигнальные линии в компоненте.
Виртуальные шины в этой модели не заданы Simulink.Bus
объекты. Чтобы изменить выход блоков Bus Creator на невиртуальные шины, вы должны иметь Bus
объекты, которые соответствуют иерархии шин.
Как создать Bus
объекты, которые соответствуют TopBus
и NestedBus
, используйте Simulink.Bus.createObject
функция. В Командном Окне MATLAB введите:
Simulink.Bus.createObject('NonvirtualBusCreationModel',... 'NonvirtualBusCreationModel/Bus Creator1');
Эта функция создает Bus
объект, который соответствует шине выхода указанного блока. Если выход шина содержит вложенные шины, функция также создает Bus
объекты, которые соответствуют вложенным шинам. В этом примере функция создает два Bus
объекты, которые названы в честь соответствующих автобусов, TopBus
и NestedBus
.
Чтобы просмотреть Bus
откройте Редактор шин. В Командном Окне MATLAB введите:
buseditor
Теперь, когда у вас есть Bus
объекты, которые соответствуют невиртуальным шинам, которые вы хотите создать, создают невиртуальные шины. В Редактор дважды кликните блок Bus Creator с именем Bus Creator1. В диалоговом окне Параметры Блоков установите тип выходных данных Bus: TopBus
установите флажок Output as nonvirtual bus и нажмите OK TopBus.
теперь является невиртуальной шиной, в то время как NestedBus
остается виртуальной шиной. Чтобы идентифицировать невиртуальную шину по стилю линии, скомпилируйте модель.
Дважды кликните блок с именем Bus Creator
. В диалоговом окне Параметры Блоков установите тип выходных данных Bus: NestedBus
установите флажок Output as nonvirtual bus и нажмите OK NestedBus.
теперь является невиртуальной шиной. Чтобы обновить стиль линии, скомпилируйте модель.
Если вы не сохраняете Bus
объекты, затем необходимо воссоздать Bus
объекты при повторном открытии модели. Для получения информации о том, как сохранить Bus
объекты, см. «Задание свойств шины с Simulink типами данных объектов .Bus».
Чтобы создать невиртуальную шину на интерфейсе, соедините элементы шины с блоками Out Bus Element и укажите, что выход шина является невиртуальной.
Откройте пример модели, которая использует три Элемента Out Bus блоков для создания виртуальной шины в выход порту OutBus
.
Чтобы создать эту модель, смотрите Соединить несколько выходных сигналов с портом.
Невиртуальные автобусы требуют
тип данных объекта. Создайте Simulink.Bus
Bus
тип данных объекта, который соответствует шине выхода.
На панели инструментов Simulink, на вкладке Modeling, в галерее Design, выберите Bus Editor.
В редакторе шин создайте два Bus
дважды нажатие «Добавить шину».
Назовите Bus
объекты. Выберите один из Bus
Объектами и установите Имя равным OutBus
. Выберите другое Bus
Объектом и установите Имя равным NestedBus
.
Для каждого Bus
объект, создайте
объекты, которые соответствуют элементам автобусов. Выберите Simulink.BusElement
NestedBus
, затем дважды нажмите Add/Insert BusElement. Назовите элементы Sine
и Step
. Выберите OutBus
, затем дважды нажмите Add/Insert BusElement. Назовите элементы Chirp
и NestedBus
.
Задайте Bus
тип данных объекта для любых вложенных шин. С NestedBus
BusElement
выбран объект, установите Тип данных Bus: NestedBus
, затем нажмите Применить.
Чтобы вывести невиртуальную шину, задайте Bus
тип данных объекта и виртуальность шины.
Откройте диалоговое окно для порта, дважды щелкнув один из блоков Out Bus Element.
В древовидной иерархии диалогового окна сделайте паузу на OutBus
, и щелкните значок карандаша, который появляется рядом с OutBus
.
Задайте Bus
тип данных объекта. Установите тип данных на Bus: OutBus
.
В древовидной иерархии диалогового окна щелкните атрибуты сигнала, которые теперь появляются рядом с OutBus
.
Укажите виртуальность шины. Установите виртуальность шины на nonvirtual
, затем закройте диалоговое окно.
Выходы модели являются невиртуальной шиной. Чтобы увидеть невиртуальную шину, ссылитесь на модель в другой модели или переместите блоки Out Bus Element в подсистему. Обновление стилей линии при компиляции модели. Чтобы скомпилировать модель, на вкладке Моделирование (Modeling) панели инструментов Simulink, нажмите Обновить модель (Update Model) или Запуск.
Если вы не сохраняете Bus
объекты, затем необходимо воссоздать Bus
объекты при повторном открытии модели. Для получения информации о том, как сохранить Bus
объекты, см. «Задание свойств шины с Simulink типами данных объектов .Bus».
Корневые (верхний уровень) блоки Inport и Outport могут также создавать невиртуальные шины на интерфейсах. Чтобы задать виртуальность шины:
Для корневого блока Inport на вкладке Signal Attributes диалогового окна выберите Output as nonvirtual bus.
Для корневого блока Outport на вкладке Signal Attributes диалогового окна выберите Output as nevirtual bus в родительской модели.
В блоках Bus Element используйте параметр Bus virtuality, чтобы определить, наследуют ли они или определяют виртуальность шины. Если блок определяет виртуальность шины, а виртуальность входа шины не совпадает, компиляция модели приводит к ошибке.
Можно преобразовать виртуальную шину в невиртуальную шину в любом месте модели с помощью блока Signal Conversion.
Откройте и скомпилируйте модель примера, которая содержит виртуальную иерархию шин, созданную блоками Bus Creator. Чтобы скомпилировать модель, на вкладке Моделирование (Modeling) панели инструментов Simulink, нажмите Обновить модель (Update Model) или Запуск. Компиляция модели обновляет стили линии, которые можно использовать для визуальной идентификации шин.
Чтобы определить шины и поддержать преобразование в невиртуальные шины, блоки Bus Creator задают Simulink.Bus
типы данных объекта. Как создать Bus
объекты в базовом рабочем пространстве, когда модель загружена, модель использует PreLoadFcn
коллбэк.
Чтобы просмотреть коллбэк, на панели инструментов Simulink, на вкладке « Моделировании», щелкните Настройки модели > Свойства модели. В диалоговом окне Свойства модели откройте вкладку Коллбэки и выберите коллбэк модели PreLoadFcn.
Чтобы преобразовать виртуальную шину в невиртуальную, используйте блок To Nonvirtual Bus, который является предварительно сконфигурированной версией блока Signal Conversion, у которого значение Output установлено на Nonvirtual bus
.
В модели примера:
Добавьте блок To Nonvirtual Bus в модель.
Перетащите блок To Nonvirtual Bus на линию между блоками Bus Creator1 и Scope. Когда вы перетаскиваете блок на линию, блок соединяется с линией на обоих концах.
Предположим, что тип данных шины, которую вы хотите преобразовать, не задан Bus
объект. Вам потребуется выполнить следующие дополнительные действия:
Создание соответствующей Bus
объекты.
Определение Bus
тип данных объекта для шины. Например, установка параметра Data type блока To Nonvirtual Bus на Bus
объект, который соответствует шине входа.
Вход в блок To Nonvirtual Bus является виртуальной шиной, а выход - невиртуальной шиной. Чтобы увидеть невиртуальный стиль линии шины, скомпилируйте модель.
Можно использовать блок Constant, чтобы компактно представлять невиртуальную шину с постоянными элементами. На блоке Constant задайте:
Структура MATLAB для Constant value.
A Simulink.Bus
объект как тип выходных данных.
Постоянные блоки поддерживают структуры MATLAB только, когда типом выходных данных является Bus
объект.
Например, задайте структуру MATLAB с именем const_param_struct
с именованными элементами Offset
, Gain
, и Threshold
.
const_param_struct.Offset = 197; const_param_struct.Gain = 4.32; const_param_struct.Threshold = 795.68;
Определите соответствующую Bus
тип данных объекта.
Simulink.Bus.createObject(const_param_struct)
Новая Bus
объект использует имя по умолчанию slBus1
.
Откройте и симулируйте модель примера, которая содержит блок Constant с установленным на const_param_struct
Постоянным значением и выход данных, установленный на
Bus: slBus1
.
open_system('NonvirtualBusFromStructModel') sim('NonvirtualBusFromStructModel');
Выходы блока Constant являются невиртуальной шиной.