本人第一次在simulink中使用s-function,发现出现了如下的错误:
而且不是一开始就报错,而是运行了一段时间再报错。一开始的报错信息还有代数环,然后也被误导查了很多代数环的东西,发现代数环的问题解决了,但仍旧会报这个错。
我的结构如下(非常简单):
然后我查看了两个输出,发现有一个输出变为了0之后,这个仿真就开始报错。我觉得这应该不是巧合。
又查了网上很多资料,发现基本都是在问这个问题,很少有回答的。
最后,是这个十分简略的回答提醒了我:
我联想到,我的s-function在求导环节有用到开根号,如下所示:
我恍然大悟,因为还没有加上控制系统,导致本来应该是非负的状态变量有可能变成负数,导致根号开不出来,或者说开出来是复数,因此出现了一开始的错误。于是我把注释部分加上去,果然问题解决了。