Эта модель показывает следующие концепции 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 (или ВЕРНЫЙ), когда входной сигнал является ненулевым, или 0 (FALSE), когда входной сигнал является строго нулевым.
В этом примере можно использовать эту функцию, чтобы сгенерировать положительное значение, когда управляющий сигнал идет, чтобы обнулить путем поддержания текущей установки оператора НЕ и закрытие диалогового окна.
Примечание: можно отобразить тип данных каждого сигнала путем проверки команды Типов Данных порта в меню Display> Signals & Ports схемы Simulink.
У вас есть опция, чтобы иметь Simulink, чтобы использовать булевскую переменную или двойные значения для вводов и выводов блока Logical Operator, с помощью следующих шагов.
1. Откройте диалоговое окно Configuration Parameters путем выбора команды Параметров конфигурации из меню Simulation.
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, см. документацию.