增益预定化学反应器的控制

该示例显示了如何设计和调整从低至高转化率过渡的化学反应器的增益调度控制器。用于背景,见Seborg,D.E.等人,“过程动态和控制”,第2 ED。,2004,Wiley,PP。34-36。

连续搅拌釜式反应器

这里考虑的过程是在从低至高转化率的转变期间连续搅拌釜反应器(CSTR)(高于低残留浓度)。由于化学反应是放热(产生热量),因此必须控制反应器温度以防止热失控。随着过程动态是非线性的,并且随着转换速率的增加,过程动态是从过程动态的非线性和从稳定的转换而转换。反应堆动态在Simulink中建模。万博1manbetx受控变量是残余浓度Cr和反应器温度TR.,并且操纵变量是温度TC.在反应器的冷却夹套中循环的冷却剂的内容。

Open_System('rct_cstr_ol'

我们想让残留浓度从最初的8.57 kmol/m^3降到2kmol /m^3。了解工艺动态如何随残留浓度的变化而变化Cr,找到五个值的均衡条件Cr在8.57和2之间,并线性化每个平衡周围的过程动态。在每个平衡点处记录反应器和冷却剂温度。

Creq = Linspace(8.57,2,5)';%浓度treq = zeros(5,1);%反应器温度TCEQ =零(5,1);%冷却剂温度%指定修剪条件opspec = operspec ('rct_cstr_ol'5);k = 1:5%设定所需的残余浓度OPSPEC(k).outputs(1).y = CREQ(k);opspec(k).outputs(1).known = true;结束%计算平衡条件和日志相应的温度[op,报告] =查找('rct_cstr_ol'opspec,......findopoptions(“DisplayReport”'离开'));k = 1:5 treq(k)=报告(k).outputs(2).y;tceq(k)= op(k).inputs.u;结束修剪条件下的%线性化过程动态g =线性化('rct_cstr_ol''rct_cstr_ol / cstr', op);G.InputName = {'cf''tf''tc'};G.OutputName = {'Cr''tr'};

将反应器和冷却剂温度绘制在平衡时作为浓度的函数。

次要情节(311),情节(CrEQ'b- *'),网格,标题('残留浓度'), ylabel (“CrEQ”)次要情节(312)、情节(TrEQ'b- *'),网格,标题('反应器温度'), ylabel ('treq')子图(313),绘图(TCEQ,'b- *'),网格,标题(冷却液温度的), ylabel ('tceq'

一种开环控制策略包括遵循上述冷却剂温度曲线平滑过渡之间Cr= 8.57Cr= 2均衡。然而,这种策略因中间范围内的反应不稳定而注定,必须适当地冷却以避免热失控。这是通过检查上面考虑的五个平衡点的线性化模型的杆来确认这一点(五种模型中的三个是不稳定的)。

极(G)
ANS(:,:,1)= -0.5225 + 0.0000i -0.8952 + 0.0000i ANS(:,2)= 0.1733 + 0.0000i -0.8866 + 0.0000i ANS(:,3)= 0.5114 + 0.0000i-0.8229 + 0.0000i ANS(::,4)= 0.0453 + 0.0000i -0.4991 + 0.0000i ANS(:,:,5)= -1.1077 + 1.0901i -1.1077  -  1.0901i

BODE PLOT进一步突出显示从转换时植物动力学的显着变化Cr= 8.57Cr= 2。

波德(G (clf:,'tc'), {0.01, 10})

反馈控制策略

为了防止热失控在升高剩余浓度时,请使用反馈控制来调节冷却剂温度TC.根据残留浓度的测量Cr和反应器温度TR..对于此应用,我们使用级联控制架构,内环调节反应器温度,外环跟踪浓度设定值。两种反馈循环都是数字的,采样期为0.5分钟。

Open_System('rct_cstr'

目标集中奶油在T = 36的T = 10到2 kmol / m ^ 3以下降到8.57 kmol / m ^ 3(过渡持续26分钟)。相应的简档tr对于反应器温度,通过插值得到平衡值历史赛从分析。控制器计算冷却液温度的调整DTC.相对于初始均衡值TCEQ(1)= 297.98Cr= 8.57。请注意,该模型将设置为最初,输出TRSP.“浓度控制器”块与反应器温度相匹配,调整DTC.为零,冷却液温度TC.处于均衡价值TCEQ(1)

clf t = [0 10:36 45];C = Interp1([010 36 45],[8.57 8.57 2 2],T);子图(211),绘图(t,c),网格,设置(gca,'ylim',[0 10])标题(“目标剩余浓度”), ylabel ('奶油'subplot(212), plot(t,interp1(CrEQ,TrEQ,C))'平衡时相应的反应器温度'), ylabel ('tref'), 网格

控制目标

使用TuningGoal.对象来捕获设计需求。首先,Cr应该遵循定位点奶油响应时间约为5分钟。

r1 = tuninggoal.tracking('奶油''Cr'5);

内圈(温度)应稳定反应动态,充分阻尼和足够快的腐烂。

Mindecay = 0.2;造白= 0.5;%循环与外环打开的闭环磁极R2 = TuningGoal。波兰人('tc',思维,造版);r2.openings =.“TrSP”;

控制器输出的速率限制块指定冷却液温度TC.变化速度不能超过每分钟10度。这是对控制器权限的严重限制,如果忽略它,可能导致性能低下或不稳定。要考虑这个速率限制,请注意奶油以0.25 kmol / m ^ 3 / min的速率变化。为了保证TC.没有比10度/分钟更大,收益不变奶油TC.应小于10/0.25=40。

r3 = tuninggoal.gain('奶油''tc', 40);

最后,在工厂输入中需要至少7 dB的增益余量和45度的相余量TC.

R4 = TuningGoal.Margins('tc'7、45);

增长计划的控制器

为了达到这些要求,我们在外环使用PI控制器,内环使用超前补偿器。由于采样速率较慢,需要先导补偿器来充分稳定中浓度下的化学反应Cr= 5.28 kmol / m ^ 3 /分钟。由于反应动力学随浓度变化很大,我们进一步将控制器增益作为浓度的函数进行调度。在Simulink中使用查找表(Loo万博1manbetxkup Table)块建模,如图1和图2所示。

图1:用于集中循环的增益预定PI控制器。

图2:温度循环的增益预定铅补偿器。

对这个增益调度控制器进行调优相当于对一系列集中值的查找表数据进行调优。参数化控制器增益,而不是调优单个查找表项Kp, Ki, Kt, a, b作为二次多项式Cr, 例如,

$$ k_p(c_r)= k_ {p0} + k_ {p1} c_r + k_ {p2} c_r ^ 2。$$

除了减少调整的变量数量之外,这种方法确保了平滑的增益转换为Cr各不相同。使用systune,您可以自动调整系数$ k_ {p0},k_ {p1},k_ {p2},k_ {i0},\ ldots $满足要求R1-R4在上面计算的五个均衡点。这增加了在五个设计点上调了增益预定的控制器奶油弹道。使用tunableSurface对象以将每个增益参数化为二次函数Cr.“调谐网格”设置为五个浓度CREQ.和二次参数化的基本函数是C_r美元,C_r ^ 2美元.大多数收益被初始化为相同为零。

tuninggrid = struct('Cr', CrEQ);ShapeFcn = @(Cr) [Cr, Cr^2];Kp = tunableSurface ('kp', 0,调谐网格,ShapeFcn);ki = tunballureface(“吻”,-2,tuninggrid,shapefcn);kt = tunballulface('kt', 0,调谐网格,ShapeFcn);一个= tunableSurface ('一种', 0,调谐网格,ShapeFcn);b = tunablyurface('B', 0,调谐网格,ShapeFcn);

控制器调优

由于目标带宽在奈奎斯特频率的十年内,因此更容易直接在离散域中调整控制器。将线性化过程动态离散,采样时间为0.5分钟。使用ZOH方法反映数字控制器如何与连续时间工厂相互作用。

ts = 0.5;gd = c2d(g,ts);

创建一个slTuner用于调整上述二次增益调度的接口。用块替换法将非线性对象模型替换为5个离散线性模型Gd在设计点获得CREQ..使用setBlockParam.要关联可调谐增益函数kp.ki.kt.一个b使用相同名称的查找表块。

BlockSubs =结构(“名字”'rct_cstr / cstr'“价值”,GD);st0 = sltuner('rct_cstr',{'kp'“吻”'kt''一种''B'}, BlockSubs);ST0。Ts = Ts;%用于调优的采样时间%登记兴趣点st0.addpoint({'奶油''Cr''tr'“TrSP”'tc'})%参数化查找表块ST0.setBlockParam ('kp',kp);ST0.setBlockParam (“吻”,ki);ST0.setBlockParam ('kt',kt);ST0.setBlockParam ('一种',);ST0.setBlockParam ('B',b);

你现在可以使用systune调整控制器系数以防止要求R1-R4.使稳定性保证金要求硬限制并优化其余要求。

ST = stune(ST0,[R1 R2 R3],R4);
最终:软= 1.23,硬= 0.99939,迭代= 198

由此产生的设计满足了硬约束(硬<1)几乎满足剩余的要求(接近1)。要验证此设计,请使用与相同的斜率模拟浓度的响应奶油.每个绘图显示五个设计点的线性响应CREQ.

T = 0:TS:20;UC = Interp1([02 5 20],( -  0.25)* [0 0 3 3],t);子图(211),LSIM(Getiotransfer(St,'奶油''Cr'),UC)网格,集(GCA,'ylim'[-1.5 - 0.5])、标题('残留浓度')Subplot(212),LSIM(Getiotransfer(St,'奶油''tc')、加州大学)网格,标题(冷却剂温度变化的

注意,冷却剂温度的变化率保持在物理范围内(每分钟10度或每个样品周期5度)。

控制器验证

检查每个增益如何变化Cr在过渡期间。

%访问调谐增益计划TGS = GetBlockParam(ST);%plot增益配置文件clf subplot(321), viewSurf(TGS.Kp), ylabel('kp')子图(322),ViewsURF(TGS.KI),Ylabel(“吻”)子图(323),ViewsURF(TGS.KT),Ylabel('kt') subplot(324), viewSurf(TGS.a), ylabel('一种') subplot(325)、viewSurf(TGS.b)、ylabel('B'

为了验证在Simulink中的增益调度控制器,首先使用万博1manbetxwriteBlockValue将调整结果应用于Simulink模型。万博1manbetx对于每个查找表块,这会评估表断点处的相应二次增益公式,并相应地更新表数据。

writeblockvalue(st)

然后按Play按钮,用调谐的增益计划模拟响应。仿真结果如图3所示。增益调度控制器成功地驱动反应通过过渡与足够的响应时间和没有饱和的速率限制(控制器输出匹配有效的温度变化DTC.).反应堆温度保持在其平衡值附近tr,表明控制器保持反应接近平衡,同时防止热失控。

图3:使用增益预定的级联控制器转换。

控制器在Matlab中调整

或者,您可以在MATLAB中直接调整增益调度,而不使用slTuner界面。首先将增益参数化为二次函数Cr如上所完成的。

tuninggrid = struct('Cr', CrEQ);ShapeFcn = @(Cr) [Cr, Cr^2];Kp = tunableSurface ('kp', 0,调谐网格,ShapeFcn);ki = tunballureface(“吻”,-2,tuninggrid,shapefcn);kt = tunballulface('kt', 0,调谐网格,ShapeFcn);一个= tunableSurface ('一种', 0,调谐网格,ShapeFcn);b = tunablyurface('B', 0,调谐网格,ShapeFcn);

使用这些收益来构建PI和铅控制器。

pi = pid(kp,ki,'ts',ts,'不时''min');pi.u ='ECR';pi.y =“TrSP”;铅= kt * tf([1-a],[1-b],ts,'不时''min');领先。u ='etr';领导.Y ='tc';

使用连接建立了整个控制系统在五个设计点的闭环模型。标记控制器输出TRSP.TC.作为“分析点”,因此可以在这些位置进行开放的环路和稳定性边距。闭环模型T0.一个5乘1的线性模型阵列取决于的可调系数Kp, Ki, Kt, a, b.每半分钟都是离散和采样的每个模型。

gd.timeUnit =.'min';S1 = sumblk ('ECR = CREF  -  CR');s2 = sumblk('etr = trsp  -  tr');t0 = connect(gd(:,'tc')、铅、π,S1, S2,'奶油''Cr',{“TrSP”'tc'});

最后,使用systune调整增益计划系数。

T = SYTUNE(T0,[R1 R2 R3],R4);
最终:软= 1.21,硬= 0.99946,迭代= 229

结果类似于上面获得的结果。通过作为一个函数绘制收益来确认Cr使用调谐系数T

clf subplot(321), viewSurf(setBlockValue(Kp,T)), ylabel('kp') subplot(322), viewSurf(setBlockValue(Ki,T)), ylabel(“吻”)Subplot(323),ViewsURF(SetBlockValue(kt,t)),ylabel('kt') subplot(324), viewSurf(setBlockValue(a,T)), ylabel('一种')Subplot(325),ViewsURF(SetBlockValue(B,T)),Ylabel('B'

您可以通过模拟每个设计点的线性响应进一步验证设计。但是,您需要返回Simulink以模拟增益计划控制器的非线性响万博1manbetx应。

另请参阅

||

相关的例子

更多关于