主要内容

化学反应器的增益计划控制

这个例子展示了如何设计和调整一个增益调度控制器的化学反应器从低转换到高转换率。背景信息,参见Seborg, D.E.等人,“过程动力学和控制”,第二版,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,找到五个值的平衡条件Cr在8.57和2之间,并围绕每个平衡点线性化过程动力学。记录每个平衡点的反应堆和冷却剂温度。

CrEQ = linspace(8.57, 2、5)”;%浓度TrEQ=零(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,report]=findop(“rct_CSTR_OL”opspec,...findopOptions(“DisplayReport”“关闭”));k=1:5treq(k)=报告(k).输出(2).y;TcEQ(k)=运算(k).输入.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.57和Cr=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.0901i

Bode图进一步强调了植物在从Cr= 8.57Cr= 2。

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

反馈控制策略

为了防止在降低残余浓度时热失控,使用反馈控制来调整冷却液温度Tc基于残余浓度的测量Cr反应器温度Tr对于该应用,我们采用串级控制结构,其中内环调节反应器温度,外环跟踪浓度设定值。两个反馈回路均为数字回路,采样周期为0.5分钟。

open_system (“rct_CSTR”

目标浓度Cref从10时的8.57 kmol/m^3下降到36时的2 kmol/m^3(持续26分钟)。相应的配置文件不可食用的反应器的温度是通过对平衡值的插值得到的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],t);子地块(211),地块(t,C),网格,集合(gca,“ylim”, 10[0])标题(“目标剩余浓度”), ylabel (“Cref”) subplot(212), plot(t,interp1(CrEQ,TrEQ,C)) title(“平衡时的相应反应器温度”), ylabel (“不洁净的”)、网格

控制目标

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

R1=调整目标。跟踪(“Cref”“Cr”5);

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

MinDecay=0.2;MinDamping=0.5;%外环打开时约束内环的闭环极点R2 = TuningGoal。波兰人(“Tc”、MinDecay MinDamping);R2。机会=“TrSP”

控制器输出的速率限制块指定冷却剂温度Tc变化速度不能超过每分钟10度。这是对控制器权限的严重限制,如果忽略它,可能会导致性能低下或不稳定。要考虑这个利率限制,请注意这一点Cref以0.25 kmol/m^3/min的速率变化。以确保Tc变化速度不超过10度/分,增益从CrefTc应小于10/0.25=40。

R3=调整目标。增益(“Cref”“Tc”, 40);

最后,在工厂输入处需要至少7db的增益裕度和45度的相位裕度Tc

R4=调整目标。边距(“Tc”7、45);

Gain-Scheduled控制器

为了实现这些要求,我们在外环采用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在上面计算的五个平衡点上。这相当于调整增益调度控制器沿五个设计点Cref轨迹。使用tunableSurface对象将每个增益参数化为Cr.“调谐网格”设置为五个浓度克雷克二次参数化的基函数是C_r美元,C_r ^ 2美元.大多数增益初始化为零。

TuningGrid=struct(“Cr”, CrEQ);ShapeFcn = @(Cr) [Cr, Cr^2];Kp = tunableSurface (“Kp”, 0, TuningGrid, ShapeFcn);Ki = tunableSurface (“吻”, -2, TuningGrid, ShapeFcn);Kt = tunableSurface (“Kt”, 0, TuningGrid, ShapeFcn);一个= tunableSurface (“a”,0,TuningGrid,ShapeFcn);b=可调曲面(“b”, 0, TuningGrid, ShapeFcn);

控制器调优

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

Ts=0.5;Gd=c2d(G,Ts);

创建一个slTuner用于调整上面介绍的二次增益计划的接口。采用块代换法将非线性对象模型替换为5个离散线性模型Gd在设计点获得克雷克.使用setBlockParam关联可调增益函数金伯利进程碘化钾Kt一个b使用同名的查找表块。

