Simulink的Switch模块只支持根据控制输入(u2)从数据输入(u1、u3)中二选一进行输出。
实际工程应用中,经常会遇到需要从多个输入中选择输出的场景,可以通过以下几种建模方式实现:
Switch模块串联
前一个Switch模块的输出作为后一个Switch模块的输入
Multiport Switch模块
设计索引控制信号,根据索引值从多个输入信号中选取对应信号作为输出
Merge模块搭配多个Enabled Subsystem模块
此方式适用于各种复杂控制场景,在多个Enabled Subsystem模块分别计算多个输入,通过Merge模块选择输出。
建模时通常在前置状态机中管理状态信号,并使用Relational Operator模块、Logical Operator模块等模块进行判定计算后作为Enabled Subsystem模块的触发信号。
也可以使用Switch Case模块替代Relational Operator模块、Logical Operator模块输出触发信号。
最终通过Merge模块输出最近更新的信号。基于Merge模块自身的特点 ,上述Enabled Subsystem模块的触发信号必须为互斥的,也就是同一周期,只允许触发一个子系统进行计算。
如果同时触发多个子系统,仿真和生成代码时可能并不会报错,但控制逻辑将紊乱。