PID学习笔记——从定性到公式再到简单的PID调参方式

什么是PID

P(proportion 比例) I(integration 微分) D(differentiation 积分)控制

经典的PID控制框图为:

 

简单的理解,pid算法事实上是一个负反馈调节算法,是将系统目前值与期望值之间的误差,即距离我们所希望达到的预期所相差的部分作为函数的输入,对其进行一定的运算在加入原输入中,从而达到最终使得系统状态维持在我们所希望的位置。

比如将50度的水烧开到80度,我们所遇到的误差值就为80-50=30,此处的80就为我们的预期值,而这里的30就作为差值最后会输入到函数中,最终通过pid的控制我们会得到80度的水。

定性理解PID算法

我们此处定性的描述P、I、D三个值的作用。

P,比例,可以认为此项为简单粗暴的比例关系,其计算逻辑为给误差值(err)一个系数kp,然后将这个乘积与原值相加,使得系统不断地向预期值接近,这一过程将随着每一次原值的更新而不断迭代,直到达到预期值。比如在烧水的例子里,我们对水的加热力度会随着水温的升高而改变,使水的温度向80度逼近,换句话说,当err越大时,P的调节效果会越剧烈。

I,积分,此项在离散的系统中为累加,他可以使得在小误差范围内,当前值向预期值接近。在实际控制过程中,会出现一个“阻尼”,使得P的控制没有办法很好地靠近预期值,网上一个很形象的描述就是烧水的时候如果在70度时加热和散热的热量相同了,那么水将会停留在70度,此实P的控制将会在实际意义上不产生任何效果(因为吸热和散热已经抵消),此时就需要这么一个量,这个量将会是在之前迭代过程中的误差值之和再乘一个系数ki,这样以来,即使P已经回天乏术,加上新的控制量后(因为随着迭代次数的增加,我们的原值会继续向着预期值靠近),我们的水温还是会逐渐升高。

D,微分,此项可以理解为系统的变化趋势(导数值)乘一个系数kd,对系统施加一个相反的效果;此项在离散系统中体现为差分运算,即当前状态与上一个状态的差值乘一个kd的系数,这一项的作用体现在修正作用上,相当于给了系统一个阻尼,当系统在P的作用下越过了预期值时,D将会向反方向将系统拉回来。假如加热超过了80度,然后此时水温将在80度上下震荡,因为低于80度了加热的太猛超过了,高于80度降温得太猛又下去了,此实我们引入D,D将会向反方向抵消P的效果,最终使得系统稳定在预期值,即在80度时停止震荡。

经典PID公式

下面从公式的角度进行分析:

PID的公式为:

$$
U(t)=k_{p} \left ( err\left ( t \right )+\frac{1}{T_{i} } \int err\left ( t \right )\mathrm{d}t +\frac{T_{d}\mathrm{derr\left ( t \right )} }{\mathrm{d}t } \right )
$$

公示打开后可以变成:

$$
U(t)=k_{p}err\left ( t \right )+\frac{k_{p}}{T_{i} } \int err\left ( t \right )\mathrm{d}t +\frac{k_{p}T_{d}\mathrm{derr\left ( t \right )} }{\mathrm{d}t }
$$

三个系数可以简化为:

$$
U(t)=k_{p}err\left ( t \right )+k_{i}\int err\left ( t \right )\mathrm{d}t +\frac{k_{d}\mathrm{derr\left ( t \right )} }{\mathrm{d}t }
$$

其中kp为比例项的系数,ki为积分项的系数,kd为微分项的系数,这三个系数的值就为我们需要调节的参数,即P、I、D的值。

我们可以认为在采样周期为T时,系统为离散系统,此实上述的PID公示变为:

$$
U(t)=K_{p}e(k)+\frac{K_{p}T}{T_{i}} \sum_{n=0}^{k} e_{n}+\frac{K_{p}T_{d}}{T}\left ( e(k)-e(k-1) \right )
$$

此时我们可以定义:

$$
K_{P} = K_{p}
$$

$$
K_{I}=\frac{K_{p}T}{T_{i}}
$$

$$
K_{D}=\frac{K_{p}T_{d}}{T}
$$

所以此时离散状态下的PID可以简化为:

$$
U(t)=K_{P}e(k)+K_{I}\sum_{n=0}^{k} e_{n}+K_{D}\left ( e(k)-e(k-1) \right )
$$

同样此时该公式前面的三个系数为我们所需要调节的。

简单的PID参数调节方式

PID参数调节方式:

我们在使用PID时,单独使用一个是没有意义的,PI一般情况下用于追求稳定的系统,I的累计误差会使得系统最后的值趋于预期值,PD一般用于追求快速响应的系统,由于D值的阻尼作用,P值可以采用激进一些的策略来逼近预期值;而PID则用于即追求稳定性,又需要快速响应的系统。一般来说,PID中参数越多越难调节,在这里根据网上的学习,稍微总结了一下调参的规律:

1、对于PI系统的调节:

1.1 P偏小一些,系统会在稳定时一直在目标值之下,此时将I的值逐渐从0开始增大,可以使得系统缓慢的趋于目标值,这种方法会使得最后稳定的输出在预期值之下,从而达到稳定的调节效果,不会产生过冲现象。

1.2 P偏大一些,系统会在一开始冲过目标值(过冲),但是只要P的值没有大到令人发指的地步,最后还是会趋于稳定,相比于1.1的值,系统达到稳定的时间会更快一些。

因此在PI系统的调节过程中,可以采用现采用较小的P值,然后逐渐增大I值的慢速响应调节方式,也可以采用适当调大P,允许系统有一定程度的过冲的较为快速的调节方式。

注意!若I值过大,系统会出现抖动的现象难以收敛。

2、对于PD系统的调节:

PD系统一般应用于大惯性系统中,笔者的理解为容易发生较大数值变化的系统,比如急刹车的情形,在PD的调节过程中,首先也是调节P,调节一个较大的P,产生一定程度的过冲,然后再从0开始逐渐增大D的数值,直到找到一个合适的D值。

注意!若D值过大,反而会引起系统的震荡!

3、对于PID系统的调节:

首先按照PI系统的调节方式,即先调P再调I,注意此处的P值给的稍大一些,要使系统有一定的过冲再趋于稳定,最后调节D,将系统的过冲补偿掉,最后得到快速响应且稳定的系统。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值