matlab笔记——simulink子模块数据重置问题

我们在使用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本层的状态,不能保持或重置内部子模块的状态。


版权声明:本文为tianwailaike_原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。