Виртуальные сигналы

О виртуальных сигналах

Виртуальный сигнал является сигналом, который графически представляет другие сигналы или части других сигналов. Виртуальные сигналы являются чисто графическими сущностями; у них нет математического или физического значения. Simulink® игнорирует их при моделировании модели, и они не существуют в сгенерированном коде. Некоторые блоки, такие как блок Mux, всегда генерируют виртуальные сигналы. Другие, такие как Создатель Шины, могут сгенерировать или виртуальные или невиртуальные сигналы.

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

Соедините шиной сигналы, может также быть виртуальным или невиртуальным. Для получения дополнительной информации смотрите Виртуальные и Невиртуальные Шины.

Мультиплексируйте сигналы

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

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

Документация Simulink относится, иногда взаимозаменяемо, к “мультиплексорам”, “векторам”, и “широким сигналам”, и все три условия появляются в метках диалогового окна Simulink и именах API. Эта терминология может сбить с толку, потому что большинство векторных сигналов является невиртуальным и следовательно не является мультиплексорами. Чтобы избежать беспорядка, зарезервируйте термин “мультиплексор”, чтобы относиться в частности к виртуальному вектору.

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

Чтобы создать составной сигнал, составляющие сигналы которого сохраняют свои тождества и могут иметь различные типы данных, используйте блок Bus Creator или Out Bus Element, а не блок Mux. Для получения дополнительной информации смотрите Составные Методы Сигнала.

Используя мультиплексоры

Библиотека Signal Routing обеспечивает два виртуальных блока для реализации мультиплексоров:

Мультиплексор

Объедините несколько входных сигналов в мультиплексор (виртуальный вектор) сигнал

Демультиплексор

Извлеките и выведите значения в мультиплексоре (виртуальный вектор) сигнал

Реализовывать сигнал мультиплексора:

  1. Выберите блок Mux и Demux из библиотеки Signal Routing.

  2. Установите номер блока Мультиплексора входных параметров, и номер блока Демультиплексора выходных параметров блокируют параметры к требуемым значениям.

  3. Соедините Мультиплексор, Демультиплексор и другие блоки по мере необходимости, чтобы реализовать желаемый сигнал.

Следующие данные показывают три сигнала, которые вводятся к блоку Mux, передали как сигнал мультиплексора к блоку Demux и вывели как отдельные сигналы.

Блоки Мультиплексора и Демультиплексора являются левыми и правыми вертикальными панелями, соответственно. Чтобы уменьшить визуальную сложность, никакой блок не отображает имя. В этом примере строка, соединяющаяся блоки, представляя сигнал мультиплексора, широка, потому что модель была создана с Отображением> Signals & Ports>, Широкая Нескалярная опция Строк включила. Смотрите Атрибуты Сигнала Отображения для деталей.

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

Значения во всем входном параметре сигналов к блоку Mux должны иметь совпадающий тип данных.

Если блок Demux пытается вывести больше значений, чем существуют во входном сигнале, ошибка происходит. Блок Demux может вывести меньше значений, чем существуют во входном мультиплексоре и может сгруппировать значения, которые это выводит в различные скаляры и векторы, чем было введено к блоку Mux. Однако блок Demux не может перестроить порядок тех значений. Для получения дополнительной информации смотрите Демультиплексор.

Примечание

Не используйте блоки Мультиплексора и Демультиплексора, чтобы создать и получить доступ к шинам.

Похожие темы

Была ли эта тема полезной?