Simulink 仿真出现奇异解,可能提示着系统不稳定

我们知道,若有传递函数分母的零点在正半平面,那么这个系统是不具稳定性的,给它什么输入,它的输出都是发散的,就算给个阶跃函数它也发散。(注:常用阶跃函数做系统稳定性测试)

以及,闭环正反馈使系统趋于不稳定,闭环负反馈使系统趋于稳定,后者是我们常设计的。

最近做ADRC相关的论文仿真实现,在这个事情上得到了深刻的一课、

事情是这样的:

LADRC有三个参数,我要仿真的论文里面有一个参数是写错的,应该是把1写成了-1

这导致了系统不稳定,如果按它写的来,那么不论怎么改,系统都会震荡或发散

我当时还以为是我接错了,或者论文公式有错,还查了不少论文,比对RLESO的公式,然后还回过头去复习现控,尝试自己推导公式。然后还以为是saturation的上下限问题(有一次把下限写成了正的,但这仍不是真正的问题所在)。

一直到很后面,我想到那句“正反馈使系统趋于不稳定”,才注意到,问题可能在b0是-1上。

把b0改成1,果然问题解决,虽然此时已经开销了我很长时间。

事情的开头,报了一个错:

传递函数出现了分母为0的情况,

我的第一反应是加了个saturation,这个模块有个过零检测,我们在很多官方模块里面都能看到这个模块被放在积分器前。防止了分母为零情形,以为这就成功debug了

这一加上去,仿真过零的问题是解决了,但是出现了新的问题,我啥都没干,这个系统的输出也是发散的,就算给个阶跃,给个恒定,它都发散,之后很长一段时间不论我怎么调整系统,怎么找问题,都没能解决输出发散震荡的问题

甚至把我的被控模型加到师兄的控制器上,把我的控制器加到师兄的被控模型上,都没有这个发散的情况。

后来反复交叉试验,一个个组件对替,认为问题是出在RLESO1上——肯定是没接错的,已经核对过非常多遍了,那应该就是参数有问题吧

于是我想到,正反馈使系统发散,而我已经核对过很多次我没有接反把控制器弄成正反馈,那应该就是这个文章的问题了

GPT-4o帮助了我思考

虽然浪费了很多时间,但我对稳定性和稳定性分析的认识深刻了很多

仿真出现奇异解,可能提示着系统不具稳定性——这个情况,意思就是传递函数出现0分母,那有可能是系统有一个特征根在正平面,这是系统不稳定的定义。

其实那些官方模块,比如PID,加个saturation是因为要让发散的情况,也就是有问题的情况,可以呈现出来。当出现奇异解,就说明系统可能存在固有的问题,并不是加个saturation掩耳盗铃就能把问题解决,除非你就是要呈现病态的结果。

用加saturation的方式来解决传函分母过零,结果卡了我个把月,真是深刻的教训啊

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值