Типы составных сигналов

Чтобы уменьшать визуальную сложность в модели, можно объединить сигналы в составные сигналы. Сигналы, что составной сигнал содержит, называются elements. Элементы сохраняют свою раздельную правосубъектность, которая позволяет вам извлечь их из составного сигнала.

Можно получить доступ к составным элементам сигнала по наименованию или индексировать, в зависимости от составного типа сигнала.

  • Основанные на индексе составные сигналы являются плоскими, независимо от того, создаете ли вы их шаг за шагом. Они требуют, чтобы все входные сигналы имели совпадающий тип данных.

  • Основанные на имени составные сигналы допускают иерархию сигнала. Они в общем называются buses.

    Примечание

    Шина Simulink® походит на пакет проводов, скрепляемых связью, переносится. Шина Simulink не походит на аппаратную шину, такую как шина в архитектуре компьютерного оборудования.

    Не все блоки могут принять шины, и некоторые блоки неявно преобразуют шины в векторы. Чтобы учиться который поддержка блоков который типы шин, смотрите Способные к шине Блоки. Чтобы изучить, как идентифицировать неявные преобразования шины к вектору, смотрите, Управляют Преобразованиями Шины к вектору.

Когда вы группируете сигналы в составной сигнал, можно решить, влияют ли они на симуляцию и генерацию кода.

  • Сигнал составного объекта virtual упрощает общий вид модели путем объединения двух или больше сигнальных линий в одну линию. Это не группирует сигналы ни в каком функциональном смысле и, поэтому, не влияет на симуляцию или генерацию кода.

  • Составной объект nonvirtual сигнализирует визуально и функционально сигналы групп, влияя и на симуляцию и на генерацию кода.

Модели могут использовать комбинацию этих составных типов сигнала.

Составная функция сигналаОснованный на индексе доступОснованный на имени доступ
Визуальная группировка

Сигнал мультиплексора

Виртуальная шина

Функциональная группировка

Конкатенированный сигнал

Невиртуальная шина

Можно идентифицировать составные типы сигнала их стилем линии.

Стиль линииСоставной тип сигнала
Виртуальная шина
Невиртуальная шина
Нескалярный сигнал, когда наложение информации о Nonscalar Signals включено (включает основанные на индексе составные сигналы),
Основанный на индексе составной сигнал, который содержит невиртуальные шины

Виртуальная шина

Эта модель показывает виртуальную шину, которая содержит, сигнализирует о aB, и c.

Блок Bus Creator создает виртуальную шину в подсистеме или модели. Блок Bus Selector извлекает элементы шины в подсистеме или модели путем определения имен элементов.

Эта модель показывает эквивалентную виртуальную шину, проходящую через контур подсистемы.

Блоки Out Bus Element создают виртуальную шину в подсистеме или интерфейсе модели. In Bus Element блокирует извлечение указанные элементы шины в подсистеме или интерфейсе модели путем определения имен элементов.

Можно использовать виртуальные шины для:

  • Содержите элементы шины, которые имеют различные частоты дискретизации.

  • Перекрестные контуры модели - ссылки, если модель, на которую ссылаются, только использует несколько элементов шины.

Используя виртуальную шину более просто и может быть более эффективным, чем использование невиртуальной шины. Путем доступа к элементам непосредственно, виртуальные шины выполняются быстрее, чем невиртуальные шины в симуляциях и сгенерированном коде. Только элементы виртуальной шины появляются в сгенерированном коде, даже когда виртуальная шина сопоставлена с тестовыми точками.

Чтобы задать и подтвердить свойства виртуальной шины, можно задать Simulink.Bus объект.

Некоторые функции моделирования требуют невиртуальных шин, таких как блоки MATLAB Function и графики Stateflow®.

Невиртуальная шина

Эта модель показывает невиртуальную шину, которая содержит, сигнализирует о aB, и c.

Блок Bus Creator создает невиртуальную шину в подсистеме или модели. Блок Bus Selector извлекает элементы шины в подсистеме или модели путем определения имен элементов.

Для невиртуальных шин в подсистеме или интерфейсах модели, используйте блоки Inport и Outport.

