初用PID的一点认识

PID全称比例(proportion)-积分(integral)-微分(derivative)控制器,个人理解,说的通俗点就是根据目前及之前的状态算出P I D三个量来决定输出的大小。
实际使用都是一段时间采样一次,对象是离散的值,所以计算并不难,如下:

假设系统开始采样的数据为X1,X2,X3.....+Xk
P就是当前的误差大小,记为ek=Set-Xk   Set为当前设定的值  Xk就是当前测出来的值

I就是从开始到现在误差的累加,Sk=e1+e2+....+ek

D就是变化率,dk=ek-e(k-1)

这三个量的计算不是难事,但是输出Out(k)=Kp*ek+Ki*Sk+Kd*dk  还需要三个常数来确定PID三个量的权重,这三个常数就是需要慢慢调试的
调试三个量需要了解其作用。
先说说准备工作,输出的模块需要先调试好,规定正方向,输入大于零往正方向调,小于零往负方向调,这样就保证了比例P的输出始终是往设置的状态靠近,这也就是P的作用。
I是积分,其作用是得知目前为止系统的输出造成误差的累积是如何的,然后着力于消减这个误差,所以具有使系统误差趋于零的作用。若累加误差过大,可以考虑限幅。
D是微分,这个最好理解,ek-e(k-1)=x(k-1)-x(k)=-△x/△t   △t即为采样间隔时间, 可知,微分用于抑制相对于设定状态的任何变化。

PID三个量的大小算出来是差距很大的  所以三个常数的大小也都差距很大,目前我做的  一般Kp在个位数到十位数之间   而Ki一般是小数,0.几 1。几都有可能  Kd一般较大  几千几百都有可能,得看你d的大小
对于平衡小车 倒立摆  之类的题,一般无需积分i PD即可

还有一种增量式PID,名字听起来高大上,其实是自然而然的事情,如果输出模块有记忆上次输出的功能(就是给它设定输出值之后,哪怕不给输出,也会保持上次的输出),所以输出只要给变化量就行了,Dout=Out(k)-Out(k-1)

调试三个参数的经验我也没多少,目前仅有的经验是,观察PID的数据  先确定三个常量的数量级,再细调。

 

猜你喜欢

转载自blog.csdn.net/sinat_30457013/article/details/89383604