增益调度的化学反应器的控制

此示例示出了如何设计和调整从低化学反应器转变到高转化率的增益调度的控制器。有关背景,看Seborg,D.E.等人, “过程动力学和控制”,第2版,2004,Wiley出版社,第34-36。

连续搅拌槽式反应器

此处所考虑的过程是从低到高的转化率(高到低的残余浓度)转换期间的连续搅拌釜反应器(CSTR)。因为化学反应是放热反应(产生热量),反应器温度必须控制,以防止热失控。控制任务的事实,过程动态是非线性和过渡,从稳定到不稳定,回到稳定的转换率提高复杂。将反应器动力学建模在Simulink。万博1manbetx受控变量的残留浓度Cr反应堆温度TR,以及被操纵的变量是温度TC的冷却剂在反应器的冷却夹套循环。

open_system('rct_CSTR_OL')

我们想从最初的8。57 kmol/m^3过渡到2 kmol/m^3。了解过程动态如何随残余浓度的变化而演变Cr,求的5个值的平衡条件Cr在8.57和2之间,并将每个平衡的过程动力学线性化。记录每个平衡点的反应堆和冷却剂温度。

CREQ = linspace(8.57,2,5)';%浓度TrEQ = 0(5、1);%反应堆温度TcEQ = 0(5、1);%的冷却剂温度%指定修剪条件opspec = operspec ('rct_CSTR_OL'5);K = 1:5%设定希望的残留浓度opspec (k) .Outputs(1)。y = CrEQ (k);opspec (k) .Outputs(1)。知道= true;结束%计算平衡条件并记录相应温度(op、报告)= findop ('rct_CSTR_OL'opspec,findopOptions (“DisplayReport”,“关”));TrEQ(k) = report(k).Outputs(2).y;TcEQ (k) = op (k) .Inputs.u;结束在修整条件%线性化过程的动态特性G =线性化('rct_CSTR_OL',“rct_CSTR_OL /装运箱”, op);G。InputName = {Cf的,“助教”,“Tc”};G。OutputName = {'CR','TR'};

画出反应堆和冷却剂温度在平衡时作为浓度的函数。

次要情节(311),情节(CrEQ“b - *”)、网格、标题(的残余浓度), ylabel (“CrEQ”)次要情节(312)、情节(TrEQ“b - *”)、网格、标题(“反应堆温度”), ylabel ('TREQ')副区(313),图(TCEQ,“b - *”)、网格、标题(冷却液温度的), ylabel ('TCEQ')

一种开环控制策略包括遵循上述冷却剂温度剖面平稳过渡之间Cr= 8.57,Cr= 2平衡。然而,这种策略注定要失败,因为反应在中程不稳定,必须适当冷却以避免热失控。这是通过检查线性化模型的极点,为上述五个平衡点考虑(其中三个是不稳定的)。

极(G)
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

波特图进一步凸显植物动力学显著变化,同时从转变Cr= 8.57Cr= 2。

波德(G (clf:,“Tc”), {0.01, 10})

反馈控制策略

为了防止在降低残余浓度时热失控,可以使用反馈控制来调节冷却剂温度TC根据残余浓度的测量Cr和反应堆温度TR。对于这个应用,我们使用级联控制架构,其中内部回路调节反应器温度,外部回路跟踪浓度设定值。两个反馈循环都是数字的,采样周期为0.5分钟。

open_system('rct_CSTR')

目标浓度Cref从在t = 36(过渡持续26分钟)T = 10至2千摩尔/立方公尺8.57千摩尔/立方公尺斜降。相应的配置文件TREF反应器温度是通过插值平衡值得到的TREQ从分析。控制器计算冷却剂温度的调节直接转矩相对于初始平衡值TCEQ(1)= 297.98Cr= 8.57。注意,模型的设置使最初的输出TrSP的“浓度控制器”的块中的反应器温度相匹配,则调整直接转矩是零,和冷却剂温度TC处于平衡值TCEQ(1)

