主要内容

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

这个例子展示了如何设计和调整一个增益调度控制器的化学反应器从低转换到高转换率。背景信息,参见Seborg, D.E.等人,“过程动力学和控制”,第二版,2004,Wiley, 34-36页。

连续搅拌槽式反应器

这里考虑的过程是一个连续搅拌槽式反应器(CSTR)从低转化率到高转化率(高残留浓度到低残留浓度)的过渡过程。因为化学反应是放热的(产生热量),反应器的温度必须被控制以防止热失控。由于过程动力学是非线性的,并且随着转化率的增加从稳定到不稳定再回到稳定,控制任务变得复杂。在Simulink中建立了反应器动力学模型。金宝app控制变量为残留浓度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,报告] =查找(“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图进一步强调了植物在从Cr= 8.57Cr=2.

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

反馈控制策略

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

open_system (“rct_CSTR”

目标浓度奶油奶油从10时的8.57 kmol/m^3下降到36时的2 kmol/m^3(持续26分钟)。相应的配置文件不可食用的反应器的温度是通过对平衡值的插值得到的TrEQ从分析。控制器计算冷却剂温度调节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”, 10[0])标题(“目标剩余浓度”), ylabel (“Cref”) subplot(212), plot(t,interp1(CrEQ,TrEQ,C)) title('平衡时相应的反应器温度'), ylabel (“不洁净的”), 网格

控制目标

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

r1 = tuninggoal.tracking(“Cref”“Cr”5);

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

Mindecay = 0.2;造白= 0.5;%限制内环的闭环磁极,外环打开R2 = TuningGoal。波兰人('tc'、MinDecay MinDamping);R2。机会=“TrSP”

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

r3 = tuninggoal.gain(“Cref”'tc', 40);

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

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

Gain-Scheduled控制器

为了实现这些要求,我们在外环采用PI控制器,在内环采用超前补偿器。由于取样速率缓慢,需要铅补偿器来充分稳定化学反应在中等浓度Cr= 5.28 kmol / m ^ 3 /分钟。因为反应动力学在很大程度上随浓度而变化,我们进一步将控制器增益设定为浓度的函数。这是在Simulink中使用查找表块建金宝app模的,如图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, TuningGrid, ShapeFcn);Ki = tunableSurface (“吻”, -2, TuningGrid, ShapeFcn);Kt = tunableSurface ('kt', 0, TuningGrid, ShapeFcn);一个= tunableSurface ('一种', 0, TuningGrid, ShapeFcn);B = Tunablyurface('B', 0, TuningGrid, 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.adpoint({“Cref”“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 = systune(ST0,[R1 R2 R3],R4);
Final: Soft = 1.23, Hard = 0.99989, Iterations = 197

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

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('一种') subplot(325), viewSurf(TGS.b), ylabel('B'

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

writeBlockValue (ST)

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

图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 ('一种', 0, TuningGrid, ShapeFcn);B = Tunablyurface('B', 0, TuningGrid, ShapeFcn);

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

π= pid (Kp,吻,“t”,ts,“TimeUnit”“最小值”);pi.u ='ECR';pi.y =“TrSP”;铅= kt * tf([1 -a],[1-b],ts,“TimeUnit”“最小值”);领先。u ='etr';领导.Y ='tc'

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

gd.timeUnit =“最小值”;S1 = sumblk ('ECr = Cref - Cr');S2 = sumblk ('ETr = TrSP - Tr');T0 = Connect(GD(:,'tc'),铅,pi,s1,s2,“Cref”“Cr”,{“TrSP”'tc'});

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

T = SYSTUNE(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('一种') subplot(325), viewSurf(setBlockValue(b,T)), ylabel('B'

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

另请参阅

|(金宝app仿真软件控制设计)|(金宝app仿真软件控制设计)

相关的例子

更多关于