PID算法随笔

  • pid algorithm

PID是比例、积分、微分的简称,PID控制的难点不是编程,而是控制器的参数整定。

 

  •  sensor 采样序列:

    x1、x2、x3 ... ... ... x[k-2]、x[k-1]、x[k]

 

1. 分析比例 P :

    E[k] = Sv - x[k];

  1. E[k] > 0 : 未达标
  2. E[k] = 0 : 刚好达标
  3. E[k] < 0 : 超标

    Pout = Kp * E[k] + C     .............. 比例控制算法

     C: 当E[k] = 0 时,为避免系统失控,需额外增加常数C

 

2. 分析积分 I :

  • 历史偏差序列: E[k] = Sv - x[k]

E1, E2, E3 ... ... ... E[k-2], E[k-1], E[k]

S[k] = E1 + E2 +  E3 ... ... ... E[k-2] +  E[k-1] + E[k]

  1. S[k] > 0 : 过去这段时间里 多数未达标
  2. S[k] = 0 : 刚好达标
  3. S[k] < 0 : 过去这段时间里 多数超标

     Iout = Kp * S[k] + C     .............. 积分控制算法

 

3. 分析微分 D :

  • 最近两次偏差相减: D[k] = E[k] - E[k-1]
  1. D[k] > 0 : 偏差有增加趋势
  2. D[k] = 0 : 
  3. D[k] < 0 : 偏差正在减小

    Dout = Kp * D[k] + C     .............. 微分控制算法

注意:微分算法只是确定偏差有没有变化,而不是有没有偏差

 

  • 位置式pid

PID算法随笔

Tsensor 采样有效值的周期,例如:50ms采样周期,T=50

Ti积分时间, 消除稳态误差,提高控制精度;

       主要用在系统接近稳定了以后,用来微调精确度,时间越长,精度越高。

        根据实际情况选择,如温控选择3000-5000左右。

Td微分时间,取值越小,提前预调的时间越短,如流量控制,一般取值几十至上百,

        而温控一般取值几千不等

 

  • 增量式pid

PID算法随笔

 

  • 调试经验

        开始调节Pid算法时,千万不要讲pid这三项全部加上一起调。要先调其中1项或者2项。例如先调P或者PD。

最后再加I(积分)。

  • Kp选取经验:

       一般,刚开始时,求稳一些,可以将Kp从0.1开始取,然后一点点累加上去调节。

Kp的值越大,越容易使系统振荡,并产生超调,但是Kp太小,调节速度又会很慢,所以需要多次试验,

并折中去一个合适的值。

  •  Td 选取经验

       Td是微分系数,可以减小调整时间,从而改变系统的动态性能.    调微分时,一般建议是将P和D放在一起去调,Td值的意义是:提前多久进行预调节。 刚开始调,不确定值取多少时,可以先从小值一点点累加,例如先给10,然后给50,然后100,200,500,1000,2000这样去试。一般反应较快的系统,取值越小。而反应较慢的系统,取值就要很大。

只有时间滞后的系统才需要附加微分参数。如果画蛇添足加上这个参数反而会使系统的控制受到影响。

  •  Ti 选取经验

      Ti 是积分系数, 它主要用来 消除稳态误差,提高控制精度。只要有足够的时间,积分控制将能完全消除误差,但积分作用太强会使系统超调加大,甚至使系统出现振荡。在系统控制到非常接近目标值时,才起作用。用来消除非常微小的误差。