基于化学反应釜过程控制系统-水温控制 - 图文(3)

2019-08-01 22:58

图13 PID封装后参数界面

对整个系统进行PID调节后,系统综合性能提高。 5.2 组态王系统仿真如下:

图14 原系统仿真结果

不加算法控制的反应近似视为上图反应过程线是一个升温过程,后温度达到反应开始的阶段,化学反应剧烈放热,炉内温度迅速升高,过高导致反应骤停,冷调节阀的作用使得温度下降,反应再次开始,放热再升温再制冷,不断循环,形成不停地震荡。

利用PID 调节之后的响应曲线,系统性能改善,与仿真一致,见图15

图15 PID调节结果

5.3 组态王运行界面如下

图16 调节前系统运行结果

炉温升温过程中热调节阀作用,炉内温度实时显示

图17 PID调节结果

接近稳定后,冷调节阀工作,由于化学反应是放热反应,冷调节阀使得炉内温度达到平衡,热调节阀可以不工作。

实际温度控制系统中输出驱动电路控制器将其PID运算的结果转化为不同占空比的

脉冲信号输出,该信号作用于执行机构还需要经过驱动电路。利用PWM(脉冲宽度调制)原理

利用单片机定时器1中断生成PWM波,占空比通过按键可调

图18 PWM波形

参考文献

[1]三诸静.模糊控制理论与系统原理仁[M].北京:机械工业出版社,2005. [2]刘学君.反应釜温度控制系统的研究[D].河北:燕山大学,2004.

[3]张辉,闰广平.即聚合釜的自动控制[J].古林化工学院学报,2004,21:50-52. [4]鞠丽叶.自适应预测控制在炉温控制的应用[J].青岛科技大学学报,2008,25(1):83-87. [5]丑王伟.广义预测控制理论及其应用[M].北京:科学出版社,1998. [6]张涛.反应釜温度控制系统的研究[D].山东:青岛大学,2009.

附录

附录一:C语言程序 #include < reg51.h > #include < intrins.h > sbit DQ=P1^2;

#define uchar unsigned char #define uint unsigned int sbit lcdrs = P1^0 ; sbit lcden = P1^1 ; sbit beer=P3^1; sbit ledr=P3^2; sbit ledg=P1^4; sbit jiare=P1^3; sbit jiashui=P3^0;

uchar num,temp;uint

tvalue,key,dengyu,newtep,new=40; uint temper,temper1,zhiwen,en,a; uchar code table[ ] = %uchar code table1[ ] =

{'0','1','2','3','4','5','6','7','8','9','-'} ; uchar code table2[ ] = \void delay(uint z) { uint x,y; for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void delay_18B20(unsigned int i)//延时1微秒 {

while(i--); }

void ds1820rst() { unsigned char x=0;

DQ = 1; //DQ复位 delay_18B20(4); //延时 DQ = 0; //DQ拉低

delay_18B20(100); //精确延时大于480us DQ = 1; //拉高 delay_18B20(40); }

uchar ds1820rd()//读数据 { unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i--)

{ DQ = 0; //给脉冲信号 dat>>=1;

DQ = 1; //给脉冲信号 if(DQ) dat|=0x80; delay_18B20(10); }

return(dat); }

void ds1820wr(uchar wdata)//写数据 {unsigned char i=0;

for (i=8; i>0; i--) { DQ = 0;

DQ = wdata&0x01; delay_18B20(10); DQ = 1; wdata>>=1; } }

int read_temp()//读取温度值并转换 {uchar a,b; uint tvalue;//温度值 ds1820rst();

ds1820wr(0xcc);//跳过读序列号 ds1820wr(0x44);//启动温度转换 ds1820rst();

ds1820wr(0xcc);//跳过读序列号 ds1820wr(0xbe);//读取温度 a=ds1820rd(); b=ds1820rd(); tvalue=b; tvalue<<=8; tvalue=tvalue|a;

tvalue=tvalue*(0.625);//温度值扩大10倍,精确到1位小数 return(tvalue); }

void cewen() {

delay(1);

temper=read_temp();delay(1);

temper1=temper/10;

}

//********以下部分为键盘扫描及计算器实现功能区域********// void swith()

{ temp=P2; //将P3口当前的状态复

制给临时变量temp temp=temp&0xf0; //temp与0xf0进行与运算,通过与运算的结果判断出相应的行数有没有被按下 if(temp!=0xf0)

{delay(10); //延时去抖操作 temp=P2; temp=temp&0xf0;//重新读取P3口在进行一次操作,判断按键是否真的被按下 if(temp!=0xf0) { temp=P2;

switch(temp)

{ //以下部分表示16个按键各自被按下时执行相应的赋值操作 case 0xee: key=1;en=1;break; case 0xde: key=2;en=1;break;

case 0xbe: key=3;en=1;break;

case 0x7e: zhiwen=1;break; //表示第一种运算,“加”运算 case 0xed: key=4;en=1;break; case 0xdd: key=5;en=1;break;

case 0xbd: key=6;en=1;break;

case 0x7d: dengyu=1;break;//表示第二种运算,“减”运算 case 0xeb: key=7;en=1;break; case 0xdb: key=8;en=1;break;

case 0xbb: key=9;en=1;break;


基于化学反应釜过程控制系统-水温控制 - 图文(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:全县幼儿园教师培训会议讲话

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: