Блок logically executed subsystem запускается один или несколько раз на шаге текущего времени, когда включено control block. Блок управления реализует управляющую логику, подобную выраженному оператором языка программирования (например, если затем, переключатель, в то время как, для).
Селекторные подсистемы являются одним типом логически выполняемой подсистемы, которые выполняются однажды во время временного шага в ответ на сигнал действия от блока управления, расположенного внешний к подсистеме. Simulink® поддерживает две селекторных структуры подсистемы, если еще и случай переключателя.
Если блок Subsystem Действия является блоком Subsystem, предварительно сконфигурированным как отправная точка для создания подсистемы, выполнение которой включено Если блок.
Внешнее, Если блок управляет выполнением. Если блок выполняет логическое выражение и затем, в зависимости от результата оценки, выводит сигнал действия к Если блок Subsystem Действия.
Рассмотрите следующую модель.
В этой модели, входных параметрах к, Если блок обеспечивает значения операнда для логических выражений, представленных как выходные порты. Каждый выходной порт присоединен Если блок Subsystem Действия. Выражения в, Если блок оценен верхняя часть вниз начиная с выражения if
. Когда выражение оценивает к истине, ее соответствие, Если Подсистема Действия выполняется, и остающиеся выражения не выполнены.
Если еще структура в модели может быть представлена со следующим псевдо кодом.
IF u1 > 0 THEN Subsystem 1 ELSEIF u2 > 0 Subsystem 2 ELSE Subsystem 3 END IF
Чтобы создать модель в качестве примера, используйте следующую процедуру.
Поместите Если блок в Редакторе Simulink. Дважды кликните блок, чтобы открыть диалоговое окно параметров блоков.
В Количестве входного поля введите 2
.
Два входных порта добавляются к блоку. Входные порты для сигналов, содержащих значения операнда, не необходимые количество операндов. Входной сигнал может быть вектором. Например, вы могли задать Пятый элемент вектора u в выражении как u(5) > 0
.
В текстовом поле If expression введите u1 > 0
.
Выходной порт добавляется к блоку с меткой if(u1 > 0)
. Этим портом является единственный необходимый вывод для Если блок.
В текстовом поле Elseif expressions введите u2 > 0
.
Можно ввести несколько elseif выражений с запятой, разделяющей выражения. Каждое выражение добавляет выходной порт в Если блок с меткой формы elseif(expression)
.
Еще проверяйте Показ флажок условия.
Выходной порт добавляется к блоку с меткой else
.
Добавьте три Если блоки Subsystem Действия.
Эти блоки являются блоками Subsystem с Блокировкой порта Действия. Когда вы помещаете Блокировку порта Действия в подсистеме, входной порт под названием Действие добавляется к блоку.
Соедините каждый выходной порт от Если блок к порту действия Если блок Subsystem Действия.
Когда вы устанавливаете связь, значок для, Если блок Subsystem Действия переименован к типу выражения, которое присоединило к нему.
В каждом, Если блок Subsystem Действия, введите блоки Simulink, которые будут выполняться для условия, которое он обрабатывает.
Соедините выходные параметры от Если блоки Subsystem Действия к блоку Merge.
Запустите симуляцию.
Сигнальные линии действия между, Если блок и, Если блоки Subsystem Действия изменяются от тела до пунктирной линии.
Все блоки в, Если блок Subsystem Действия, управляемый, Если блок должен запуститься на том же уровне как ведущий блок.
Блок Subsystem Действия Случая Переключателя является блоком Subsystem, предварительно сконфигурированным как отправная точка для создания подсистемы, выполнение которой включено блоком Switch Case.
Внешний блок Switch Case управляет выполнением. Блок Switch Case оценивает индекс случая и затем, в зависимости от выбранного случая, выводит сигнал действия к блоку Subsystem Действия Случая Переключателя.
Рассмотрите следующую модель со структурой переключателя.
В этой модели вход к блоку Switch Case обеспечивает индексное значение для выбора случая, представленного как выходные порты. Каждый выходной порт присоединен Если блок Subsystem Действия. Когда случай выбран, его соответствие, Если Подсистема Действия выполняется.
Структура переключателя в модели может быть представлена со следующим псевдо кодом.
CASE u1 u1 = 1: subsystem_1 break u1 = 2 or 3: subsystem_2_3 break u1 = OTHER VALUES: subsystem_default break END CASE
Чтобы создать модель в качестве примера, используйте следующую процедуру.
Поместите блок Switch Case в Редактор Simulink. Дважды кликните блок, чтобы открыть диалоговое окно параметров блоков.
В поле Case conditions введите {1, [2,3]}
.
Заданы два случая. Первый случай, когда входным значением является 1
и второй случай, когда входным значением является 2
или 3
. Случаи могут быть одним или многозначными и появиться как выходные порты на блоке Switch Case. Входные значения нецелого числа являются усеченными к целым числам.
Установите флажок Show default case.
Выходной порт маркировал default:
, добавляется к блоку. Этот порт отправляет сигнал действия, если никакие другие случаи не выбраны.
Добавьте три блока Subsystem Действия Случая Переключателя.
Эти блоки являются блоками Subsystem с Блокировкой порта Действия. Когда вы помещаете Блокировку порта Действия в подсистеме, входной порт под названием Действие добавляется к блоку.
Соедините каждый выходной порт от блока Switch Case до порта действия блока Subsystem Действия Случая Переключателя.
Когда вы устанавливаете связь, значок для блока Subsystem Действия Случая Переключателя переименован к типу выражения, присоединенного к ней.
В каждом блоке Subsystem Действия Случая Переключателя введите блоки Simulink, которые будут выполняться для случая, который он обрабатывает.
Запустите симуляцию.
Сигнальные линии действия между блоком Switch Case и блоками Subsystem Действия Случая Переключателя изменяются от тела до пунктирной линии.
После того, как подсистема для конкретной ситуации выполняется, подразумеваемый пропуск отключает выполнение блока Switch Case. Блоки Случая Переключателя Simulink не показывают падение - через поведение операторов C switch
.