Невиртуальная шина походит на struct в коде С. Используйте невиртуальные шины для:
Данные о шине пакета как структуры в сгенерированном коде C.
Создайте массив шин.
Интерфейс с внешним кодом через S-функцию.
Имейте крест данных о шине MATLAB® Блок Function или Stateflow® стройте диаграмму контуров.
Отобразите и регистрируйте шины с блоком Scope.
Невиртуальные шины требуют Simulink.Bus
тип данных Object. Симулировать модель, которая содержит невиртуальные шины, Bus
, на который ссылаются, объекты должны быть в базовом рабочем пространстве или словаре данных, используемом моделью. Для получения дополнительной информации смотрите Specify Bus Properties с Типами данных Object Simulink.Bus.
Невиртуальные шины также требуют, чтобы все элементы шины имели тот же шаг расчета. Для получения дополнительной информации смотрите, Изменяют Шаги расчета для Невиртуальных Шин.
Способ создать невиртуальные шины отличается на основе местоположения шины и блока, который создает шину:
Чтобы фокусироваться на основных шагах, эти примеры просты. Однако шины являются самыми полезными, когда у вас есть много сигналов объединиться.
Можно использовать блоки Создателя Шины, чтобы создать невиртуальные шины в компонентах.
Откройте и скомпилируйте модель в качестве примера, которая использует блоки Создателя Шины, чтобы создать иерархию виртуальных шин. Чтобы скомпилировать модель, на вкладке Modeling Панели инструментов Simulink, нажимают Update Model или Run. Компиляция модели обновляет стили линии, которые можно использовать, чтобы визуально идентифицировать шины.
Чтобы создать эту модель, смотрите Сигнальные линии Группы В Компоненте.
Виртуальные шины в этой модели не заданы Simulink.Bus
объекты. Изменить выход Создателя Шины блокируется к невиртуальным шинам, у вас должен быть Bus
объекты, которые совпадают с иерархией шины.
Создать Bus
объекты, которые соответствуют TopBus
и NestedBus
, используйте Simulink.Bus.createObject
функция. В командном окне MATLAB, введите:
Simulink.Bus.createObject('NonvirtualBusCreationModel',... 'NonvirtualBusCreationModel/Bus Creator1');
Эта функция создает Bus
объект, который соответствует выходной шине заданного блока. Если выходная шина содержит вложенные шины, функция также создает Bus
объекты, которые соответствуют вложенным шинам. В этом примере функция создает два Bus
объекты, которые называют в честь соответствующих шин, TopBus
и NestedBus
.
Просмотреть Bus
объекты, откройте Редактор Шины. В командном окне MATLAB, введите:
buseditor
Теперь, когда у вас есть Bus
объекты, которые соответствуют невиртуальным шинам, вы хотите создать, создать невиртуальные шины. В Редакторе Simulink дважды кликните блок Bus Creator под названием Шина Creator1. В диалоговом окне Block Parameters Выходные данные набора вводят к Bus: TopBus
, выберите Output как невиртуальный флажок шины и нажмите ОК. TopBus
теперь невиртуальная шина, в то время как NestedBus
остается виртуальная шина. Чтобы идентифицировать невиртуальную шину с методической точностью разрабатывают, компилируют модель.
Дважды кликните блок под названием Bus Creator
. В диалоговом окне Block Parameters Выходные данные набора вводят к Bus: NestedBus
, выберите Output как невиртуальный флажок шины и нажмите ОК. NestedBus
теперь невиртуальная шина. Чтобы обновить ее стиль линии, скомпилируйте модель.
Если вы не сохраняете Bus
объекты, затем необходимо воссоздать Bus
объекты, когда вы вновь открыли модель. Для получения информации о том, как сохранить Bus
объекты, смотрите Specify Bus Properties с Типами данных Object Simulink.Bus.
Чтобы создать невиртуальную шину в интерфейсе, соедините элементы шины, чтобы Соединить шиной блоки Элемента и указать, что выходная шина является невиртуальной.
Откройте модель в качестве примера, которая использует три блоки Элемента Шины, чтобы создать виртуальную шину в выходном порту, OutBus
.
Чтобы создать эту модель, смотрите Подключение Несколько Выходных сигналов к Порту.
Невиртуальные шины требуют
тип данных Object. Создайте Simulink.Bus
Bus
тип данных Object, который соответствует выходной шине.
В Панели инструментов Simulink, на вкладке Modeling, в галерее Design, выбирают Bus Editor.
В Редакторе Шины создайте два Bus
объекты путем нажатия на Add Bus дважды.
Назовите Bus
объекты. Выберите один из Bus
объекты и определенное Имя к OutBus
. Выберите другой Bus
объект и определенное Имя к NestedBus
.
Для каждого Bus
возразите, создайте
объекты, которые соответствуют элементам шин. Выберите Simulink.BusElement
NestedBus
, затем нажмите Add/Insert BusElement дважды. Назовите элементы Sine
и Step
. Выберите OutBus
, затем нажмите Add/Insert BusElement дважды. Назовите элементы Chirp
и NestedBus
.
Задайте Bus
тип данных Object для любых вложенных шин. С NestedBus
BusElement
выбранный объект, Тип данных набора к Bus: NestedBus
, затем нажмите Apply.
Чтобы вывести невиртуальную шину, задайте Bus
тип данных Object и виртуальность шины.
Откройте диалоговое окно для порта путем двойного клика по одному из блоки Элемента Шины.
В древовидной иерархии диалогового окна сделайте паузу на OutBus
, и кликните по значку карандаша, который появляется рядом с OutBus
.
Задайте Bus
тип данных Object. Установите Тип данных на Bus: OutBus
.
В древовидной иерархии диалогового окна кликните по атрибутам сигнала, которые теперь появляются рядом с OutBus
.
Задайте виртуальность шины. Установите виртуальность Шины на nonvirtual
, затем закройте диалоговое окно.
Выход модели является невиртуальной шиной. Чтобы видеть невиртуальную шину, сошлитесь на модель в другой модели или переместитесь блоки Элемента Шины в подсистему. Стили линии обновляются, когда вы компилируете модель. Чтобы скомпилировать модель, на вкладке Modeling Панели инструментов Simulink, нажимают Update Model или Run.
Если вы не сохраняете Bus
объекты, затем необходимо воссоздать Bus
объекты, когда вы вновь открыли модель. Для получения информации о том, как сохранить Bus
объекты, смотрите Specify Bus Properties с Типами данных Object Simulink.Bus.
Корневые блоки Inport и Outport (верхнего уровня) могут также создать невиртуальные шины в интерфейсах. Задавать виртуальность шины:
Для корневого Inport блока, на вкладке Signal Attributes диалогового окна, выбирают Output как невиртуальную шину.
Для корневого блока Outport, на вкладке Signal Attributes диалогового окна, выбирают Output как невиртуальную шину в родительской модели.
В Шине блоки Элемента используют параметр виртуальности Шины, чтобы определить, наследовали ли они или задают виртуальность шины. Если блок задает виртуальность шины, и виртуальность входной шины не соответствует, компилирование модели производит ошибку.
Можно преобразовать виртуальную шину в невиртуальную шину где угодно в модели при помощи блока Signal Conversion.
Откройте и скомпилируйте модель в качестве примера, которая содержит виртуальную иерархию шины, созданную блоками Создателя Шины. Чтобы скомпилировать модель, на вкладке Modeling Панели инструментов Simulink, нажимают Update Model или Run. Компиляция модели обновляет стили линии, которые можно использовать, чтобы визуально идентифицировать шины.
Чтобы задать шины и преобразование поддержки в невиртуальные шины, блоки Создателя Шины задают Simulink.Bus
типы данных Object. Создать Bus
объекты в базовом рабочем пространстве, когда модель загружается, модель, используют PreLoadFcn
'callback'.
Чтобы просмотреть коллбэк, в Панели инструментов Simulink, на вкладке Modeling, нажимают Model Settings> Model Properties. В диалоговом окне Model Properties откройте вкладку Callbacks и выберите коллбэк модели PreLoadFcn.
Чтобы преобразовать виртуальную шину в невиртуальную шину, используйте блок To Nonvirtual Bus, который является предварительно сконфигурированной версией блока Signal Conversion, который Вывел набор к Nonvirtual bus
.
В модели в качестве примера:
Добавьте блок To Nonvirtual Bus в модель.
Перетащите блок To Nonvirtual Bus на линию между блоками Bus Creator1 и Scope. Когда вы перетаскиваете блок на линию, блок соединяется с линией в обоих концах.
Предположим тип данных шины, которую вы хотите преобразовать, не задан Bus
объект. Необходимо было бы выполнить эти дополнительные действия:
Создание соответствующего Bus
объекты.
Определение Bus
тип данных Object для шины. Например, устанавливая параметр Типа данных блока To Nonvirtual Bus к Bus
объект, который соответствует входной шине.
Вход с блоком To Nonvirtual Bus является виртуальной шиной, и выход является невиртуальной шиной. Чтобы видеть невиртуальный стиль линии шины, скомпилируйте модель.
Можно использовать блок Constant, чтобы сжато представлять невиртуальную шину элементами с постоянным знаком.
На блоке Constant задайте:
Структура MATLAB для Постоянного значения.
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
тип данных Object.
Simulink.Bus.createObject(const_param_struct)
Новый Bus
возразите использует имя по умолчанию slBus1
.
Откройте и симулируйте модель в качестве примера, которая содержит блок Constant с набором Постоянного значения к const_param_struct
и Выходные данные вводят набор к Bus: slBus1
.
open_system('NonvirtualBusFromStructModel') sim('NonvirtualBusFromStructModel');
Выход блока Constant является невиртуальной шиной.