此报错信息可能是由系统中的奇点引起的。
产生这种奇点的原因之一是,状态变量的值在一个步长内变化很大。此时,状态变量的值在两个状态之间“跳变”,Simulink 求解器将很难在容差范围内找到合适的步长。
要检查是否属于这种情况:
1. 返回并查看系统的状态变量值,具体方法为:
a)菜单栏选择:Simulation -> Configuration Parameters
b)选择 Data Import/Export -> Save to Workspace -> States,并将其保存为 output。
2.运行模型
3.绘制状态变量曲线:
plot(tout,xout)
从而查看是否有一个状态变量在某一个步长中(通常是曲线末尾)变化非常快。
有一些方法可以改善这种情况。如果可能,您可以重新建模(例如增加状态变量的阶数,即将原本忽略的某些高阶系统还原),从而使得状态变量不会跳变。
此外,您还可以为系统中的积分器块(integrator)设置特定的容差。更为详细的信息,请执行:
doc integrator
并参阅“Specifying the Absolute Tolerance for the Block's Outputs”标题下的内容。