BlockSubs =结构(“名字”“rct_CSTR/CSTR”“价值”,Gd);ST0=单反调谐器(“rct_CSTR”,{“Kp”“吻”“Kt”“a”“b”}, BlockSubs);ST0。Ts = Ts;用于调优的样本时间%登记关注点ST0.addPoint({“Cref”“Cr”“Tr”“TrSP”“Tc”})%参数化查找表块ST0.setBlockParam (“Kp”,Kp);ST0.setBlockParam(“吻”,Ki);ST0.setBlockParam(“Kt”,Kt);ST0.setBlockParam(“a”,);ST0.setBlockParam (“b”,b);

您现在可以使用systune根据要求调整控制器系数R1-R4.使稳定性边际需求成为硬性约束,并优化剩余的需求。

ST = systune(ST0,[R1 R2 R3],R4);
Final: Soft = 1.23, Hard = 0.99991, Iterations = 195

最终的设计满足硬约束(硬<1)并且几乎满足了剩余的要求(为了验证这一设计,模拟浓度相同的斜坡的响应Cref.每个图显示了五个设计点的线性响应克雷克

t = 0: Ts: 20;uC = interp1([0 25 20],(-0.25)*[0 0 3 3],t);次要情节(211),lsim (getIOTransfer(圣,“Cref”“Cr”甘氨胆酸)、加州大学)网格,集(,“ylim”[-1.5 - 0.5])、标题(“残留浓度”)次要情节(212),lsim (getIOTransfer(圣,“Cref”“Tc”)、加州大学)网格,标题(冷却剂温度变化的

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

控制器验证

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

%访问调整后的增益计划TGS = getBlockParam (ST);绘制增益曲线clf subplot(321), viewSurf(TGS.Kp), ylabel(“Kp”) subplot(322), viewSurf(TGS.Ki), ylabel(“吻”) subplot(323)、viewSurf(TGS.Kt)、ylabel(“Kt”) subplot(324), viewSurf(TGS.a), ylabel(“a”) subplot(325), viewSurf(TGS.b), ylabel(“b”

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

writeBlockValue (ST)

接下来,按下Play按钮,用调整后的增益计划模拟响应。仿真结果如图3所示。增益调度控制器成功地驱动反应通过过渡充分的响应时间和没有饱和的速率限制(控制器输出匹配有效的温度变化故障诊断码).反应堆温度保持在它的平衡值附近不可食用的,表示控制器保持反应接近平衡,同时防止热失控。

图3:增益调度级联控制器的过渡。

MATLAB中的控制器整定

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

TuningGrid=struct(“Cr”, CrEQ);ShapeFcn = @(Cr) [Cr, Cr^2];Kp = tunableSurface (“Kp”, 0, TuningGrid, ShapeFcn);Ki = tunableSurface (“吻”, -2, TuningGrid, ShapeFcn);Kt = tunableSurface (“Kt”, 0, TuningGrid, ShapeFcn);一个= tunableSurface (“a”,0,TuningGrid,ShapeFcn);b=可调曲面(“b”, 0, TuningGrid, ShapeFcn);

使用这些增益构建PI和lead控制器。

π= pid (Kp,吻,“t”,Ts,“TimeUnit”“最小值”);PI.u=“ECr”;圆周率=“TrSP”铅=Kt*tf([1-a],[1-b],Ts,“TimeUnit”“最小值”);领先。u =“ETr”铅=“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”),铅,PI,S1,S2,“Cref”“Cr”,{“TrSP”“Tc”});

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

T=系统(T0,[R1 R2 R3],R4);
Final: Soft = 1.23, Hard = 0.99987, Iterations = 193

结果与上述结果相似。通过绘制增益作为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(“a”) subplot(325), viewSurf(setBlockValue(b,T)), ylabel(“b”

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

另请参阅

(万博1manbetx仿真软件控制设计)||(万博1manbetx仿真软件控制设计)

相关的例子

更多关于