Создайте невиртуальные шины

Невиртуальная шина походит на 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.

Чтобы создать эту модель, смотрите Подключение Несколько Выходных сигналов к Порту.

Невиртуальные шины требуют Simulink.Bus тип данных Object. Создайте Bus тип данных Object, который соответствует выходной шине.

  1. В Панели инструментов Simulink, на вкладке Modeling, в галерее Design, выбирают Bus Editor.

  2. В Редакторе Шины создайте два Bus объекты путем нажатия на Add Bus дважды.

  3. Назовите Bus объекты. Выберите один из Bus объекты и определенное Имя к OutBus. Выберите другой Bus объект и определенное Имя к NestedBus.

  4. Для каждого Bus возразите, создайте Simulink.BusElement объекты, которые соответствуют элементам шин. Выберите NestedBus, затем нажмите Add/Insert BusElement дважды. Назовите элементы Sine и Step. Выберите OutBus, затем нажмите Add/Insert BusElement дважды. Назовите элементы Chirp и NestedBus.

  5. Задайте Bus тип данных Object для любых вложенных шин. С NestedBus BusElement выбранный объект, Тип данных набора к Bus: NestedBus, затем нажмите Apply.

Чтобы вывести невиртуальную шину, задайте Bus тип данных Object и виртуальность шины.

  1. Откройте диалоговое окно для порта путем двойного клика по одному из блоки Элемента Шины.

  2. В древовидной иерархии диалогового окна сделайте паузу на OutBus, и кликните по значку карандаша, который появляется рядом с OutBus.

  3. Задайте Bus тип данных Object. Установите Тип данных на Bus: OutBus.

  4. В древовидной иерархии диалогового окна кликните по атрибутам сигнала, которые теперь появляются рядом с OutBus.

  5. Задайте виртуальность шины. Установите виртуальность Шины на 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.

В модели в качестве примера:

  1. Добавьте блок To Nonvirtual Bus в модель.

  2. Перетащите блок To Nonvirtual Bus на линию между блоками Bus Creator1 и Scope. Когда вы перетаскиваете блок на линию, блок соединяется с линией в обоих концах.

Предположим тип данных шины, которую вы хотите преобразовать, не задан Bus объект. Необходимо было бы выполнить эти дополнительные действия:

  1. Создание соответствующего Bus объекты.

  2. Определение Bus тип данных Object для шины. Например, устанавливая параметр Типа данных блока To Nonvirtual Bus к Bus объект, который соответствует входной шине.

Вход с блоком To Nonvirtual Bus является виртуальной шиной, и выход является невиртуальной шиной. Чтобы видеть невиртуальный стиль линии шины, скомпилируйте модель.

Создайте невиртуальную шину из структуры MATLAB

Можно использовать блок 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 является невиртуальной шиной.

Смотрите также

Блоки

Объекты

Похожие темы