主要内容

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

该实例说明了如何在Simulink中对不确定质量-弹簧-阻尼系统的PID控制器进行鲁棒整定。金宝app

金宝app质量-弹簧-阻尼系统的Simulink模型

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

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

在哪里$ F $.是施加质量的力量$ x $为质量的水平位置。

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

此系统以Simulink建模如下:金宝app

Open_System(“rct_mass_spring_damper”

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

不确定性建模

Simu金宝applink模型使用“最可能”或“标称”的值$ m c k美元

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

使用“不确定的真实”(尿尿)对象建模每个参数可能采用的值范围。这里的不确定性被指定为与标称值的百分比偏差。

嗯=尿尿('M',3,“比例”, 40);加州大学=尿素的(“c”,1,“比例”20);英国=尿胃('K'2,“比例”, 30);

名义上的调优

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

  • 位置$ x $应该用1秒的响应时间跟踪步骤更改吗

  • 滤波器系数N美元在PID控制器中不应超过100。

这些要求表示为调整目标:

Req1 = TuningGoal。跟踪(“r”'X',1);req2 = tuninggoal.controllerpoles(“控制器”, 0, 0100);

创建一个slTuner接口用于调优Simulink模型中的“Controller”块,并使用金宝appsystune调整PID收益并最佳符合两个要求。

st0 = sltuner(“rct_mass_spring_damper”“控制器”);ST = SYTUNE(ST0,[REQ1 REQ2]);
Final:软= 1.02,硬= -Inf,迭代= 44

getIOTransfer来查看闭环阶跃响应。

tnom = getiotransfer(st,“r”'X');步骤(Tnom)

标称响应符合响应时间要求,看起来很好。但它是多么强大的变化$ m c k美元

鲁棒性分析

要回答这个问题,请使用“块替换”功能slTuner创建质量弹簧阻尼系统的不确定闭环模型。块替换允许您在Simulink模型中指定特定块的线性化。金宝app在这里,我们使用它来替换酥脆的值$ m c k美元通过不确定的值UM,UC,英国在上面定义。

blocksubs(1)。Name =“rct_mass_spring_damper /质量”;blocksubs(1).Value = 1 / um;blocksubs(2).name =“rct_mass_spring_damper /阻尼”;blocksubs(2).Value = UC;blocksubs(3).name ='rct_mass_spring_damper / spring刚度';blocksubs(3)。值=英国;UST0 = slTuner (“rct_mass_spring_damper”“控制器”, blocksubs);

为了评估标称整定的鲁棒性,将整定的PID增益应用于(未整定的)不确定模型UST0.并模拟“不确定”闭环响应。

%标称调谐(st)的%将结果应用于不确定的闭环模型UST0setblockValue(UST0,GetBlockValue(ST));tnom = getiotransfer(UST0,“r”'X');rng(0)步骤(Tnom 25),网格

一步绘图显示闭环响应与标称调谐的PID用于20个随机选择的值$ m c k美元在指定的不确定性范围内。观察一些参数组合的显着性能下降,振荡差,振荡差和长度稳定时间。

健壮的调优

为了提高PID控制器的稳健性,使用不确定的闭环模型重新调整它UST0.而不是名义闭环模型ST0..由于存在尿尿模型中的组件,systune自动尝试最大限度地提高性能整个不确定性范围。这使得最小化“软”调谐目标的最坏情况值req1.req2.

UST0 = slTuner (“rct_mass_spring_damper”“控制器”, blocksubs);UST = systune(UST0,[Req1 Req2]);
Soft: [1.02,4.9], Hard: [-Inf,-Inf], Iterations = 44 Soft: [1.03,1.41], Hard: [-Inf,-Inf], Iterations = 32 Soft: [1.04,1.04], Hard: [-Inf,-Inf], Iterations = 21 Final: Soft = 1.04, Hard = -Inf, Iterations = 97

鲁棒性能仅略低于标称性能,但相同的不确定闭环仿真表明,较标称设计有显著改善。

Trob = getIOTransfer(科大,“r”'X');rng(0), step(Tnom,Trob,25), grid legend('标称调整''强大的调音'

这是通过绘制最坏情况的增益来确认$ r $$ x $作为频率的函数。注意在1 rad/s附近的衰减共振。

CLF子图(121),WCSigmaplot(TNOM,{1E-2,1E2}),网格集(GCA,“YLim”,[ -  20 10]),标题('标称调整')子图(122),WCSigmaplot(TROB,{1E-2,1E2}),网格集(GCA,“YLim”,[ -  20 10]),标题('强大的调音'),传说('离开'

除了一个关键差异之外,两个PID控制器的比较显示了类似的行为。名义上调谐的PID过度依赖于“取消”(摘录)的植物谐振,这不是在共振频率上存在不确定性的鲁棒策略。

Cnom = getBlockValue(圣,“控制器”);Crob = getBlockValue(科大,“控制器”);clf, bode(Cnom,Crob), grid legend('标称调整''强大的调音'

有关进一步的洞察力,请绘制性能指数(“软”调谐目标的最大值REQ1,REQ2)作为不确定参数的函数美元$ m, k对于标称阻尼$ c = 1 $.使用“不同参数”功能slTuner在网格上创建一系列闭环模型美元$ m, k涵盖其不确定性范围的值。

%指定6×6网格(M,K)值的线性化女士= linspace (um.Range (1) um.Range (2), 6);uk.Range ks = linspace (uk.Range (1), (2), 6);(女士,ks) = ndgrid (ms, ks);参数(1)。Name ='M';参数(1)。值=女士;参数(2)。Name ='K';参数(2)。值= ks;STP = slTuner (“rct_mass_spring_damper”“控制器”、参数);在(m,k)网格上评估常规PID的性能指标setBlockValue (STP,“控制器”[~,F1] = evalGoal(Req1,STP);(~, F2) = evalGoal (Req2 STP);Fnom = max (F1、F2);%在(m,k)网格上评估性能指标,实现鲁棒PIDsetBlockValue (STP,“控制器”,crob)[〜,f1] = evalgoal(REQ1,STP);(~, F2) = evalGoal (Req2 STP);frob = max(f1,f2);%比较两个性能表面clf subplot(211), surf(ms,ks,Fnom) xlabel('M'),Ylabel('K'),Zlabel('表现')、标题('标称调谐(c = 1)') subplot(212), surf(ms,ks,Frob), set(gca,“ZLim”,[1 2])Xlabel('M'),Ylabel('K'),Zlabel('表现')、标题('强大调整(c = 1)'

这张图表明,标称调谐对质量的变化非常敏感m美元或弹簧僵硬k美元,而强大的调谐基本上对这些参数非常不敏感。完成设计,使用WrithblockValue.将强大的PID增益应用于Simulink模型,并在Simulink中进行进金宝app一步的验证。

writeBlockValue(科大)

相关的例子

更多关于