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

Левая часть этой модели содержит два блока Повторяющаяся последовательность (Repeating Sequence) из библиотеки Simulink Sources. Каждый блок генерирует скалярный выходной сигнал формы, отображаемой на значке блока.

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

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

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

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

Выходные данные блока объединения отображаются в области Simulink.

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

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

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

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

Можно открыть блок логического оператора для просмотра различных операторов, перечисленных в раскрывающемся меню. Текущая установка NOT возвращает 1 (или TRUE), когда входной сигнал ненулевой, или 0 (FALSE), когда входной сигнал строго нулевой.
В этом примере эту функцию можно использовать для генерации положительного значения при нулевом значении управляющего сигнала путем сохранения текущей настройки оператора NOT и закрытия диалогового окна.
Примечание.В редакторе Simulink на вкладке Debug меню Information Overlays предлагает опции для отображения свойств сигнала и порта на блок-схеме.

В Simulink можно использовать логические или двойные значения для входов и выходов блока логического оператора, выполнив следующие шаги.
1. Чтобы открыть диалоговое окно Параметры конфигурации (Configuration Parameters), в редакторе Simulink на вкладке Моделирование (Modeling) выберите Параметры модели (Model Settings).
2. Перейдите на страницу Оптимизация в диалоговом окне Параметры конфигурации.
3. Убедитесь, что включен параметр Implement logic signals as boolean data (vs. double). Эта оптимизация сообщает Simulink, следует ли разрешить передачу сигнала с двойным типом данных в блоки, поддерживающие логический тип данных, и из них.
4. Нажмите кнопку OK в диалоговом окне «Параметры конфигурации».
Наличие блока преобразования типа данных после блока генератора дискретных импульсов позволяет избежать ошибки, указывающей на то, что блок логического оператора ожидает логического входного сигнала.

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

1. Откройте диалоговое окно «Объединение блока», дважды щелкнув блок.
2. Укажите число входов в качестве количества включенных подсистем, выходы которых необходимо объединить. В этом случае необходимо установить для параметра * Количество входов * значение 2.
3. Оставьте поле Initial output пустым, чтобы указать, что блок Merge устанавливает начальный выход на начальное значение одного из своих входных сигналов. В этом случае выводом будет начальное значение подсистемы, которая включается при запуске моделирования.
4. Закройте диалоговое окно «Объединение блоков».
5. Подключите выход двух условно выполненных подсистем к входам блока слияния.

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

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


2. Блок S-функции Level-2 MATLAB-файла, в котором выполняется слияние S-функции файла MATLAB.

На каждом шаге времени выполняется подфункция S-function mdlUpdate. Он устанавливает свойство BackgroundColor подсистем в зависимости от того, выполняется ли оно в данный момент или нет, с помощью следующей команды.
set_param («mergedemo/Subsystem», «BackgroundColor», «green»)
Дополнительные сведения о записи S-функций файла MATLAB см. в документации.