《自抗扰控制技术》——第三遍(单片机)

感想

经过前两遍的学习,大概知道了ADRC的原理和基本形式,但是最重要的一步还是“根据具体问题,调节控制参数”,进行这一步的工作时,心情就像下面这张图一样【2】。
在这里插入图片描述

需要解决的问题

1:实现控制功能

①fal函数:
整个算法的框架中,唯一复杂一点的操作就是要进行根号运算。网上搜到了大神分享的成果【3】,完全看不懂,无法理解其中的思想和逻辑,只能直接拿来用…其它算法部分,参考书上P264的内容,就很好实现了.。

②运行时间:
在总线为80MHz的情况下,通过IO翻转,测试整个ADRC算法需要的运行时间,大概为250uS左右,还是可接受的。

③确定“过渡过程”的参数:
在这里插入图片描述
v0是控制目标,确定了就不用调整了;
h是采样时间,越小越精确,那当然取最小;
剩下的就是r0了,因为过渡过程与控制是无关的,只是“理想的被控对象的变化轨迹”。通过增大r0,可以减小过渡时间,具体增大到多少,如果没有硬性指标,就看自己的感觉了
在这里插入图片描述
在这里插入图片描述

④确定“估计状态和扰动”的参数
在这里插入图片描述

β01,β02,β03的取值就不是很明白了。目前只知道β01不能太大,不然会溢出;β02,β03的取值范围似乎很广
在这里插入图片描述
在这里插入图片描述
当然,这两张图对应的其他控制参数也不一样,所以实际的控制效果也不一样,但不管控制效果如何,z1都能比较准确地跟踪被控目标的实际值。另外,也能发现这组参数并不是越大越好。
PS:书上有很多地方都给出了推荐的公式,有很多是针对线性扩展状态观测器的,如P209,但我的这个被控对象很明显是非线性的,因此就没有去尝试,下次有机会还是应该试试
针对标准扩展状态观测器的情况,P228给出了具体例子的推荐公式,但又说δ取大时,参数β02,β03应该增大很多,这就又让我不知道如何是好了,所以最后只能大概确定β01,β02,β03的量级,然后根据实际效果,凭感觉调了

⑤确定“误差反馈”的参数
在这里插入图片描述
参数r代表了反馈系统的最大加速度(P117),只要参数r足够大,都能彻底抑制扰动(P141),调试下来也是这样,就像④里的两张图,只有r足够大时,v1-实际,才能与v1(过渡过程)比较接近。

到这里可以算是“大概”实现了控制功能,毕竟v1-实际已经能被控制到目标值了,但并不能跟上一开始的过渡过程,而且这个时候施加扰动,v1-实际的波动会很大,所以还是得继续调整。

⑥缩小v1与z1的差距
由于输出量u=u0-z3,u0在稳态时应该为0,所以实际上都得靠z3,而z3=z3 +h(-β03.fe1),所以就想到应该增大β03看看,效果显著
在这里插入图片描述

但增大β03也会带来副作用,那就是输出量u的波动会变得很大,v1-实际的波动也就不会小了;用PID控制时,稳态情况下,v1-实际和u几乎都是一条直线(但是一开始存在很严重的超调)
在这里插入图片描述
上面的应该就是高频颠振了吧,为了避免这种情况的发生,才将非光滑反馈给为fal函数的,所以应该修改这里的参数了,书上标准形式下δ = h,但这里视乎需要增大几千倍
在这里插入图片描述
在这里插入图片描述

2:增强抗干扰的能力

上面都是静态情况下的表现,下面就要看看动态情况下的效果了,也就是看看抗干扰能力到底怎么样?
在这里插入图片描述
还得继续调啊…
经过几十次的调试后,摸索出了一些规律
增强抗干扰能力:
①增大β03,但没必要同时增大β02
②减小δ
③增大r
④减小滤波因子h1
减轻高频颠振:
①增大δ
②增大滤波因子h1
③增大阻尼因子c
这就是一个碰运气的环节了,多次尝试后,得到了较理想的控制效果(动态工况下,比原来的PID控制效果好)
在这里插入图片描述

3:提高软件的适用范围

把调好的程序,下载到随机挑选的5个产品中,结果心又凉了一大截,3/5的控制效果都不好…
在这里插入图片描述
没办法,只能换表现最差的那个,重新开始调参数…主要是减小β03和β02,增大c
终于这5个产品的控制效果基本一致了!
在这里插入图片描述
就在我满心欢喜以为搞定了的时候,又换了5个新的产品,结果只有1/5的产品能够达到上面的控制效果,其它的都一塌糊涂…

小结

总的来说,adrc算法实现了控制功能,控制效果可以比PID好,但控制精度没有预期的那么好,通用性也不算太好(可能是我的期望太高了,但更可能是因为参数还没有调到位!)
还有很多问题没有搞清楚,比如b0的取值;静态工况不同初始条件下的控制效果也不一样;哪些参数决定了被控对象的控制范围…
希望碰巧看到这篇博客的朋友们,能够给点灵感!调试过ADRC算法的大哥们,能给点指导!

参考资料

【1】韩京清 . 自抗扰控制技术 : 估计补偿不确定因素的控制技术 [M]. 国防工业出版社 , 2008.
【2】程序员真是太太太太太有趣了!!!
【3】快速开平方根算法:https://blog.csdn.net/xtlisk/article/details/51249371

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值