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