温度控制的PID算法与C程序实现Word文档格式.docx

上传人:b****1 文档编号:5356816 上传时间:2023-05-05 格式:DOCX 页数:8 大小:106.96KB
下载 相关 举报
温度控制的PID算法与C程序实现Word文档格式.docx_第1页
第1页 / 共8页
温度控制的PID算法与C程序实现Word文档格式.docx_第2页
第2页 / 共8页
温度控制的PID算法与C程序实现Word文档格式.docx_第3页
第3页 / 共8页
温度控制的PID算法与C程序实现Word文档格式.docx_第4页
第4页 / 共8页
温度控制的PID算法与C程序实现Word文档格式.docx_第5页
第5页 / 共8页
温度控制的PID算法与C程序实现Word文档格式.docx_第6页
第6页 / 共8页
温度控制的PID算法与C程序实现Word文档格式.docx_第7页
第7页 / 共8页
温度控制的PID算法与C程序实现Word文档格式.docx_第8页
第8页 / 共8页
亲,该文档总共8页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

温度控制的PID算法与C程序实现Word文档格式.docx

《温度控制的PID算法与C程序实现Word文档格式.docx》由会员分享,可在线阅读,更多相关《温度控制的PID算法与C程序实现Word文档格式.docx(8页珍藏版)》请在冰点文库上搜索。

温度控制的PID算法与C程序实现Word文档格式.docx

 

2.温度控制的两个阶段

温度控制系统是一个惯性较大的系统,也就是说,当给温区开始加热之后,并不能立即观察得到温区温度的明显上升;

同样的,当关闭加热之后,温区的温度仍然有一定程度的上升。

另外,热电偶对温度的检测,与实际的温区温度相比较,也存在一定的滞后效应。

这给温度的控制带来了困难。

因此,如果在温度检测值(PV)到达设定值时才关断输出,可能因温度的滞后效应而长时间超出设定值,需要较长时间才能回到设定值;

如果在温度检测值(PV)未到设定值时即关断输出,则可能因关断较早而导致温度难以达到设定值。

为了合理地处理系统响应速度(即加热速度)与系统稳定性之间地矛盾,我们把温度控制分为两个阶段。

(1)PID调节前阶段

在这个阶段,因为温区的温度距离设定值还很远,为了加快加热速度,SSR与发热管处于满负荷输出状态,只有当温度上升速度超过控制参数“加速速率”,SSR才关闭输出。

“加速速率”描述的是温度在单位时间的跨度,反映的是温度升降的快慢,如上图所示。

用“加速速率”限制温升过快,是为了降低温度进入PID调节区的惯性,避免首次到达温度设定值(SV)时超调过大。

在这个阶段,要么占空比K=0,SSR关闭;

要么占空比K=100%,SSR全速输出。

PID调节器不起作用,仅由“加速速率”控制温升快慢。

(2)PID调节阶段

在这个阶段,PID调节器调节输出,根据偏差值计算占空比(0-100%),保证偏差(EV)趋近于零,即使系统受到外部干扰时,也能使系统回到平衡状态。

3.PID算法

PID控制的原理是基于下面的算式:

输出M(t)是比例项,积分项和微分项的函数。

其中:

M(t)PID回路的输出,是时间的函数

KcPID回路的比例增益

ePID回路的偏差(设定值(SV)与过程变量(PV)之差)

MinitialPID回路的静态输出值

为了能让数字计算机处理这个算式,连续算式必须离散化为周期采样偏差算式,才能用来计算输出值。

数字计算机处理的算式如下:

从这个公式可以看出,积分项是从第一个采样周期到当前采样周期所有误差项的函数,微分项是当前采样和前一次采样的函数,比例项仅是当前采样的函数。

在数字计算机中,不保存所有的误差项,其实也不必要。

由于计算机从第一次采样开始,每有一个过程采样值必须计算一次输出值,只需要保存前一次过程值(PVn-1)和积分项前值。

利用计算机处理的重复性,可以将以上算式变换为:

Mn在第n采样时刻,PID回路的输出计算值

SVPID回路设定值

PVn在第n采样时刻的过程变量值

PVn-1在第n-1采样时刻的过程变量值

MX积分前项值

MintialPID回路的静态输出值

KcPID回路的比例增益

KI积分项的比例常数KI=Kc*Ts/Ti

Ts是离散化时的采样时间间隔Ti是积分时间参数;

KD微分项的比例常数KD=Kc*Td/Ts

