Виртуальный сигнал является сигналом, который графически представляет другие сигналы или части других сигналов. Виртуальные сигналы являются чисто графическими сущностями; у них нет математического или физического значения. 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 и другие блоки по мере необходимости, чтобы реализовать желаемый сигнал.
Следующий рисунок показывает три сигнала, которые вводятся с блоком Mux, передали как сигнал мультиплексора с блоком Demux и вывели как отдельные сигналы.
Чтобы уменьшать визуальную сложность, можно скрыть имена блока. В этом примере линия, соединяющаяся блоки, представляя сигнал мультиплексора, широка, потому что модель была создана с включенной опцией Nonscalar Signals (на вкладке Debug, выберите Information Overlays> Nonscalar Signals). Смотрите Атрибуты Сигнала Отображения для деталей.
Вход сигналов с блоком Mux может быть любой комбинацией скаляров, векторов и мультиплексоров. Сигналы в выходном мультиплексоре появляются в порядке, в котором они были введены с блоком Mux. Можно использовать несколько блоков Mux, чтобы создать мультиплексор на нескольких этапах, но результат является плоским, не иерархическим, так же, как если бы составляющие сигналы были объединены с помощью одного блока мультиплексора.
Значения во всем входе сигналов с блоком Mux должны иметь совпадающий тип данных.
Если блок Demux пытается вывести больше значений, чем существуют во входном сигнале, ошибка происходит. Блок Demux может вывести меньше значений, чем существуют во входном мультиплексоре и может сгруппировать значения, которые это выводит в различные скаляры и векторы, чем было введено с блоком Mux. Однако блок Demux не может перестроить порядок тех значений. Для получения дополнительной информации смотрите Демультиплексор.
Не используйте Mux и блоки Demux, чтобы создать и получить доступ к шинам.