В этом примере показано, как использовать условно выполняемые подсистемы и блок Merge, чтобы объединить два входных параметров в один выход. Выходное значение блока Merge в любое время равно последний раз вычисленному выходу своих ведущих блоков.
Используйте блоки Слияния, чтобы чередовать входные сигналы, которые обновляются в разное время в объединенный сигнал, в котором чередованные значения сохраняют свою раздельную идентичность и времена. Чтобы объединить сигналы, которые обновляются одновременно в массив или матричный сигнал, используйте Векторную конкатенацию, блок Matrix Concatenate.
Левая сторона модели содержит два блока, Повторяющие блоки Последовательности из библиотеки Simulink Sources. Каждый блок генерирует скалярный выходной сигнал формы, отображенной на значке блока.
Эти два сигнала вводятся в различные Enabled блоки Subsystem, которые обрисованы в общих чертах с толстыми линиями.
Сигнал, сгенерированный блоком Pulse Generator, управляет активированным (или условно выполняемый) подсистемы.
Этот блок выводил переключатели между значениями нуля и один каждые пять секунд. То, когда выход блока Discrete Pulse Generator положителен, верхняя часть включила подсистему, симулирует. То, когда выход блока Discrete Pulse Generator является нулем, нижняя часть включила подсистему, симулирует.
Обеспечивать нижнюю часть позволило подсистеме симулировать, когда блок Discrete Pulse Generator, выход является нулем, выход, передается через набор блока Logical Operator НЕ оператору. Блок NOT выводит значение того, когда его вход является нулем.
Выходные параметры двух активированных подсистем вводятся в блок Merge.
Блок Scope отображает блок Merge выход.
Запустите симуляцию, чтобы видеть выход блока Merge на Осциллографе. Заметьте, что тип формы волны, показанной на Осциллографе, изменяется каждые пять секунд. Из-за поведения блока Merge, тип формы волны, показанной на Осциллографе, изменяется каждые пять секунд.
Этот пример блока Merge содержит две условно выполняемых подсистемы.
Условно выполняемая подсистема является подсистемой, которая только выполняется время от времени во время симуляции, когда определенные условия соблюдают. В этом случае подсистемам включают подсистемы, которые отличают их значки и дополнительный входной порт на верхней части или нижней части блока.
Сигнал, питающийся в дополнительный порт, называется управляющим сигналом. Значение этого сигнала обеспечивает условие, которое определяет, выполняется ли подсистема или нет, в любой момент времени продвиньтесь. Enabled подсистемы выполняются, когда управляющий сигнал строго положителен.
В этом примере вы хотите выполнить одну из активированных подсистем, когда управляющий сигнал положителен, и другой, когда управляющий сигнал является нулем. Можно сделать это при помощи блока Logical Operator.
Блок Logical Operator предоставляет метод для слияния логических операторов и булевых сигналов в вашу модель.
Откройте блок Logical Operator, чтобы видеть различные типы операторов. Текущая установка НЕ возвращается 1 (или TRUE), когда входной сигнал является ненулевым, или 0 (FALSE), когда входной сигнал является строго нулевым.
В этом примере используйте эту функцию, чтобы сгенерировать положительное значение, когда управляющий сигнал пойдет, чтобы обнулить путем поддержания текущей установки оператора НЕ и закрытие диалогового окна.
Примечание: В Редакторе Simulink, на вкладке Debug, информационное меню Overlays предлагает опции для отображения сигнала и свойств портов на блок-схеме.
Вы можете иметь boolean использования 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 является значением того, что условно выполняемая подсистема выполняет в любом моменте времени.
Когда вы запускаете симуляцию, цвет выполняющегося в данного момента, условно выполняющего изменение подсистем. Этого не происходит автоматически для всех условно выполняющихся подсистем. Этот пример использует S-функцию и код MATLAB®, чтобы изменить цвет фона блока.
Чтобы видеть код, дважды кликните ту из активированных подсистем, чтобы открыть его.
1. Блок Enable делает это условно выполняемой подсистемой и добавляет входной порт для управляющего сигнала.
2. Блок s-function файла MATLAB Уровня 2 запускает S-функцию файла MATLAB mergefcn.m.
На каждом временном шаге, S-функция mdlUpdate
подфункция выполняется. Это устанавливает свойство BackgroundColor подсистем на основе того, является ли это выполняющимся в данным моментом, или нет, со следующей командой.
set_param ('mergedemo/Subsystem', 'BackgroundColor', 'зеленый')
Merge | Level-2 MATLAB S-Function