这个例子展示了如何设计和调整一个增益调度控制器的化学反应器从低转换到高转换率。背景信息,参见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 = 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'那“关闭”));为了(2).y =1;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.57CR.
= 2平衡。然而,这一策略注定要失败,因为反应在中程是不稳定的,必须适当冷却以避免热失控。这是通过考察上述五个均衡点的线性化模型的极点来证实的(五个模型中有三个是不稳定的)。
杆(g)
Ans (:,:,3) = 0.5114 + 0.00000 i -0.8229 + 0.00000 i Ans (:,:,4) = 0.0453 + 0.00000 i -0.4991 + 0.00000 i Ans (:,:,5) = -1.1077 + 1.0901i -1.1077 - 1.0901i
Bode图进一步强调了植物在从CR.
= 8.57到CR.
= 2。
CLF,BODE(G(:,“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
从修剪分析。控制器计算冷却液温度调节直接转矩
相对于初始平衡值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);子图(211),图(t,C),网格,集合(gca,“ylim”, 10[0])标题('目标残留浓度'),Ylabel(“Cref”)子图(212),绘图(T,Interp1(CREQ,TREQ,C))标题(“平衡时相应的反应堆温度”),Ylabel(“不洁净的”)、网格
用TuningGoal
捕获设计要求的对象。第一的,CR.
应该遵循设定值奶油
响应时间约为5分钟。
R1 = TuningGoal。跟踪(“Cref”那“Cr”5);
内环(温度)应该以足够的阻尼和足够快的衰减来稳定反应动力学。
MinDecay = 0.2;MinDamping = 0.5;%约束内环的闭环极点,使外环打开r2 = tuninggoal.poles(“Tc”、MinDecay MinDamping);R2。机会='trsp';
控制器输出的速率限制块指定冷却剂温度Tc
不能比每分钟10度更快。这是对控制器权威的严重限制,当忽略时可能导致性能或不稳定差。考虑到这个速率限制,观察到这一点奶油
以0.25 kmol/m^3/min的速率变化。以确保Tc
变化速度不超过10度/分,增益从奶油
来Tc
应小于10 / 0.25 = 40。
R3 = TuningGoal。获得(“Cref”那“Tc”,40);
最后,在工厂输入处需要至少7db的增益裕度和45度的相位裕度Tc
.
R4 = TuningGoal。利润(“Tc”,7,45);
为达到这些要求,我们在外环中使用PI控制器和内循环中的引线补偿器。由于采样率慢,需要在中距浓度下充分稳定化学反应需要铅补偿器CR.
= 5.28 kmol / m ^ 3 / min。因为反应动态基本上随着浓度而变化,所以我们进一步安排控制器收益作为浓度的函数。这在Simulink使用查找表块中建模金宝app,如图1和2所示。
图1:浓度回路的增益调度PI控制器。
图2:温度回路的增益调度超前补偿器。
调整此增益计划的控制器金额在一系列浓度值上调整查找表数据。而不是调整各个查找表条目,而不是调整控制器增益kp,ki,kt,a,b
作为二次多项式CR.
例如,
除了减少要调优的变量数量外,这种方法还确保了平滑的增益转换CR.
不同。使用Systune.
,可以自动调整系数满足要求R1-R4
在上面计算的五个平衡点上。这相当于调整增益调度控制器沿五个设计点奶油
轨迹。使用Tunablyurface.
对象将每个增益参数化为的二次函数CR.
.“调谐网格”设置为五个浓度CREQ.
二次参数化的基函数为.大多数增益初始化为零。
TuningGrid =结构(“Cr”,CREQ);shapefcn = @(cr)[cr,cr ^ 2];kp = tunballulface(“金伯利进程”, 0, TuningGrid, ShapeFcn);Ki = tunableSurface ('ki', -2, TuningGrid, ShapeFcn);Kt = tunableSurface (“Kt”, 0, TuningGrid, ShapeFcn);a = tunablyurface(“一个”, 0, TuningGrid, ShapeFcn);b = tunableSurface (“b”, 0, TuningGrid, ShapeFcn);
由于目标带宽在奈奎斯特频率的10年内,因此更容易在离散域直接调整控制器。将线性化的过程动态离散,采样时间为0.5分钟。使用ZOH方法来反映数字控制器如何与连续时间工厂相互作用。
t = 0.5;Gd =汇集(G, Ts);
创建一个SLTUNER.
调整上面介绍的二次增益计划的界面。使用块替换通过五个离散的线性模型更换非线性工厂模型Gd.
在设计点获得CREQ.
.用setBlockParam
关联可调增益函数Kp
那Ki
那Kt
那一种
那B.
使用相同名称的查找表块。
blocksubs = struct('姓名'那“rct_CSTR /装运箱”那'价值'、Gd);ST0 = slTuner (“rct_CSTR”,{“金伯利进程”那'ki'那“Kt”那“一个”那“b”},blocksubs);st0.ts = ts;调谐的%采样时间%登记兴趣点ST0.addPoint ({“Cref”那“Cr”那“Tr”那'trsp'那“Tc”})%参数化查找表块st0.setBlockParam(“金伯利进程”Kp);st0.setBlockParam('ki'、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”),UC)网格,标题('冷却液温度变化')
请注意,冷却剂温度的变化率保持在物理极限内(10度/分钟或5度/采样周期)。
检查每个增益如何变化CR.
在过渡。
%访问调整后的增益计划TGS = getBlockParam (ST);绘制增益曲线CLF子图(321),ViewsURF(TGS.KP),Ylabel(“金伯利进程”) subplot(322), viewSurf(TGS.Ki), ylabel('ki') subplot(323)、viewSurf(TGS.Kt)、ylabel(“Kt”)子图(324),ViewsURF(TGS.A),Ylabel(“一个”)子平板(325),ViewsURF(TGS.B),Ylabel(“b”)
要在Simulink中验证增益计划的控制器,请先使用金宝appWrithblockValue.
将调优结果应用到Simulink模型中。金宝app对于每个Lookup Table块,将在表断点处计算相应的二次增益公式,并相应地更新表数据。
writeBlockValue (ST)
接下来按下播放按钮以使用调谐增益计划模拟响应。模拟结果出现在图3中。增益计划的控制器通过具有足够的响应时间和速率限制的饱和度(控制器输出)成功驱动了反应(控制器输出杜
匹配有效温度变化直接转矩
)。反应器温度保持靠近其平衡值不可食用的
,表明控制器在防止热失控的同时保持反应靠近平衡。
图3:增益调度级联控制器的过渡。
或者,您可以在不使用的情况下直接在MATLAB中调整增益计划SLTUNER.
接口。首先将增益参数化为的二次函数CR.
正如上面做的。
TuningGrid =结构(“Cr”,CREQ);shapefcn = @(cr)[cr,cr ^ 2];kp = tunballulface(“金伯利进程”, 0, TuningGrid, ShapeFcn);Ki = tunableSurface ('ki', -2, TuningGrid, ShapeFcn);Kt = tunableSurface (“Kt”, 0, TuningGrid, ShapeFcn);a = tunablyurface(“一个”, 0, TuningGrid, ShapeFcn);b = tunableSurface (“b”, 0, TuningGrid, ShapeFcn);
使用这些增益来构建PI和先导控制器。
pi = pid(kp,ki,“t”Ts,“TimeUnit”那“最小值”);π。u =ECr的;π。y ='trsp';LEAD = Kt * tf([1 -a],[1 -b],Ts,“TimeUnit”那“最小值”);Lead.u =“ETr”;领先。y =“Tc”;
用连接
在五个设计点构建整体控制系统的闭环模型。标记控制器输出TRSP.
和Tc
作为“分析点”,以便可以打开循环,并在这些位置评估稳定性裕度。闭环模型T0
是一个5×1阵列的线性模型,具体取决于可调系数kp,ki,kt,a,b
.每个模型都是离散的,每半分钟采样一次。
Gd。T.imeUnit =“最小值”;s1 = sumblk('ECr = Cref - Cr');S2 = sumblk ('ETr = TrSP - Tr');T0 =连接(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子图(321),ViewsURF(SetBlockValue(KP,T)),Ylabel(“金伯利进程”)子图(322),ViewsURF(SetBlockValue(ki,t)),ylabel('ki') subplot(323), viewSurf(setBlockValue(Kt,T)), ylabel(“Kt”)子图(324),ViewsURF(SetBlockValue(A,T)),Ylabel(“一个”) subplot(325), viewSurf(setBlockValue(b,T)), ylabel(“b”)
您可以通过模拟每个设计点的线性响应来进一步验证设计。但是,你需要回到Simulink来模拟增益调度控制器的非线性响金宝app应。
setBlockParam
|SLTUNER.
|Tunablyurface.