根据前面两篇关于ADRC的文章以及PID原理的文章,我们可以利用ADRC的思想来对PID算法做一些改进来看看效果,可以将改进的PID称之为非线性PID。主要可以利用跟踪微分器,针对PID的两个缺陷来进行改进:即当初始误差较大时,PID算法容易产生超调与快速性之间的矛盾,可以使用跟踪微分器来对目标阶跃信号进行缓冲过渡;另外微分信号在实际中难以获得可靠的信号,因此也可以通过跟踪微分器产生目标信号与实际状态的微分信号来对PID算法进行改进。
改进的话,可以按照跟踪微分器的思想,去给初步的误差信号一个过渡曲线作为目标,并且给到过渡曲线的微分信号,在实际的状态反馈时,也按照增加跟踪微分器的思想,分解为过渡信号以及微分信号,当然,也可以按照自己的想法去随意组合,毕竟这个本身也就没有固定公式,我们可以看一下实际的对比,我使用一个简易的模块搭建了一下PID,然后根据上述的框图,做了一下跟踪微分器改进PID,之后我将最初的阶跃响应的上升时间都调的差不多,可以对照一下两者的波形,可以发现改进后的PID算法对于超调的抑制效果是比较明显的,这里肯定会有人会怀疑精调微调的区别啥的,这个自己做做模型测试一下即可。
上面用的是线性跟踪微分器,之后使用非线性跟踪微分器测试一下:
线性与非线性在这里区别不是很大,不过还需要自己在实际项目中再测试吧。关于跟踪微分器的内容可以查看我之前的文章:
关于PID原理的话,可以查看这一篇: