基于PID电加热炉温度控制系统设计
摘要 电加热炉随着科学技术的发展和工业生产水平的提高,已经在冶金、化工、
机械等各类工业控制中得到了广泛应用,并且在国民经济中占有举足轻重的地位。对于这样一个具有非线性、大滞后、大惯性、时变性、升温单向性等特点的控制对象,很难用数学方法建立精确的数学模型,因此用传统的控制理论和方法很难达到好的控制效果。单片机以其高可靠性、高性能价格比、控制方便简单和灵活性大等优点,在工业控制系统、智能化仪器仪表等诸多领域得到广泛应用。采用单片机进行炉温控制,可以提高控制质量和自动化水平。
一、 绪论
在本控制对象电阻加热炉功率为8可W,由220V交流电供电,采用双向可控硅进行控制。本设计针对一个温度区进行温度控制,要求控制温度范围50~350C,保温阶段温度控制精度为正负1度。选择合适的传感器,计算机输出信号经转换后通过双向可控硅控制器控制加热电阻两端的电压。其对象问温控数学模型为:
Kde??s G(s)?
Tds?1其中:时间常数Td=350秒,放大系数Kd=50,滞后时间?=10秒, 控制算法选用改PID控制
实时温度采样 单 片 机 显示设定值 设定温度 电源控制 电阻加热炉
图1.1系统总体结构图
1
二、 控制系统的建模和数字控制器设计
计算开始 输入并采样r(K)、c(K) 计算偏差e(K)=r(K)-c(K) ? u(k)=q0e(k)+q1e(k-1)+q2e(k-2) 存?u(k)以备输出
参数序号e(k-1)?e(k-2) 调整 e(k)?e(k-1) 返回 图2 PID算法流程图
数字PID控制算法
PID控制器是通过计算机PID控制算法程序实现的。计算机直接数字控制系统大多数是采样-数据控制系统。进入计算机的连续-时间信号,必须经过采样和整量化后,变成数字量,方能进入计算机的存贮器和寄存器,而在数字计算机中的计算和处理,不论是积分还是微分,只能用数值计算去逼近。
图2.1位置PID控制算法简化示意图
2
r + e PID位置算法 - u 受控对象 y 在数字计算机中,PID控制规律的实现,也必须用数值逼近的方法。当采样周期相当短时,用求和代替积分,用差商代替微商,使PID算法离散化,将描述连续时间PID算法的微分方程,变为描述离散-时间PID算法的差分方程。
1TTse(?)d???0Tit
?e(j)j?0k
用矩形积分时,有
Tdde(t)TD?[e(k)?e(k?1)]dtTS (1)
用差分代替微分
Tu(k)?Kp?[e(k)?sTi
?(e(j)?Tj?0kkTDS[e(k)?e(k?1))]?u0 (2)
由上式得
u(k)?Kpe(k)?K1?e(k)?KD[e(k)?e(k?1)]?u0j?0 (3)
式中 u0——控制量的基值,即k=0时的控制;u(k)——第k个采样时刻的控制;KP——比例放大系数;KI——积分放大系数;
KD——微分放大系数; TS——采样周期。
KI?KPTSKTKD?PDTI TS
式(3)是数字PID算法的非递推形式,称全量算法。算法中,为了求和,必须将系统偏差的全部过去值e(j)(j=1,2,3,... ,k)都存储起来。这种算法得出控制量的全量输出u(k),是控制量的绝对数值。在控制系统中,这种控制量确定了执行机构的位置。
当执行机构需要的不是控制量的绝对值,而是控制量的增量(例如去驱动步进电动机)时,需要用PID的“增量算法”。
r + e PID增量算- ?u u y 受控对 步进电 3
由位置算法求出
Tu(k?1)?Kp[e(k?1)?STI?e(j)?j?0k?1TDe(k?1)?e(k?2)]?u0TS
再求出
?u(k)?u(k)?u(k?1)
两式相减,得出控制量的增量算法
Tu(k)?Kp[e(k)?STI
?e(j)?j?1kTD[e(k)?e(k?1)]?u0TS (4)
式(4)称为增量式PID算法。
对增量式PID算法(4)归并后,得
?u(k)?q0e(k)?q1e(k?1)?q2e(k?2) (5)
q0?KP[1?TSTD?]TITS TD]TS
q1??KP[1?2q2?KPTDTS
从式(5)看出,数字增量式PID算法,只要贮存最近的三个误差采样值e(k),e(k-1),e(k-2)就足够了。如果计算机系统采用恒定的采样周期T,一旦确定q0,q1,q2只要使用前后测量三次的偏差值,就可以由上式求出控制量。 typedef struct PID {
Int SetPoint;//设定目标Desired Value Long SumError;//误差累计
double propotion;//比例常数 Propotion Const Double integral;//积分常数 Integral Const Double derivative;//微分常数 Derivative Const int LastError;// Error[-1] Int PrevError;// Error[-2] } PID;
ststic PIDsPID;
4
/*Initialize PID Structure PID参数初始化*/ void IncPIDInit(void) {
sptr->SumError=0;
sptr->LastError=0;// Error[-1] sptr->PrevError=0;// Error[-2]
sptr->Propotion=0;//比例常数 Propotional Const sptr->integral=0;//积分常数Integral Const
sptr->derivative=0;//微分常数Derivative Const sptr->SetPoint=0; } /*增量式PID计算部分*/
int IncPIDCalc(int NextPoint)
{register int ierror,iIncpid;//当前误差 ierror=sptr->SetPoint-NextPoint;//增量计算}
三 硬件的设计和实现
3.1 AT89C51系列基本组成及特性
AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
图3.1AT89C51管脚
管脚说明:
VCC:供电电压。 GND:接地。
5