Слияние сигналов

Этот пример показывает, как объединить сигналы.

Описание модели

Левая сторона этой модели содержит два блока Repease Sequence из библиотеки Simulink Sources. Каждый блок генерирует скаляр выхода сигнал формы, отображаемой на значке блока.

Эти два сигнала подаются в различные подсистемы Enabled, которые обозначены толстыми линиями.

Включенные (или условно выполненные) подсистемы управляются сигналом, сгенерированным блоком Discrete Pulse Generator.

Этот блок выводит переключатели между значениями нуля и единицей каждые пять секунд. Когда выход блока Discrete Pulse Generator положительный, подсистема с верхней частью симулирует. Когда выход блока Discrete Pulse Generator равен нулю, нижняя активированная подсистема моделирует.

Чтобы заставить нижнюю активированную подсистему симулировать, когда выход блока Discrete Pulse Generator равен нулю, выход передается через набор блоков Логического оператора оператору NOT. Блок NOT выводит значение единицы, когда его вход равен нулю.

Выходы двух включенных подсистем затем подаются в блок Merge.

Выходы блока Merge отображаются в осциллограф Simulink.

Можно запустить симуляцию, чтобы увидеть выход блока Merge на возможности. Заметьте, что тип формы волны, показанный на возможностях, изменяется каждые пять секунд. Это связано с поведением блока Merge.

Условно выполненные подсистемы

Этот пример блока Merge содержит две условно выполненные подсистемы.

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

Сигнал, поступающий в дополнительный порт, называется управляющим сигналом. Значение этого сигнала обеспечивает условие, которое определяет, выполняется ли подсистема или нет, в любой заданный временной шаг. Активированные подсистемы выполняются, когда сигнал управления строго положителен.

В этом примере вы хотите выполнить одну из включенных подсистем, когда сигнал управления положительный, и другую, когда сигнал управления равен нулю. Вы можете сделать это с помощью блока Logical Operator в Simulink.

Блок логического оператора

Блок Логический Оператор в Simulink предоставляет вам метод для включения логических операторов и булевых сигналов в схему Simulink.

Можно открыть блок Логический оператор, чтобы увидеть различные операторы, перечисленные в раскрывающемся меню. Текущая установка NOT возвращает 1 (или TRUE), когда входной сигнал ненулевый, или 0 (FALSE), когда входной сигнал строго равен нулю.

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

Примечание.В редакторе Simulink, на вкладке Debug, меню Information Overlays предлагает опции для отображения свойств сигнала и порта на блоке.

Логические сигналы в Simulink

®

Можно иметь Simulink использовать логические или двойные значения для входов и выходов блока Logical Operator, используя следующие шаги.

1. Чтобы открыть диалоговое окно Параметры конфигурации, в редакторе Simulink, на вкладке Моделирование, выберите Настройки модели.

2. Перейдите на страницу Оптимизации в диалоговом окне Параметры конфигурации.

3. Смотрите, что логические сигналы реализации как логические данные (против double) параметр был включен. Эта оптимизация сообщает Simulink, следует ли разрешать передачу сигнала, тип данных которого двойной точности, в блоки, поддерживающие логический тип данных, и из них.

4. Нажмите кнопку OK в диалоговом окне Параметры Конфигурации.

Имея блок Data Type Conversion после блока Discrete Pulse Generator, вы избегаете ошибки, указывающей, что блок Logical Operator ожидает логический входной сигнал.

Объедините блок и альтернативно включите подсистемы

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

1. Откройте диалоговое окно блока Merge, дважды кликнув по блоку.

2. Задайте Количество входов как количество включенных подсистем, выходы которых необходимо объединить. В этом случае вы хотите задать * Количество входов * равным 2.

3. Оставьте поле Initial output пустым, чтобы указать, что блок Merge устанавливает свой начальный выход на начальное значение одного из его входных сигналов. В этом случае выход будет исходным значением подсистемы, которая включена, когда симуляция начинается.

4. Закройте диалоговое окно блока Merge.

5. Соедините выход двух условно выполненных подсистем с входами блока Merge.

Как и прежде, когда вы запускаете симуляцию, выход блока Merge является значением любой выполняемой по условию подсистемы, выполняемой в любой момент времени.

Интересная функция: программно изменяя цвет фона блока

Когда вы запускали симуляцию, вы должны были заметить, что цвет выполняющихся в данных моментов, выполняющих условно подсистемы, изменился. Это происходит не автоматически для всех условно выполняемых подсистем. Это было достигнуто с помощью S-функции и кода MATLAB ®!

Если вы откроете одну из включенных подсистем, дважды кликнув по блоку в схеме Simulink, вы увидите, что он содержит следующее.

1. Блок Enable, который делает эту подсистему условно выполненной и добавляет входной порт для сигнала управления

2. A Level-2 ФАЙЛА MATLAB Блока s-function, который запускает ФАЙЛ MATLAB S-функцию mergefcn.m

На каждом временном шаге выполняется подфункция S-функции mdlUpdate. Он устанавливает свойство BackgroundColor подсистем на основе того, выполняется ли оно в данный момент или нет, следующей командой.

set_param ('mergedemo/Subsystem', 'BackgroundColor', 'green')

Для получения дополнительной информации о том, как записать файл MATLAB S-функции, смотрите документацию.