我们在使用simulink subsystem子系统时,经常会用到条件使能子系统,如if else、switch case。在使能条件跳转时,子系统内部很多变量根据不同的需求,可能要求保持上一使能时的最后时刻的值,也可能要求恢复初值,以便再进入此条件时使用。可以通过修改使能控件的参数来完成上述功能:用下图的参数states when executions is resumed: reset / held 来调节。
以if else 使能子系统为例,简易的模型如下图:delay模块的初值为0
当参数设置为held 时,两次进入这个累加器的表现如下图。当再次进入该模块时,delay模块记录的为上一次进入模块的终值,累加时从上次的终值开始累加。
当参数设置为reset时,再次进入子模块,delay模块变为了初始值0开始累加,所以完成了重置。表现如下图:
补充: 如果嵌套的subsystem较多时,每层的使能模块参数只能held或reset本层的状态,不能保持或重置内部子模块的状态。