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

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

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

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

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

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

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

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

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

Вывод блока Merge отображен на Осциллографе Simulink.

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

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

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

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

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

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

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

Блок Logical Operator в Simulink дает вам метод для слияния логических операторов и булевых сигналов в вашу схему Simulink.

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

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

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

Булевы сигналы в Simulink®

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

1. Чтобы открыть диалоговое окно Configuration Parameters, в Редакторе Simulink, на вкладке Modeling, выбирают Model Settings.

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

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

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

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

Блок слияния и альтернативно включение подсистем

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

1. Откройте диалоговое окно блока Слияния путем двойного клика по блоку.

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

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

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

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

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

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

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

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

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

2. Блок s-function файла MATLAB Уровня 2, который запускает S-функцию файла MATLAB mergefcn.m

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

set_param ('mergedemo/Subsystem', 'BackgroundColor', 'зеленый')

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