Виртуальный сигнал является сигналом, который графически представляет другие сигналы или части других сигналов. Виртуальные сигналы являются чисто графическими сущностями; у них нет математического или физического значения. Simulink® игнорирует их при симуляции модели, и они не существуют в сгенерированном коде. Некоторые блоки, такие как блок Mux, всегда генерируют виртуальные сигналы. Другие, такие как Создатель Шины, могут сгенерировать или виртуальные или невиртуальные сигналы.
Невиртуальные компоненты виртуального сигнала называются областями. Виртуальный сигнал может содержать ту же область несколько раз. Например, если тот же невиртуальный сигнал соединяется с двумя входными портами блока Mux, блок выводит виртуальный сигнал, который имеет две области. Области ведут себя, как они были бы, если они произошли в двух различных невиртуальных сигналах, даже при том, что получившееся поведение копирует информацию.
Соедините шиной сигналы, может также быть виртуальным или невиртуальным. Для получения дополнительной информации смотрите Виртуальные и Невиртуальные Шины.
mux Simulink является виртуальным сигналом, который графически комбинирует два или больше скалярных или векторных сигнала в одну сигнальную линию. Мультиплексор Simulink не является аппаратным мультиплексором, который комбинирует несколько потоков данных в один канал. Мультиплексор Simulink не комбинирует сигналы ни в каком функциональном смысле: это существует только фактически, и его единственная цель состоит в том, чтобы упростить общий вид модели. Используя мультиплексор не имеет никакого эффекта на симуляцию или сгенерированный код.
Можно использовать мультиплексор где угодно, что вы могли использовать обычный (непрерывный) вектор. Например, можно выполнить вычисления на мультиплексоре. Вычисление влияет на каждое составляющее значение в мультиплексоре так же, как если бы значения существовали в непрерывном векторе, и результатом является непрерывный вектор, не мультиплексор. Используя мультиплексор, чтобы выполнить вычисления на нескольких векторах избегает издержек копирования отдельных значений к непрерывному устройству хранения данных.
Документация Simulink относится, иногда взаимозаменяемо, к “мультиплексорам”, “векторам”, и “широким сигналам”, и все три условия появляются в метках диалогового окна Simulink и именах API. Эта терминология может сбить с толку, потому что большинство векторных сигналов является невиртуальным и следовательно не является мультиплексорами. Чтобы избежать беспорядка, зарезервируйте термин “мультиплексор”, чтобы относиться в частности к виртуальному вектору.
Мультиплексор является виртуальным векторным сигналом. Составляющие сигналы мультиплексора сохраняют свое отдельное существование каждым способом, кроме визуально. Можно также объединить скалярные и векторные сигналы в невиртуальный векторный сигнал, при помощи блока Vector Concatenate. Сигнал, выведенный блоком Vector Concatenate, является обычным непрерывным вектором, не наследовав специальных свойств от того, что он был создан из отдельных сигналов.
Чтобы создать составной сигнал, составляющие сигналы которого сохраняют свои тождества и могут иметь различные типы данных, используйте блок Bus Creator или Out Bus Element, а не блок Mux. Для получения дополнительной информации смотрите Составные Методы Сигнала.
Библиотека Signal Routing обеспечивает два виртуальных блока для реализации мультиплексоров:
Объедините несколько входных сигналов в мультиплексор (виртуальный вектор) сигнал
Извлеките и выведите значения в мультиплексоре (виртуальный вектор) сигнал
Реализовывать сигнал мультиплексора:
Выберите блок Mux и Demux от библиотеки Signal Routing.
Установите блок Mux Number of inputs и блок Demux параметры блоков Number of outputs к требуемым значениям.
Соедините Мультиплексор, Демультиплексор и другие блоки по мере необходимости, чтобы реализовать желаемый сигнал.
Следующие данные показывают три сигнала, которые вводятся к блоку Mux, передали как сигнал мультиплексора к блоку Demux и вывели как отдельные сигналы.
Чтобы уменьшать визуальную сложность, можно скрыть имена блока. В этом примере строка, соединяющаяся блоки, представляя сигнал мультиплексора, широка, потому что модель была создана с Display> Signals & Ports>, опция Wide Nonscalar Lines включила. Смотрите Атрибуты Сигнала Отображения для деталей.
Вход сигналов к блоку Mux может быть любой комбинацией скаляров, векторов и мультиплексоров. Сигналы в выходном мультиплексоре появляются в порядке, в котором они были введены к блоку Mux. Можно использовать несколько блоков Мультиплексора, чтобы создать мультиплексор на нескольких этапах, но результат является плоским, не иерархическим, так же, как если бы составляющие сигналы были объединены с помощью одного блока мультиплексора.
Значения во всем входе сигналов к блоку Mux должны иметь совпадающий тип данных.
Если блок Demux пытается вывести больше значений, чем существуют во входном сигнале, ошибка происходит. Блок Demux может вывести меньше значений, чем существуют во входном мультиплексоре и может сгруппировать значения, которые это выводит в различные скаляры и векторы, чем было введено к блоку Mux. Однако блок Demux не может перестроить порядок тех значений. Для получения дополнительной информации смотрите Демультиплексор.
Не используйте блоки Мультиплексора и Демультиплексора, чтобы создать и получить доступ к шинам.