clf t = [0 10:36 45];C = interp1([0 10 36 45],[8.57 8.57 2 2],t);subplot(211), plot(t,C), grid, set(gca,'ylim',[0 10])标题(“目标剩余浓度”), ylabel ('Cref的')、plot(t,interp1(CrEQ,TrEQ,C))“平衡时对应的反应堆温度”), ylabel (“的T ref”)、网格

控制目标

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

R1 = TuningGoal.Tracking ('Cref的','CR'5);

内环(温度)应以足够的阻尼和足够快的衰减来稳定反应动力学。

MinDecay = 0.2;MinDamping = 0.5;在外环开时约束内环的闭环极点R2 = TuningGoal.Poles (“Tc”,MinDecay,MinDamping);R2.Openings =“TrSP”;

在控制器输出指定速率限制模块,可将冷却剂温度TC变化速度不能超过每分钟10度。这是控制器权限的一个严重限制,如果忽略它,可能会导致性能不佳或不稳定。要考虑到这个比率限制,请观察那个Cref以0.25千摩尔/立方公尺/ min的速度而变化。以确保TC不发生变化的速度比10度/分钟时,增益从CrefTC应该小于10/0.25=40。

R3 = TuningGoal.Gain ('Cref的',“Tc”, 40);

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

R4 = TuningGoal.Margins (“Tc”7、45);

增益控制计划

为了达到这些要求,我们在外环使用PI控制器,内环使用超前补偿器。由于采样速率较慢,需要使用前置补偿器来充分稳定中程浓度下的化学反应Cr= 5.28 kmol / m ^ 3 /分钟。由于反应动力学实质上随浓度而变化,我们进一步将控制器增益安排为浓度的函数。这是在Simulink中使用查找表块建万博1manbetx模的,如图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在上面计算的5个平衡点上。这相当于调整增益调度控制器在五个设计点沿Cref弹道。使用tunableSurface对象将每个增益参数化为的二次函数Cr。在“调整网格”设置为五个浓度CrEQ二次参数化的基函数是C_r美元,C_r ^ 2美元。大部分收益被初始化为恒等于零。

TuningGrid =结构('CR', CrEQ);ShapeFcn = @(Cr) [Cr, Cr²];Kp = tunableSurface (“金伯利进程”, 0, TuningGrid, ShapeFcn);淇= tunableSurface(“吻”,-2,TuningGrid,ShapeFcn);KT = tunableSurface(“Kt”, 0, TuningGrid, ShapeFcn);一个= tunableSurface (“一个”, 0, TuningGrid, ShapeFcn);b = tunableSurface (“b”, 0, TuningGrid, ShapeFcn);

控制器调优

因为目标带宽在奈奎斯特频率的十年内,所以更容易在离散域直接调优控制器。将线性化的过程动力学离散化,采样时间为0.5分钟。使用ZOH方法来反映数字控制器如何与连续时间装置相互作用。

t = 0.5;Gd =汇集(G, Ts);

创建slTuner接口调整二次增益时间表上面介绍。采用块代法将非线性模型替换为五个离散的线性模型Gd在设计点获得CrEQ。使用setBlockParam到可调增益功能相关联Kp,Ki,Kt,一个,b具有相同名称的查找表块。

BlockSubs =结构(“名字”,“rct_CSTR /装运箱”,“价值”、Gd);ST0 = slTuner ('rct_CSTR', {“金伯利进程”,“吻”,“Kt”,“一个”,“b”}, BlockSubs);ST0。Ts = Ts;用于调优的采样时间%标记感兴趣的点ST0.addPoint ({'Cref的','CR','TR',“TrSP”,“Tc”})%参数化查找表块ST0.setBlockParam (“金伯利进程”Kp);ST0.setBlockParam (“吻”、Ki);ST0.setBlockParam (“Kt”、Kt);ST0.setBlockParam (“一个”,);ST0.setBlockParam (“b”, b);

