一个逻辑执行子系统属性启用时,块在当前时间步上运行一次或多次控制块.控制块实现了类似于编程语言语句(如if-then、switch、while、for)所表达的控制逻辑。
选择器子系统是一种逻辑上执行的子系统,它在一个时间步长中执行一次,以响应来自子系统外部控制块的动作信号。万博1manbetx动态仿真模块®万博1manbetx支持两种选择器子系统结构,if-else和switch-case。
If动作子系统块是一个子系统块,被预先配置为创建一个子系统的起点,该子系统的执行由如果块。
一个外部如果块控制执行。If块对逻辑表达式求值,然后根据求值的结果,将操作信号输出到If动作子系统块。
考虑下面的模型。要打开模型,请参见ex_if_block
.
在这个模型中,的输入如果块为表示为输出端口的逻辑表达式提供操作数值。每个输出端口连接到一个If动作子系统块。中的表达式如果块自顶向下求值如果
表达式。当表达式求值为true时,其对应的If动作子系统执行,其余表达式不求值。
的if - else模型中的结构可以用下面的伪代码表示。
IF u1 > 0 THEN子系统1 ELSEIF u2 > 0子系统2 ELSE子系统3 END IF
要创建示例模型,请使用以下过程。
一个地方如果块在Simulink编辑器万博1manbetx。双击块,打开块参数对话框。
在输入数量框中,输入2
.
将两个输入端口添加到块中。输入端口用于包含操作数值的信号,而不需要操作数的数量。输入信号可以是矢量。例如,你可以在表达式中指定向量u的第五个元素为U (5) > 0
.
在如果表达式文本框,输入U1 > 0
.
输出端口被添加到带标签的块中If (u1 > 0)
.端口是惟一需要的输出如果块。
在Elseif表达式文本框,输入U2 > 0
.
可以输入多个elseif表达式,以“,”分隔。属性中添加一个输出端口如果块,使用窗体的标签elseif(表达)
.
检查显示其他条件复选框。
输出端口被添加到带标签的块中其他的
.
添加三个If动作子系统块。
这些方块是子系统的块。行动的港口块。当你放置行动的港口块中,一个名为Action的输入端口被添加到块中。
连接每个输出端口如果的动作端口If动作子系统块。
的图标If动作子系统块被重命名为附加到它的表达式的类型。
在每一个If动作子系统block,输入要为它处理的条件执万博1manbetx行的Simulink块。
连接输出If动作子系统块到合并块。
运行一个模拟。
动作信号线之间如果Block和If动作子系统块从实线变为虚线。
请注意
所有的块If动作子系统由If块驱动的块必须以与驱动块相同的速率运行。
的开关案例动作子系统block是一个子系统块,被预先配置为创建子系统的起点,该子系统的执行由开关情况块。
一个外部开关情况块控制执行。的开关情况Block计算case索引,然后根据所选case,将操作信号输出到开关案例动作子系统块。
考虑下面的模型开关结构。要打开模型,请参见ex_switch_case_block
.
在这个模型中,的输入开关情况块提供用于选择表示为输出端口的案例的索引值。每个输出端口连接到一个If动作子系统块。当选择一个案例时,其对应的If动作子系统是执行。
的开关模型中的结构可以用下面的伪代码表示。
CASE u1 u1 = 1: subsystem_1 break u1 = 2或3:subsystem_2_3 break u1 = OTHER VALUES: subsystem_default break END CASE
要创建示例模型,请使用以下过程。
放置一个开关情况块在Simulink编辑器万博1manbetx。双击块,打开块参数对话框。
在情况下条件框中,输入{1, 2, 3]}
.
定义了两种情况。输入值为时的第一种情况1
,当输入值为时,为第二种情况2
或3.
.case可以是单值或多值,并作为输出端口显示在开关情况块。非整数输入值被截断为整数。
选择显示默认情况复选框。
输出端口默认值:
被添加到块中。如果没有选择其他情况,该端口将发送动作信号。
添加三个开关案例动作子系统块。
这些方块是子系统的块。行动的港口块。当你放置行动的港口块中,一个名为Action的输入端口被添加到块中。
连接每个输出端口开关情况的动作端口开关案例动作子系统块。
的图标开关案例动作子系统块被重命名为附加到它的表达式的类型。
在每一个开关案例动作子系统block,输入要为它处理的案例执万博1manbetx行的Simulink块。
运行一个模拟。
动作信号线之间开关情况Block和开关案例动作子系统块从实线变为虚线。
请注意
的子系统执行后,隐含的中断将终止开关情况块。万博1manbetx动态仿真模块开关情况block不表现出C的fall -through行为开关
语句。