PID控制算法的C语言实现二 PID算法的离散化

上一节中,我论述了PID算法的基本形式,并对其控制过程的实现有了一个简要的说明,通过上一节的总结,基本已经可以明白PID控制的过程。这一节中先继续上一节内容补充说明一下。 

   1.说明一下反馈控制的原理,通过上一节的框图不难看出,PID控制其实是对偏差的控制过程

  

 2.如果偏差为0,则比例环节不起作用,只有存在偏差时,比例环节才起作用。   

 

 3.积分环节主要是用来消除静差,所谓静差,就是系统稳定后输出值和设定值之间的差值,积分环节实际上就是偏差累计的过程,把累计的误差加到原有系统上以抵消系统造成的静差。 

  

 4.而微分信号则反应了偏差信号的变化规律,或者说是变化趋势,根据偏差信号的变化趋势来进行超前调节,从而增加了系统的快速性。 

   好了,关于PID的基本说明就补充到这里,下面将对PID连续系统离散化,从而方便在处理器上实现。下面把连续状态的公式再贴一下:

假设采样间隔为T,则在第K T时刻: 

偏差err(K)=rin(K)-rout(K); 

积分环节用加和的形式表示,即err(K)+err(K+1)+„„

微分环节用斜率的形式表示,即[err(K)-err(K-1)]/T; 

从而形成如下PID离散表示形式:

至于说KpKiKd三个参数的具体表达式,我想可以轻松的推出了,这里节省时间,不再详细表示了。

 

其实到这里为止,PID的基本离散表示形式已经出来了。目前的这种表述形式属于位置型PID另外一种表述方式为增量式PID,由U上述表达式可以轻易得到:

这就是离散化PID的增量式表示方式,由公式可以看出,增量式的表达结果和最近三次的偏差有关,这样就大大提高了系统的稳定性。需要注意的是最终的输出结果应该为 

       

    u(K)+增量调节值

 

PID的离散化过程基本思路就是这样,下面是将离散化的公式转换成为C语言,从而实现微控制器的控制作用。

 

 

原文地址:https://www.cnblogs.com/wyuzl/p/6515728.html