Ts是离散化时的采样时间间隔Td是微分时间参数;

从上面PID的算式,可以分析三个基本参数Kc,KI,KD在实际控制中的作用:

(1)比例调节作用:

比例项按比例反应系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用用以减少偏差。

比例作用大,可以加快调节,减少偏差。

但是过大的比例调节,使系统的稳定性下降,甚至造成系统的不稳定。

(2)积分调节作用:

积分项消除系统的稳态误差,提高无差度。

只要有偏差,积分就进行,直到无偏差时,积分运算才停止,积分调节项输出一常数值。

积分作用的强弱取决于积分时间常数Ti,Ti越小,积分作用越强。

积分控制可提高系统的无差度,但积分项输出响应缓慢,使得系统调节时间增长。

(3)微分调节作用:

微分项反映系统过程变量的变化率((PVn-1-PVn)/Ts),具有预见性,能预见变化的趋势,因此,能产生超前的调节作用,在偏差还没有形成之前,已被微分调节作用消除。

因此,可以改善系统的动态性能。

在微分时间参数Td选择合适的情况下,可以减少超调,减少调节时间。

微分调节对干扰有放大效果,过强的微分调节,对系统抗干扰不利。

此外,微分项反映的是过程变量的变化率,而当过程变量没有变化时,微分调节输出为零。

微分调节不能单独使用,需要与另外两种调节规律相结合,组成PD或PID调节器。

以上面的推导,C程序如下

/*

pid算法C源程序,还有实现pid自动调整。

51用于控制温度26-100摄氏度。

TIME:

2011-07-2920:

15:

07

*/

#include<

stdlib.h>

#include"

global_varible.h"

/****************************************************************************

*模块名:

PID

*描述:

PID调节子程序

*采用PID-PD算法。

在偏差绝对值大于△e时,用PD算法,以改善动态品质。

*当偏差绝对值小于△e时,用PID算法,提高稳定精度。

*PIDout=kp*e(t)+ki*[e(t)+e(t-1)+...+e

(1)]+kd*[e(t)-e(t-1)]

*============================================================================

*入口:

*出口:

*改变:

PID_T_Run=加热时间控制

*****************************************************************************/

voidPID_Math(void)

{

signedlongee1;

//偏差一阶

//signedlongee2;

//偏差二阶

signedlongd_out;

//积分输出

if(!

Flag_PID_T_OK)

return;

Flag_PID_T_OK=0;

Temp_Set=3700;

//温度控制设定值37.00度

PID_e0=Temp_Set-Temp_Now;

//本次偏差

ee1=PID_e0-PID_e1;

//计算一阶偏差

//ee2=PID_e0-2*PID_e1+PID_e2;

//计算二阶偏差

//一阶偏差的限制范围

if(ee1>

500)ee1=500;

if(ee1<

-500)ee1=-500;

PID_e_SUM+=PID_e0;

//偏差之和

//积分最多累计的温差

if(PID_e_SUM>

200)PID_e_SUM=200;

if(PID_e_SUM<

-200)PID_e_SUM=-200;

PID_Out=PID_kp*PID_e0+PID_kd*ee1;

//计算PID比例和微分输出

if(abs(PID_e0)<

200)//如果温度相差小于1.5度则计入PID积分输出

{

if(abs(PID_e0)>

100){//如果温度相差大于1度时积分累计限制

if(PID_e_SUM>

100)PID_e_SUM=100;

if(PID_e_SUM<

-100)PID_e_SUM=-100;

}

d_out=PID_ki*PID_e_SUM;

//积分输出

if(PID_e0<

-5){//当前温度高于设定温度0.5度时积分累计限制

150)PID_e_SUM=150;

0)d_out>

>

=1;

//当前温度高于设定温度0.5度时削弱积分正输出

PID_Out+=d_out;

//PID比例,积分和微分输出

}

else

PID_e_SUM=0;

PID_Out/=100;

//恢复被PID_Out系数放大的倍数

if(PID_Out>

200)PID_Out=200;

if(PID_Out<

0)PID_Out=0;

if(PID_e0>

300)PID_Out=200;

//当前温度比设定温度低3度则全速加热

if(PID_e0<

-20)PID_Out=0;

//当前温度高于设定温度0.2度则关闭加热

Hot_T_Run=PID_Out;

//加热时间控制输出

//PID_e2=PID_e1;

//保存上次偏差

PID_e1=PID_e0;

//保存当前偏差

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2