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