您现在可以使用systune根据要求调整控制器系数R1-R4。使稳定裕度需求的硬约束,优化剩余的需求。

ST =收缩期(ST0,[R1 R2 R3],R4);
Final: Soft = 1.23, Hard = 0.99939, Iterations = 198

最终的设计满足硬约束(硬< 1),并基本符合其余的要求(接近1)。为了验证这一设计,模拟到斜坡响应中浓度与相同的斜率Cref。每个图显示在五个设计点的线性响应CrEQ

t = 0时:TS:20;的uC = interp1([0 2 5 20],( -  0.25)* [0 0 3 3],T);副区(211),lsim(getIOTransfer(ST,'Cref的','CR'),UC)网格,设置(GCA,'ylim'[-1.5 - 0.5])、标题(的残余浓度)副区(212),lsim(getIOTransfer(ST,'Cref的',“Tc”)、加州大学)网格,标题(冷却剂温度变化的)

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

控制器验证

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

%访问调节增益时间表TGS = getBlockParam(ST);%绘制增益曲线clf(321)、viewSurf(TGS.Kp)、ylabel(“金伯利进程”)副区(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)

下一步按下播放按钮来模拟与调谐增益时间表的响应。仿真结果如图3所示。增益计划控制器成功地驱动反应通过过渡,有足够的响应时间和不饱和的速率限制(控制器输出)匹配有效温度变化直接转矩)。反应堆的温度接近于它的平衡值TREF,表明控制器在防止热失控的同时,使反应接近平衡。

图3:具有增益调度级联控制器转型。

控制器整在MATLAB

或者,您可以直接在MATLAB中调优增益调度,而不使用slTuner接口。首先参数化收益为二次函数Cr正如上面做的。

TuningGrid =结构('CR', CrEQ);ShapeFcn = @(Cr) [Cr, Cr²];Kp = tunableSurface (“金伯利进程”, 0, TuningGrid, ShapeFcn);淇= tunableSurface(“吻”,-2,TuningGrid,ShapeFcn);KT = tunableSurface(“Kt”, 0, TuningGrid, ShapeFcn);一个= tunableSurface (“一个”, 0, TuningGrid, ShapeFcn);b = tunableSurface (“b”, 0, TuningGrid, ShapeFcn);

使用这些增益来建立PI和领导控制器。

PI = PID(KP,KI,'TS'Ts,'TIMEUNIT',“最小值”);π。u =ECr的;π。y =“TrSP”;tf([1 -a],[1 -b],Ts,'TIMEUNIT',“最小值”);领先。u =“ETr”;领先。y =“Tc”;

使用连接建立了整个控制系统在五个设计点的闭环模型。标记控制器输出TrSPTC作为“分析点”,以便循环可以被打开,并在这些位置评估稳定边缘。闭环模型T0一个5乘1的线性模型数组是否取决于的可调系数Kp, Ki, Kt, a, b。每个模型是离散的,每半分钟采样一次。

Gd。TimeUnit =“最小值”;S1 = sumblk ('ECR = Cref的 -  CR');S2 = sumblk('ETR = TrSP  -  Tr' 的关系);T0 =连接(Gd (:,“Tc”)、铅、π,S1, S2,'Cref的','CR', {“TrSP”,“Tc”});

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

T = systune(T0,[R1 R2 R3],R4);
Final: Soft = 1.21, Hard = 0.99946, Iterations = 229

结果与上面的结果相似。通过绘制增益作为的函数来确认Cr使用调谐系数T

clf subplot(321)、viewSurf(setBlockValue(Kp,T))、ylabel(“金伯利进程”) subplot(322), viewSurf(setBlockValue(Ki,T)), ylabel(“吻”)副区(323),viewSurf(setBlockValue(千吨,T)),ylabel(“Kt”) subplot(324), viewSurf(setBlockValue(a,T)), ylabel(“一个”)副区(325),viewSurf(setBlockValue(B,T)),ylabel(“b”)

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