资源描述
基于化学反应釜过程控制系统水温控制
29
2020年4月19日
文档仅供参考
指导教师评定成绩:
审定成绩:
大 学
自 动 化 学 院
过程控制系统课程设计报告
设计题目:基于工业化学反应釜的温度控制系统设计
指 导 教 师: 老师
单位(二级学院): 自 动 化 学 院
专 业: 自动化
学 生 姓 名:
设计时间: 年 6 月
自动化学院制
基于过程控制反应釜温度控制系统设计
摘要:温度是化学反应釜生产过程中对反应过程影响最重要的的因素之一,温度的控制精度、系统响应速度及稳定度是衡量温度系统性能指标的关键因素,准确地控制反应釜内原料在不同温度下进行化学反应具有重要意义。首先,本系统对反应釜的温度进行分析,得出了冷剂流量对反应釜内温度的传递函数。其次,经过单片机,利用继电器、DS18B20温度传感器、LCD液晶显示屏等设计了对反应釜进行加热与降温来实现反应釜温度控制的具体电路和实时系统,对实际化学反应过程中的温度变化进行模拟,并利用经典控制理论中的PID算法得到反应时的最优控制,并给出了详细的分析步骤和控制算法。最后,经过组态软件对整个化学反应过程进行实时监控的模拟。
关键词:温度控制 PID 单片机 组态王
一、背景及国内外研究现状
1.1 问题研究背景
在化工生产过程中, 连续反应釜是一种常见的、重要的反应容器。其化学反应机理较为复杂, 受到外界条件、原料纯度、催化剂的类型等诸多因素的影响,因此难以建立精确的数学模型, 致使整套设备的自动化水平较低。而且在反应釜中进行的反应一般属于放热反应, 反应放热量大, 传热效果却不理想, 因此反应釜内温度一般具有大滞后、非线性等特征。针对反应釜内温度变化的特点, 设计良好的温度控制系统是保证产品质量的关键。
在中国,尽管大中城市的科学技术和工业自动化的发展比较快,可是在众多的小城市与农村地区由于经济不够发达,政府扶持力度不够,存在许多不太安全的小规模化工生产项目,给人们的人生安全与财产安全带来了一定的威胁。因此,如何更安全的进行化工生产已经成为了政府和各种研究机构亟待解决和完善的事。
1.2 国内外研究现状
当前关于反应釜温度控制系统设计问题国内外都有一些研究,而且已经基本满足了工业需求。如Shinskey 与Weinstein 提出的双模控制(dual-mode),采用bang-bang+PID 控制,其大致步骤为:过程开始时,全力加热,直至反应釜温度距其设定值为t1 度,然后全力冷却,持续TD1分钟,此后,将夹套水温设定值定在某个合适的中间温度,持续TD2 分钟,最后,用串级PID 控制器控制夹套水温度。如果参数选择得当,双模控制是有效的。
Arthur Jutan 与 Ashok Uppal 提出将反应热作为一种扰动,采用适当的方法估计出来,用前馈控制抵消;余下的部分近似为线性系统,能够用PID 控制。Barry 与Sandro 采用GMC 方法控制反应釜温度,得到了很好的仿真结果,而且进一步考察了操作条件与过程参数变动时被控过程的鲁棒性,发现GMC的鲁棒性明显强于双模控制。
为适应化工生产的新特点,一些过程控制领域中的新技术正在由理论研究转向生产践,如信息综合处理技术、现场总线控制系统、各种智能控制技术、软计算技术和快速仿真技术、多媒体技术等。过程控制采用的技术工具,由基地式仪表、气动单元式组合式仪表、电动单元组合式仪表Ⅰ型、Ⅱ型、Ⅲ型,发展到现在的可编程单回路、双回路、三回路调节器和分散综合控制系统(DCS)。当前,传统的DCS 正借助于微处理器硬软件和通信网络技术,朝着标准化、开放化和尽量采用市场通用的优良硬、软件的方向,逐渐地、相互融合地向开放的DCS发展。如Honeywell 的 TPS,它采用通用的软件将企业的internet 网与局部控制网、通用控制网和系统总线连接在一起,配备各种平台、操作站以满足不同层次使用人员的要求。另外,最近发展起来的现场总线网络控制系统(FCS)也是一种新的开放式的分布式控制系统。它把专用封闭协议变成标准开放协议,使系统共有完全数字计算和数字通信能力:在结构上,采用了全分布式方案,把控制功能彻底下放到现场,提高了系统灵活性和可靠性:它突破了集散型控制系统DCS 中采用专用网络的缺陷。因此对于现场总线的工业控制系统研究具有重大的意义。据报道,美国犹她州盐湖城Flying 炼油厂、孟山都化工厂、中国安庆安菱化工厂、吉林油田甲醇厂已采用FCS,取得了明显的经济效益。专家估计,FCS 将在石化行业得到广泛的应用。
二、化学反应釜的过程分析
所谓过程系统是指研究一类以物质和能量转换为基础的生产过程。为了进一步改进工艺操作,提高自动化水平,优化生产过程,加强生产上的管理,需要研究这类过程的描述、设计、模拟、仿真、控制和管理,最终能够显著地增加经济效益。在了解和掌握了工艺流程和生产过程动态的基础上,需要根据生产对控制提出要求。而过程控制就是应用控制理论,对生产过程进行综合分析并设计出包括被控对象、调节器、检测装置和执行器在内的过程控制系统,最后采用合适的技术手段加以实现
2.1反应釜的基本结构
化学反应釜有间歇式和连续式两种。间歇式反应釜一般见于液相反应,而连续式反应釜一般见于均相和非均相的液相反应。
图 1 反应釜结构示意图
反应釜的基本结构如图1所示。反应釜由搅拌容器和搅拌机两部分组成,搅拌容器包括筒体、换热元件级内构件;搅拌机由搅拌器、搅拌轴及其密封装置、传动装置等组成。
筒体为一个钢罐形容器,能够在罐内装入物料,使物料在其内部进行化学反应。为了维持反应釜内的反应温度,需要设置换热元件。常见的换热元件为夹套,它包围在筒体的外部,其与容器外壁形成密闭的空间。在此空间通入冷却或加热介质,经过夹套内壁传热,可冷却或加热容器内的物料。为了测量釜内的温度,在罐内装有钢制的温度计套管,可将温度计或温度传感器放入其中。为了满足工艺的需求还能够外接附件装置。
2.2反应釜的工作原理
在进行化学之前,先将反应物按照一定的比例进行混合,然后与催化剂一同投入反应釜内,在反应釜的夹套中通以一定的高压蒸汽,进而提高反应釜内的温度,经过搅拌使物料温度均匀,当釜内温度达到预定的温度时,保持一定时间的恒温以使化学反应正常进行,反应结束后进行冷却。然而,大多数的化学反应都是放热反应,在反应的过程中釜内的温度会进一步上升,因此需要采取一定的技术手段把釜内的温度控制在某一个适宜的温度范围内,使整个化学反应速率一直保持到最大。如果温度偏低或偏高,会影响反应进行的深度和反应的转化率,从而影响了产品的质量并浪费了资源。为了是釜内温度稳定,本系统采用喷雾的形式对放热反应的釜内进行降温,从而把釜内的温度控制在一个适宜的温度范围内使之符合工艺要求。
2.3反应釜的控制方案
在设计反应釜控制器时有必要弄清反应釜的控制目标和可能的控制手段。本系统将从将从以下几个方面考虑控制指标。
(1)能量平衡
要保持反应釜的热量平衡,应使进入反应器的热量与流出的热量及反应生成的热量之间相互平衡。能量平衡控制对反应釜来说至关重要,它决定了反应过程中的生产安全,也间接的保证反应釜的产品质量达到工艺要求。
(2)约束条件
与其它化工操作设备相比,反应釜操作的安全性具有更重要的意义没这样就构成了反应釜控制中的一系列约束条件。例如,不少具有催化剂的反应中,一旦温度过高或过低,反应物中含有杂质,将会导致催化剂的破损和中毒。在有些氧化反应中,反应物的配比不当会引起爆炸等等。因此,在设计中经常配置报警或自动选择性控制系统。
反应釜控制指标的选择是反应釜控制方案设计中的一个关键问题。其主要是反应的转化率、产量、收率、主要产品的含量和产物分布等。如果直接把这些问题作为被控对象,反应要求就得到了保证。可是,由于考虑的指标越多,对整个反应过程的控制就越难准确的控制。而且,由于测量手段的限制某些指标并不便测量,从而难以作为真正的控制指标。然而,反应过程中,温度和上述指标密切相关,又便于测量,因此本作品主要将温度作为被控量。
三、总体方案及控制算法
3.1 总体方案分析
反应釜内的温度控制是化工生产过程的中心环节,目的是保证反应过程的产物达到一定质量和控制要求,并确保反应的安全进行。由于温度能较好地测量与分析,而且能够一定程度上反映出釜内化学反应的过程,因此选用温度为间接参数是最有效的方法。因此本作品的主要任务就是要实现温度的智能控制。
要实现温度的精确控制,就要有精确的温度传感器,本作品采用DS18B20温度传感器实现多点温度采集,模拟整个反应釜内物料的温度采集,其精度较高。然而,反应釜内的温度有一定的限制,在开始阶段,由于温度低于设定的反应温度,需要经过加热装置对反应釜进行加热进而提高物料的温度。当温度接近催化剂的最适温度时,釜内的原料进行快速反应,并释放出反应热,使釜内的温度上升较快,当温度超过给定值时,催化剂的活性被抑制,从而使化学反应的速率迅速下降,因此为了将釜内温度控制在某一适宜的温度范围内,本作品采用对釜内进行冷剂喷雾来平衡釜内的温度,从而使釜内的化学反应始终保持在最适宜的状态下。
为了便于读取和控制釜内温度,本作品采用LCD液晶显示屏来实现显示功能,同时经过键盘来实现工况、反应釜内要达到的温度设定。
3.2反应釜的控制算法及其动态特性
为了对釜内温度进行较为精确的控制,有必要将反应过程分成釜内物料升温过程和化学反应开始两个阶段,其每个过程中釜内温度的变化情况有较大的差异。下面将对这两个过程加以分析。
(1)升温过程
一般的化学反应在常温条件下基本上能够忽略其反应速率,因此需要采用加热装置对釜内物料进行加热。其结构框图如下所示:
图 2 釜内升温过程结构示意图
图2 反应釜系统调节框图
此升温过程类似于工业中较为成熟的电加热炉问题,类比两者可得出反应釜内温度变化量对控制热蒸汽变化量之间的传递函数形式为:
为一阶惯性环节。
(2)反应过程
一旦化学反应开始,由于反应过程中会自动放热,因此釜内温度会升高的越来越快。当内部温度达到催化剂最适宜的温度时,化学反应达到最快。当温度超过给定值时,催化剂的活性被抑制,从而使化学反应的速率迅速下降,因此为了将釜内温度控制在某一适宜的温度范围内,因此采用对釜内进行冷剂喷雾来平衡釜内的温度,从而使釜内的化学反应始终保持在最适宜的状态下。其过程的结构框图如下所示:
图 3 反应过程中结构框图
四、系统硬件电路设计
4.1 系统硬件构成
本作品设计的控制系统硬件电路主要由主控制器、DS18B20数字温度计、输出控制电路、键盘、LCD显示电路及电源等组成,系统的硬件组成下图所示:
图4 系统硬件设计框图
主控制器采用AT89C52单片机,温度采集采用DS18B20温度传感器,不需要A/D转换电路。其测温速度快,精度高,互换性好。总体硬件电路图如下图所示:
图5 硬件电路总体电路图
4.2电源模块
电源模块功能为把220V交流电转为5V直流电,以此给电机供电。电源模块我们选择AMS1117电源芯片,其具有完善的保护电路,包括过流、过压、电压反接保护。使用这个芯片只需要极少的外围元件就能构成高效稳压电路。与LM2940稳压器件相比,AMS11117具有更低的工作压降和更小的静态工作电流,能够使电池获得相对更长的使用时间。由于热损失小,因此无需专门考虑散热问题。而且其纹波很小,又为线性稳压芯片,能够为单片机及片外AD模块提供很稳定的工作电压!电源模块电路图如下:
图6 电源模块原理图
4.3LCD显示模块
方案一:数码管显示,由于本题要求实时的显示输出给定转速、实际速度以及PWM的占空比,数码管只能显示数字不能显示英文字符。
方案二:LED点阵显示,LED点阵显示虽然能够显示数字和字符,可是显示的效果不好,而且不易编程。
方案三:LCD液晶显示,LCD液晶显示不但能显示字符和数字,而且效果较好,且容易实现。
综上,我们选用LCD1602液晶显示,进行数据的实时显示。
图7 LCD显示电路
五、 系统仿真
5.1 MATLAB仿真如下:
图8 Simulink仿真模块
图9 PID电路模块
图10 比例控制仿真效果
只有比例环节,且比例系数为1,增大KP时,能够减小系统稳态误差,加快系统响应速度,系统的超调量也随之增大,以后的峰值呈现较大振荡。
图 11 比例积分仿真效果
加上积分环节之后K=1;Ti=100,在原有的P调节上加入一个积分环节,能够改进系统的稳态性能,消除或减小系统稳态误差,产生较好的效果,最终趋于设定值。
图12 比例积分微分仿真效果
再加上微分环节,Td=50,PID调节器是常规调解中性能最好的一种调节器,加入的微分环节有降低超调量减少调节时间和上升时间的作用,改进系统的动态性能,在PID调节的作用下,兼顾快速性与无静差的特点,曲线跟快速的趋于稳定,且达到较高的调节质量。
图13 PID封装后参数界面
对整个系统进行PID调节后,系统综合性能提高。
5.2 组态王系统仿真如下:
图14 原系统仿真结果
不加算法控制的反应近似视为上图反应过程线是一个升温过程,后温度达到反应开始的阶段,化学反应剧烈放热,炉内温度迅速升高,过高导致反应骤停,冷调节阀的作用使得温度下降,反应再次开始,放热再升温再制冷,不断循环,形成不停地震荡。
利用PID 调节之后的响应曲线,系统性能改进,与仿真一致,见图15
图15 PID调节结果
5.3 组态王运行界面如下
图16 调节前系统运行结果
炉温升温过程中热调节阀作用,炉内温度实时显示
图17 PID调节结果
接近稳定后,冷调节阀工作,由于化学反应是放热反应,冷调节阀使得炉内温度达到平衡,热调节阀能够不工作。
实际温度控制系统中输出驱动电路控制器将其PID运算的结果转化为不同占空比的脉冲信号输出,该信号作用于执行机构还需要经过驱动电路。利用PWM(脉冲宽度调制)原理
利用单片机定时器1中断生成PWM波,占空比经过按键可调
图18 PWM波形
参考文献
[1]三诸静.模糊控制理论与系统原理仁[M].北京:机械工业出版社, .
[2]刘学君.反应釜温度控制系统的研究[D].河北:燕山大学, .
[3]张辉,闰广平.即聚合釜的自动控制[J].古林化工学院学报, ,21:50-52.
[4]鞠丽叶.自适应预测控制在炉温控制的应用[J].青岛科技大学学报, ,25(1):83-87.
[5]丑王伟.广义预测控制理论及其应用[M].北京:科学出版社,1998.
[6]张涛.反应釜温度控制系统的研究[D].山东:青岛大学, .
附录
附录一: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[ ] = "please input--" ;
uchar code table1[ ] = {'0','1','2','3','4','5','6','7','8','9','-'} ;
uchar code table2[ ] = "your aim tp " ;
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;
case 0x7b: ;break; //表示第三种运算,“乘”运算
case 0xe7: break;
case 0xd7: key=0;en=1;break;
case 0xb7: break;//等于号被按下,用dengyu这一变量记录下来
case 0x77:;break;//表示第四种运算,“除”运算
}
while(temp!=0xf0) //等待按键释放
{
temp=P2;temp=temp&0xf0;
}
}
}
}
void keyscan()
{
P2=0xfe;swith(); //将第一行低至为低电平,后调用swith函数
P2=0xfd;swith(); //将第二行低至为低电平
P2=0xfb;swith(); //将第三行低至为低电平
P2=0xf7;swith(); //将第四行低至为低电平
}
void writecom(uchar com)
{
lcdrs = 0 ; P0=com ; delay(5);lcden = 1 ;delay(5);lcden = 0 ;
}
void lcd_data(uchar date)
{ lcdrs = 1 ;P0=date ;delay(5);lcden = 1 ;delay(5);lcden = 0 ;
}
void init()
{ writecom(0x38) ;writecom(0x0c) ; writecom(0x06) ; writecom(0x01) ;
}
void main()
{ init();
while(1)
{
cewen();
writecom(0x80+0x4b);
lcd_data(table1[temper1/10]); delay(1);
lcd_data(table1[temper1%10]);delay(1);
lcd_data('C');delay(1); keyscan();
if(zhiwen==1)
{ writecom(0x80);
for(num=0;num<14;num++)
{
lcd_data(table[num]);
delay(2);
}
}
else
{ writecom(0x80);
for(num=0;num<12;num++)
{
lcd_data(table2[num]);
delay(2);
}
}
while(zhiwen)
{
keyscan();
if(en==1)
{ newtep=newtep*10+key;en=0; a=a+1;
if(a==1){writecom(0x80+0x0c);lcd_data(table1[key]); delay(2);}
if(a==2){writecom(0x80+0x0d);lcd_data(table1[key]); delay(2);a=0;}
if(newtep>99){zhiwen=0;newtep=0;key=0;}
}
key=0;
if(dengyu==1)
{dengyu=0;new=newtep;newtep=0;zhiwen=0;}
}
writecom(0x80+0x0c);
lcd_data(table1[new/10]); delay(2);
lcd_data(table1[new%10]);delay(2);
lcd_data('C');delay(2);
if(temper1>new) {ledg=0;ledr=1;jiare=0;jiashui=1;}if(temper1<new) {ledr=0;ledg=1;jiare=1;jiashui=0;}
if(temper1==new) {ledg=1;ledr=1;jiashui=0;beer=0;delay(1000);beer=1;jiare=1;delay( 0);beer=0;delay( );beer=1;jiare=0;}
}
}
展开阅读全文