Можно использовать невиртуальные шины для:

  • Отобразите и регистрируйте сигналы шины с блоком Scope.

  • Создайте массив шин.

  • Имейте перекрестный блок MATLAB Function данных о шине или контуры диаграммы Stateflow.

  • Интерфейс с внешним кодом через S-функцию.

  • Данные о шине пакета как структуры в сгенерированном коде C.

Simulink.Bus объект должен задать шину, которую вы хотите сделать невиртуальным. Объект шины задает только архитектурные свойства шины. Например, объект шины может задать имена элементов, иерархию, порядок и типы данных. Объект шины не задает значения сигналов в шине. Для получения дополнительной информации смотрите Specify Bus Properties с Объектами Шины.

Поскольку виртуальная шина может задать объект шины, шина становится невиртуальной, когда вы также выбираете параметр Output as nonvirtual bus.

Все элементы невиртуальной шины должны использовать тот же шаг расчета, даже если связанный объект шины задает наследованные шаги расчета. Можно использовать блок Rate Transition, чтобы изменить шаг расчета отдельного сигнала или всех сигналов в шине.

Тип шины может иметь значительное значение в КПД, размере и удобочитаемости сгенерированного кода. Сгенерированный код представляет невиртуальную шину как структуру. Структура может быть полезной для трассировки соответствия между моделью и кодом. Генерация кода для невиртуальных шин может привести к нескольким копиям некоторых шин. Если вы намереваетесь сгенерировать код для модели, которая использует шины, смотрите, Генерируют Эффективный Код для Сигналов Шины (Simulink Coder). Для примера различия между виртуальными и невиртуальными шинами в сгенерированном коде смотрите, Генерируют Код для Шин.

Конкатенированный сигнал

Эта модель показывает конкатенированный сигнал, который помещает входные матрицы рядом друг с другом.

Блок Matrix Concatenate создает конкатенированные сигналы. Элементы могут быть или векторами или матрицами, в зависимости от того, как вы конфигурируете этот блок. Блок Selector извлекает сигналы на основе заданных индексов. Извлеченные сигналы могут быть сгруппированы по-другому, чем входные сигналы.

Можно использовать конкатенированные сигналы в математических операциях.

К сигналам группы с блоком Vector Concatenate или Matrix Concatenate сигналы должны иметь совпадающий тип данных. Когда тип данных является объектом шины, входные параметры должны быть невиртуальными шинами.

Конкатенированные невиртуальные шины также известны как array of buses. В массиве шин все элементы являются невиртуальными шинами, которые используют тот же объект шины задать свойства. Массив шин эквивалентен массиву структур в MATLAB®. Можно использовать массив шин, чтобы смоделировать многоканальную систему. В то время как все каналы имеют те же свойства, каждый из каналов может иметь различное значение.

В этой модели блок Vector Concatenate создает массив шин.

Для получения дополнительной информации о массивах шин смотрите Шины Объединения в Массив Шин.

Сигнал мультиплексора

Эта модель показывает, что мультиплексор сигнализирует, что помещает эти три входных сигнала рядом друг с другом.

Блок Mux создает сигналы мультиплексора. Блок Demux извлекает все сигналы, которые могут быть сгруппированы по-другому, чем входные сигналы. Для примеров смотрите, что Элементы Вектора Извлечения Используют Блок Демультиплексора. Блок Selector извлекает сигналы на основе заданных индексов. Извлеченные сигналы могут быть сгруппированы по-другому, чем входные сигналы.

Можно использовать сигнал мультиплексора где угодно, что вы используете обычный непрерывный вектор. Например, можно выполнить вычисления на сигнале мультиплексора. Расчет влияет на каждое составляющее значение в сигнале мультиплексора, как будто значения существовали в непрерывном векторе. Используя сигнал мультиплексора выполнить расчеты на нескольких векторах избегает издержек копирования отдельных значений к непрерывному устройству хранения данных. Можно также использовать блок Mux, чтобы создать вектор вызовов функции.

Входные сигналы для блока Mux могут быть любой комбинацией скаляров, векторов, и мультиплексировать сигналы, но у них должен быть совпадающий тип данных. Сигналы в выходном сигнале мультиплексора появляются в том же порядке как входные сигналы для блока Mux. Можно использовать несколько блоков Mux, чтобы создать сигнал мультиплексора шаг за шагом, но результат является плоским, как будто вы использовали один блок Mux.

Похожие темы