反应器理论课大作业二氧化硫转换器最优化(共20页).docx
精选优质文档-倾情为你奉上化学反应器理论大作业二氧化硫转换器最优化班 级: 学 号: 2014 指导教师: 文利雄教授 姓 名: 陈 双 全 专心-专注-专业二氧化硫转换器最优化反应方程式:SO21/2O2=SO3 (放热反应)四段绝热反应器,级间间接换热,反应器常压操作。1. 基础数据混合物恒压热容Cp 0.2549kcal/kg·K;H =23135kcal/kmol;床层空隙率y554kg/m3;进口SO2浓度8.0%,O2浓度9.0%,其余为氮气;处理量131kmolSO2/hr,要求最终转化率98。2.动力学方程式中: 3. 基本要求 (1)在TX图上,做出平衡线,至少4条等速率线;(2)以一维拟均相平推流模型为基础,在催化剂用量最少的前提下,总的及各段的催化剂装量;进出口温度、转化率;并在T-X图上标出折线。4.讨论(1)要求的最终转化率从97变化到99对催化剂用量的影响;(2)如果有关系:YO2YSO221,SO2进口浓度在79之间变化,对催化剂装量的影响。一T-X图绘制平衡线与等反应速率线 本次大作业计算程序,用数学计算软件matlab编程实现。平衡线为一定温度下,可逆反应所能达到的最大转化率,在此转化率,反应速率表观为0,以下下画出平衡线。已知反应速率-r如下:令-Rso2=0,即 =1,化成Kp=Pso3/Pso2/Po20.5膨胀因子:epsilong=-yso2*0.5;Pso20=1.01325*yso2; Pso2=Pso20*(1-xso2)/(1+epsilong*xso2);Po2=(yo2-yso2*0.5*xso2)/yso2/(1-xso2)*Pso2;Pso3=Pso2*xso2/(1-xso2);可以看出T和xso2的关系,计算结果如下:表1.平衡线所需数据温度/K987.51 889.21 835.22 797.47 767.96 743.32 721.81 702.40 Xe0.050.10.150.20.250.30.350.4684.41 667.37 650.90 634.65 618.32 601.54 583.84 564.55 542.48 0.450.50.550.60.650.70.750.80.85515.17 475.21 475.21 463.63 449.41 430.53 400.84 373.81 0.90.950.950.960.970.980.990.995计算使用的matlab代码见附录1.使用matlab导出的数据作平衡线图,如下图1所示。图1 平衡线图为了使等反应速率线在整个图范围内较好分布再平衡线的下侧,避免所画的等反应速率线扎堆的情况,如上图所示,确定一温度(本次计算过程T=530),算出过此温度上Xso2分别等于0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8的等速率线。即画出反应速率为Rso2(T=450,Xso2=0.1)、Rso2(T=450,Xso2=0.2)、Rso2(T=450,Xso2=0.3),及 Rso2(T=450,Xso2=0.8)等8条速率线。已知Rso2,T求X,使用割线法迭代求解。得到数据使用Origin作图如下:图2. 合适范围内的TX图考虑到上图不够美观,不能完全反应出一般R-X图趋势,老师在课堂上所演示的T_X图,反应速率曲线有最高点、和X轴的两个交点。因此在更大温度范围内求解,求解释也验证了割线法关于此方程求解的广泛的适应性。比较完整的T-X图如下图。图3. 完整范围内的TX图题中Rso2的适宜反应范围是420600,但在更高的温度范围内也是会有反应的,即使反应曲线在适宜温度范围以外精确度低,或者反应体系发生变化,此图权当得到更加美观、完整的图,以期反映出整个T-X图的趋势。计算平衡线所需的matlab代码见附录1.计算数据如下表:表2 等反应速率线数据R=-1.9489E-5R=-1.6923E-05R=-1.4462E-05R=-1.2098E-05R=-9.8175E-06R=-7.5949E-06R=-5.3765E-06R=-3.0059E-06T/ Xso2T/ Xso2T/ Xso2T/ Xso2T/ Xso2T/ Xso2T/ Xso2T/ Xso26200.0616200.1556200.2456200.3316200.411 6200.485 6200.553 6200.6166100.0766100.1696100.2596100.3466100.429 6100.505 6100.576 6100.6426000.0896000.1826000.2726000.3606000.445 6000.524 6000.598 6000.6675900.1005900.1935900.2845900.3735900.459 5900.541 5900.618 5900.6915800.1095800.2025800.2945800.3845800.472 5800.557 5800.637 5800.7145700.1165700.2095700.3025700.3935700.483 5700.570 5700.654 5700.7355600.1195600.2135600.3075600.4005600.492 5600.582 5600.669 5600.7545500.1185500.2145500.3095500.4035500.498 5500.591 5500.682 5500.7725400.1125400.2105400.3075400.4045400.501 5400.597 5400.692 5400.7875300.1005300.2005300.3005300.4005300.500 5300.600 5300.700 5300.8005200.0795200.1835200.2875200.3915200.495 5200.599 5200.705 5200.8115100.0485100.1575100.2665100.3755100.484 5100.594 5100.706 5100.8195000.0035000.1195000.2345000.3505000.467 5000.584 5000.703 5000.824490(0.060)4900.0644900.1884900.3134900.439 4900.566 4900.695 4900.827480(0.147)480(0.013)4800.1234800.2604800.398 4800.538 4800.680 4800.826470(0.264)470(0.118)4700.0314700.1844700.339 4700.496 4700.656 4700.820460(0.981)460(0.856)460(0.692)460(0.494)460(0.264)460(0.003)4600.292 4600.632450450(0.555)450(0.193)4500.337440(0.177)注:表中带括号的数为负数二.四段反应器数据的计算及优化在工业实践中,对于任何化学反应,要保证反应在尽量高的反应速率下进行,即意味着减小反应器的体积,减少设备投资,减少催化剂的填量,即意味着减少操作费用,更快的反应速率对应着更小的反应器体积,也意味着更大的收益。对于放热反应,反应所放热量抑制反应向正方向进行。随着温度的升高,虽然正反应速率增大,但逆反应速率增大更快,整个反应便在更低的转化率下达到平衡,放热反应高温对应着低转化率。而且随着反应温度升高,会出现反应体系高温下出现的问题、能耗、设备要求等其他方面,一般不在过高的温度下进行生产。从多方面考虑,但反应放热到一定温度,会使物料抽出与冷源换热降低物料温度,以达到更快的反应速率、更大的转化率。多级反应器的级间换热即是出于这个目的。思路图:对于四级反应器,若使反应所需催化剂用量最少。由把Wcat分别对各段求x和T的微分,使其等于0;即即下一段入口温度点的反应速率和上一段出口的反应速率相等。假设第一段入口温度Tin(1),进行操作线计算。1. 操作线线斜率:已知入口温度、组成,出口组成,求出口温度:so2反应所放出的热量nso2*xso2 * (-H) =M*cp*Txso2/ T= M*cp/ nso2* (-H) 操作线斜率即可求得。 由function t1 = TXXtoT (t0,x0,x1 )实现 xso2/ T=1/232.30452.求反应器出口转化率Xout(i)、出口温度Tout(i)和所用催化剂的量Wcat(i):已知Tout(i-1),Xout(i-1),求Tin(i)当满足条件 (1)时,反应器催化剂用量在此条件下取得极值,求微分、积分可以用matlab中的求偏导函数diff、积分函数int,亦可用其他高精度的微积分函数,但我所使用对(1/r)的Ti偏导数计算时间长,计算一万次可花费数分钟(本人所使用的计算机),对偏微分的积分耗时更长,一次可达数分钟。因此选用梯形法求微分、积分也可以用一x的微小偏差,获得的y的增量,用((y+y)-y)/x即为此处导数,求积分则用梯形法,选取足够小的步长,算出每一步长对应的面积,作为积分值。用梯形法计算对偏微分的积分,十万次只需数秒,具有实践性。求出口T见函数function daera.求催化剂用量见函数 function dWcat.应当注意的是,Xso2满足条件(1)时,不可大于600对应的转化率,如果大于600时的转化率,则此段出口转化率为600对应的转化率,出口温度即为600。已知入口温度,出口转化率,已知操作线斜率,即可算出出口温度、出口时的反应速率r.见函数 function TXXtoT。 3求反应器入口温度已知上一段出口转化率Xout(i-1)、出口温度Tout(i-1)、反应速率rout(i-1)。下一段入口转化率Xin(i)=Xout(i-1),由条件可知r(i)=r(i-1). 已知Xso2、r,求T。已知第二段入口反应速率r(Tin(2),Xin(2) 利用function T = RXtoT2( r,x)(变步长搜索) 或者 function T = RXtoT( r,x)(割线法)对于求第二段入口温度时,如果使用割线法/牛顿法,因为在420475时,导数值很大,而且有重根的情况(因为 r(Tin(2),Xin(1)=r(Tout(1),Xin(1)),有时候所得不是想要的解,甚至得到不到解。有时需手动改变初值。比较麻烦在已知温度在420到Tout(i-1)之间情况下,考虑采用变步长依次搜索法,计算50次,即可达到T的7位小数的精确度,且屡试不爽。见函数 function RXtoT2.function dw = dWcat (xd,tin,xin) 已知入口温度,出口转化率,已知操作线斜率,即可算出出口温度、出口时的反应速率r.见函数 function TXXtoT。给定一个第一入口温度,求得四级反应器的数据,xso2步长0.0001如果使用matalb, (从00.98,计算9800次)积分计算一次需要数分钟,如果使用梯形法计算微分积分,步长选择0.00001(计算近10万次),计算一次四级反应器数据只需不到两秒。梯形法虽然简单,但计算速率高了2、3个数量级。给定第一段进口温度,运行一次即可在excel中得到四段反应器数据,例子中当第一段进口温度设为444.65时,计算四段反应器数据如下:表3初设第一段进口温度设为444.65,反应器数据XinTin/XoutTout/Wcat/kg总1444.6500.66873600.0004123.7840440.7920.66873450.5700.90343505.0925600.0330.90343444.8880.96075458.2049535.9140.96075422.7150.97890426.93121181.06.对第一段入口温度的优化对第一段入口温度Tin(1)的优化,现在温度范围内得到Tin(1)对催化剂总量和最终转化率的影响趋势,再在小范围内搜索最优值。根据以上程序,使第一段入口温度Tin(1)从变化,得到第一段入口温度Tin(1)对催化剂总量和最终转化率的影响,得到数据列表如下表4不同第一段进口温度反应器数据 Xin Tin/ Xout Tout/ Wcat/kg 10.00000 420.000 0.72907 589.367 9259.02 61450.06 20.72907 420.551 0.95177 472.285 21700.01 30.95177 420.000 0.97978 426.507 30463.74 40.97978 420.000 0.97979 420.002 27.29 10.00000 425.000 0.71928 592.093 7712.74 56716.90 20.71928 425.549 0.94571 478.149 16480.08 30.94571 420.000 0.97939 427.824 32498.64 40.97939 420.000 0.97940 420.002 25.43 10.00000 430.000 0.70898 594.700 6528.33 53457.30 20.70898 430.590 0.93891 484.004 12829.12 30.93891 420.000 0.97889 429.288 34076.40 40.97889 420.000 0.97890 420.002 23.44 10.00000 435.000 0.69804 597.159 5606.16 48666.88 20.69804 435.626 0.93125 489.802 10178.76 30.93125 425.803 0.97545 436.071 25214.99 40.97545 420.000 0.97935 420.906 7666.98 10.00000 440.000 0.68625 599.420 4872.55 46810.19 20.68625 440.680 0.92250 495.562 8202.56 30.92250 432.310 0.97108 443.596 18018.05 40.97108 420.000 0.98011 422.098 15717.03 10.00000 445.000 0.66723 600.000 4072.90 38815.84 20.66723 451.263 0.90180 505.754 5455.91 30.90180 445.800 0.95988 459.292 9112.30 40.95988 423.713 0.97838 428.011 20174.72 10.00000 450.000 0.64570 600.000 3472.44 20243.67 20.64570 458.719 0.87962 513.059 4115.28 30.87962 455.588 0.94828 471.538 5291.79 40.94828 441.409 0.96728 445.823 7364.16 matlab源程序见附录2.1。根据上表数据作图如下,最优值区间图4最终转化率和催化剂总量随着Tin(1)变化趋势图由上图可以看出,在420450范围内,存在第一段入口温度使得最后转化率大于0.98,并且在440445之间。下一步从第一段入口温度445向440依次搜索,步长为0.1。所得结果如下表5转化率达标、催化剂最少用量时,反应器数据XinTin/XoutTout/Wcat/kg总10. 443.800 0.67239 600. 4254.61 44798.4220.67239 448.751 0.90746 503.359 5995.59 30.90746 442.555 0.96290 455.434 10707.01 40.96290 420.255 0.98015 424.262 23841.21 matlab程序见附录2.2由上表可知满足最终转化率0.98时,所有催化剂量为44798.42kg.根据上表数据用Origin作操作折线图如下:图4转化率达标、催化剂最少用量时,反应器操作线三.讨论: 1.要求的最终转化率从98变化到99对催化剂用量的影响;根据平衡线图,平衡转化率Xe=0.99时,对应的平衡温度Te=400.84,而平衡转化率随着温度升高而减小,所以在催化剂适用范围420600内,最终转化率达不到0.99。求在420600摄氏度温度范围内,最大转化率时,四段反应器数据结果如下表所示:表6最大转化率时,反应器数据XinTin/XoutTout/Wcat/kg总10.00000 443.980 0.60616 600.000 2301.352 40754.2420.60616 470.000 0.87710 539.737 5966.967 30.87710 420.000 0.97632 445.538 22586.786 40.97632 420.000 0.98368 421.894 9899.133 计算matlab源程序见附录3.1. 2.YO2YSO221,SO2进口浓度在79之间变化,对催化剂装量的影响。计算so2进料量在保持131kmol,求满足转化率0.98条件下催化剂用量最少表7催化剂用量随着进口so2浓度变化数据Yso2, mol%0.070.080.09Tin(1)/450454.99448.76Wcat/kg21626.8929988.336505.3可以看出,随着反应器进口Yso2浓度升高。所需催化剂填装量增大。以Yso2为变量,T=450,求r表7 T=450,反应速率随着so2浓度变化数据xso20.070.080.090.6-4.72E-06-4.36E-06-4.00E-060.5-4.27E-06-3.92E-06-3.57E-060.4-3.83E-06-3.49E-06-3.16E-060.3-3.39E-06-3.07E-06-2.75E-060.2-2.95E-06-2.65E-06-2.36E-060.1-2.50E-06-2.23E-06-1.96E-06以Yso2为变量,T=500,求r表7 T=500,反应速率随着so2浓度变化数据xso20.070.080.090.6-2.05E-05-1.89E-05-1.73E-050.5-1.82E-05-1.67E-05-1.52E-050.4-1.59E-05-1.45E-05-1.31E-050.3-1.37E-05-1.24E-05-1.11E-050.2-1.15E-05-0.00001-9.18E-060.1-9.29E-060.000-7.29E-06由上表可以看出,随着so2入口浓度的增大,反应速率的确降低了。符合以上结论。附录1 T-X图绘制平衡线与等反应速率线matlab代码%计算平衡线clc,clear,yso2=0.08;yo2=0.09;yn2=1-yso2-yo2;epsilong=-yso2*0.5;Pso20=1.01325*yso2; Xe(26)=0.0;for i=1:26 if i<=20 Xe(i)=-0.05+i*0.05;elseif i<26 Xe(i)=0.95+(i-21)*0.01;else Xe(i)=0.995; end Pso2=Pso20*(1-Xe(i)/(1+epsilong*Xe(i);Po2=(yo2-yso2*0.5*Xe(i)/yso2/(1-Xe(i)*Pso2;Pso3=Pso2*Xe(i)/(1-Xe(i); Kp=Pso3/(Pso2*Po20.5);Te(i)=11295.3/log(Kp/2.26203e-5);endTe=Te-273.15;TeXe=Te;Xe;TeXe=TeXe',xlswrite('Txn.xls',TeXe,'sheet2'); %计算反应等速率线Xso2(1)=0;for k=1:8j=2;T(1)=530+273.15; Xso2(k)=k*0.1; Rso2=TXtoRso2(T(1),Xso2(k);%确定反应速率值 TXresult(1,1)=Rso2;T=1300+273.15;for i=1:90 T=T-10; a=TRXtoX(T,Rso2,0.05); if a<1 TXresult(j,1)=T-273.15;TXresult(j,2)=a; fprintf('rso2(%d)=%5g ,T= %0.1f ,Xso2= %0.5f ,n',k,Rso2,T-273.15,a); j=j+1; else continue; endendfprintf('n');if k=1 %将结果存到excel文件名称:Txn.xls,工作表sheet2中 xlswrite('Txn.xls',TXresult,'sheet2','C1:D90');elseif k=2 xlswrite('Txn.xls',TXresult,'sheet2','E1:F90');elseif k=3 xlswrite('Txn.xls',TXresult,'sheet2','G1:H90');elseif k=4 xlswrite('Txn.xls',TXresult,'sheet2','I1:J90');elseif k=5 xlswrite('Txn.xls',TXresult,'sheet2','K1:L90');elseif k=6 xlswrite('Txn.xls',TXresult,'sheet2','M1:N90');elseif k=7 xlswrite('Txn.xls',TXresult,'sheet2','O1:P90');elseif k=8 xlswrite('Txn.xls',TXresult,'sheet2','Q1:R90');end ;clear TXresult;endfprintf(2,'Done! the result has been exported to file :Txn.xls sucessfully!n')附录2.1 计算四段反应器各段数据及优化%以下程序计算反应器一段入口温度420450变化时,最终转化率和所需催化剂的量数据%最终结果输出到excel文件Txn.xls中sheet2中存放在S:K列clear,clc;for k=1:8Tin=415+273.15+5*k;xin=0;dx=0.00001;fprintf(2,'t0=%0.2f,x0=%0.5f',Tin-273.15,xin);xso2=0.5*dx;WCAT=0;for i=1:4sum=0;sumw=0;x600=(600+273.15-Tin(i)/ 232.+xin(i);while sum<=0 da=daera(xso2,Tin(i),xin(i); dW=dWcat(xso2,Tin(i),xin(i); sum=sum+da;sumw=sumw+dW; xso2=xso2+dx; if xso2>=x600 xso2=x600; break; endend Xso2(i)=xso2;Wcat(i)=sumw;WCAT=WCAT+Wcat(i); Tout(i)=TXXtoT(Tin(i),xin(i), Xso2(i); if Tout(i)>873.15 Tout(i)=873.15; end r(i)=TXtoRso2(Tout(i), Xso2(i); fprintf(2,'xout(%d)= %0.5f ,Tout(%d)= %0.3f¡æ Wcat(%d)=%0.5f;n',i,Xso2(i),i,Tout(i)-273.15,i,Wcat(i); Tin(i+1)=RXtoT2(r(i),Xso2(i); if Tin(i+1)<693.15 Tin(i+1)=693.15; end xin(i+1)=xso2; fprintf(2,'Tin(%d)=%0.4f¡æn',i+1,Tin(i+1)-273.15);Q2result(i,:)=i,xin(i),Tin(i)-273.15,Xso2(i),Tout(i)-273.15,Wcat(i);endif k=1 xlswrite('Txn.xls',Q2result,'sheet2','S1:X4');elseif k=2 xlswrite('Txn.xls',Q2result,'sheet2','S6:X9');elseif k=3 xlswrite('Txn.xls',Q2result,'sheet2','S11:X14');elseif k=4 xlswrite('Txn.xls',Q2result,'sheet2','S16:X19');elseif k=5 xlswrite('Txn.xls',Q2result,'sheet2','S21:X24');elseif k=6 xlswrite('Txn.xls',Q2result,'sheet2','S26:X29');elseif k=7 xlswrite('Txn.xls',Q2result,'sheet2','S31:X34')endend附录2.2 计算四段反应器各段数据及优化clear,clc;%根据附录2.2结果,转化率0.98时,存在于445440温度区间,以下是寻求在此温度区间内,催化剂用量最小时的Tin(1).for k=1:50Tin=445+273.15-0.01*k;xin=0;dx=0.00001;fprintf(2,'t0=%0.2f,x0=%0.5f',Tin-273.15,xin);xso2=0.5*dx;WCAT=0;for i=1:4sum=0;sumw=0;x600=(600+273.15-Tin(i)/ 232.+xin(i);while sum<=0 da=daera(xso2,Tin(i),xin(i); dW=dWcat(xso2,Tin(i),xin(i); sum=sum+da;sumw=sumw+dW; xso2=xso2+dx; if xso2>=x600 xso2=x600; break; endend Xso2(i)=xso2;Wcat(i)=sumw;WCAT=WCAT+Wcat(i); Tout(i)=TXXtoT(Tin(i),xin(i), Xso2(i); if Tout(i)>873.15 Tout(i)=873.15; end r(i)=TXtoRso2(Tout(i), Xso2(i); fprintf(2,'k=%d xout(%d)= %0.5f ,Tout(%d)= %0.3f¡æ Wcat(%d)=%0.5f;n',k,i,Xso2(i),i,Tout(i)-273.15,i,Wcat(i); Tin(i+1)=RXtoT2(r(i),Xso2(i); if Tin(i+1)<693.15 Tin(i+1)=693.15; end xin(i+1)=xso2; fprintf(2,'Tin(%d)=%0.4f¡æn',i+1,Tin(i+1)-273.15);Q2result(i,:)=i,xin(i),Tin(i)-273.15,Xso2(i),Tout(i)-273.15,Wcat(i);endif i=4&&xso2>0.98 xlswrite('Txn.xls',Q2result,'sheet2','S36:X39'); break;endend附录3 求在420600范围内,催化剂用量最少情况下所达到的最大转化率%根据附录2.2运行结果,转化率最大时Tin(i)应小于444,则从444向减小方向搜索。Maxso2=0for k=1:50Tin=444.0+273.15-0.01*k;xin=0;dx=0.00001;xso2=0.5*dx;WCAT=0;for i=1:4sum=0;sumw=0;x600=(600+273.15-Tin(i)/231.+xin(i);while sum<=0 da=daera(xso2,Tin(i),xin(i); dW=dWcat(xso2,Tin(i),xin(i); sum=sum+da;sumw=sumw+dW; xso2=xso2+dx; if xso2>=x600 xso2=x600; break; endend Xso2(i)=xso2;Wcat(i)=sumw;WCAT=WCAT+Wcat(i); Tout(i)=TXXtoT(Tin(i),xin(i), Xso2(i); if Tout(i)>873.15 Tout(i)=873.15; end r(i)=TXtoRso2(Tout(i), Xso2(i); Tin(i+1)=RXtoT2(r(i),Xso2(i); if Tin(i+1)<693.15 Tin(i+1)=693.15; end xin(i+1)=xso2; Q2result(i,:)=i,xin(i),Tin(i)-273.15,Xso2(i),Tout(i)-273.15,Wcat(i);