PID解释与离散化算法公式
一、PID解释
1、PID含义解释:P是Proportion,比例的意思,I是Integral,积分意思,D是Differential,微分的意思。
2、PID第一种通俗解释:以有一个水缸有点漏水(而且漏水的速度还不一定固定不变),通过加水让水维持在要求水面高度的某个位置,一旦发现水面高度低于要求水面高度的某个位置,就要往水缸里加水的例子来说明PID含义。 如:小家伙接到任务后就一直守在水缸旁边,时间长就觉得无聊,就跑到房里看小说了,每20分钟来检查一次水面高度。因水漏得太快,每次小家伙来检查时,水都快漏完了,离要求的高度相差很远。于是小家伙改为每5分钟来检查一次,结果每次来水都没怎么漏,不需要加水,来得太频繁做的是无用功。几次试验后,确定每10分钟来检查一次。这个检查时间就称为采样周期,即T。为了让水面高度维持在某个位置,开始小家伙用瓢加水,水龙头离水缸有十几米的距离,经常要跑好几趟才加够水,于是小家伙又改为用桶加,一加就是一桶,跑的次数少了,加水的速度也快了,但好几次将缸给加溢出了,不小心弄湿了衣服几次,小家伙又动脑筋,我不用瓢也不用桶,就用盆,几次下来,发现刚刚好,不用跑太多次,也不会让水溢出。这个加水工具的大小就称为比例系数,即P。在加水过程中,小家伙又发现水虽然不会加过量溢出了,但是有时会高过要求位置比较多,还打湿了衣服。于是小家伙又想了个办法,在水缸上装一个漏斗,每次加水不直接倒进水缸,而是倒进漏斗让它慢慢加。这样溢出的问题解决了,但加水的速度又慢了,有时还赶不上漏水的速度。从而他试着变换不同大小口径的漏斗来控制加水的速度,最终找到了满意的漏斗。这个漏斗控制加水时间就称为积分时间,即I。经过几番折磨,小家伙终于喘了一口,但任务要求突然严了,水位控制的及时性要求大大提高,一旦水位过低,必须立即将水加到要求位置,而且不能高出太多,否则不给工钱。小家伙又为难了!于是小家伙又开努脑筋,终于让小家伙想到一个办法,放一盆备用水在旁边,一发现水位低了,不经过漏斗就是一盆水下去,这样及时性是保证了,但水位有时会高多了,小家伙可就恼啦。但方法总比困难多,小家伙在要求水位的水平面水缸处凿一孔,再接一根管子到下面的备用桶里,这样多出的水会从上面的孔里漏出来。这个水漏出的快慢就称为微分时间,即D。 虽然微分的比喻有点牵强,但能帮助理解就行了。举例中小家伙的试验是一步步独立做,但实际加水工具、漏斗口径、溢水孔的大小同时都会影响加水的速度。
3、PID第二种通俗解释:以有一个水缸里有些水,通过加水让水维持在要求水面高度的某个位置,一旦发现水面高度低于要求水面高度的某个位置,就要往水缸里加水的例子来说明PID含义。 如:假设我们需要把预期水面高度稳定在A平面,而实际要求水面高度在B平面,那么水面高度差值Err=A-B,这个时候我们需要往水缸里面加水,加水量就是Kp*Err,Kp就是我们的比例控制系数,即P。如果A>B,Err(水面高度差值)为正,就往水缸里面加水;如果A<B,Err(水面高度差值)为负,就从水缸里面舀水出来。那么只要预期水面高度和实际要求水面高度有差值,我们都会通过水桶去加减水来调整系统。这里也许有人会有疑问,如果这里把比例控制系数Kp直接设置成1,然后加水的量直接为Err=A-B不就可以了。然而实际上很多系统是做不到这点的。比如温度控制系统,实际温度为5度,我要通过加热把温度提升到30度,这里难道我们能一次性准确的给系统加30度?显然这是做不到的。那么比例控制的最终结果是让Err(水面高度差值)的值趋向于0。比例控制部分公式如下图:
在我们的比例控制的作用下,Err(水面高度差值)慢慢减小(假设一开始预期水面高度的水平面A大于实际要求水面高度的水平面B,也就是说Err(水面高度差值)是一个正值),由此可知Err(水面高度差值)是一条随时间变化且斜率小于0的曲线。那在一定周期内,Err(水面高度差值)越大,微分的绝对值越大,对Err的减小速度起到抑制作用,直到最后斜率为0微分才会停止抑制作用。微分部分公式如下图一及随着微分的影响,Err(水面高度差值)曲线的斜率最终趋向于0,如下图二:
比例控制只能尽量将Err(水面高度差值)调节到0,但是会存在这样那样的误差。而微分的作用是将曲线的斜率控制到0则停止对其抑制作用,但曲线的斜率为0的时候,Err(水面高度差值)并不一定为0。总的来说就是存在静差。怎样来消除静差的呢?使用积分(积分公式如下图二)来消除。我们都知道曲线的积分相当于曲线与x轴围出来的面积如下图一。积分作用的目就是使红色部分的面积和蓝色部分的面积的和为0,即使系统在比例控制部分和微分控制部分已经趋于稳定,只要Err(水面高度差值)不为0就会存在静差,只要存在静差积分就会对系统产生影响,直到系统的Err(水面高度差值)值为0。这样我们的PID控制在理论上就可以达到一个非常精确的控制效果。
二、PID离散化算法公式
1、PID离散化算法公式:分有位置式PID算法与增量式PID算法
2、位置式PID算法:假设采样时间间隔为T,则在k时刻:偏差为e(k);积分为e(k)+e(k-1)+e(k-2)+…+e(0);微分为(e(k)-e(k-1))/T,离散化后的公式如图一与从离散化后的公式分解后所得公式如图二。
由以上公式可知:比例系数:Kp,积分系数:Kp*T/Ti,可以用Ki表示;微分系数:Kp*Td/T,可以用Kd表示。则公式可以写成如下形式,这就是我们所说的位置式PID算法公式:
3、增量式PID算法:根据以上位置式PID算法公式推算增量式PID算法,可以求得如下形式:
由以上增量式PID算法公式分解可求得如下形式,这就是我们所说的增量式PID算法公式:
由以上增量式PID算法公式的分解式可知,由于我们需要通过计算系统的需求增量(即u(k),且只跟最近三次的偏差值有关
。)来调整系统稳定性,由此可得系统需求增量公式如下所示:
4、位置式PID算法与增量式PID算法优缺点:位置式PID是一种非递推式算法,可直接控制执行机构(如平衡小车),u(k)的值和执行机构的实际位置(如小车当前角度)是一一对应的,因此在执行机构不带积分部件的对象中可以很好应用等优点,但每次输出均与过去的状态有关,计算时要对e(k)进行累加,运算工作量大等缺点。增量式PID算法是一种递推式算法,误动作时影响小,必要时可用逻辑判断的方法去掉出错数据,手动/自动切换时冲击小,便于实现无扰动切换,当计算机故障时,仍能保持原值,算式中不需要累加,控制增量Δu(k)的确定仅与最近3次的采样值有关等优点,但积分截断效应大,有稳态误差,溢出的影响大,有的被控对象用增量式则不太好等缺点。