主要内容

质量-弹簧-阻尼器系统的鲁棒调谐

本示例展示了如何对Simulink®建模的不确定质量-弹簧-阻尼系统的PID控制器进行鲁棒整定。

质量-弹簧-阻尼器系统的Simulink模型

图1所示的质量-弹簧-阻尼器采用二阶微分方程建模

$$m \ddot{x} + c \dot{x} + k x = F$$

在哪里$ F $这个力作用在物体上吗x美元是物体的水平位置。

图1:质量-弹簧-阻尼系统。

该系统在Simulink中建模如下:

open_system (“rct_mass_spring_damper”

我们可以使用PID控制器来生成工作量$ F $需要改变位置x美元.整定此PID控制器很容易当物理参数$ m c k美元都是知道的。然而,由于许多因素,包括不精确的测量、制造公差、操作条件的变化和磨损,在实践中很少出现这种情况。这个示例展示了在调优过程中如何考虑这种不确定性,以便在期望的值范围内保持高性能$ m c k美元

不确定性建模

的“最可能”或“标称”值$ m c k美元

$$m =3, \;\;C = 1, \;\;K = 2, $$

使用“不确定的真实”(尿素的)对象对每个参数的取值范围进行建模。这里的不确定度指定为与标称值的百分比偏差。

Um = ureal(“米”3,“比例”, 40);Uc = ureal(“c”, 1“比例”, 20);英国= ureal(“k”2,“比例”, 30);

名义上的调优

首先调整PID控制器的标称参数值。这里我们使用两个简单的设计需求:

  • 位置x美元应该用1秒的响应时间跟踪步长变化吗

  • 滤波器系数N美元在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)

标称响应满足响应时间要求,看起来不错。但是它对$ m c k美元?

鲁棒性分析

的“块替换”特性来回答这个问题slTuner建立了质量-弹簧-阻尼器系统的不确定闭环模型。块替换允许您指定Simulink模型中特定块的线性化。这里我们用它来替换的清晰值$ m c k美元通过不确定的值加州大学,英国上面的定义。

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经过名义上的调整后的闭环响应$ m c k美元在指定的不确定度范围内。观察一些参数组合的显著性能下降,具有较差的阻尼振荡和较长的沉降时间。

健壮的调优

为了提高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(“名义上的调优”‘强健’调优

这可以通过绘制最坏情况收益图来证实r美元x美元作为频率的函数。注意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)作为不确定参数的函数美元$ m, k对于标称阻尼c = 1美元.的“可变参数”特性slTuner的网格上创建一个闭环模型数组美元$ m, k覆盖其不确定范围的值。

为线性化指定一个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)

这张图表明,名义调谐对质量的变化非常敏感m美元或弹簧刚度k美元,而鲁棒调优本质上对这些参数不敏感。要完成设计,使用writeBlockValue将鲁棒PID增益应用于Simulink模型,并在Simulink中进行进一步验证。

writeBlockValue(科大)

相关的例子

更多关于

Baidu
map