×
单片机 > 单片机程序设计 > 详情

用单片机玩PID控制—从理想PID控制至先进PID控制_7

发布时间:2020-05-29 发布时间:
|

3各种PID控制


这节将介绍常规PID,史密斯补偿控制,模糊控制等,C语言程序及程序中变量均放在单片机中,没有用到扩展内存,由于STC89C52单片机的程序存储器容量为8K,所以,程序限制在8K以内,数据存储器用到了低128字节RAM和高128字节RAM(C语言中用idata声明),也用到了内部扩展256字节RAM(C语言中用xdata声明)。


3.1理想PID控制


PID算法如下:


       Gc(s)=Kc(1+1/(Ti*s)+Td*s)


PID算法的数值计算方法是将∫用Σ代替,de用Δe代替,dt用Δt代替,因此理论上讲只有Δt趋于零时,才得到理想PID算法,但实际上,即无可能,也无必要,做到Δt趋于零,究竟Δt多少合适,前面已经讲过各种过程控制参数的采样周期,这里不再重复,经这么算出来的式子是位置式的,但通常用的增量式的,即


    Δu(k)=Kc(e(k)-e(k-1)+Ts*e(k)/Ti+Td*(e(k)-2*e(k-1)+e(k-2))/Ts)


Keil C51语言的PID算法代码如下:


float PID1(float sp,float pv,float Kc,unsigned int Ti,unsigned int Td,float Ts)


{


static float idata du=0.0,u0=0.0,u1=0.0,e0=0.0,e1=0.0,e2=0.0;  


u1=u0;


e2=e1;


e1=e0;


e0=sp-pv;


du=Kc*(e0-e1+e0*Ts/Ti+Td*(e0-2*e1+e2)/Ts); 


u0=u1+du;


if (u0<0)


u0=0;


if (u0>1)


u0=1;


return(u0);


}


PID控制的效果如下图1所示,从图中可以看出,调节器输出有较大瞬间波动,这对现场的执行机构很不利,将加速执行机构的损坏,如果过程值中混有白噪声,调节器输出波动更大,如下图2所示。







『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机CO2检测显示程序解析