Блок logically executed subsystem запускается один или несколько раз на шаге текущего времени, когда включено control block. Блок управления реализует управляющую логику, похожую на выраженный оператором языка программирования (например, если затем, переключатель, в то время как, для).
Селекторные подсистемы являются одним типом логически выполняемой подсистемы, которые выполняются однажды во время временного шага в ответ на сигнал действия от блока управления, расположенного внешний к подсистеме. Simulink® поддерживает две селекторных структуры подсистемы, если еще и случай переключателя.
Если блок Subsystem Действия является блоком Subsystem, предварительно сконфигурированным как начальная точка для создания подсистемы, выполнение которой включено блоком If.
Внешний блок If управляет выполнением. Если блок выполняет логическое выражение и затем, в зависимости от результата оценки, выводит сигнал действия с блоком If Action Subsystem.
Рассмотрите следующую модель. Open model
.
В этой модели входные параметры с блоком If вводят значения операнда для логических выражений, представленных как выходные порты. Каждый выходной порт присоединен к блоку If Action Subsystem. Выражения в блоке If выполнены верхняя часть вниз начиная с if
выражение. Когда выражение оценивает к истине, ее соответствующий If Action Subsystem выполняется, и остающиеся выражения не выполнены.
Если еще структура в модели может быть представлена со следующим псевдо кодом.
IF u1 > 0 THEN Subsystem 1 ELSEIF u2 > 0 Subsystem 2 ELSE Subsystem 3 END IF
Чтобы создать модель в качестве примера, используйте следующую процедуру.
Поместите блок If в Редактор Simulink. Дважды кликните блок, чтобы открыть диалоговое окно параметров блоков.
В Количестве входного поля введите 2
.
Два входных порта добавляются к блоку. Входные порты для сигналов, содержащих значения операнда, не необходимые количество операндов. Входной сигнал может быть вектором. Например, вы могли задать Пятый элемент вектора u в выражении как u(5) > 0
.
В текстовом поле If expression введите u1 > 0
.
Выходной порт добавляется к блоку с меткой if(u1 > 0)
. Этим портом является единственный необходимый выход для блока If.
В текстовом поле Elseif expressions введите u2 > 0
.
Можно ввести несколько elseif выражений с запятой, разделяющей выражения. Каждое выражение добавляет выходной порт в блок If с меткой формы elseif(expression)
.
Еще проверяйте Показ флажок условия.
Выходной порт добавляется к блоку с меткой else
.
Добавьте три блока If Action Subsystem.
Эти блоки являются блоками Subsystem с блоком Action Port. Когда вы помещаете блок Action Port в подсистеме, входной порт под названием Действие добавляется к блоку.
Соедините каждый выходной порт от блока If до порта действия блока If Action Subsystem.
Когда вы устанавливаете связь, значок для блока If Action Subsystem переименован в тип выражения, которое присоединило к нему.
В каждом блоке If Action Subsystem введите блоки Simulink, которые будут выполняться для условия, которое он обрабатывает.
Соедините выходные параметры от блоков If Action Subsystem до блока Merge.
Запустите симуляцию.
Сигнальные линии действия между блоком If и блоками If Action Subsystem изменяются от тела до пунктирной линии.
Все блоки в блоке If Action Subsystem, управляемом, Если блок должен запуститься на том же уровне как ведущий блок.
Блок Switch Case Action Subsystem является блоком Subsystem, предварительно сконфигурированным как начальная точка для создания подсистемы, выполнение которой включено блоком Switch Case.
Внешний блок Switch Case управляет выполнением. Блок Switch Case оценивает индекс случая и затем, в зависимости от выбранного случая, выводит сигнал действия с блоком Switch Case Action Subsystem.
Рассмотрите следующую модель со структурой переключателя. Open model
.
В этой модели вход с блоком Switch Case вводит значение индекса для выбора случая, представленного как выходные порты. Каждый выходной порт присоединен к блоку If Action Subsystem. Когда случай выбран, его соответствующий If Action 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:
добавляется к блоку. Этот порт отправляет сигнал действия, если никакие другие случаи не выбраны.
Добавьте три блока Switch Case Action Subsystem.
Эти блоки являются блоками Subsystem с блоком Action Port. Когда вы помещаете блок Action Port в подсистеме, входной порт под названием Действие добавляется к блоку.
Соедините каждый выходной порт от блока Switch Case до порта действия блока Switch Case Action Subsystem.
Когда вы устанавливаете связь, значок для блока Switch Case Action Subsystem переименован в тип выражения, присоединенного к ней.
В каждом блоке Switch Case Action Subsystem введите блоки Simulink, которые будут выполняться для случая, который он обрабатывает.
Запустите симуляцию.
Сигнальные линии действия между блоком Switch Case и блоками Switch Case Action Subsystem изменяются от тела до пунктирной линии.
После того, как подсистема для конкретной ситуации выполняется, подразумеваемый пропуск отключает выполнение блока Switch Case. Simulink блоки Switch Case не показывает падение - через поведение switch
C операторы.