质量-弹簧-阻尼器系统的鲁棒调谐
本示例展示了如何对Simulink®建模的不确定质量-弹簧-阻尼系统的PID控制器进行鲁棒整定。
质量-弹簧-阻尼器系统的Simulink模型
图1所示的质量-弹簧-阻尼器采用二阶微分方程建模
在哪里这个力作用在物体上吗是物体的水平位置。
图1:质量-弹簧-阻尼系统。
该系统在Simulink中建模如下:
open_system (“rct_mass_spring_damper”)
我们可以使用PID控制器来生成工作量需要改变位置.整定此PID控制器很容易当物理参数都是知道的。然而,由于许多因素,包括不精确的测量、制造公差、操作条件的变化和磨损,在实践中很少出现这种情况。这个示例展示了在调优过程中如何考虑这种不确定性,以便在期望的值范围内保持高性能.
不确定性建模
的“最可能”或“标称”值:
使用“不确定的真实”(尿素的
)对象对每个参数的取值范围进行建模。这里的不确定度指定为与标称值的百分比偏差。
Um = ureal(“米”3,“比例”, 40);Uc = ureal(“c”, 1“比例”, 20);英国= ureal(“k”2,“比例”, 30);
名义上的调优
首先调整PID控制器的标称参数值。这里我们使用两个简单的设计需求:
位置应该用1秒的响应时间跟踪步长变化吗
滤波器系数在PID控制器中不应超过100。
这些需求表示为调优目标:
Req1 = TuningGoal。跟踪(“r”,“x”1);Req2 = TuningGoal。ControllerPoles (“控制器”, 0, 0100);
创建一个slTuner
接口用于调优Simulink模型中的“Controller”块,并使用systune
对PID增益进行调优,并最佳满足这两个要求。
ST0 = slTuner(“rct_mass_spring_damper”,“控制器”);ST = systune(ST0,[Req1 Req2]);
最终:软= 1.02,硬= -Inf,迭代= 44
使用getIOTransfer
查看闭环阶跃响应。
Tnom = getIOTransfer(ST,“r”,“x”);步骤(Tnom)
标称响应满足响应时间要求,看起来不错。但是它对?
鲁棒性分析
的“块替换”特性来回答这个问题slTuner
建立了质量-弹簧-阻尼器系统的不确定闭环模型。块替换允许您指定Simulink模型中特定块的线性化。这里我们用它来替换的清晰值通过不确定的值加州大学,英国
上面的定义。
blocksubs(1)。Name =“rct_mass_spring_damper /质量”;blocksubs(1)。值= 1/um;blocksubs(2)。Name =“rct_mass_spring_damper /阻尼”;blocksubs(2)。Value = uc;blocksubs(3)。Name =“rct_mass_spring_damper /弹簧刚度”;blocksubs(3)。Value = uk;UST0 = slTuner(“rct_mass_spring_damper”,“控制器”, blocksubs);
为了评估标称整定的鲁棒性,将整定PID增益应用于(未整定的)不确定模型UST0
并模拟“不确定”闭环响应。
将名义调优结果应用于不确定闭环模型UST0setBlockValue (UST0 getBlockValue (ST));Tnom = getIOTransfer(UST0,“r”,“x”);rng(0), step(Tnom,25), grid
的一步
图中显示了20个随机选择值的PID经过名义上的调整后的闭环响应在指定的不确定度范围内。观察一些参数组合的显著性能下降,具有较差的阻尼振荡和较长的沉降时间。
健壮的调优
为了提高PID控制器的鲁棒性,采用不确定闭环模型对其进行重新整定UST0
而不是名义上的闭环模型ST0
.由于的存在尿素的
模型中的组件,systune
自动尝试最大化性能整个不确定性范围。这相当于最小化“软”调优目标的最坏情况值Req1
而且Req2
.
UST0 = slTuner(“rct_mass_spring_damper”,“控制器”, blocksubs);UST = systune(UST0,[Req1 Req2]);
软:[1.02,4.9],硬:[-Inf,-Inf],迭代= 44软:[1.03,1.41],硬:[-Inf,-Inf],迭代= 29软:[1.04,1.04],硬:[-Inf,-Inf],迭代= 21 Final:软= 1.04,硬= -Inf,迭代= 94
鲁棒性能只比标称性能略差,但同样的不确定闭环仿真表明,与标称设计相比有显著改善。
Trob = getIOTransfer(UST,“r”,“x”);rng(0), step(Tnom,Trob,25), grid legend(“名义上的调优”,‘强健’调优)
这可以通过绘制最坏情况收益图来证实来作为频率的函数。注意1 rad/s附近的衰减共振。
clf subplot(121), wcsigmapplot (Tnom,{1e-2,1e2}),网格集(gca,“YLim”,[-20 10]),标题(“名义上的调优”) subplot(122), wcsigmapplot (Trob,{1e-2,1e2}),网格集(gca,“YLim”,[-20 10]),标题(‘强健’调优),传说(“关闭”)
两个PID控制器的比较显示出相似的行为,除了一个关键的区别。名义上的调谐PID过度依赖于“取消”(剔除)植物共振,这不是一个强大的策略存在的不确定性的共振频率。
Cnom = getBlockValue(ST,“控制器”);Crob = getBlockValue(UST,“控制器”);clf, bode(Cnom,Crob), grid legend(“名义上的调优”,‘强健’调优)
为了进一步了解,绘制性能指标(“软”调优目标的最大值)Req1, Req2
)作为不确定参数的函数对于标称阻尼.的“可变参数”特性slTuner
的网格上创建一个闭环模型数组覆盖其不确定范围的值。
为线性化指定一个6乘6的(m,k)值网格ms = linspace(um.Range(1),um.Range(2),6);k = linspace(uk.Range(1),uk.Range(2),6);[ms,ks] = ndgrid(ms,ks);参数(1)。Name =“米”;参数(1)。值= ms;参数(2)。Name =“k”;参数(2)。Value = ks;STP = slTuner(“rct_mass_spring_damper”,“控制器”、参数);在(m,k)网格上评估名义上调谐PID的性能指标setBlockValue (STP,“控制器”,Cnom) [~,F1] = evalGoal(Req1,STP);[~,F2] = evalGoal(Req2,STP);Fnom = max(F1,F2);在(m,k)网格上评估鲁棒PID的性能指标setBlockValue (STP,“控制器”,Crob) [~,F1] = evalGoal(Req1,STP);[~,F2] = evalGoal(Req2,STP);Frob = max(F1,F2);比较两个性能面clf subplot(211), surf(ms,ks,Fnom) xlabel(“米”), ylabel (“k”), zlabel (“性能”)、标题('名义调优(c=1)') subplot(212), surf(ms,ks,Frob), set(gca,“ZLim”,[1 2]) xlabel(“米”), ylabel (“k”), zlabel (“性能”)、标题(鲁棒调优(c=1))
这张图表明,名义调谐对质量的变化非常敏感或弹簧刚度,而鲁棒调优本质上对这些参数不敏感。要完成设计,使用writeBlockValue
将鲁棒PID增益应用于Simulink模型,并在Simulink中进行进一步验证。
writeBlockValue(科大)